본문 바로가기
네트워크

CapTipper를 이용한 pcap파일 분석

by laoching 2021. 9. 16.
728x90
반응형
CapTipper란?

CapTipper는 HTTP 악성 트래픽을 분석할 수 있는 python 도구이다. 

pcap파일을 분석하면 명령어를 입력할 수 있는 콘솔이 나오고 실제 연결된 웹 페이지를 가상환경에서 들어가볼 수 있다.

같은 기능을 하는 툴로 wireshark가 있다.

이번에 둘 다 사용해본 결과 각자의 장단점이 있겠지만, CapTipper가 빠르게 분석하는데 더 좋은 것 같다.

 

- CapTipper GitHub

GitHub - omriher/CapTipper: Malicious HTTP traffic explorer

 

GitHub - omriher/CapTipper: Malicious HTTP traffic explorer

Malicious HTTP traffic explorer. Contribute to omriher/CapTipper development by creating an account on GitHub.

github.com

CapTipper 사용해보기

git clone을 이용해서 CapTipper를 다운로드 받는다.

git clone을 이용하기 위해 git을 설치해주고 만약 python이 없다면 python3 또한 설치가 필요하다.

apt-get update
apt-get install git -y
git clone https://github.com/omriher/CapTipper

 

이번 실습은 malware-traffic-analysis.net에 있는 악성 pcap파일을 이용하였다.

파일명 : EK_MALWARE_2014_09_26-phishing-malware-downloaded-and-run-in-VM_mailware-trffic-analysis.net.pcap

python CapTipper.py [분석할 파일 이름] -p [포트번호]

CapTipper.py가 설치되어있는 디렉터리로 이동한 후 위의 명령어를 입력해준다.

-p 옵션은 생략 가능하다.

python CapTipper.py [분석할 파일 이름] -p [포트번호]

convs

네트워크의 conversation 정보를 출력해준다. 여기서 conversation은 session이라고 생각해도 무방하다.

convs

hashes [conv number]

위에서 conv number를 확인했다면, 그것에 대한 hash를 출력해볼 수 있다.

이 hash로 virustotal에 검사를 진행해 악성 유무를 쉽게 파악할 수 있다.

hashes [conv number]

hosts

pcap 파일에 있는 호스트와 해당하는 URI를 보여준다.

각 도메인에 대해 세션이 어떻게 연결되었는지 확인이 가능하다. 이것으로 흐름 파악이 가능하다.

hosts

objects

pcap 파일에 있는 모든 객체 파일을 보여준다.

명령어마다 conv number를 이용할지, objects number를 이용할지 다르기 때문에 둘 다 확인해 주는게 좋다.

objects

open [object number] or [conv number]

log

open 명령어를 통해 가상환경에서 웹 서버로 들어갈 수 있다.

실제 악성 페이지와 같은 동작을 하며 받아오는 파일이 있다면 그것도 받아온다.

밑에 등장하는 body 명령어로 코드를 추출해서 분석할 수 있지만, 코드가 너무 복잡하다면 직접 실행시켜보는게 가장 간단한 분석방법이다.

open 명령어를 이용해 해당 페이지가 어떤 동작을 하는지 직접 볼 수 있는 아주 유용한 명령어다. 

open [object number] or [conv number]

log 명령어를 통해 log를 확인할 수 있다. 간단한게 한줄로 나오며 시간, ip, URI, http status code가 출력된다.

open, log

body [conv number] [all]

선택한 conv number에 해당하는 파일을 기본 크기인 256Byte 만큼만 출력한다.

뒤에 all을 붙여주면 전체를 모두 출력해준다.

body [conv number] [all]

dump [conv number] [저장할 경로]

dump all [저장할 경로]

dump 명령어를 이용해 받아오는 파일을 저장할 수 있다. 

dump all을 이용하면 pcap 파일 안의 것들을 모두 받아오기 때문에 편리하다.

 dump [conv number] [저장할 경로]
dump all [저장할 경로]
dump all을 통해 받아온 파일들

head [object number]

http 응답 헤더를 출력해준다.

head [object number]

ungzip [object number] or [conv number]

선택한 number이 gzip 형태라면 압축 해제한다.

ungzip [object number] or [convs number]

vt [object number] or [conv number]

해당하는 object number를 virus total에 검사를 진행한다.

이 명령어를 이용하기 위해서는 virustotal에 회원가입한 후 발급해주는 API key가 필요하다.

무료로 받을 수 있다.

vt [object number] or [conv number]

strings [object number]

선택한 객체 내부에 있는 모든 문자열을 출력해준다.

strings [object number]

ziplist [conv number]

zip 파일 객체 내부의 파일을 나열해준다.

ziplist [conv number]

hexdump [conv number]

선택한 파일의 hexdump를 표시해준다.

아래의 파일의 헤더는 50 4B 03 04인데 이건 ZIP 파일을 의미한다.

아래 링크에 파일 헤더 정보가 정리되어 있다.

hexdump [conv number]

파일 시그니처 모음 (Common File Signatures) | FORENSIC-PROOF

 

파일 시그니처 모음 (Common File Signatures) | FORENSIC-PROOF

 

forensic-proof.com

python CapTipper.py -r [저장할 디렉토리] [분석할 파일 명]

자동으로 분석해서 report를 작성해주는 명령어이다.

아주 편리하다.

실행하면 html 파일이 생긴다.

python CapTipper.py -r [저장할 디렉토리] [분석할 파일 명]

report의 구성은 Flow View, Clienet Details, conversations로 구성되어있다.

  • Flow View : 세션이 성립되면서 흐름을 도식화해서 보여준다.
  • Client Details : client의 ip, mac, user-agent, flash 버전을 보여준다.
  • conversations : 링크에 따른 세션 현황을 보여준다. 추가적으로 시간 정보까지 보여준다.

auto report

여러 명령어들을 직접 사용해 봤지만, 이것들이 CapTipper 기능의 전부는 아니다.

CapTipper Wiki가 있으니 어떤 명령어들이 있는지 알아보고 써보면 좋을 것 같다.

아래 링크가 CapTipper Wiki의 링크다.

Usage — CapTipper 0.3 documentation

 

Usage — CapTipper 0.3 documentation

The Initialization of CapTipper outputs the conversations found between the client and the server in the following format: [ID] : REQUEST URI -> SERVER RESPONSE TYPE (FILENAME) [SIZE IN BYTES] (Magic: $Whatype) The interpreter contains internal tools for f

captipper.readthedocs.io

 

728x90
반응형

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

TCP/IP socket  (0) 2022.06.13
TCP/IP 송/수신 원리  (0) 2022.06.11
Proxy의 정의와 활용  (1) 2022.06.09
통신 방식(유니, 멀티, 브로드, 애니)  (0) 2022.02.15
상위 프로토콜 지시자  (0) 2022.02.10

댓글