Python2020. 10. 21. 23:32
반응형

[파이썬 ( Python )] Method - 메소드 (23)

 

실습 코드

 

출력 결과

Class에 이어 이번에도 노트북을 예시로 들고 왔습니다.. ㅎ 

아마도 이번 글이 파이썬 개념에선 마지막 게시물이 되지 않을까 싶어요 ㅠ 

조금이나마 도움이 되셨으면 좋겠습니다 ! 

 

#Method
#메소드는 클래스 내부에 정의되어 있습니다.
#프로그램이 실행되고있을때 클래스에서 생성된 인스턴스와 관련된 동작을 정의합니다

class NoteBook:

def __init__(self, brand, name, grade, start): #__init__ << 생성자입니다. 객체를 생성할때 (아래의 노트북같은 것들) 자동으로 호출됩니다.
self.brand = brand #brand, name, grade 이와 같은 요소들을 멤버변수라고 합니다.
self.name = name #외부에서도 객체.멤버변수 << 이와 같은 방법으로 접근이 가능합니다.
self.grade = grade

self.start = start #cpu 시작 온도

print("{0}회사에서 가성비 좋은 노트북 {1}을 출시 했습니다! ".format(self.brand, self.name))

print("제품 사양은 {0}등급 입니다!".format(self.grade))

def Hver(self, tem):
#수많은 메소드 활용법중 하나. 노트북을 게이밍모드로 변환하여 점차 온도를 tem로 전달받은 단위만큼 올리고 100도가 넘어가면 기능을 상실하게 만듭니다.
if self.start == 0:

print("{0}제품이 게이밍 모드로 변환되면서 CPU 온도가 높아지고 있습니다.".format(self.name))
self.start += tem
print("현재 CPU 온도 [{0}도]".format(self.start))
if self.start >= 100:
print("CPU가 녹아버려 기능을 상실했습니다. ")



Asu = NoteBook("Asu", "Gep", "S",0)

#시간이 지날수록 cpu과부화로 온도가 올라가고 있다고 가정합시다.
Asu.Hver(10)

Asu.Hver(10)
Asu.Hver(10)
Asu.Hver(50)
Asu.Hver(50)

#결과 : cpu온도가 100도가 넘었기에 "CPU가 녹아버려 기능을 상실했습니다." 출력.

반응형
Posted by 보안 학생
Python2020. 10. 20. 23:40
반응형

[파이썬 ( Python )] Class - 클래스 (22)

 

실습 코드
출력 결과

 

 

 

#Class
#Class는 흔히 '틀'이라고 많이 표현을 합니다. 다향한 함수나, 기능들을 넣어
#효율적으로 같은 형식으로 여러개체를 만들 수도 있고 이것 말고도 활용도가 매우 높습니다.

#예를들어 노트북이란 제품을 소개할때 어떤 회사 제품을 소개하더라도 노트북이라는건 변함이 없죠 ?
#그래서 노트북을 소개할 고정적인 요소를 틀로 잡아 효율적으로 사용 할 수 있습니다.
class NoteBook:

def __init__(self, brand, name, grade): #self는 자기 자신을 뜻하며, __init__ << 생성자입니다. 객체를 생성할때 (아래의 노트북같은 것들) 자동으로 호출됩니다.
self.brand = brand #brand, name, grade 이와 같은 요소들을 멤버변수라고 합니다.
self.name = name #외부에서도 객체.멤버변수 << 이와 같은 방법으로 접근이 가능합니다.
self.grade = grade

print("{0}회사에서 가성비 좋은 노트북 {1}을 출시 했습니다! ".format(self.brand, self.name))
print("제품 사양은 {0}등급 입니다!".format(self.grade))

Asu1 = NoteBook("Asu", "VvBook", "B") #클래스로 만들어지는 이것들을 객체라고하며, 해당 클래스의 인스턴스라고 표현 합니다.
Asu2 = NoteBook("Asu", "GeeBook", "A")

H = NoteBook("H", "VivoBook", "C")

Asu3 = NoteBook("Asu", "GepBook", "S")
Asu3.lockskill = True #이렇게 변수를 외부에서 추가적으로 할당 할 수 있습니다.
#클래스 외부에서 원하는 변수를 확장할 수 있지만, 확장을 한 객체한에서만 사용할 수 있으며, 다른 객체에선 사용이 불가능합니다.
if Asu3.lockskill == True:

print("{0}제품은 지문인식 기능을 탑재하고 있습니다.".format(Asu3.name))

