환경구축

Cuckoo Sandbox(2.0.5) 기본 환경 설치

ferretsecu 2017. 12. 20. 15:44

1) Cuckoo Sandbox란



간단하게 Cuckoo Sandbox에서 이 악성코드를 테스트할 윈도우에 악성파일을 보내면 동적으로 분석해주는 환경이다. 동영상을 보면 이해가 빠를 것이다.

위에 영상은 랜섬웨어를 Cuckoo Sandbox로 보내는 영상인데, 대략적으로 Cuckoo Sandbox가 어떤 결과를 보여주는지 알 수 있다.


2) 구성 환경


Host 

Guest / Host

Guest

VM Tool

 Cuckoo Sandbox(2.0.5)

win10

Ubuntu(16.04.3 LTS)

winxp

Virtual Box


Cuckoo Sandbox는 악성코드를 보낼 가상머신이 필요하다. 보통 Cuckoo Sandbox는 리눅스에서 실행되며, 가상화 툴(VirtualBox, VmWare 등)로 설치된 윈도우(winxp or win7)이 필요하다.

자신의 PC가 원래 리눅스거나 또는 여유 있는 PC가 있다면 그 곳에 Cuckoo Sandbox를 설치하고 윈도우 가상머신을 설치하는 것이 제일 좋다.

가상머신 안에 가상머신을 두면 속도가 너무 느리다. 그리고 무슨 문제 생길지도 잘 모르겠고

하지만 자신의 PC가 윈도우고 여유 있는 PC가 없으면 어쩔 수 없이 위에 표처럼 윈도우 - 우분투 - 윈도우와 같은 형태로 설치할 수 밖에 없다.


가상화 도구는 VirtualBox를 설치했다. Cuckoo Sandbox 공식홈페이지의 설치 가이드가 VirtualBox 기준으로 설명되있고, VmWare는 무료버전을 쓸 경우 스냅샷을 못 찍는 문제가 있다. KVM은 써본적이 없다.


3) 설치 과정


1. win10에서 Ubuntu 설치


