IT/Security

[프로젝트] 네트워크 포렌식 패킷 분석 - 2

착한아줌마 2019. 1. 4. 09:12
반응형

프로젝트 관련 글

 

 

 

[IT/Security] - [프로젝트] 네트워크 포렌식 개요

[IT/Security] - [프로젝트] 네트워크 포렌식 증거 수집

[IT/Security] - [프로젝트] 네트워크 포렌식 패킷 분석 - 1

[IT/Security] - [프로젝트] 네트워크 포렌식 패킷 분석 - 3

 

 


 

 

 

 실습

실습 내용은 네트워크 포렌식 책, 4장 앤의 랑데부를 참고하여 진행했다.

 

0. 실습 환경

 

 OS  Kali Linux 2.0
 Tools  Wireshark 1.12.6
 ngrep V1.45
 TCPflow 1.4.4
 Bless 0.6.0
 tofrodos Ver 1.7.13 (fromdos)
 base64 (GNU coreutils) 8.23
 Network Minor 1.6.1

 

실습에 필요한 예제 파일은 아래 경로에서 다운 받았다.

http://www.acornpub.co.kr/book/network-forensics



 

 

1. 사건 개요

 

[사건 소개]
Ann dercover라는 중요 인물이 마을에서 사라졌다그녀가 사라지기전 조사관들은 그녀의 네트워크 활동을 주의 깊게 모니터링하고 있었다.
 
[도전 과제]
캡처된 패킷에서 앤의 활동과 계획에 관한 정보를 수집하고 분석하는 것이다.
 
[네트워크]
내부 네트워크 - 192.168.30.0/24
DMZ - 10.30.30.0/24
인터넷 - 172.30.1.0/24
 
[증거]
앤의 홈 네트워크에서 캡처한 패킷인 ‘evidence-packet-anlysis.pcap'을 제공받았다또한 모니터링 과정 중 앤의 노트북 MAC 주소는 00:21:70:4D:4F:AE라고 알았다.

 

 

 

 

2. 분석 프로토콜 요약 )

 자료로 받은 패킷트래픽들을 분석해야 할 때처음 프로토콜 통계를 통해 패킷들을 구분하고 전체적인 스토리를 확인 할 수 있다통계확인에는 Wireshark를 이용하도록 한다.

 

- Wireshark를 이용한 프로토콜 통계 정보 분석

 Wireshark 실행 후 evidence-packet-analysis.pcap 파일 열기

 

 상단 메뉴 > Statics > Protocol Hierarchy

  

 

  Protocol Hirerarchy 통계 화면은 상위 목록이 낮은 계층을 뜻한다그래서 잡힌 패킷은 모두 Ethernet이고 IPv4이므로 100%로 나온다.

  

 

 계층 프로토콜들을 살펴보면 크게 TCP와 UDP로 나뉘는데 UDP가 약 19%, TCP가 약 80%를 차지하는 것을 보아 TCP프로토콜 패킷이 많은 것을 확인 할 수 있다.

 

 더 상위 계층 프로토콜을 살펴보면 UDP에서 DNS, TCP에서 SMTP와 IMAP이 10%이상씩을 차지하여 다른 프로토콜들보다 비중이 큰 것을 확인 할 수 있다. DNS는 DNS서비스를 위해, SMTP와 IMAP은 메일서비스를 위한 프로토콜이다.

 

 위의 통계를 통해 수집된 패킷 트래픽은 주로 메일을 보내는 과정에서 잡힌 트래픽이라는 것을 확인 할 수 있다. ( DNS는 메일을 보내는 과정에서의 DNS서비스를 제공 했을 것이다. )

 

 

 

3. 키워드 검색검색 결과 분석

 메일을 보내는 과정이 잡힌 트래픽이라는 것을 확인했다그럼 패킷에 녹아있는 메일내용을 확인해 보아야한다이 중 원하는 내용만을 추려내기 위해 키워드 검색을 사용한다.

 이 사건에서 목표하고 있는 것은 Ann Dercover라는 인물이므로 키워드로 사용하고 검색 툴은 ngrep을 이용한 방법과 Wireshark를 이용한 방법 두 가지를 소개한다.

 

