본문으로 바로가기


1. 개요


이미 오래전 부터 악성코드 유포는 웹을 통해 이뤄져왔다. 특히나 드라이브-바이 다운로드 공격 방법은 유포의 프로세스를 크게 확장하게 되었다. 이번에 소개할 도구는 악성코드 유포가 포함된 pcap 파일을 파싱하여 분석하는 도구이다. 특히 기능이 드라이브-바이 다운로드에 맞춰져 기능들이 구현되고 있는 것으로 판단하고 있다. 


이 도구는 별도의 라이브러리를 설치할 필요가 없다. 이는 좀 더 세부적으로 구현한 부분이 없다고 판단할 수 있다. 그래서 아쉽게도 자바스크립트 난독화에 대한 대응이 이루어져 있지 않으며, 다양한 취약점을 유발시키는 파일들에 대한 상세 분석도 진행하지 않는다.


2. 설치 및 구동


CapTipper는 별도의 라이브러리를 설치 할 필요가 없이 github 를 통해 다운로드 받으면 된다.


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


분석에 사용될 샘플 파일은 http://www.malware-traffic-analysis.net/ 에서 Nuclear EK pcap 파일이다. 해당 사이트에 다양한 악성행위를 기록한 pcap 파일들이 있는데, 이들을 이용하여 이 도구를 테스트하면 좋을 것 같다.

http://www.malware-traffic-analysis.net/2014/11/06/2014-11-06-Nuclear-EK-traffic.pcap



분석을 위해 실행하는 도구는 CapTipper.py로 다음과 같이 실행하면 사용 방법에 대해 기술하고 있다. 사용 방법은 CapTipper.py 뒤에 파라미터로 pcap 파일을 붙이고, pcap을 웹 형태로 출력하기 위해 웹 서버가 구동되는데 이 웹 서버의 포트 번호를 지정할 수 있다. 포트번호를 지정하지 않으면 기본 80포트를 사용한다. 그리고 -s 옵션을 이용해 웹 서버를 비활성화 시킬 수도 있다. 



포트를 열기위해서는 root 권한이 필요하기에 root 사용자가 아니라면 sudo 명령으로 권한을 부여한다. 도구를 구동하면 다음 그림과 같이 웹 서버도 함께 열리는 것을 확인 할 수 있다. open 0 명령으로 열람하거나 브라우저로 직접 주소를 입력하여 접근할 수 있다. 드라이브-바이 다운로드 공격에 사용된 pcap 파일이기에 랜딩 페이지(Landing Page)를 확인할 수 있다.



3. 기능 분석


기능 분석을 하기 앞서 기본적인 형태에 대해 알아두는 것이 중요하다. 먼저 분석하는 pcap 파일 명을 출력하고, 그 다음 해당 pcap 의 최초 트래픽 활성화 시간을 보여준다.



다음 각각의 URI를 파싱하여 정보를 출력한다. 이 정보들은 pcap을 파싱하여 정보를 추출하고, 별도의 데이터베이스를 운영하는 것이 아니기에 메모리에 저장하고 출력하는 것으로 판단하고 있다. 각 라인별 앞에 붙은 숫자를 기억하고 운영한다.



추가 기능에 대해서는 CT> 커맨드-라인 인터페이스에서 help 명령을 통해 볼 수 있다. 이 명령들은 tab으로 자동완성 기능을 사용할 수 있다.



3.1. about, client


이 도구에 대한 기본 정보를 출력한다.



pcap 파일을 수집한 사용자의 정보를 보여준다. 



3.2. dump, hashes, hexdump


dump는 pcap 파일을 파싱하여 저장된 파일들을 로컬에 저장한다. 저장하는 방법은 세 가지 방법이 존재한다.


  • 하나의 파일을 설정한 경로에 설정한 파일명으로 저장
  • 전체 파일을 설정한 경로의 디렉터리에 저장
  • 전체 파일을 설정한 경로의 디렉터리에 저장. 단, exe 파일은 제외

저장 경로는 상대, 절대 경로를 모두 사용할 수 있으며 하나의 파일만을 저장하려면 저장할 파일명을 입력해줘야 한다. 전체 저장시 생성되는 파일 명은 오브젝트ID-파일명 형태로 저장된다. 



기억할 점은 root 권한으로 도구가 동작하고 있기 때문에 저장되는 파일들의 소유자는 root로 저장된다.



특정 오브젝트를 hashes 명령과 함께 사용하면 해시값을 출력한다. 해시값은 md5, sha1, sha224, sha256, sha384, sha512를 출력한다.



