CapTipper를 이용한 악성 트래픽 분석
http://noplanlife.com/?p=1134
CapTipper를 이용한 악성 트래픽 분석
이번에 소개할 도구는 파이썬 기반의 Malicious 네트워크 트래픽 분석도구인 CapTipper이다.
일반적으로 네트워크 트래픽을 분석할 때 가장 많이 사용되는 도구로 WireShark를 떠올리지만,
필터링 expressions 를 제대로 활용하지 못할 경우 사용에 어려움을 느낄 수도 있다.
반면, CapTipper 는 악성 트래픽을 분석하는데 도움을 줄 수 있는 기능들로 구성되어 있어,
빠르게 분석을 수행할 수 있는 장점이 있다.
해당 도구에 대한 소개 및 다운로드 경로는 다음과 같다.
– 다운로드 경로 : https://github.com/omriher/CapTipper
1. 기능 및 특징
CapTipper의 가장 큰 특징 중 하나는 바로 가상 서버를 통한 시뮬레이션 기능이다.
분석하고자 하는 pcap 파일을 로드하면, 로컬 호스트 상의 가상 서버가 구동되면서
실제 트래픽이 오고 갔던 화면을 그대로 재연할 수 있는 기능이다.
또한, 자바스크립트 내 포함된 iframe 코드를 자동으로 찾아주거나
바이러스 토탈 API를 통해 자동으로 분석 결과를 업로드/조회 할 수 있는 것도
CapTripper의 장점이라 할 수 있겠다.
2. 설치 및 기본 명령어
CapTripper는 파이썬이 설치된 환경이라면 문제없이 사용할 수 있다.
단, 파이썬 2.7x 버전에서만 테스트 하였으며, 3.x 버전의 경우 제대로 동작하지 않을 수 있다.
git clone 을 통해 CapTripper를 로컬에 복사한 후 다음 명령으로 분석을 시작할 수 있다.
정상적으로 실행되면 “CT >” 형태의 프롬프트로 전환되면서 명령을 기다리게 된다.
지원되는 명령어 리스트를 보고 싶거나, 간단한 사용법을 알고 싶다면 “help”를 입력한다.
주로 사용되는 몇가지 명령어를 살펴본 후, 실제 악성 트래픽 샘플을 분석해 보도록 하자.
– hosts : 트래픽의 전반적인 접속 흐름을 호스트 단위로 묶어서 보여준다.
각 라인 마지막에 붙어 있는 숫자는 Conversation_id로써, 실제 트래픽이 오고간 순서를 의미한다.
– head / body <conv_id> : 해당 conv_id에 대한 헤더와 바디 내용을 출력한다.
– convs : 전체 네트워크 트래픽 흐름을 (호스트 관계없이) 순서대로 표시한다.
의심되는 파일이 있을 경우 붉은색 또는 노란색으로 별도 표기 된다.
– iframes <obj_id> : 해당 객체에 포함되어 있는 iframe 태그 정보를 추출하여 보여준다.
– dump : 분석하는 pcap에서 파일 객체들을 추출한다. 전체 또는 특정 conv_id를 추출할 수 있다.
이외 ungzip, hexdump등의 명령어는 실제 분석 예제를 통해 알아보도록 하자.
3. 악성트래픽 분석 – Case 01 : Nuclear EK 분석
http://www.malware-traffic-analysis.net/2014/11/06/2014-11-06-Nuclear-EK-traffic.pcap
먼저 CapTipper를 통해 pcap 파일을 로드하면 자동으로 convs 리스트를 다음과 같이 보여준다.
CapTipper의 가장 큰 장점이라 할 수 있는 것이 바로 convs 기능이다.
분석가라면 위 한장의 그림만 보더라도 대략적인 악성코드 감염 경로와 진행 흐름을 파악할 수 있다.
8번 라인부터 집중적으로 .swf 파일 / pdf 파일 / exe 파일을 다운받는 것으로 볼 때,
특정 웹사이트 접속으로 인한 Drive-by infection일 가능성이 매우 높다고 할 수 있다.
hosts 명령을 통해 호스트 단위로 접속 기록을 살펴본 결과 이상한 점이 한군데 발견된다.
[1] www.magmedia.com.au에서, 갑자기 접속 경로가 pixeltouchstudios.tk [2]로 “튀는” 것이다.
게다가 튀는 경로역시 일반적인 경로는 아닌 듯 하다.
[1]번 Conv_id 에 대한 Head / Body 를 분석해본 결과 gzip 형태로 압축되어 있으며,
ungzip 명령을 통해 압축된 개체를 풀면 [15]번에 새로운 객체가 생성된다.
body 명령어를 통해 15번 객체를 열면 자바스크립트 구문이 들어있는데,
내용이 너무 길어 어떤 기능이 들어있는지는 한번에 확인이 어렵다.
이 때, iframes 명령어를 사용하게되면 자바스크립트내 포함되어 있는 <iframe> 태그를 별도로 추출할 수 있다.
실행 결과 위 그림과 같이 [2]번 URL (pixeltouchstudios.tk)이 들어가 있는 것을 확인할 수 있다.
따라서, [1]번 URL 접속 후, 내부에 포함된 iframe 태그에 의해 [2]번 주소 페이지가 열린 것이라 볼 수 있다.
[2] 번 Conv_id를 head로 보면 [3]번 Host(grannityrektonaver.co.vu)로 302 Redirection 되었다.
[3]번 Conv_id를 dump 한 후 열어본 결과 다음과 화면과 같이 난독화 된 자바스크립트가 나타났다.
지금까지의, 전체적인 흐름을 다시 한번 되짚어 보면,
[1] 1차 경유지 접속 후 iframe 태그 호출 –>
[2] 악성코드 유포지로 Redirection –>
[3] Exploit Kit 동작 순인것을 알 수 있다.
이제 Exploit-Kit 동작 후, 실제 다운로드 받은 파일들을 자세히 살펴보자.
Conv_id [8] 번과 [13]번의 SWF 파일에 대해 hexdump 를 실행한 결과는 다음과 같다.
13번 객체의 hexdump 값이 PK로 시작하는 것으로 볼 때 zip으로 압축된 파일임을 알 수 있다.
ziplist 명령을 사용하면 실제 객체에 포함되어 있는 zip파일 객체 목록을 추출할 수 있다.
다음 그림과 같이 dll 파일이 zip 파일 내 포함되어 있는 것을 확인할 수 있다.
현재까지의 결과로 볼 때, 13번 객체가 Exploit을 유발했을 것으로 의심이 된다.
hashes 명령어를 통해 해당 객체의 해시값을 추출한 다음, Virustotal 를 통해 검색한 결과
다음과 같이 악성코드 진단 기록을 확인할 수 있었다.
Case 02 : Gongda-EK 분석
http://malware-traffic-analysis.net/2014/12/13/2014-12-13-Gondad-EK-infection-traffic.pcap
Nuclear EK 에 이어 국내에 널리(?) 알려진 공다(Gongda) Exploit Kit 에 대해 분석해보도록 하자.
Case 01과 동일하게 CapTipper 로 Pcap 파일을 오픈한다.
이번에도 역시 [4] –> [5] 번 항목으로 “튀는” 현상이 발견된다.
body 명령을 통해 [4]번 객체의 내용을 확인해본다.
“\x” 형태의 Ascii 문자들이 스크립트에 삽입되어 있으며, 이것을 문자열로 변환하면
다음 화면과 같이 [5]번 항목으로의 iframe이 설정된 것을 알 수 있다.
결국 [5]번 까지는 Exploit-Kit 배포지로 연결하기 위한 과정이었으며,
실제 Exploit은 “comm.sansung.org” 사이트 ( [6]번 이후 ) 에서 실행됨을 알 수 있다.
[6]번 “index.html”을 덤프해보면, 난독화된 Gongada Exploit-Kit 코드가 삽입되어 있으며,
이 후, Exploit을 통해 추가적인 악성 파일들이 다운로드 되었다.
Exploit 유포지에서 다운 받은 jar 파일 [12번 항목] 에 대한 hashes 값으로
Virustotal 에 검색해 본 결과 Java Exploit임을 최종 확인하였다.
4. 활용 방안에 대하여
CapTipper는 Wireshark에 비해 제공되는 기능은 그리 많지 않다.
그러나, 악성 트래픽을 빠르고 효율적으로 분석하는데는 충분한 것으로 보인다.
특히 hosts / convs 명령어를 통해 사용자의 접속 흐름을 쉽고 빠르게 분석할 수 있는 것은
이 도구가 가진 가장 큰 장점이라 할 수 있다.
따라서, 침해사고 분석 또는 실시간 분석 시 악서 트래픽 경로를 신속하게 파악하는데
도움을 줄 수 있을 것으로 보인다.
끝으로, CapTipper 소스코드에는 파이썬에 Ansi 컬러를 입힐 수 있는 Colorama가 사용되었다