본문 바로가기

정보보안/포렌식

02_파일 추출_ 실습-1

 02_파일 추출

1. 실습-1

 - 실습 파일 : dns.pcap
 - 사용 도구 : Wireshark, SIFT3, dns.py
 - 실습 내용 : DNS Query(dns.qry.name), DNS CNAME(dns.cname) 정보에 암호화된 기밀 문서(docx)를 전송한 상황

 

DNS쿼리 --> dns서버한테 www.naver.com 의 ip 는 뭐니 라고 묻는 것 

 

 1) 와이어샤크 분석

 - 'dns.pcap' 파일을 와이어샤크로 오픈한다.

파일을 와이어샤크로 열어 확인해보니  query 와 qurey response를 주고 받는것을 확인할 수 있다. 

 

Queries 와 Answers 를 들어가 Name 과 Cnam을 확인해보았더니 정상적인 사이트가 아니고 base32로 인코딩된것을 확인할 수 있다. 


 또한, 61번 DNS 패켓부터 패켓 크기가 증가되고 있다. 61번 기준으로 데이터를 많이 보낸듯함 

 


 - 이후의 패킷들을 확인하면, DNS Query와 DNS CNAME에 포함된 내용이 정상적인 DNS 요청/응답 내용이 아닌것을 확인할 수 있다.

 

Base32로 암호화된 내용들을 보내는것 같으므로, Query 와 Cname 들만 별도로 리눅스의 Tshark 를 이용하여 추출해보자.


 

 2) DNS Query & DNS CNAME 추출



 - SIFT3 리눅스에서 Tshark를 이용하여 DNS Query & DNS CNAME 내용을 'dns.txt'로 추출한다.
 


$ cd Desktop/network\ forensic-1

 

dns.pcap 파일에서 dns.qry.name 과  dns.cname 을 필터로 가진 내용들을 반복문을 이용하여 추출한 후 dns.txt 에 저장하려한다.

다음과 같이 터미널창에 입력해주자. 


$ tshark -r dns.pcap -Tfields -e dns.qry.name | awk '!a[$0]++' > dns.txt && tshark -r dns.pcap -Tfields -e dns.cname | awk '!a[$0]++' >> dns.txt

 

그 다음, 추출된 'dns.txt' 파일을 gedit을 이용하여 내용을 확인한다.

$ gedit dns.txt

추출한 dns.txt


 -추출된 내용을 살펴보니 알파벳 대문자 A~Z, 숫자 2~7까지 있는 것으로 보아 이것은 Base32로 인코딩된 문자인것을 알수 있다.

 



 3) Base32로 인코딩된 문자를 디코딩한다.

 

base32 _ 32개의 문자로 치환


Basedec.py 폴더를 열어 코드의 내용들을 확인해보니, 파일을 실행하면, 디코딩을 진행하고 디코드된 파일을 생성하는것을 확인할 수 있다. 

Basedec.py

 

python 명령어를 이용하여 Basedec.py 파일을 실행해보자. ls를 이용하면 decoded된 txt파일을 확인할 수 있다. 

 

$ python Basedec.py 

$ ls -l dns_decoded.txt 

python 명령어-> 파일 실행 / ls를 이용한 dns_decoded.txt 파일의 확인


'dns_decoded.txt' 파일을 gedit을 이용하여 내용을 확인해보자. 

 

gedit dns_decoded.txt

내용을 확인하니 gpg를 이용하여 공개키비밀키를 생성하고있다. 


스크롤하여 내용을 확인해보니 'secret.docx' 파일 또한 암호화하고있음

dns_decoded.txt_secret.docx.gpg

 공개키와 비밀키의 내용 또한 확인할 수 있었음 

dns_decoded.txt_public key
dns_decoded.txt_private key



  4) 'dns_decoded.txt' 파일을 '\02_파일 추출\실습-1' 폴더로 복사한다.

 

 

'dns_decoded.txt' 파일에서 위에서 발견한 내용들을 추출하기 위해 컴퓨터로 복사해오자. 




 5) 'dns_decoded.txt' 파일을 HxD을 이용하여 gpg로 암호화된 'secret.docx' 파일을 추출한다.



 - 00000780: START_OF_FILE 이후 '85 01 0C 03' 부터 000018D0: END_OF_FILE 전 'CA 9F A7 3D'까지 드래그 실시
   -> Ctrl+C -> Ctrl+N -> Ctrl+V -> Ctrl+S -> 'secret.docx.gpg' 이름으로 '\02_파일 추출\실습-1' 폴더에 저장

HxD secret.docx




 6) 'dns_decoded.txt' 파일을 HxD을 이용하여 공개키과 비밀키를 각각 추출한다.


위에서 발견했던 암호화된 공개키 비밀키 또한 각각 추출해보자.

 

 - 00001DC0: -----BEGIN 부터 00002490: BLOCK---- 까지 드래그 실시 -> Ctrl+C -> Ctrl+N -> Ctrl+V -> Ctrl+S
  -> 'public.key' 이름으로 '\02_파일 추출\실습-1' 폴더에 저장

HxD public.key

 

 - 00002490: -----BEGIN 부터 00003210: EOF 까지 드래그 실시 -> Ctrl+C -> Ctrl+N -> Ctrl+V -> Ctrl+S
  -> 'private.key' 이름으로 '\02_파일 추출\실습-1' 폴더에 저장

 

HxD private.key






 7) 추출한 파일(secret.docx.gpg, public.key, private.key)들을 SIFT3 리눅스 'network forensic-1' 폴더로 복사한다.

 8) 공개키와 비밀키를 SIFT3 리눅스에 import를 실시한다.

 

$ gpg --import public.key
$ gpg --import private.key

복사한 파일들을 SIFT3 에 import




 9) gpg을 이용하여 'secret.docx.gpg' 파일을 복호화한다.

 

$ gpg --decrypt secret.docx.gpg > secret.docx


$ ls -l secret.docx

 



 10) 'network-forensic1' 폴더로 이동해서 복호화된 'secret.docx' 파일을 실행하여 내용을 확인한다.

 

 

 

 

 

 

'정보보안 > 포렌식' 카테고리의 다른 글

Window Forensics 프로파일 및 파일 다운로드 실습  (1) 2022.09.25
02_파일추출_실습-2  (0) 2022.09.24
DEFCON ROUND 4  (0) 2022.09.24
DEFCON ROUND3  (0) 2022.09.24
Forensic _ 패킷분석 - 5  (0) 2022.09.18