반응형
Posted by 보안 학생
Python2020. 10. 16. 23:07
반응형

[파이썬 ( Python )] Pickle (21)

 

 

 

실습 코드

 

출력 결과

#Pickle
#Pickle이란? 프로그램상에서 사용하고 있는 데이터를 파일형태로 저장해주는 것입니다.

import pickle

MyData_file= open("MyData.pickle", "wb")
#MyData.pickle이라는 파일을 만들고 pickle을 사용하기 위해선 원하는 권한뒤에 항상 b를 붙여줘야 합니다.(바이너리 타입를 뜻합니다.)
MyData = {"이름":"홍길동", "나이":"미상", "취미":["동해번쩍","서해번쩍"]} #내용 입력
print(MyData)

pickle.dump(MyData, MyData_file) #MyData에 있는 정보들을 MyData_file에 저장해줍니다.
MyData_file.close()


MyData_file2= open("MyData.pickle", "rb")
MyData = pickle.load(MyData_file2) #위에서 데이터가 저장된 MyData.pickle 파일의 내용을 불러와 저장합니다.
print(MyData)

MyData_file2.close()

반응형
Posted by 보안 학생
포렌식2020. 10. 14. 18:05
반응형

디지털 포렌식 수행과정

 

1. 사전 준비

- 디지털 기기 및 데이터의 유형 숙지

- 디지털 포렌식 교육 및 연구 개발

 

2. 증거 수집

- 수집 대상 파악

- 압수 대상 선정

- 증거 목록 작성

- 물리적 증거 수집

- 관련자 면담

- 문서화

 

3. 증거의 포장 및 이송

- 압수물 개별 포장

- 전자파 및 충격방지 포장

- 증거물 포장 및 운반

 

4. 조사 분석

- 데이터 이미징

- 데이터 추출 및 분류

- 데이터 조사 및 증거 검색

 

5. 정밀 검토

- 분석 결과 검증 및 분석과정에 대한 검토

 

6. 보고서 작성

- 용어 설명

- 객관적 설명

- 결과 정리

반응형
Posted by 보안 학생
Python2020. 10. 13. 19:30
반응형

[파이썬 ( Python )] 파일 입출력 - File read (20)

 

 

 

실습 코드
출력 결과

 

#파일 입출력

#쓰기
Mymemo_file = open("Mymemo.txt", "w", encoding="utf8") # 쓰기 권한
# 파일제목을 변수로 지정하고 open을 통해서 파일을 열고 무슨 권한으로(현재는 쓰기 목적) 열지 정할 수 있습니다. (마지막에 인코딩 꼭 해줘야합니다. 안적으면 한글이 깨져서 보일 수도 있습니다.)
print("저는 지금 잠이 옵니다.",file=Mymemo_file) #파일에 들어갈 글을 아무거나 적습니다.
print("그래서 곧 자러 갈겁니다.",file=Mymemo_file) #내용을 적고 ,file= 파일명을 적어줍니다.
Mymemo_file.close() #파일을 닫아줍니다.

Mymemo_file = open("Mymemo.txt", "a", encoding="utf8") #a는 append로 해당 파일에서 이어서 작성하겠다는 뜻입니다.
Mymemo_file.write("\n집에 가고 싶어요") #.write로 작성할땐 자동 줄바꿈이 되지않기에 필요시 수동으로 적어줍니다.
Mymemo_file.write("\n피곤하네요")

Mymemo_file.close()

#읽기
Mymemo_file = open("Mymemo.txt", "r", encoding="utf8")

print(Mymemo_file.read()) #전체 내용을 불러옵니다.
Mymemo_file.close()


Mymemo_file = open("Mymemo.txt", "r", encoding="utf8")
print(Mymemo_file.readline())# readline()을 통해 각 줄별로 읽기가 가능합니다.
print(Mymemo_file.readline())

print(Mymemo_file.readline())
print(Mymemo_file.readline())
Mymemo_file.close()

#읽을려는 파일이 몇 줄있는지 모를때는 While문을 통해 읽어올 수 있습니다.
Mymemo_file = open("Mymemo.txt", "r", encoding="utf8")

while True:
line = Mymemo_file.readline()
if not line: #readline()으로 불러온 값이 없을때 아래의 구문을 실행합니다.
break #중단합니다.
print(line)

Mymemo_file.close()

Mymemo_file = open("Mymemo.txt", "r", encoding="utf8")
List = Mymemo_file.readlines() #List형태로 저장
for line in List:

print(line, end="")

Mymemo_file.close()

