본문으로 바로가기


1. Introduction


HoneyClient 중에서 High-Interaction HoneyClient 중 하나인 Cuckoo 1.0의 설치 문서이다. Sandbox라는 환경을 구성하여 악성코드를 실환경과 격리를 시킨 후 악성코드를 실행하여 행위를 분석한다. 추가적인 다양한 모듈을 통해 패턴 탐지 방식을 이용한 일부 정적 분석도 가능하다.


이 블로그의 주제에 맞게 Drive-By Download 형태의 공격 탐지는 Cuckoo 0.5 버전부터 URL을 입력 받아 분석할 수 있다. 또한 현재 정리하는 Cuckoo 1.0 버전 부터는 메모리 분석 도구인 Volatility와 취약성 평가 시스템 및 데이터베이스를 운영하는 Mitre의 maec 모듈도 추가 되어 다방면으로 활용할 수 있을 것으로 예상된다.


Cuckoo는 GNU GENERAL PUBLIC LICENSE(출처WikiPedia)를 따르며 해당 라이선스는 다음과 같은 의무 아래 자유롭게 사용할 수 있다.


  • 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
  • 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스코드를 무료로 배포해야 한다.
  • 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.
  • 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.
  • 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.


2. Enviroment


2.1. Cuckoo Operator


  • Ubuntu 12.04 LTS 64bit

  • Cuckoo 1.0

  • Virtualbox 4.3.6

  • User : hakawati

  • Path : /home/hakawati/tools/

  • CPU : 4 Core

  • Memory : 4096 MB


2.2. Sandbox


  • Windows XP SP3 IE6
  • CPU : 1 Core
  • Memory : 512 MB

2.3. Network Diagram of Cuckoo



구성하려는 Cuckoo의 네트워크 구성도는 위와 같다. Sandbox들은 모두 통신을 할 때 Tor Network를 이용하도록 가상의 네트워크 어댑터를 설정하였고, 분석된 모든 결과는 Cuckoo를 운영중인 서버로 보내도록 설정한다.  Cuckoo 설정 환경상 Host OS를 Linux 계열로 사용할 수 없어서 실제 구성 환경에서 Guest OS는 Cuckoo 운영 서버이고, Guest OS 안의 Guest OS가 Sandbox들로 구성된다.


실제 Virtual Tor Routing은 Cuckoo Operator에서 동작하는 것이기 때문에, Sandbox들과 Operator 혹은 Result Server 와의 통신은 Tor에 의해 암호화 되지 않는다.


3. Installation

3.1. Requirements

3.1.1. Installing Support Packages and Libraries

$ sudo apt-get install python-dev g++ subversion git libfuzzy-dev python-pip libxslt1-dev libxml2-dev libpcre3-dev
$ sudo pip install lxml
$ sudo pip install cybox==2.0.1.4

  • subversion, git, python-pip : Cuckoo가 사용하는 모듈 혹은 필요한 python 라이브러리를 받기 위해 설치한다.
  • Libfuzzy-dev : pydeep을 설치하기 위해 사용한다. 만약 해당 라이브러리가 설치되어 있지 않으면 fuzzy.h 라이브러리 에러가 발생한다. 그리고 Cuckoo는 ssdeep을 사용하지만 pyssdeep이 아닌 pydeep을 통해서 사용한다.
  • libxsl1-dev, libxml2-dev : cybox가 사용하는 lxml python 라이브러리를 위해 설치한다.
  • cybox : maec python 라이브러리를 위해 설치한다.

3.1.2. Installing Python Libraries


Cuckoo에 사용되는 라이브러리는 동작하는데 있어 필수 라이브러리와 선택적인 라이브러리로 구분되어진다. 이 포스팅에서는 모든 라이브러리를 설치하고 추가적인 포스팅을 통해 다양한 기능을 테스트할 계획이다. Cuckoo Sandbox Documentation에서 언급하는 모든 라이브러리를 설치한다.


$ sudo apt-get install python-sqlalchemy python-bson python-dpkt python-jinja2 python-magic python-pymongo python-bottle python-pefile python-chardet tcpdump mongodb-dev

$ sudo pip install pydeep