- ngrep을 이용한 키워드 검색

 터미널에서 ngrep 명령어를 이용해 키워드 검색을 한다.

키워드는 Ann Dercorver 이고 timestamp를 표시하도록 하였다검색시 나오는 데이터가 많기 때문에 따로 파일(ngreptest) 로 출력하도록 했다.

 

# ngrep "Ann Dercover" -N -t -q -I evidence-packet-analysis.pcap > ngreptest

 

 

 파일 내용을 보면 제일 첫 줄에 ngrep이 사용된 input파일검색한 키워드가 나타나고 그 뒤로 검색된 패킷의 내용을 보여준다보낸이,받는이,메일주소,메일제목,메일내용 등을 확인 할 수 있다. 

 

 

 

- Wireshark를 이용한 키워드 검색

 Wireshark로 패킷파일을 열어서 검색한다.

Ctrl + F -> 상단의 String 체크 -> 키워드(Ann dercover) 입력 -> 찾기

 

 검색 된 패킷의 TCP Stream을 확인

찾기를 누른 다음에는 Wireshark 화면에서 처음 찾은 패킷에 활성화가 되어있다.

해당 패킷에 마우스 오른쪽 버튼 > Follow TCP Stream

 

 

 첫 번째 검색된 패킷에 대한 TCP Stream 으로 해당 이메일을 보낸 내용에 대한 흐름을 확인 할 수 있다.

 그러나 검색된 모든 내용이 들어있는 것이 아닌 첫 번째 검색된 패킷만의 내용이므로 지금 패킷을 제외하고 검색을 또 해보아야한다.

Filter Out This Stream 클릭

 위의 Display Filter에 방금 확인한 TCP Stearm을 제거하는 부분이 들어가는 것을 확인 할 수 있다.

지금까지의 작업을 더 이상 검색결과가 나오지 않을 때까지 계속한다. 중간 중간 확인한Stream을 저장해 두는 것을 추천한다.

 

 

확인한 내용 분석

 ngrep과 Wireshark 비교

   장점 단점 
 ngrep  한 번의 명령어 입력으로 모든 검색결과를 한 번에 찾아 확인  검색 결과의 가독성이 좋지 않음
 Wireshark  검색 결과를 분석하기가 좋음  모두 검색하기 위해 여러 차례의 과정이 필요함

 

 확인된 패킷 (또는 Stream) 정리

1) 첫 번째 패킷 

 보낸 이  Ann Dercover <sneakyg33ky@aol.com>
 보낸 IP/PORT  192.168.30.108 / 1684
 받는 이  <inter0pt1c@aol.com>
 받는 IP/PORT  64.12.168.40 / 587
 메일 내용  Hey, can you hook me up quick with that fake passport you were taking about? - Ann


2) 두 번째 패킷 첫 번째와 대부분 같고 다른 점만 정리 

 보낸 IP/PORT  192.168.30.108 / 1685
 받는 IP/PORT  205.188.58.10 / 143


3) 세 번째 패킷 

 

 

 보낸 IP/PORT  192.168.30.108 / 1686
 받는 IP/PORT  205.188.58.10 / 143
 내용  첫 번째 패킷관련 메일에 대한 imap 프로토콜 데이터

 

 


4) 
네 번째 패킷 

 

 

 보낸 이  Ann Dercover <sneakyg33ky@aol.com>
 보낸 IP/PORT  192.168.30.108 / 1687
 받는 이  <d4rktangent@gmail.com>
 받는 IP/PORT  64.12.168.40 / 587
 메일 내용  Sorry-- I can't do lunch next week after all. Heading out of town. Another time! - Ann

 

 


5) 
다섯 번째 패킷 네 번째와 대부분 같고 다른 점만 정리 

 

 

 보낸 IP/PORT  192.168.30.108 / 1688
 받는 IP/PORT  205.188.58.10 / 143

 

 


6) 
여섯 번째 패킷 

 

 

 보낸 이  Ann Dercover <sneakyg33ky@aol.com>
 보낸 IP/PORT  192.168.30.108 / 1689
 받는 이  <mistersekritx@aol.com>
 받는 IP/PORT  64.12.168.40 / 587
 메일 내용  Hi sweetheart! Bring your fake passport and bathing suit. Address attached. love, Ann 첨부파일

 

 