반응형
Posted by 보안 학생
Python2020. 10. 11. 20:00
반응형

[파이썬 ( Python )] 입출력 Input & Output (19)

 

 

실습 코드

 

 

출력 결과

# 표준 입출력

#출력
#신체 정보
Body = {"전체길이":200, "다리길이":120, "상체길이":80}
for body, length in Body.items(): #변수지정 칸에 key와 value으로 같이

지정해주게 되면 튜플에 한 세트로 함께 들어가게 됩니다.
print(body.ljust(5), str(length).rjust(4), sep=":", end="cm")
print()
#sep는 위의 출력문에서 ,로 구분되는 곳에 대신 집어넣을 값을 의미하고,

end는 해당 출력문이 #끝난후에 이어서 작성될 구문을 뜻합니다.

그밑에 print()를 한 이유는 줄바꿈을 해주기 위함입니다.
#ljust와 rjust는 좌로 정렬, 우로 정렬이고 ()안의 값을 넣으면 해당 값만큼 공간을

확보한 상태로 좌,우로 정렬해준다라는 뜻이 됩니다.

#어느 이벤트의 응모권이 있습니다
#1,2,3,4,~
#이 번호들을 001,002,003~ 이런식으로 표현하고 싶을때 사용하는 방법입니다.
for Number in range(11):
print("응모권 " + str(Number).zfill(3) + "번")
#zfill(숫자)는 해당 숫자만큼 자리를 확보하고 빈자리들을 모두 0으로 채운다는 뜻입니다.


#입력
A = input("보통 언제쯤 기상하시나요 ? ")
print("아하, 당신은 주로 " + A + "에 기상하시는군요!")

반응형
Posted by 보안 학생
반응형

비트코인과 블록체인의 간단한 용어와 구성 개념 정리

 

 

 

비트코인이란 근본적으로 기존의 Cloud, Big Data, Encryption(암호화)

기술들을 결합하여 결제서비스를 제공하는 새로운 방법입니다.

 

블록체인 플랫폼 : 블록체인은 비트코인을 사용하여 수행된

모든 거래기록을 유지하는 분산된 데이터베이스입니다.

블록체인은 비트코인 네트워크에 참여하는 수백만 개의 네트워크 노드로

구성되며, 각 노드는 블록체인의 일부를 실행하여 암호 화폐를 사용하여

수행되는 모든 거래가 시스템 전체에서 보유하도록 합니다.

 

비트코인 채굴자 : 비트코인 채굴은 거래가 이루어 질 때 확인 및 처리가되고

블록체인에 포함되는 핵심 프로세스 입니다.

 

비트코인 지갑(Wallet) :

비트코인에서 지갑은 해당 코인의 소유권을 증명할 수 있는

개인키와 주소 및 디지털 서명 등을 저장하는 간단한 데이터베이스 개념입니다.

이때 생성된 키는 블록 체인을 참조하거나 인터넷을 거치지 않고 사용자 지갑안의

소프트웨어에 의해 생성되고 관리되어 보안성 높다고 볼 수 있습니다.

 

위에서 언급된 'Key'라는 것을 왜 사용하는가 ?

암호키를 사용하게 되면 분산 제어가 가능하고 높은 수준의 보안과 소유권 증명이 가능합니다.

 

비트코인을 구성하는 Client 종류

비트코인을 사용하는 사용자(Client)는 화폐 거래에 대해 원하는 제어의 정도에 따라 다른 형태를 취할 수 있는데,

Full 클라이언트, 경량 클라이언트, 웹 클라이언트와 같이 3가지로 나뉩니다.

 

Full 클라이언트 :

사용자의 지갑을 제공하고 거의 모든 트랜직션이 수행된 화폐를 사용하여 전체 원장을 저장하는 클라이언트

(원장 : 비트코인의 원본 데이터의 이름이 바로 '원장' 입니다.)

 

경량 클라이언트 :

클라이언트의 지갑을 저장하지만 비트코인 거래 및 네트워크에 엑세스하기 위해 다른 회사 소유의 서버에 의존합니다. 경량 클라이언트는 모든 트랜잭션의 전체 복사본을 저장하지 않으므로 트랜잭션 유효성을 검사하기 위해선 타회사의 서버를 신뢰할 수 있다는 조건이 필요합니다.

 

웹 클라이언트 :

말 그대로 웹 브라우저로 엑세스하여 사용하는 클라이언트입니다. 이용하기 가장 편리하지만

그에 맞게 Fulll과 경량 클라이언트가 제공하는 고급 기능은 사용할 수 없습니다.

