IT/Security

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

착한아줌마 2018. 12. 31. 09:43
반응형

프로젝트 관련 글

 

 

 

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

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

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

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

 

 


 

 

 

■ 개요

 처음 네트워크 패킷을 캡처했다면, 이것을 가지고 어떻게 분석해야하는 지를 다룬다. 조사의 성격에 따라 다르겠지만, 특정 문자열의 검색이나 파일 추출을 위해 사용하고 있는 프로토콜을 중심으로 분석 할 수 있다.

 

 

 

■ 프로토콜 분석

 프로토콜의 데이터 구조 내에서 하나 이상의 필드를 조사하는 것을 프로토콜 분석이라고 한다. 프로토콜 분석은 일반적으로 비공개 프로토콜 구조 파악을 위한 연구 측면의 조사나 네트워크 조사의 목적으로 실시한다. 하지만 공개된 프로토콜에 대한 분석 또한 할 수 있어야 한다.

 

1. 프로토콜 분석 도구

- PDML과 PSML

 Packet Details(Summary) Markup Language로 2~7계층의 패킷 세부사항(중요한 사항)을 표현하는 표준을 정의한 XML형식 언어이다.

 

- 와이어샤크(Wireshark)

 프로토콜 분석에 최적화된 도구. 분석기가 자동으로 프로토콜을 해석하며 개별 패킷 내의 프로토콜 세부 정보를 표시.

 

 

 Packet List - 이 패널은 캡처한 패킷을 간략하게 한 줄에 표시한다. 일반적으로 패킷 캡처 시간, 출발지/도착지 IP, 사용한 가장 상위 계층의 프로토콜, 프로토콜 데이터의 간략한 내용이 포함되어 있다.

 

Packet Details -

Packet List 패널에서 선택된 패킷에 대해 와이어샤크가 해석할 수 있는 모든 게층의 프로토콜 세부사항을 보여준다.

 

Packet Bytes -

2계층 데이터를 포함한 패킷 정보를 16진수와 ASCII로 표현

 

- 티샤크(tshark)

 와이어샤크의 커맨드 라인 인터페이스로 동일한 기능을 포함한다. 기본적으로 PSML형식으로 정보를 표시하며 -V 옵션을 사용하면 PDML형식으로 정보를 표시.

 

 

2. 프로토콜 분석 기법

- 프로토콜 식별

 

일반적으로 특정 프로토콜과 연관된 바이너리/16진수/ASCII값(일명 매직넘버)을 검색

매직넘버(Magic Number)
 대부분의 프로토콜은 제로 오프셋 근처에 잘 알려진 바이트 형태를 이용해 식별할 수 있다. 거의 모든 파일 포맷은 헤더(header)를 가지고 있고 그 헤더안에 프로토콜 식별을 위한 특정 바이트가 존재해서 이것을 목록화해서 볼 수 있다. 

 

 캡슐화 프로토콜 정보의 활용 - 하위 패킷내에 상위 패킷의 타입에 대한 정보를 포함하고 있음

 

 기본 서비스와 관련된 TCP/UDP 포트 번호의 활용 - 일반적으로 정해진 포트 번호로 식별, 항상 신뢰할 수는 없음

 

 주소나 호스트 이름이 지정된 출발지 또는 목적지 서버의 기능 분석 - 출발지나 목적지 IP가 어느 단체가 소유한 IP일 수 있음

 

 존재하며 인식 가능한 프로토콜 구조에 대한 테스트 - 와이어샤크가 분석해 낼 수 없지만 존재하는 프로토콜의 가능성 염두

 

- 프로토콜 디코딩

 프레임 구조를 기반으로 데이터를 해석하는 기술. 일반적으로 디코딩 도구에 크게 의존한다.

 

자동화된 공개 디코더나 도구를 활용

 

공개된 문서를 참조하여 수동 디코딩

 

직접 디코더를 제작

 

- 필드 추출

 필요한 특정 필드의 값을 추출해 낸다. 원하는 패킷의 프로토콜 세부사항을 알 수 있다.

 

 

 

■ 패킷 분석

 하나 이상의 패킷 내용이나 메타 데이터의 조사를 패킷 분석이라고 한다. 주요 패킷의 식별, 흐름 분석과 재현을 위한 전략을 개발하기 위해 일반적으로 실시된다.

 

1. 패킷 분석 도구

- 와이어샤크 & 티샤크

와이어샤크에서는 display filter, tshark에서는 -R 옵션을 사용하여 원하는 패킷만을 보면서 분석해 나갈 수 있다.

 

- ngrep

특정 문자열, 바이너리 시퀀스, 특정 패턴이 패킷의 위치에 상관없이 존재 유무를 식별하기 위해 설계된 도구. 1차 분석이나 악의적인 단어에 대한 빠른 검색이 필요할 경우 사용되는 도구이다.

kali linux에는 기본적으로 설치되어 있고, centos에서는 EPEL 레파지토리를 추가하면 yum으로 간단히 설치할 수 있다.

ex) ngrep -I xxx.pcap "string to search for"

 

- 헥스 편집기

Hex editor, 캡처한 패킷 내용을 포함하고 있는 데이터의 원시 비트를 확인하거나 수정할 수 있다. 여러 종류의 헥스 편집기가 있으나 이 중에 GUI 도구인 Bless를 사용한다.