7) 
일곱 번째 패킷 여섯 번째와 같고 다른 점만 정리 

 보낸 IP/PORT  192.168.30.108 / 1690
 받는 IP/PORT  205.188.58.10 / 143

 

 분석

 확인된 메일의 종류는 3개로 가짜 여권 재촉마을을 떠나서 약속을 미루는 내용메일 상대와 접촉이다.

 보내는 이는 Ann Dercover이고 주소로는 neakyg33ky@aol.com를 쓰고 있다.

 각 메일들의 받는 이의 메일주소는 메일마다 달라지고 있다. IP와 포트는 크게 두 종류로 나뉘어져 있는데 64.12.168.40 / 587, 205.188.58.10 / 143 각 주소와 포트들은 모두 AOL에 할당된 IP와 사용하는 포트이다.

 587는 SMTP 프로토콜을 통해 메시지가 전송될 때 쓰는 포트143는 IMAP 프로토콜로 이메일을 가져올 때 사용되는 포트이다.

 특히 마지막 메일은 첨부파일이 포함되어 있다.

※ AOL 인터넷 서비스 사업을 하는 기업으로 메일 서비스 또한 제공한다.
https://www.arin.net/ (북미지역 인터넷 관리기구 사이트)에서 위의 IP들을 모두 검색하여 확인 할 수 있다.

 

 

 

 

4. 확인된 첨부파일 카빙

 첨부파일이 있다는 것을 확인 했으므로 그 첨부파일을 복원하여 내용을 확인해 보아야한다. tcpflow와 Wireshark를 각각 사용해서 첨부파일이 있는 패킷들을 imap프로토콜 부분의 데이터만 추출해서 hex editor(bless)를 사용해 패킷 앞뒤에 붙은 이메일 헤더와 푸터들을 제거한 후 순수한 첨부파일만을 디코딩하여 원래 secretrendezvous.docx를 복원 할 것이다.

 

첨부파일이 있는 메일

 마지막 메일의 TCP Stream 중 첨부파일 정보 부분이다자세히 살펴보면 filename은 secretrendezvous.docx 로 MS-word 파일인 것으로 생각되고, base64 형식으로 인코딩 되있는 것을 확인 할 수 있다.

마지막 빨간 네모의 UEsDBB... 부분이 secretrendezvous.docx 파일의 데이터 부분이다.  

※ base64 - 2진 데이터를 아스키 텍스트로 변환하거나 그 반대로 변환하는 인코딩 방법. MIME에 의해 사용되는 방법으로메일에서 이미지오디오 파일을 보낼 때 이용하는 코딩으로 모든 플랫폼에서 안보이거나 깨지는 일이 생기지 않도록 공통으로 64개 아스키 코드를 이용하여 2진 데이터를 변환하기 위해 베이스 64를 이용한다

 

 

 - tcpflow로 tcp stream 파일 추출

 첨부파일이 있던 메일의 TCP Stream을 추출해 내기위해 tcpflow를 사용한다키워드 검색 때 확인한 port 번호(1689와 587)을 이용하여 명령어를 만들어 본다.

# tcpflow -v -r evidence-packet-analysis.pcap 'port 1689 and port 587'

 패킷 방향을 파일명으로 하여 저장되었다패킷에 있는 메일들은 모두 앤이 송신한 것으로 192.168.030.108.01689-064.012.168.040.00587 파일을 열어 확인한다.

(064.012.168.040.00.587-192.168.030.108.01689 파일은 앤이 수신한 내용으로 이메일 교환에 필요한 reply가 들어있다.)

 이전 Wireshark 키워드 검색 때 확인한 것과 같은 내용을 담고 있다.

 

 

- Wireshark로 tcp stream 파일 추출

 첨부파일이 있던 메일의 TCP Stream을 추출해 내기위해 Wireshark를 사용한다키워드 검색 때 저장한 파일을 사용할 수 있다.

Raw 체크 > ( 192.168.30.108 ‣ 64.12.168.40 선택 ) > 다른 이름으로 저장