hexdump 명령은 선택한 오브젝트의 HEX 값을 출력한다. 웹에서 다운로드 받는 콘텐츠들은 상당수 확장자를 속일 수 있다. 그래서 이 명령을 통해 매직 시그니처를 확인하여 파일을 확인 할 수 있다.



3.3. ungzip, body, convs, iframes


분석하고자 하는 pcap에서 추출한 오브젝트들에는 iframe이 없지만, ungzip, body, convs, iframes 명령으로 숨겨진 iframe을 추출하고 분석할 수 있다.


ungzip 명령으로 통해 gzip으로 압축된 파일을 해제한다. 해제되어 생성된 새로운 정보는 새로운 오브젝트 번호를 부여받는다.



convs 명령은 메모리에 저장된 오브젝트를 보여준다. 하지만, 새롭게 생성된 15번 오브젝트는 보여주지 않는다. 하지만 다른 기능들은 일부 사용할 수 있다.



body 명령은 선택한 오브젝트의 내용을 출력한다. 출력은 256 바이트에 한정되어 출력한다.



iframes 명령으로 삽입된 iframe을 찾아 출력한다. 난독화가 된 iframe은 찾지는 못한다.



3.4. open, log


open 명령을 통해 선택한 오브젝트를 실행시킬 수 있다. 서버가 실행중이면 0 오브젝트는 로컬 서버에서 실행이 된다.




이후 log 명령을 통해 랜더링한 정보들을 보여준다. 앞서 3.6. ungzip, body, convs, iframes 에서 추출한 iframe 주소를 볼 수 있다.



3.5. server, head, hosts, info


server 명령은 로컬 서버를 활성화/비활성화 할 수 있는 기능이다.



head 명령은 선택한 오브젝트의 HTTP 프로토콜 헤더의 정보를 보여준다.



hosts는 각각의 호스트와 호스트에 따르는 파일들의 연관관계를 나타낸다. 다음 그림과 같이 삽입된 iframe이 호출하는 호스트와 정보를 보여주고있다.



info 명령은 선택한 오브젝트에 대한 정보를 보여준다.



ziplist 명령은 ZIP 파일에 압축된 파일을 보여준다. 실습한 pcap 파일에서 13번 오브젝트는 확장자는 swf 이지만 실제로 압축된 파일이다.



3.6. vt


vt는 약자에서 추측되다 싶이 바이러스토탈 기능을 이용하는 것이다. 이 기능을 이용하려면 바이러스토탈 API 키 값이 필요하다. 바이러스토탈에 샘플 파일을 업로드하는 것이 아닌, 해시값을 이용하여 검색을 하는 형태로 운영한다. 전송하는 해시값은 MD5이다. 다음 그림과 같이 key_vt 변수를 생성하여 바이러스토탈 API 키를 입력한다. API 키를 입력하는 파일명은 CTCore.py 이고, 253번 라인에서 확인할 수 있다.



vt 명령을 사용하면 다음과 같이 결과를 볼 수 있다.



4. 결론


이 도구는 0.01 버전임에도 불구하고 괜찮은 기능과 컨셉을 가지고 있다. 앞으로 업데이트 할 내용이 TrID, Regex Search, PE info 라고 한다. 추가적인 모듈을 설치하여 기능들이 강화될 것으로 예상하고 있다. 아쉬운 점은 CLI 환경이기에 좀더 가독성을 높이는 작업과 자세한 모듈 설명, 분석시 발생하는 정보에 대한 추가 파싱에 대한 고도화 등이 필요하지 않을까 싶다.


파이썬으로 제작된 오픈소스 도구들의 흐름을 보면 bottle 라이브러리로 단순한 형태의 웹 인터페이스를 제공하는 형태를 가진다. 이 도구도 지금의 뼈대에서 새로운 아이디어와 다양한 기능들이 살이되어 웹 인터페이스를 제공하는 형태가 되길 기대해본다.


5. 참조 사이트



저작자 표시 비영리 동일 조건 변경 허락
신고

댓글을 달아 주세요

  1. 지나가는나그네 신고">2015.01.16 17:49 신고

    좋은 정보 감사합니다.. ^^

  2. BlogIcon 방주원 신고">2015.03.16 11:58 신고

    정말 체계적으로.. 열심히 하시네요.ㅎㅎ 반성케 합니다.
    자주 들러 배워가겠습니다.^^

티스토리 툴바