1. VirtualBox 설치(https://www.virtualbox.org/)

2. VirtualBox 가상머신에 Ubuntu 16.04.3 LTS 설치(https://www.ubuntu.com/download/desktop)

Ubuntu 설치할 때 영문판으로 설치했고, 사용자 이름은 cuckoo로 만들었다.

3. 스냅샷 찍기

나중에 Cuckoo Sandbx 설치과정 중에 꼬일 것을 대비해서 기본 설치상태를 찍어놓자.

위 과정이 끝났으면 Ubuntu를 실행한다.

4. sudo apt-get update

5. 우분투에 게스트 확장 이미지 설치

6. 우분투 재부팅


2. Python 설치


1. sudo apt-get install python python-pip python-dev libffi-dev libssl-dev

2. sudo apt-get install python-virtualenv python-setuptools

3. sudo apt-get install libjpeg-dev zlib1g-dev swig


3. MongoDB 설치


참고 :  https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/


1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5

2. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

3. sudo apt-get update

4. sudo apt-get install -y mongodb-org

5. sudo service mongod start

6. sudo systemctl enable mongod.service


4. tcpdump 설치


1. sudo apt-get install tcpdump apparmor-utils

2. sudo aa-disable /usr/sbin/tcpdump

3. sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

4. getcap /usr/sbin/tcpdump


5. volatility 설치


1. sudo apt-get install volatility


6. Cuckoo 설치


※ virtualenv로 설치해도 되고 그냥 설치해도 되는데, virtualenv로 설치하면 cuckoo에 필요한 파이썬 패키지를 설치할 때 꼭 . venv/bin/activate 명령어를 실행한 후 설치해야 한다. venv에 대한 정보는 다음 링크를 참고

http://dgkim5360.tistory.com/entry/python-virtualenv-on-linux-ubuntu-and-windows


1. cd /home/cuckoo

2번 명령어 실행하기전에 꼭 경로를 위와 같이 잡아준다.

3번 명령어를 실행할 때도 꼭 위에 경로에서 실행해야한다.

2. virtualenv venv

이 명령어는 한번만 실행한다. 한번 이 명령어를 실행하게 되면 더이상 이 명령어를 실행할 필요가 없다.

3. . venv/bin/activate

cuckoo를 실행할 때, cuckoo에 관련된 파이썬 패키지를 설치할 때 꼭 3번 명령어를 실행해야한다.

4. pip install -U pip setuptools
5. pip install -U cuckoo

6. cuckoo -d

7. cuckoo community

8. deactivate

virtualenv에서 벗어나는 명령어


※ 쿠쿠 실행, 쿠쿠에 관련된 파이썬 패키지를 설치할 때는 꼭 실행할 때 경로를 잡아주고 . venv/bin/activate 명령어를 실행하고 해야한다. 그리고 virtualenv 환경에서 벗어날때는 deactivate 명령어를 쓰자


7. m2crypto 설치


1. cd /home/cuckoo

2. . venv/bin/activate

3. pip install m2crypto

4. deactivate


8. 라우팅 설정


※  ip대역을 192.168.56.0/24로 설정했는데 현재 글대로 설치할 것이면 수정할 필요가 없지만 만약 현재 글과 다른 설정, 즉, 버추얼 박스로 우분투와 xp의 네트워크로 호스트 어댑터를 사용하지 않거나, xp의 ip대역이 다른 경우, 버추얼박스 말고 다른 가상화 도구를 사용하는 경우 ip대역을 수정해야한다.


1. sudo iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.56.0/24 -j MASQUERADE

enp0s3는 ifconfig 명령어를 실행했을때 win10과 우분투의 연결에 쓰이는 랜카드 인터페이스 이름을 쓴다. 우분투는 기본적으로 enp0s3일 것이다.

2. sudo iptables -P FORWARD DROP
3. sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
4. sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
5. sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
6. echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward

7. sudo sysctl -w net.ipv4.ip_forward=1

※ 이 설정은 재부팅 하면 다시 초기화 되기 때문에 다시 실행해야 한다. 그래서 다음과 같은 쉘 스크립트를 작성한다.


#!/bin/bash
echo "Start"
iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.56.0/24 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
echo 1 | tee -a /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1
echo "Complete"

위와 같은 코드를 .sh파일로 저장하고 chmod 명령어로 700으로 권한 변경한 뒤에 재시작할 때마다 sudo로 실행해준다.


9. Ubuntu에서 xp 설치, 설정


※  가상환경에서 가상환경을 설치하는 것이기 때문에 속도가 굉장히 느릴 것이다. 최대한 우분투와 xp머신에 램을 할당해주자, 가장 좋은 것은 우분투내에서 설치하는 것이지만 win10에서 xp이미지를 ova파일로 내보내서 그 xp이미지로 우분투에 설치하는 방법도 있다. 실제로 테스트 해봤는데 두번재 방법은 될 때도 있고 안 될때도 있다.

자신의 램이 8G이상이고 우분투에 4G할당하면 설치하는데 큰 문제는 없을 것이다.


1. sudo apt-get install -y virtualbox
2. sudo usermod -a -G vboxusers cuckoo

3. virtualbox

4. xp 가상환경 생성 램은 우분투의 할당받은 램의 반으로 잡아주고 이름은 xp32로 했다.

5. xp 생성(한글판 보단 영문판 추천)

[그림 9-1]

버추얼 박스를 실행하고 ctrl + G 를 누른다. 그러면 [그림 9-1]과 같은 창이 뜬다. Network를 선택하고

Host-only Networks를 선택하고 왼쪽에 +모양의 아이콘을 클릭한다. 그러면 vboxnet0이 추가된다.


6. xp 네트워크 설정

[그림 9-2]

[그림 9-2]와 같이 네트워크를 호스트 온리 어댑터로 잡아준다.


7. xp 세팅

[그림 9-3]

제어판 -> 네트워크 및 인터넷 연결 -> 네트워크 연결 -> 로컬 영역 연결 오른쪽 클릭 속성 -> 인터넷 프로토콜 속성에 들어가서 [그림 9-3]처럼 설정한다. DNS 서버는 win10에서 cmd -> ipconfig /all 에서 나오는 DNS 서버로 설정해준다.


그리고 확인해야할 것이 두가지 있다.

1. ping으로 우분투와 xp가 서로 통신이 되는지 확인

2. xp에서 익스플로러를 켜서 인터넷이 연결 됐는지 확인


1번이 안되면 버추얼박스 호스트 어댑터 설정이 잘못된 것이고

2번이 안되면 위에서 8.라우팅 설정이 제대로 안된 것이다.


확인이 끝나면 다음과 같이 한다.

1. /home/cuckoo/.cuckoo/agent/agent.py를 xp에 복사

2. python 2.7.14 windows x86 설치 (https://www.python.org/downloads/release/python-2714/)

3. agent.py 실행(더블클릭)

4. xp의 스냅샷 하나만 찍기


이제 xp 설정은 모두 끝났다.


10. Cuckoo Sandbox 설정


이제 cuckoo를 실행하기 위해 설정을 바꿔야 하는데, 이 글의 경우 공식 홈페이지의 가이드대로 해서 거의 수정할 것이 없다. VirtualBox를 쓰지 않았거나, 우분투와 xp의 네트워크 설정을 다르게 한 경우 수정해야할 것이다. 설정파일의 위치는 /home/cuckoo/.cuckoo/conf에 있다.


여기서 살펴볼 conf 파일은 다음과 같다.

1. cuckoo.conf

...

machinery = virtualbox (버추얼 박스)

...

ip = 192.168.56.1 (우분투 호스트 어댑터의 ip)


위와 같이 설정되있을 것인데 이 글을 따라서 했다면 따로 수정할 필요가 없다.


2. virtualbox.conf

...

[cuckoo1]
# Specify the label name of the current machine as specified in your
# VirtualBox configuration.
label = cuckoo1

...

label = cuckoo1이라 되어있는데 자신이 설치한 xp 머신의 이름으로 바꾼다. 버추얼 박스에서 실행하면 나오는 머신의 이름이다.


3. reporting.conf

...

[mongodb]
enabled = no

...

enabled = yes로 수정한다.


이제 모든 설정이 끝났다.


11. Cuckoo Sandbox 실행, 테스트


터미널을 두개 열고 각각 다음과 같은 명령어를 입력한다.

1. 8(라우팅 설정) 쉘 스크립트 실행

이 쉘 스크립트를 실행해야 xp가 외부와 통신이 된다.

2. 첫번째 터미널

1. cd /home/cuckoo

2. . venv/bin/activate

3. cuckoo

3. 두번째 터미널

1. cd /home/cuckoo

2. . venv/bin/activate

3. cuckoo web runserver


[그림 11-1]

[그림 11-2]

첫번째 터미널이 성공적으로 실행되면 [그림 11-1]과 같은 결과가 나오고

두번째 터미널이 성공적으로 실행되면 [그림 11-2]와 같은 결과가 나온다.


에러가 나면 에러내용을 자세히 보자.

보통 cuckoo 실행에서 에러가 발생하는 경우, 우분투와 xp ip 설정에 문제가 있는 경우다.


[그림 11-3]

우분투의 파이어폭스로 http://127.0.0.1:8000로 접속한다. 성공적으로 설치 됐으면 [그림 11-3]처럼 뜰 것이다. 

위에 SUBMIT A FILE FOR ANALYSIS를 클릭하면 파일을 찾아서 분석할 수 있다. 


[그림 11-4]

적당한 악성코드를 다운 받아 한번 테스트 해본다. 다운을 받고 [그림 11-3]에서 SUBMIT...을 클릭해서 분석할 파일을 선택한다. 그러면 [그림 11-4]와 같이 나오는데 오른쪽 상단에 있는 Analyze 버튼을 누르면 분석한다.


[그림 11-5]

Analyze 버튼을 누르면 [그림 11-5]와 같은 화면이 나온다. Status열은 현재 상태를 나타내는데 running은 실행중이라는 의미다. 완료되면 reported라고 뜨고 클릭하면 분석결과 창이 나온다.


[그림 11-6]

[그림 11-6]은 분석 결과 화면이다. Logs를 누르면 분석 로그를 볼 수 있다.


12. 마치며

기본 설치를 마쳤는데, 이외에도 스크린 샷 기능, yara, suricata등등 연동할 수 있는 것이 매우 많다. 그리고 다른 설치 방법도 있으니 공식 홈페이지나 구글링을 통해서 자신이 원하는 기능을 추가해준다. 

그리고 분석 중에 에러가 나는 경우/home/cuckoo/.cuckoo/storage/analyses에 리포트 디렉토리가 있는데 이 곳에서 로그를 확인해서 무슨 에러인지 확인하고 해결해본다. 개인적으로도 설치할 때 공식 사이트를 기준으로 했지만 안되는 부분은 에러 메시지를 보고 몇몇 부분을 추가했다.


그리고 타겟 가상머신을 영문판, 한글판 둘 다 테스트 했는데 영문판이 결과가 더 잘 나오는 경우가 있었다. 영문판으로 하던지 아니면 xp 한글판, 영문판 둘다 만들어둔다.


참고 사이트 : 쿠쿠 공식 설치 가이드(http://docs.cuckoosandbox.org/en/latest/installation/)