| | at : |


Archive

[Cuckoo를 이용한 악성코드 분석] #1 Cuckoo SandBox 설치하기 (Install Cuckoo SandBox on debian linux) 하훌 rwxr-xr-x 5 3/02/2015



[Cuckoo를 이용한 악성코드 분석] #1 Cuckoo SandBox 설치하기 (Install Cuckoo SandBox on debian linux)

Permission rw-r--r--
Author 하훌
Date and Time 3/02/2015
Label
License 크리에이티브 커먼즈 라이선스


악성코드 분석 도구인 cuckoo sandbox를 통한 분석 방법에 대한 첫번째 이야기입니다.
cuckoo sandbox 설치인데요, 리눅스에서 쉽게 설치가 가능합니다.

일단 하나하나 살펴보며 설치 과정을 작성할까 하다가 양이 많을 것 같아 빠르고 쉽게 설치하는 구성으로 진행해볼까 합니다.


1. cuckoo sandbox 에서 사용하는 패키지 및 lib 설치


(install package and library)

 설치 중 필요했던 패키지, 라이브러리 등을 모아서 하나의 명령행으로 작성하였습니다.

# apt-get install python python-dev python-sqlalchemy python-dpkt python-jinja2
python-magic python-pymongo python-bottle subversion git build-essential git libpcre3 libpcre3-dev libpcre++-dev python-bottle

cuckoo 설정 및 db 종류에 따라 추가로 발생할 수 있는 패키지가 존재합니다. 일단 위 패키지는 구동에 필요했던 패키지들입니다.


데비안 계열 리눅스(데비안,우분투 등)에서는 apt 패키지 매니저로 설치 가능한 부분이 많이 때문에 해당 부분 설치 후 모자란 부분에 대해서 설치를 진행하면 됩니다. (yum으로도 가능하겠지만.. 데비안 유저라 잘 모르겠네요..)

위 설치 과정이 끝났다면 3가지 패키지 설치가 더 필요합니다.
바로 PE-File , ssdeep, yara 인데요. 아래와 같은 방법으로 설치 진행하시면 됩니다.

PE-File
# python-pefile
# svn checkout http://pefile.googlecode.com/svn/trunk/ pefile
# cd  pefile
# python setup.py builid install

ssdeep
ssdeep 는 ssdeep 및 pydeep  설치가 필요합니다.
# wget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.9/ssdeep-2.9.tar.gz
# tar -xvf ssdeep-2.9.tar.gz
# cd ssdeep-2.9
# ./configure
# make;make install
# ldconfig
# cd ..
# git clone https://github.com/kbandla/pydeep.git pydeep
# python setup.py build
# python setup.py install
# cd ..

yara
yara 또한 python-yara 설치가 필요합니다.
# wget http://yara-project.googlecode.com/files/yara-1.6.tar.gz
# tar xvfz yara-1.6.tar.gz
# cd yara-1.6
# ./configure
# make;make install
# wget http://yara-project.googlecode.com/files/yara-python-1.6.tar.gz
# tar -xvf yara-python-1.6.tar.gz
# cd yara-python-1.6
# python setup.py build
# python setup.py install
# cd..
# cd yara-1.6
# make install
# cd ..


2.cuckoo sandbox 설치

위 패키지 설치가 끝났다면 cuckoo sandbox 를 다운 받아 설치합니다.
git로 clone 뜨면 됩니다.

# git clone https://github.com/cuckoobox/cuckoo.git cuckoo
#cd cuckoo


3.virtual box 설치

cuckoo sandbox는 oracle vm을 사용하기 때문에 virtual box 설치 및 네트워크 설정이 필요합니다.

여러 웹 사이트 및 블로그를 보면 어렵게 설치하는 방법도 많은데.. 저는 예전에 설치한 방법으로 별다른 에러 없이 잘 진행되었네요.

virtualbox 를 source list 에 추가 후 설치합니다.
# apt-get install virtualbox

virtualbox 설치 과정은 아래 주소 참고해주세요.
(몇몇 필요한 게시글은 좀 옮겨놓아야 할  같네요.)

