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
구성하려는 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에 의해 암호화 되지 않는다.
$ 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 라이브러리를 위해 설치한다.
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
- python-sqlalchemy
- python-bson
- python-dpkt
- python-jinja2
- python-magic
- python-pymongo
- python-bottle
- python-pefile
- python-chardet
- tcpdump
- pydeep
- django
- maec
- volatility
- yara
$ 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 설정이 모두 끝난 상태로 계속 진행한다.
다음 내용 :
'Information Security > OpenSource' 카테고리의 다른 글
How to install Cuckoo 1.0 with Tor Network #03 (7) | 2014.02.16 |
---|---|
How to install Cuckoo 1.0 with Tor Network #02 (0) | 2014.02.16 |
YARA1.7 on Kali Linux with GLIBC Error Report (0) | 2014.02.08 |
How to install phoneyc client honeypot (0) | 2014.01.31 |
How to install thug client honeypot. (0) | 2014.01.30 |