괄호 친 부분은 생략가능하다.

 

 

- Hex Editor(bless)로 데이터 편집

 위의 내용에서 tcpflow로 작업을 했든, Wireshark로 작업을 했든 추출된 파일은 거의 동일하다문서는 tcpflow로 작업한 파일을 사용하여 작성하고 hex editor tool로써는 bless를 이용하도록 하겠다.

bless 192.168.030.108.01689-064.012.168.040.00587 &

 

 메일에 첨부된 secretrendezvous.docx 파일의 데이터 부분을 제외한 부분을 잘라내야 한다.

 위의 실습 중 첨부파일이 있는 메일 에서 파일 데이터 부분을 확인해보았을 때 특별히 들어있는 키워드로 검색하여 빠르게 근쳐로 이동할 수 있다그래서 docx라는 MS-word의 확장자 부분을 검색한다.

Ctrl + F > docx > Hexadecimal을 Text로 변경 > enter 2

위 그림 오른쪽 빨간 박스 안의 내용을 확인하면 아래 그림의 빨간 박스와 거의 같다는 것을 알 수 있다.

 실제 필요한 데이터는 UEsDBB로 시작하는 이하의 부분이므로 위의 이메일 관련 헤더들은 삭제해 준다.

 UEsDBB 앞의 ....부분부터 파일 제일 처음부분까지 드래그 > Delete

드래그 할 때 Shift + Home을 사용 추천 )

 

 

 다음으로는 파일 제일 아래 이메일 관련 푸터(footer) 부분을 지워 주어야한다오른쪽 스크롤바를 제일 아래로 내리면 아래와 같은 화면이 나오는데 MAAAA= 이하의 부분을 모두 지워주면 된다.

 앞에서 보았다시피 첨부된 secretrendezvous.docx는 base64 형식으로 인코딩되어 있는데 인코딩 후 데이터는 =(padding 문자으로 끝난다.

Wireshark의 TCP stream에서 보면 더욱 확실히 구분되어 인식할 수 있다.

 이제 남은 파일 내의 데이터는 원래 secretrendezvous.docx의 데이터 일 것이다파일을 저장한다.

 이름을 ngreptest로 카빙된 파일을 저장하였다.

 이제는 base64 디코딩을 해주어야 하지만 원래 파일은 docx로 Windows에서 쓰는 CRLF로 줄바꿈이 되어있다. base64 명령어를 써주기 위해 카빙된 파일을 리눅스 형식(LF)로 바꾸어 주어야 하기 때문에 fromdos라는 툴을 사용하도록 한다.

 fromdos는 tofrodos라는 패키지에 포함되어 있다.

 

※ fromdos 설치 (tofrodos 패키지 설치) 이 실습은 Kali linux에서 하고 있는 실습이므로 Debian계열의 apt-get 명령을 이용해 설치를 한다.
# apt-get install tofrodos // tofrodos 패키지 설치
# which fromdos // fromdos 명령어 존재 확인

 

 fromdos 명령어를 이용해 카빙된 파일을 변경시켜 보고 base64 명령어로 디코딩을 한다.

# fromdos -b ngreptest

# base64 -d ngreptest > ngreptest.docx

 카빙이 완료 되었다. file 명령어로 카빙된 파일의 속성을 확인해 보고 암호화 체크섬을 확인 한다.

# file ngreptest.docx

# md5sum ngreptest.docx

# sha256sum ngreptest.docx

 

 

 

 

■ 참고

 

• http://terms.naver.com/entry.nhn?docId=863240&cid=42346&categoryId=42346 - [네이버 지식백과] 베이스 64 [base 64] (IT용어사전, 한국정보통신기술협회)

 

• http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=68156021&qb=YmFzZTY0IOyduOy 9lOuUqSDrjbDsnbTthLA=&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=Sr77tsoRR2ZssbeTgJdssssssss-467346&sid=/EhuuBx7QKTaKRav6na9fw%3D%3D - [네이버 지식IN] base64 답변부분

 

• 네트워크 포렌식 ( 4장 패킷 분석 ) - 조너선 햄, 셰리 다비도프 지음/ 에이콘 출판사