Bless 홈페이지에서 툴의 소개와 다운로드 링크를 확인 할 수 있고, kali linux 에서도 apt-get 명령을 이용해 간단히 패키지를 다운받을 수 있다.

# apt-get install bless // bless 패키지 설치

# which bless // bless 명령어 확인

 

GUI 툴이기에 특별한 사용법은 설명하지 않는다. 아래 실습에서 사용할 툴로 미리 설치해 놓는 것을 추천한다.

Bless를 사용하는 주 목적은 패킷 흐름에서 원하는 파일을 카빙 하는 것에 있다.

 

※ 카빙(Carving)
카빙이란 파일 자체 정보를 이용해 파일을 복원해 내는 것으로, 각 파일 포맷이 가지는 고유한 특성( 매직넘버 )을 이용한다.
디스크에 쓰여진 각 파일의 포멧 별 바이너리 데이터 시그니처를 이용(Header, Footer)






지정된 단위(섹터 또는 클러스터)를 모두 검색하며 관련 헤더와 푸터를 발견했을 경우 해당 위치에 데이터를 복원한다. (단, 데이터가 연속적으로 쓰였을 경우에 해당)

 

 

2. 패킷 분석 기법

- 패턴 매칭

캡처한 패킷에서 특정 값이 일치하는 것을 검색하여 주요 패킷을 식별한다.

 

- 프로토콜 필드 파싱

주요 패킷의 프로토콜 필드의 내용을 추출한다.

 

- 패킷 필터링

프로토콜 메타 데이터의 필드 값을 기준으로 패킷을 구분한다.

 

 

 

■ 흐름 분석

 

흐름 분석은 관련 패킷들의 순서, 즉 ‘흐름’에 대해 조사하는 것을 말한다. 트래픽 패턴의 식별, 의심 행위의 분리, 상위 계층 프로토콜의 분석, 데이터 추출을 위해 일반적으로 사용한다.

 

1. 흐름 분석 도구

- 와이어샤크 & 티샤크

와이어샤크와 티샤크에서는 conversation(대화)를 통해 흐름을 구분,확인 할 수 있다. 또 와이어샤크에서는 Follow TCP Stream 기능을 이용해 id의 통신에 대한 패킷 흐름을 한 눈에 확인 할 수 있다.

 

- tcpflow

TCP 스트림에서 데이터를 추출하기 위한 전형적인 커맨드 라인 도구. 와이어샤크의 Follow TCP Stream과 비슷하지만, 모든 스트림에 있는 컨텐츠가 한번에 추출해 저장된다.

 

- pcapcat

최근에 발표된 도구로 앞의 도구들과 비슷한 기능을 한다.

 

- tcpxtract

2005년 닉 하버가 발표한 네트워크 포렌식 분석을 위한 최고의 도구 중 하나. 이미 알고 있는 파일 포캣 정보를 이용해 파일 포캣 시퀀스의 처음을 찾기 위해 재구성된 TCP 스트림을 조사한다.

 

 

2. 흐름 분석 기법

- 상호 통신과 흐름 목록

캡처된 패킷에서 모든 통신 흐름 또는 특정 흐름을 목록화한다.

 

- 흐름 추출

다량의 흐름을 분리하거나 의심스러운 흐름의 추가 분석을 위해 디스크에 저장한다.

 

- 파일과 데이터 카빙

흐름을 재구성하여 파일이나 기타 흥미로운 데이터를 추출(카빙)한다.

 

 

 

 

■ 

상위 계층 트래픽

 높은 계층의 프로토콜을 통해 더욱 응용계층에 가까운 프로그램 기능을 위한 데이터를 볼 수 있는등의 자세한 조사를 할 수 있다.

 

1. 상위 계층 프로토콜

다양한 상위 계층의 프로토콜들이 있지만, 기본적으로 알아두어야 할 프로토콜로는 HTTP, DHCP, SMTP, DNS 등이 있다. 프로토콜에 대한 자세한 설명은 하지 않도록 하겠다. 전문적인 책이나 인터넷 자료를 통해 프로토콜 구성을 자세히 공부하고 난 뒤에 분석을 시도하는 것을 추천한다.

 

 

2. 분석 도구

- oftcat

OFT 프로토콜 분석과 카빙을 전문으로 하는 전용 도구

ex) 트래픽 수집

 

- smtpdump

SMTP프로토콜을 통한 이메일 분석에 쓰이는 도구

 

- findsmtpinfo.py

사용법이 간단한 SMTP 분석 도구로 보고서 생성기능이 포함되어 네트워크 포렌식 조사 보고서를 위해 사용되기 적합하다.

 

- 네트워크마이너(NetworkMiner)

다목적 트래픽 분석 도구로. 윈도우에서 동작하고, 직관적인 GUI 인터페이스와 각력한 프로토콜 분석 엔진을 가지고 있다. 오픈소스로 다양한 기능이 포함되어 있다.

 

 

 

 

■ 참고

 

• http://www.garykessler.net/library/file_sigs.html - 매직 넘버 목록

 

• http://blog.naver.com/zwhoknee/30131204336 - linux hex

 

• http://home.gna.org/bless/downloads.html - Bless Hex editor 홈페이지

 

• http://www.packetinside.com/2011_11_01_archive.html - 패킷 카빙

 

• http://extr.tistory.com/70 - 데이터 카빙과 파일 카빙의 차이

 

• http://www.largolab.org/2012/03/digital-forensic.html - 디지털 포렌식 카빙

 

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