$ sudo pip install django
$ sudo pip install maec==4.0.1.0


Installing Volatility
$ svn checkout http://volatility.googlecode.com/svn/trunk/ volatility
$ cd volatility
/volatility$ python setup.py build
/volatility$ sudo python setup.py install
/volatility$ cd ..

Installing yara 1.7 and yara python
$ sudo easy_install -U distribute
$ sudo pip install yara==1.7.4

Configure TCPDUMP privileges.
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

필수 라이브러리

  • python-sqlalchemy
  • python-bson
  • python-dpkt
  • python-jinja2

선택 라이브러리

  • python-magic
  • python-pymongo
  • python-bottle
  • python-pefile
  • python-chardet
  • tcpdump
  • pydeep
  • django
  • maec
  • volatility
  • yara

* Libvirt 라이브러리가 선택 라이브러리로 포함되지만 이 라이브러리는 KVM을 사용할 때 쓴다. KVM은 리눅스 커널 기반 가상 머신으로 Sandbox 환경이 윈도우 플랫폼이기 때문에 사용하지 않는다.

3.1.3. Cuckoo 1.0 Download

$ wget http://downloads.cuckoosandbox.org/1.0/cuckoo_1.0.tar.gz

3.1.3. Installing Virtualization Software

Cuckoo는 초기에는 Virtualbox만 지원을 했지만 현재는 다양한 가상화 소프트웨어들을 지원한다. 지원하는 가상화 소프트웨어는 VMware, VMware ESX, KVM을 지원하고 있다.

$ wget http://download.virtualbox.org/virtualbox/4.3.6/virtualbox-4.3_4.3.6-91406~Ubuntu~precise_amd64.deb

$ sudo dpkg -i virtualbox-4.3_4.3.6-91406~Ubuntu~precise_amd64.deb

$ rm virtualbox-4.3_4.3.6-91406~Ubuntu~precise_amd64.deb


위와 같이 패키지를 직접 다운로드 받아 설치하는 이유는 단순히 레파지토리를 통해 패키지를 설치하게 되면 다음과 같은 에러가 발생할 수 있기 떄문이다. 원인은 알 수 없으나 init 에러로 보았을 때 virtualbox가 커널에서 동작 할 때 발생하는 에러로 판단된다. 이 문제는 Oracle에서 배포하는 virtualbox 최신 버전을 설치하는 것으로 해결 할 수 있다.


추가적으로 Virtualbox를 사용자 권한으로 실행하여 다음 설정을 진행하는 것과 root 권한으로 실행하여 진행하는 것에는 큰 차이는 없지만 만약 root 권한으로 실행하여 설정하였다면 cuckoo.py를 실행할 때 root 권한을 주지 않으면 가상머신들을 인식하지 못하게 된다.



3.2. Tor Routing Configure


모든 네트워크가 Tor를 통해 익명성을 유지하며 통신하도록 설정한다. 해당 설정은 howtoforge에서 올라온 "How to set up a tor middlebox routing all virtualbox machine traffic over the tor network" 문서를 보고 작업했다.



Cuckoo의 Sandbox 들은 Tor Routing 설정이 모두 끝난 상태로 계속 진행한다.


다음 내용 :

- How to install Cuckoo 1.0 with Tor Network #02

- How to install Cuckoo 1.0 with Tor Network #03

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

