쿠쿠 샌드박스(Cuckoo Sandbox)는 한마디로 악성코드 분석을 위한 시스템입니다. 악성으로 의심되는 파일을 현업에서 운영되는 시스템에서 직접 확인하자니 어떤 일이 발생할지몰라 불안하겠죠? 이 때 Cuckoo는 분리된 가상머신 환경에서 해당 파일을 실행한 뒤에, 어떠한 행위가 일어나는지 관찰하여 구체적인 정보를 획득할 수 있도록 합니다. 이를 Sandbox라고 표현하였는데, '아이가 다치는 것을 방지하기 위해 만든 모래 통(샌드박스)'에서 유래한 것입니다. 쿠쿠 샌드박스는 악성코드 분석가들이 가장 많이 사용하는 분석 도구입니다. 자세한 내용은 제작사의 Github페이지홈페이지를 참고하세요. 관련도서로는 Cuckoo 샌드박스를 활용한 악성코드 분석(디지트 오크타비안토/이크발 무하르디안토 지음, 에이콘 출판 역)이 있습니다.


쿠쿠 샌드박스는 기본적으로 GNU/Linux(Debian 계열 또는 우분투)에 설치하는 것을 가정하고 있습니다. 때문에 일반 윈도우 운영체제를 사용하는 유저의 경우 쿠쿠 샌드박스를 설치하기위해서 가상머신 소프트웨어를 사용하여 Windows Host 위에 Ubuntu Linux를 설치하고, Sandbox에 사용할 환경 구축을 위해 다시한번 VirtualBox에서 윈도우를 구축해야 합니다. 그러나 이 과정은 번거로운 작업을 수반하며 시스템의 성능을 많이 소모하여 분석 시간이 느리고 불편하다는 단점이 있습니다. 제작사 홈페이지에 따르면 쿠쿠 샌드박스는 Mac OS X 운영체제를 사용하는 호스트 컴퓨터에서도 직접 실행이 가능함을 언급하고 있습니다. 이렇게 수행할 경우 불필요하게 가상머신을 이중으로 구축할 필요가 없으므로 성능면에서 훨씬 수월한 분석을 진행할 수 있을 것입니다. 이에 본 포스팅에서는 쿠쿠샌드박스(2.0)를 Mac OS X 10.11 El Capitan 에서 설치하는 가이드를 제공합니다. 대부분의 소프트웨어들은 특별히 호환성에 문제가 되는경우가 아니면 2016년 9월 현재 가장 최신인 버전을 기준으로 할 것입니다. (관련근거 : http://docs.cuckoosandbox.org/en/latest/installation/ )


1. 호스트 설정

쿠쿠를 설치하기 이전에, 먼저 몇가지 소프트웨어와 라이브러리를 선행설치해야 합니다.


1) 파이썬 2 설치

쿠쿠는 파이썬을 기반으로하여 개발되었습니다. 그러므로 이와 호환되는 버전(2.7)의 파이썬과, 관련 라이브러리 패키지를 설치해야 합니다. 파이썬2를 이미 설치하신 분은 이 과정을 건너뛰셔도 됩니다. 최근에는 파이썬 패키지의 의존성 문제를 해결하기 위해 virtual env나 아나콘다 등의 도구를 사용하곤 합니다. 저의 경우에도 맥북의 기본 파이썬이 3으로 설정되어 있기 때문에 쿠쿠샌드박스를 정상적으로 구동할 수 없었습니다. 이때 아나콘다를 사용하여 가상의 파이썬2 환경을 구축할 수 있습니다. (참고 : 아나콘다 맥 버전 다운로드)

아래의 명령어는 'cuckoo'라는 이름의 환경을 생성합니다. 파이썬2로 명시하였습니다.

생성된 cuckoo 환경에 진입하기 위해서 source activate 명령어를 사용합니다. 작업이 완료되어 빠져나올 때에는 deactivate를 하면 됩니다.

2) TCPDUMP 설치

Tcpdump는 네트워크 패킷을 분석하기 위한 도구입니다. 맥에서는 brew를 사용하여 쉽게 설치가 가능합니다.

3) MongoDB 설치

몽고DB는 대표적인 오픈소스 NoSQL DB입니다. cuckoo는 분석 데이터를 mongodb를 사용하여 관리하고 있습니다. 맥에서는 brew를 통해 쉽게 설치가 가능하며, 서비스를 구동하면 mongo 명령어를 통해 shell에 접근이 가능합니다.

4) Volatility 설치

볼라틸리티는 메모리 포렌식 분야에서 거의 표준으로 여겨지는 프레임워크입니다. github 저장소에서 다운로드합니다.


2. Cuckoo Sandbox 설치

1) Cuckoo 설치

본격적으로 쿠쿠 샌드박스를 설치합니다. 먼저 github 저장소에서 가져옵니다. 2016년 현재 설치되는 버젼은 2.0-rc1 입니다.