http://noon.tistory.com/1202

4. vm 설정(set vm)

sandbox 로 쓰일 vm을 생성합니다. 이때 가상머신의 이름은 cuckoo에서 사용되니 꼭 메모해두세요.(쉽게 쓰는게 최고입니다. )


vm 생성이 완료되었다면 터미널에서 가상머신을 위한 host-only 인터페이스를 구성합니다.
vboxmanage를 이용하여 192.168.56 대역으로 설정하였습니다.

# vboxmanage hostonlyif create
# vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1


설정 후 ifconfig로 네트워크 정보 확인 시 확인됩니다.
이제 sandbox 로 쓰일 가상 머신에서 동일한 대역으로 할당 받도록 네트워크 설정을 합니다.


set virtual machine network



추가로 python 과 pil을 설치합니다.

파이썬 공식 홈페이지에서 2.7 버전을 다운로드하여 설치합니다.
www.python.org

download python 2.7
 
pil은 아래 url로 접근하여 2.7 윈도우 버전으로 설치합니다.
http://pythonware.com/products/pil


5. cuckoo agent 설치 및 스냅샷

이제 cuckoo 디렉토리에서 agent.py 파일을 vm으로 넘겨주어 vm 내에서 실행합니다.
실행 후 스냅샷 이름은 test로 하였습니다.


running agent.py


6. cuckoo vm 설정 후 실행

conf 하위의 virtualbox.conf 파일을 아까 만든 vm 데이터로 수정합니다.

#conf/virtualbox.con

  1 [virtualbox]
  2 # Specify which VirtualBox mode you want to run your machines on.
  3 # Can be "gui", "sdl" or "headless". Refer to VirtualBox's official
  4 # documentation to understand the differences.
  5 mode = gui
  6 
  7 # Path to the local installation of the VBoxManage utility.
  8 path = /usr/bin/VBoxManage
  9 
 10 # Specify a comma-separated list of available machines to be used. For each
 11 # specified ID you have to define a dedicated section containing the details
 12 # on the respective machine. (E.g. cuckoo1,cuckoo2,cuckoo3)
 13 machines = cuckoo1          # 1번째 분석 머신입니다. 똑같이 작성하셔도 됩니다.
 14 
 15 [cuckoo1]
 16 # Specify the label name of the current machine as specified in your
 17 # VirtualBox configuration.
 18 label = MalwareAnalysis     #제가 생성한 가상머신 이름입니다.  만드신 vm 넣어줍니다
 19 
 20 # Specify the operating system platform used by current machine
 21 # [windows/darwin/linux].
 22 platform = windows
 23 
 24 # Specify the IP address of the current virtual machine. Make sure that the
 25 # IP address is valid and that the host machine is able to reach it. If not,
 26 # the analysis will fail.
 27 ip = 192.168.56.141         # 가상머신 IP입니다.
 28 
 29 # (Optional) Specify the snapshot name to use. If you do not specify a snapshot
 30 # name, the VirtualBox MachineManager will use the current snapshot.
 31 # Example (Snapshot1 is the snapshot name):
 32 snapshot = test                   # 스냅샷
 33 
 34 # (Optional) Specify the name of the network interface that should be used
 35 # when dumping network traffic from this machine with tcpdump. If specified,
 36 # overrides the default interface specified in cuckoo.conf
 37 # Example (vboxnet0 is the interface name):
 38 interface = vboxnet0        # 네트워크 인터페이스입니다.

시그니쳐 업데이트(선택)
cuckoo에서 쓰이는 분석 모듈 중 업데이트가 필요한 항목에 대한 업데이트입니다.
필수는 아니지만 해서 저는 업데이트 하고 사용하였습니다.

# ./util/community.py -s -f


이제 cuckoo sandbox 실행입니다.

python cuckoo.py 

or

python cuckoo.py -d




   

혹시 vm을 찾을 수 없는 에러 발생 시 아래와 같은 방법으로 해결 가능합니다.
Error
[modules.machinery.virtualbox] DEBUG: VBoxManage returns error checking status for machine MalwareAnalysis: VBoxManage: error: Could not find a registered machine named 'MalwareAnalysis'