반응형
Posted by 보안 학생
네트워크2020. 10. 10. 21:22
반응형

SSL Strip을 이용한 네트워크 모의해킹 실습

 

해당 글은 VM Ware로 실습한 내용이며, IP 또한 가상으로 할당하였기 때문에 아무 의미 없습니다.

또한 이 기술은 실제 적용이 가능할 수도 있으니, 절대 악의적인 목적이나 호기심으로 진행하지 마시길 바랍니다.

실습을 위한 환경을 구성할때 반드시 본인 컴퓨터와 인터넷으로 구성하고 진행하세요!

악용시 현행 정보통신망 이용촉진 및 정보보호 등에 관한 법률로 처벌 받을 수 있습니다.

정보통신망에 관한 법률 아니더라도 처벌 받습니다 아무튼 그냥 본인 컴퓨터 외에는 하지마세요 !

 

 

 

1 개요

1.1 개요 및 목적

현재 대한민국 스마트폰 사용을 안하는 사람을 찾기 힘들 정도로 보급률이 높아져있습니다. 사용자가 증가함에 따라 무료 인터넷을 사용할 수 있도록 도와주는 무선 인터넷 환경(WI-FI)도 손쉽게 찾아 볼 수 있습니다. 많은 사람들이 데이터가 부족하거나, 아끼기 위해 비밀번호가 안걸려져있는 WI-FI에 접속하여 무료로 인터넷을 사용할 것입니다. 하지만 악의적 의도를 가진 해커가 사람들의 정보를 훔치기 위해 설치해놓은 WI-FI라면 ? 본인도 모르는 사이에 사용자가 전송한 정보를 해커는 Sniffing 할 수 있기 때문에 WI-FI 사용자들은 항상 제공자를 모르는 WI-FI 사용을 자제하고 의심해봐야 합니다. 

해킹 도구 사용으로 네트워크 공격 기법을 통해 실제 공격 행위의 시뮬레이션을 수행해보며 특정 장소의 내부 네트워크상의 서비스와 서버에 대해 침투가능성을 능동적으로 판단하여 취약점에 대한 대응방안을 마련하여 네트워크 보안사고를 미연에 방지하는 것에 그 목적이 있습니다.

1.2 실습 환경

         - 가상환경 OS (피해자 - Windows Xp, 공격자 - KaliLinux)

           - 사용 도구 : SSLStrip

           - 적용 기술 (ARP Spoofing, SSL Sniffing, M IT M)

           - 무선 WI – FI

1.3 수행 항목

         - 피해자가 게이트웨이로 보내는 패킷을 공격자에게 전달하게하고, 게이트웨이

             에서 피해자에게 보내는 패킷을 공격자에게 전달하도록 ARP Spoofing을 진행

             하여 중간자 공격이 이루어지도록 설정

           - SSLStrip을 통해 피해자에게 https를 해제하여 전달하여 Sniffing 공격

           - 피해자 로그인 시도할 때 입력한 ID, PASSWORD 정보 탈취

           - Log 파일을 통해 탈취한 정보 확인

 

 

 

2 시나리오

2.1 실습 시나리오

실습 시나리오

3 수행결과 

3.1 Spoofing 

Spoofing이란 사전적 의미로 ‘ 속이다 ‘ 입니다. MAC주소, IP주소, Port 등 네트워크 통신과 관련된 요소

들을 속여 공격하는 것을 말합니다.

이번 모의해킹 진행과정에서 필요한 Spoofing 기법은 ARP Spoofing입니다.

ARP Spoofing은 MAC주소를 속여 통신간에 흐름을 우회하고 왜곡시키는 공격입니다.

 

3.1.1 취약점 이해

로컬 네트워크에서 사용하는 ARP 프로토콜의 허점을 이용하여 자신의 MAC주소를 다른 컴퓨터의

MAC주소인 것처럼 속입니다.

네트워크 트래픽이 이동할 때 MAC 주소를 기반으로 전송하는데, 공격자는 같은 네트워크상에서

ARP Request BroadCasting을 통해 모든 호스트 IP/MAC주소를 알아 낼 수 있습니다.

ARP 프로토콜은 인증을 요구하지 않기 때문에 이러한 취약점을 이용하여 ARP Reply 패킷을

호스트에게 보내주면서 쉽게 ARP Cache Table을 업데이트 시킬 수 있습니다.

