CapTipper란?
CapTipper는 HTTP 악성 트래픽을 분석할 수 있는 python 도구이다.
pcap파일을 분석하면 명령어를 입력할 수 있는 콘솔이 나오고 실제 연결된 웹 페이지를 가상환경에서 들어가볼 수 있다.
같은 기능을 하는 툴로 wireshark가 있다.
이번에 둘 다 사용해본 결과 각자의 장단점이 있겠지만, CapTipper가 빠르게 분석하는데 더 좋은 것 같다.
- CapTipper GitHub
GitHub - omriher/CapTipper: Malicious HTTP traffic explorer
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 옵션은 생략 가능하다.
convs |
네트워크의 conversation 정보를 출력해준다. 여기서 conversation은 session이라고 생각해도 무방하다.
hashes [conv number] |
위에서 conv number를 확인했다면, 그것에 대한 hash를 출력해볼 수 있다.
이 hash로 virustotal에 검사를 진행해 악성 유무를 쉽게 파악할 수 있다.
hosts |
pcap 파일에 있는 호스트와 해당하는 URI를 보여준다.
각 도메인에 대해 세션이 어떻게 연결되었는지 확인이 가능하다. 이것으로 흐름 파악이 가능하다.
objects |
pcap 파일에 있는 모든 객체 파일을 보여준다.
명령어마다 conv number를 이용할지, objects number를 이용할지 다르기 때문에 둘 다 확인해 주는게 좋다.
open [object number] or [conv number] log |
open 명령어를 통해 가상환경에서 웹 서버로 들어갈 수 있다.
실제 악성 페이지와 같은 동작을 하며 받아오는 파일이 있다면 그것도 받아온다.
밑에 등장하는 body 명령어로 코드를 추출해서 분석할 수 있지만, 코드가 너무 복잡하다면 직접 실행시켜보는게 가장 간단한 분석방법이다.
open 명령어를 이용해 해당 페이지가 어떤 동작을 하는지 직접 볼 수 있는 아주 유용한 명령어다.
log 명령어를 통해 log를 확인할 수 있다. 간단한게 한줄로 나오며 시간, ip, URI, http status code가 출력된다.
body [conv number] [all] |
선택한 conv number에 해당하는 파일을 기본 크기인 256Byte 만큼만 출력한다.
뒤에 all을 붙여주면 전체를 모두 출력해준다.
dump [conv number] [저장할 경로] dump all [저장할 경로] |
dump 명령어를 이용해 받아오는 파일을 저장할 수 있다.
dump all을 이용하면 pcap 파일 안의 것들을 모두 받아오기 때문에 편리하다.
head [object number] |
http 응답 헤더를 출력해준다.
ungzip [object number] or [conv number] |
선택한 number이 gzip 형태라면 압축 해제한다.
vt [object number] or [conv number] |
해당하는 object number를 virus total에 검사를 진행한다.
이 명령어를 이용하기 위해서는 virustotal에 회원가입한 후 발급해주는 API key가 필요하다.
무료로 받을 수 있다.
strings [object number] |
선택한 객체 내부에 있는 모든 문자열을 출력해준다.
ziplist [conv number] |
zip 파일 객체 내부의 파일을 나열해준다.
hexdump [conv number] |
선택한 파일의 hexdump를 표시해준다.
아래의 파일의 헤더는 50 4B 03 04인데 이건 ZIP 파일을 의미한다.
아래 링크에 파일 헤더 정보가 정리되어 있다.
파일 시그니처 모음 (Common File Signatures) | FORENSIC-PROOF
python CapTipper.py -r [저장할 디렉토리] [분석할 파일 명] |
자동으로 분석해서 report를 작성해주는 명령어이다.
아주 편리하다.
실행하면 html 파일이 생긴다.
report의 구성은 Flow View, Clienet Details, conversations로 구성되어있다.
- Flow View : 세션이 성립되면서 흐름을 도식화해서 보여준다.
- Client Details : client의 ip, mac, user-agent, flash 버전을 보여준다.
- conversations : 링크에 따른 세션 현황을 보여준다. 추가적으로 시간 정보까지 보여준다.
여러 명령어들을 직접 사용해 봤지만, 이것들이 CapTipper 기능의 전부는 아니다.
CapTipper Wiki가 있으니 어떤 명령어들이 있는지 알아보고 써보면 좋을 것 같다.
아래 링크가 CapTipper Wiki의 링크다.
Usage — CapTipper 0.3 documentation
'네트워크' 카테고리의 다른 글
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 |
댓글