MalwareAnalysis(제 vm 입니다.) 를 찾을 수 없다고 하네요.
원인은 제가 작업을 root로 하였는데, vm이 일반 사용자 계정으로 설치되어 vm에서 해당 리스트가 확인이 안되었더라구요..

# vboxmanage list vms

no result(아무 결과 없었습니다.)

하여 root 계정으로 virtualbox 실행 후 MalwareAnalysis.vdi를 로드하여 에러 발생 부분 수정하였습니다. 유사한 방법으로 고치시면 될 거 같습니다.


긴 글 읽어주셔서 정말 감사합니다.
위에서 보신 웹 ui 사용하는 방법 및 샘플로 분석한 결과는 #2에서 보여드리겠습니다.
궁금하신 내용은 답글 및 메일로 주세요.

감사합니다.  :)


#1 Cuckoo SandBox 설치하기 (Install Cuckoo SandBox on debian linux)
http://www.hahwul.com/2015/03/cuckoo-1-cuckoo-sandbox-install-cuckoo.html

#2 Cuckoo SandBox의 web ui 및 샘플 실행파일 분석(web ui & sample analysis)
http://www.hahwul.com/2015/03/cuckoo-2-cuckoo-sandbox-web-ui-web-ui.html






Share







HAHWUL
HACKING | PENETRATION-TEST | CODING
HACKERONE : GIT : 0DAY-TODAY : EXPLOIT-DB : PACKETSTORM
GOOGLE+ | HAHWUL@GMAIL.COM | TWITTER
WWW.HAHWUL.COM






Recent Post

댓글 5개:

  1. 지나가다가. 이글 보고 cuckoo 설치했는데, 참고할 사항이 있어 추가할게요.

    0. vboxmanage list vms : 필요없는 vboxnet 이 설정되어 있으면 지워준다.
    - ex) "" {52a91e62-096d-4f8b-96f4-5fa76db3cd76}
    - VBoxManage unregistervm {52a91e62-096d-4f8b-96f4-5fa76db3cd76}

    0. vboxmanage에서 hostonly 생성전에 이미 생성된 vboxnet0이 있는지 확인후 있으면 제거
    - ifconfig
    - vboxmanage hostonlyif remove vboxnet0

    1. vboxnet0 생성
    - vboxmanage hostonlyif create
    - vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

    2. virtualbox network 설정을 nat으로 설정해서 인터넷이 되는지 확인. ( 인터넷이 되어야한다 )

    3. virtualbox를 hostonly로 바꿔서 nat과 같이 만들어줘야한다.

    4. vm register에 등록한다. 이미 등록된 UUID라고 하면은 기존걸 삭제해준다.
    - VBoxManage registervm /home/debian/VirtualBox\ VMs/cuckoo0/cuckoo0.vbox

    5. 인터넷이 안되면 아래처럼 hostonly를 nat으로 쓸수 있게 바꿔줘야한다. 그리고 방화벽 설정
    - vboxmanage modifyvm cuckoo0 --hostonlyadapter1 vboxnet0
    - vboxmanage modifyvm cuckoo0 --nic1 hostonly

    - vm (winxp setting) and
    Static IP - 192.168.56.101
    DNS - any DNS server (8.8.8.8) and 8.8.4.4 : google
    Default Gateway - 192.168.56.1

    - iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
    - iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    - iptables -A POSTROUTING -t nat -j MASQUERADE

    - echo 1 > /proc/sys/net/ipv4/ip_forward

    답글삭제
  2. 작성자가 댓글을 삭제했습니다.

    답글삭제
  3. 이글보고 cuckoo 설치완료하였습니다. 설치하면서 막혔던 부분 참고로 적어놓을게요.^^

    답글삭제
  4. Cuckoo Sandbox 설치 관련하여 추가로 많은 도움이 될 것 같네요~
    좋은 내용 감사합니다 : )

    # 진행하다가 막히시거나, 궁금한 점 있으시면 최대한 답변 드리도록 하겠습니다.

    답글삭제