공격자가 위조한 MAC 주소를 각 호스트들의 ARP Cache Table에 업데이트 시키게 되면, 통신이 이루어지는 GateWay에서는 공격자의 MAC 주소와 포트 매핑정보가 Table에 등록되어 호스트가 서버로 보내는 정보가 담긴 트래픽은 공격자에게 전달하고 서버에서도 피해자 호스트에 대한 트래픽을 공격자에게 전달하게 됩니다.

3.1.2 상세분석

 

[Step #1]  ARP Spoofing 진행 전

arp spoofing 진행 전

 

[Step #2]  ARP Spoofing 공격을 위한 Shell 작성

공격 코드

 

 

 

[Step #3]  ARP Spoofing을 위한 Shell 실행

공격 실행

 

[Step #4]  공격 진행 후 ARP Cache Table 변경된 것을 확인

      공격자 IP가 추가되고 물리적 주소가 GateWay와 같게 변경 된 것을 확인 할 수 있다.

 

 

3.1.3 보안대책

1) 사용중인 공유기의 펌웨어를 항상 업데이트하여 최신 버전으로 유지

2) ARP Virus 방어 기능을 지원하는 공유기 사용

3) ARP Spoofing 공격 탐지 툴 설치 (XArp, ARPWatch 등)

4) MAC주소 정보를 정적으로 설정하여 관리

 

3.2 Sniffing 

Sniffing이란 사전적 의미로 ‘ 킁킁거리다, 냄새를 맡다 ‘ 뜻이 존재합니다. 이와 같이 네트워크상에서

다른 상대방들간에 또는 서버와 통신할 때 전달되는 패킷 교환을 몰래 훔쳐보는 것을 의미합니다.

예시로 군에서 통신이 이루어질 때 제3자가 도청하는 행위가 유사하다 볼 수 있습니다.

 

3.2.1 취약점 이해

SSL을 사용하여 암호화 통신을 하는 경우 일반적으로 공격자는 해당 정보를 Sniffing 할 수 없습니다. 하지만, 암호화된 데이터는 Client와 Server 인증 과정에서 발생된 패킷들에 의해 부하를 늘리게 되어

많은 웹 페이지에서 전체적으로 SSL을 적용시키지 않고 본인확인 또는 로그인과 같이 특정 주요정보가전송되는 구간에만 부분적으로 SSL을 적용하여 운영하는 경우가 많습니다. 이렇게 부분적으로 SSL을 적용시킨다는 취약점을 이용하여 피해자와 서버간에 통신이 이루어질 때 중간에서 개입하여 SSL Strip을 통해 HTTPS를 HTTP로 변경하여 피해자를 속여 정보를 탈취할 수 있습니다.

 

3.2.2 상세분석

 

[Step #1] Iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 8080

명령어를 입력시켜 http 요청을 SslStrip를 통해 8080번 Port로 Redirect

그 후 NAT 설정이 올바르게 되었는지 확인

 

 

 

 

[Step #2] 피해자 PC와 연결을 위한 IP Forwarding 및 확인 (1 = 활성화, 0 = 비활성화)

 

[Step #3] SSLStrip 실행

 

[Step #4] Port 상태 확인 (응답 받을 8080번이 정상적으로 열려있는지)

 

[Step #5] 피해자 PC : 로그인 페이지로 정상접속시 https:// 로 시작하여 암호화작업이 이루어

지지만 (그림-①), 공격을 진행한 후에 접속하게 되면 (그림-②) 와 같이 http로 접속시켜

암호화 작업이 이루어지지 않도록 만듬

                                      [ 그림-① ]                                            [ 그림-② ]

 

 

[Step #6] 피해자 PC에서 로그인 시도가 발생하면 로그인 정보를 담은 패킷이 공격자에게 전달

>> 공격자는 sslstrip.log 파일을 통해 피해자가 로그인 시도한 정보를 확인 할 수 있음

 

 

3.2.3 보안대책

1. HTTP://로 시작하는 웹 페이지 사용 자제

2. 신뢰할 수 없는 Wi-Fi 사용 지양

3. 무선인터넷 제공자/관리자는 쉽게 유추하지 못하는 패스워드 사용 및 IP/MAC 인증과 같이 인증 과정을 추가하여 보안 수준 향상

4. 관리자는 Web에 부분적인 SSL 서비스 적용이 아닌 전체에 SSL을 적용시켜 필수적으로 HTTPS를 사용하도록 적용

반응형

'네트워크' 카테고리의 다른 글

Spoofing(스푸핑) & Sniffing(스니핑)의 이해  (0) 2020.10.08
Port Scanning (포트 스캐닝)  (0) 2020.09.19
Posted by 보안 학생