댓글을 달아 주세요

  1. 사랑을구걸하는거지 신고">2014.02.17 14:18 신고

    GNU GENERAL PUBLIC LICENSE 버전이 얼마인가요??

  2. hackjoo93 신고">2014.04.22 22:40 신고

    윈도우용 설치버전은 없나요?
    보통 host OS를 윈도우를 쓰다보니
    윈도우 vm에 우분투를 띄우고 그 우분투에 다시 가상 os를 띄워야 하는 상황이라
    조금 부담이 크네요...

    • BlogIcon hakawati 신고">2014.04.23 09:40 신고

      안녕하세요^^
      맞아요. 몇몇 지인분들이 cuckoo를 설치하면서 묻는게 가상머신 안의 가상머신으로 구축하면 부담이 크다고 말씀하더군요.

      현재 제가 쓰는 노트북은 i7-3610QM에 메모리 8GB를 쓰고있는데,
      가상머신 안의 가상머신으로 구축하여 운영하는데 큰 부담감 없이 사용하고 있습니다.

      Host OS : Win7
      Guest OS : Ubuntu 12.04 LTS
      Guest in Guest OS : WinXP

      그리고 윈도우 버전은 없는 것으로 알고 있습니다!

    • hackjoo93 신고">2014.04.23 16:28 신고

      답변감사합니다^^
      프로젝트 주제로 cuckoo를 선택했거든요
      오픈소스라서 이것을 좀 수정해보면 어떨까해서요
      좋은 정보 감사합니다.

    • BlogIcon hakawati 신고">2014.04.24 13:47 신고

      cuckoo도 매번 릴리즈 할때 사용자들이 선택한 튜닝들을 응용하기도 합니다. 사용자들이 튜닝한 정보는 cuckoo community에 많이 올라오거든요. 괜찮은 주제인 것 같아요 ^^

  3. fdud 신고">2014.04.25 13:19 신고

    2014-04-25 13:15:59,542 [lib.cuckoo.core.scheduler] INFO: Using "virtualbox" machine manager
    2014-04-25 13:15:59,996 [modules.machinery.virtualbox] DEBUG: Getting status for cuckoo1
    2014-04-25 13:16:00,122 [modules.machinery.virtualbox] DEBUG: Machine cuckoo1 status poweroff
    2014-04-25 13:16:00,147 [lib.cuckoo.core.scheduler] INFO: Loaded 1 machine/s
    2014-04-25 13:16:00,147 [lib.cuckoo.core.scheduler] INFO: Waiting for analysis tasks...

    cuckoo.py 실행시 Guest PC XP가 종료되는데 웹에서 파일올리고 submit누르면 다시 XP 켜저서 분석을하긴하는데 뭐가 잘못된거죠? 원래 켜저있던 Guest는 종료되는건가요?

    • BlogIcon hakawati 신고">2014.04.25 15:18 신고

      네 정상적으로 돌아가는 것입니다.
      악성코드를 분석하고 가상머신은 초기 상태로 복구되는 과정입니다.^^

  4. fdud 신고">2014.04.26 15:55 신고

    답변감사합니다~

  5. 프로젝트 신고">2014.08.01 11:35 신고

    버처박스안에 윈도우 xp는 이미지를 우분투로 넘기셔서 설치하신건가요??

    버처박스 설치까지는 이해가 되는데 그후 이해가 안가서요... xp는 어떻게 설치진행 하신건지... 일반 호스트에서 예를들어 vm으로 iso로 가상머신 생성하듯 하신건지요...

    쿠쿠샌드박스 프로젝트를 맞게 되서... 오픈소스여서 여러 변이가 좋을듯해서 해보라고 지침이 내려와서요..

    그리고 익명성 톨 라우팅은 선택 사항인가요?아니면 필수 로 해야하는 사항인지요... 했을때와 안했을때 차이점이 어떻게 되는건가요?

    • BlogIcon hakawati 신고">2014.08.01 14:26 신고

      안녕하세요~

      1. 저 같은 경우는 iso 파일을 우분투 가상머신으로 옮긴 후 우분투 안의 버츄얼박스에 설치하는 작업을 진행했습니다. 호스트 환경에서 xp 환경을 구축하여 export 한 후 다시 우분투 가상머신으로 옮겨서 import 하셔도 무방합니다.~

      2. 제가 정리한 내용에서 tor 라우팅을 하여 익명성을 보장하도록 설정하는건 옵션사항입니다. 악성코드를 분석하고 정보를 수집하는 과정에서 C&C 와의 통신을 하게 되기 때문이기에 이런 분석시스템을 운영한다는 것을 회피하기 위한 컨셉으로 추가 구축을 진행한 것일 뿐, 쿡쿠 샌드박스를 운영하는데 필수 요소는 아닙니다.

  6. kimse 신고">2014.09.11 17:48 신고

    안녕하세요!
    설치과정을 그대로 이용하여(VirtualBox는 4.3.14, yara는 1.7입니다) kbs 악성코드를 실행한 결과 두가지 Warnig이 뜨면서, 결과보고서 창에 스크린샷, 행위분석이나 드랍파일, 프로세스부분이 Nothing to display로 뜹니다.(오직 네트워크 분석부분만 나옵니다)
    2014-09-11 17:29:07,410 [modules.processing.behavior] WARNING: Analysis results folder does not exist at path "/opt/cuckoo/storage/analyses/13/logs".

    2014-09-11 17:29:07,720 [lib.cuckoo.common.objects] WARNING: Unable to match Yara signatures: 'error_on_warning' is an invalid keyword argument for this function

    왜그럴까요 ㅜㅜ 인터넷이 되지않게끔 호스트 온리로 네트워크를 설정했을때에는 아주 정상적으로 결과보고서 창에 스크린샷, 행위분석이나 드랍파일, 프로세스부분이 다 표현된 아주 긴 보고서가 나옵니다...(네트워크 분석부분은 안나옵니다)
    일주일 가까이 에러 관련 구글링만 하고있는데 해결하지 못하고 있습니다 ㅜㅜ꼭 해결해야합니다 조언 간절히 기다리고 있겠습니다 ㅠㅠ

    • BlogIcon hakawati 신고">2014.09.14 01:47 신고

      음 저도 다양한 테스트 케이스를 만들어 두지 않아서, 정확한 답변이 될지 모르겠습니다.

      1. 첫 번째 warning은 분석에 대한 결과 폴더에 대한 내용인데 퍼미션 문제로 보입니다.

      2. 두 번째 warning은 yara 시그니처에 대한 오류인 것 같네요. yara 패턴에서 잘못된 키워드, 인자 값을 설정하여 발생하는 문제로 보입니다.

      호스트 온리로 해서 인터넷이 되지 않는 상황에서 분석했을 때 결과가 제대로 나온다면 아마 tcpdump 권한 설정 부분에서 문제가 생긴게 아닐까요? tcpdump는 root 권한으로 동작하는데 cuckoo의 설치는 제가 포스팅한 내용대로 하였다면 user 권한에서 동작하도록 되어 있을 겁니다. 그러면 tcpdump를 user 권한에서도 사용 가능하게 설정해야 할 것 같아요.

  7. kangg 신고">2014.09.23 14:00 신고

    안녕하세요. 혹시 쿠쿠샌드박스의 guest pc를 VM이 아닌 리얼 pc로 하여 구축할 수 있을까요? 혹시 방법이나 자료를 아시면 답변 부탁드립니다....

    • BlogIcon hakawati 신고">2014.09.24 11:14 신고

      쿡쿠 엔진에 제어되는 샌드박스들이 리얼환경이라면? 어떤 요소들에서 문제가 발생할까 저도 생각해봤었는데요.

      스냅샷과 리스토어
      하이퍼바이저가 아닌 다른 형태로 사용하기 위해서는 많은 작업이 필요할 것 같네요. 버추얼박스를 쿡쿠 초기 때 제일 먼저 선택하게 된 이유는 Manager를 코딩으로 제어할 수 있었기 때문이죠. 리얼환경으로 사용한다면 해당 부분의 소스코드를 변형시켜야 할 것 같네요. 변형 시키지 않으면, 에러 발생하더라도 분석 결과들을 받을 수 있지 않을까? 생각은 해봤지만, 쿡쿠가 분석 시작하기 전에 리스토어를 하는데, 여기서 문제가 발생하면 분석을 진행하지 않게 됩니다.

      비슷한 솔루션으로 네이버의 '아미고'가 있는데, 이는 악성코드에 감염이 되느냐 안되느냐의 유무 판단용으로 사용하고 있는 것으로 알고 있습니다. 그래서 중복 감염되도 큰 문제는 없는데, 쿡쿠 샌드박스의 경우 감염된 호스트에 새로운 악성코드를 감염시켜 분석하면, 분석 결과가 제대로 나오지 않을 수 있을 수 있습니다. 예를 들면, C&C 주소가 여러개 나오는데 어느 악성코드의 C&C인지 판단할 수 없는거죠.

      대략 생각만 해본 부분이고, 구글링으로 해결하기에는 자료가 없어 보이네요^^

티스토리 툴바