2) 관련 패키지 설치

요즘 github에서 배포되는 패키지들은 대부분 requirements.txt 라는 파일을 포함하고 있습니다. 관련된 의존패키지를 친절하게 나열해 놓은 것인데요, cuckoo의 경우 각 패키지의 버전까지 명시가 되어있어서 매우 편리합니다. 1.x버전에서는 django나 SQLAlchemy 등이 상위버전과 호환되지 않는 문제가 있었다고 하는데, 2.0 버전에서는 해결된 것으로 보입니다.

아래 명령어로 쉽게 설치가 가능합니다.

3) pydeep 설치

pydeep 패키지만 따로 설명드리는 이유는 Mac OS X에서 pip install pydeep 설치시 오류가 발생하기 때문입니다. 트러블슈팅 작업에 상당히 공을 들였는데, 저의 노하우를 공개합니다.

우선, 위와 같은 오류가 발생합니다. fuzzy.h 파일을 찾을 수 없는 것인데요 이때 아래 명령어를 통해 ssdeep을 brew로 설치합니다.

그리고 설치된 패키지의 경로를 export명령어로 임시로 설정해주고, pip install pydeep을 수행합니다.


3. Oracle VirtualBox 설치 및 세팅

1) VirtualBox 설치

버추어박스는 오라클이 개발한 가상머신 소프트웨어입니다. 홈페이지에서 VirtualBox Mac 버전을 다운로드 한 후 설치합니다.

2) 가상 머신 생성

악성코드 분석에 사용할 가상머신을 생성합니다. 이것은 마치 실험용 쥐에 테스트해보는 것과 같습니다. 먼저 공개된 Mac용 WindowXP 파일을 다운로드합니다.

이후 VirtualBox의 메뉴에서 파일 > 가상 시스템 가져오기 > IE8 - WinXP.ovf 선택 후 가상 머신 생성을 완료합니다. 편의상 머신의 이름은 IE8로 지정하겠습니다. 이 이름은 추후에 환경설정에서 기입하여야 하므로 반드시 메모해두십시오.


3) 파이썬 및 패키지 설치

이제 가상머신(WinXP)안에서 아래의 프로그램을 설치합니다. 추후에 agent프로그램을 파이썬으로 가동해야하므로 먼저 python 2.7을 설치하고, 분석시 스크린 캡쳐 기능을 활용하기 위해 python의 PIL 라이브러리를 설치합니다.


4) 네트워크 설정

*이 부분이 다소 오래걸릴 수 있습니다.

이제 VirtualBox의 네트워크 환경을 설정합니다. 먼저 VirtualBox의 자체 환경설정으로 진입하여 네트워크 탭을 선택하고, '호스트 전용 네트워크'를 클릭합니다. 그리고 오른쪽의 초록색 버튼을 클릭하여 새로운 네트워크를 추가합니다. 이름은 vboxnet0으로 설정됩니다.

vboxnet0를 선택한 후 오른쪽의 'Edit' 버튼을 클릭하여 아래와 같이 세부 설정을 입력합니다. 어댑터는 192.168.56.1 이라는 주소를 주었고, DHCP 서버 가능도 활성화 한 후 각 내용을 입력합니다. (이렇게 설정하면 추후에 고정 IP 를 설정하는 것과 동일한 효과를 얻을 수 있습니다.)

이번에는 생성한 가상머신(IE8)의 네트워크 설정합니다. 아마 어댑터가 한개만 활성화되어 있을 것입니다. 앞에것은 NAT으로 그대로 두고, 두번째 어댑터를 클릭한 후 '사용하기'를 선택하여 활성화시킵니다. 이때 '호스트 전용 어댑터'를 선택하고 위에서 생성한 vboxnet0로 지정합니다.

Virtual Box 머신(윈도우XP)의 IP 정보를 확인합니다. cmd창에서 ipconfig 를 입력한 화면의 예시는 다음과 같습니다. Adapter가 2개가 나오는데, connection3은 NAT로 연결된 상태이고(실제로 인터넷이 되게하는 역할), connection4는 호스트 컴퓨터인 MAC과 통신하기 위한 것입니다. 이 IP가 192.168.56.102임을 확인하였습니다.

Virtual Box 내부에서 Host 컴퓨터(맥)과 통신여부를 확인해봅시다. ping 으로 192.168.56.1(Mac OS X 호스트)과 통신이 되는 상태입니다.

반대로, Host 컴퓨터와 가상머신간의 통신여부를 확인합니다. 이상없이 잘 동작하고 있다면 네트워크 설정이 끝났습니다.

5) Agent

이제 가상머신에 에이전트를 실행해야 합니다. cuckoo를 설치한 디렉토리에 agent 하위에 agent.py 코드가 포함되어 있습니다. 이 파일을 가상머신 안으로 옮깁니다. 이때 공유폴더를 사용하거나, 인터넷으로부터 가져오는 방법등이 있습니다. (참고 : https://github.com/cuckoosandbox/cuckoo/blob/master/agent/agent.py )

해당 파일을 가상머신의 윈도우 안에서 실행합니다. 환경변수 설정에서 파이썬 경로(C:/Python27)를 추가하고 cmd창에서 python 명령어를 다음과 같이 수행합니다.

위의 과정이 귀찮다면, 파일의 확장자를 *.py 대신에 *.pyw로 변경함으로써 마우스 더블클릭으로 실행을 대체할 수 있습니다. 

이 과정에서 윈도우 보안경고가 표출될 수 있으며, Unblock(차단해제)를 선택하시면 됩니다.

정상적으로 실행되면 아래와 같은 상태가 됩니다. 0.0.0.0:8000 으로 수신을 대기하고 있습니다.

정확히 작동하고 있다면 cmd창에서 netstat -an 의 결과에 아래와 같이 0.0.0.0:8000 이 listen 되고 있어야 합니다.

6) Snapshot

지금까지 작업한 가상머신의 상태를 Snapshot으로 저장해둡니다. Cuckoo Sandbox는 이 스냅샷을 활용하여 악성코드를 분석할 것입니다. 따라서 만약 분석하고자 하는 악성코드가 MS Office 문서라면, 가상머신 안에서 MS Office를 먼저 설치한 후, 그 지점에서 Snapshot을 만드시면 됩니다. 상단메뉴에서 Machine > Take Snapshot 후 아래와 같이 설정.


4. Cuckoo 실행

이제 마지막으로 몇가지 환경설정만 마무리하면 Cuckoo를 실행할 수 있습니다.

1) virtualbox.conf 설정

cuckoo/conf/virtualbox.conf 을 수정해야 합니다. 몇부분으로 나누어 설명드리겠습니다. 

리눅스에서는 path가 /usr/bin/VBoxManage로 세팅됩니다. 이 부분을 주석처리하고, 아래의 Mac OS X 버전 부분의 주석을 해제합니다. 네트워크 인터페이스는 vboxnet0로 설정합니다.

다음으로는 가상머신의 label명과 IP 주소를 알맞게 세팅해줍니다. 저는 label을 IE8로 지정했으며, IP는 192.168.56.102였습니다. 이를 conf 파일에 다음과 같이 반영해줍니다. 이제 virtualbox.conf 수정은 완료되었으니 저장후 종료합니다.

2) reporting.conf 수정

cuckoo/conf/reporting.conf 을 수정해야 합니다. 여기서는 보고서의 출력과 관련한 내용을 설정할 수 있습니다. 다양한 추가기능이 있지만 우선 여기서는 mongodb에 초점을 맞춥니다. mongodb의 enable 설정을 yes로 하고, 관련한 db명을 지정해줍니다. (엘라스틱서치 등으로도 활용 가능)

3) 실행

이제 드디어 Cuckoo 를 실행합니다. 아래와 같이 python cuckoo.py 를 입력합니다.

실행시 자동으로 업데이트 여부를 확인하여 최신버전인지 확인하게 되는데, 저의 경우 dev버젼을 설치했더니 rc1이 출시되었으니 업데이트하라고 하는군요. 업데이트는 아래의 명령어를 사용합니다.

4) 분석하기

분석하고자 하는 악성 파일(ex: 5AD06EDA999A9F2F28....zip)을 쿠쿠샌드박스로 전달하는 방법은 2가지가 있습니다. 먼저 터미널에서 명령어를 사용하여 전달하는 방법입니다.

위와같이 /utils/submit.py를 이용하는 방법이 있으나, 약간 귀찮습니다. 이에 쿠쿠샌드박스에서는 WebGUI를 제공합니다.

django 를 사용하기 때문에 기본옵션은 127.0.0.1로 localhost로만 개방됩니다.  또한 runserver에 추가옵션을 줄 수 있습니다. 예를들어 0.0.0.0:8000 이라고 명시하면 외부 네트워크에서도 접속이 가능한 웹서비스가 제공됩니다. 웹 브라우저에서 127.0.0.1:8000을 입력하시면 접속됩니다.

WebGUI 상에서 Submit 메뉴를 선택하면 쉽게 파일을 첨부하여 전송할 수 있습니다.

Submit이 완료되면 결과가 나옵니다.

Recent 탭을 클릭하면 최근에 분석을 진행했던 파일의 목록을 확인할 수 있습니다.

해당 파일의 MD5 해시값(파란색 부분)을 클릭하면 세부 리포트를 확인할 수 있습니다.

출처 :

Khairulazam.net Wikipedia

Amatubu Wiki

IT & SECURITY STUFFS!!! - Articles about IT, Networking and Security

CPUU님의 창작활동을 응원하고 싶으세요?