Cuckoo Sandbox 설치 및 구축 (1/2)


최근 컴퓨터와 인터넷의 보급이 크게 확산됨에 따라 인간의 삶을 편하고 윤택하게 만들어졌으나 이에 따른 부작용 역시 급증하고 있다. 그중 분산서비스(DDoS) 공격, 개인정보 유출, 해킹 등은 대부분 악성코드에 의해 발생하며, 사용자의 피해가 지속해서 증가하고 있다. 한국인터넷진흥원 인터넷침해사고 대응 센터의 “14년 인터넷 침해사고 대응계획보고서에 따르면, 하루 평균 악성코드 배포량이 2013년에 1,435종에서 2014년에 8,847종으로 한해 사이에 약 6배 증가했다는 것을 알 수 있다. 이처럼 악성코드가 급격히 증가한 이유는 악성코드 제작자들이 자동화 도구로 유사 · 변종 악성코드를 빠르게 제작하고 있기 때문이다. 자동화 도구로 제작된 악성코드는 EPO(Entry Point Obscuring)나 암호화 코드 부분만 변경하여 악성 행위는 같으나 겉모습만 바뀌어 백신의 탐지를 피하고 있다. 이러한 다형성 기법의 보편화로 인하여 유사 · 변종 악성코드가 급증하고 있으며 분석 방해 기법도 진화하는 추세이다.

이처럼 빠르게 진화하는 수많은 악성코드를 직접 수집하여 수동으로 분석할 수는 없으므로 이에 대응하기 위해선 자동화 분석 도구가 필요하다. 이번에 소개할 도구는 자동화 악성코드 분석 도구 ‘Cuckoo Sandbox’이다.

‘Cuckoo Sandbox’Sandbox 환경에서 악성 파일을 실행 및 분석하여 분석된 결과를 자동으로 수집해 주는 도구이다. 이 도구는 Python으로 제작된 오픈소스 프로젝트이므로 누구나 소스 코드를 변경할 수 있다는 장점이 있다.

본 문서를 통해 ‘Cuckoo Sandbox’를 구축하면서 발생할 수 있는 오류에 대한 해결 방안과 설치 방법에 대한 가이드를 제시하고, ‘Cuckoo Sandbox’의 각 기능을 소개한다.

[그림 1] Cuckoo Sandbox

다운로드 URL (https://cuckoosandbox.org/)

 

‘Cuckoo Sandbox’의 주요 기능

-      악성코드에 의해 수행되는 Windows API 함수 호출 추적

-      악성코드에 의해 파일 생성 및 복사, 삭제 확인

-      선택한 프로세스의 메모리 덤프

-      분석 시스템의 전체 메모리 덤프

-      악성코드 실행하는 동안 스크린샷(Process explorer)

-      네트워크 패킷 덤프

‘Cuckoo Sandbox’를 사용하기 위해서는 제작된 언어 Python을 설치해야 하며, 필요 라이브러리와 구성프로그램들을 설치하여 연동해야 정상적으로 사용이 가능하다. ‘Cuckoo Sandbox’를 구축하기 이전에 설치해야 할 구성 프로그램들은 아래[ 1]와 같다.

OS 및 구성 프로그램

버전

용도 (계정명 / 패스워드)

Ubuntu-Desktop-amd64

v14.04.4 (4.2.0-27.generic)

호스트 OS (cuckoo, root / cuckoo)

Virtual Box

v5.1.6

가상 머신 도구

Windows 7

Professional K Korean X64

가상 머신 OS (cuckoo / cuckoo)

Cuckoo Sandbox

v2.0-RC1

Cuckoo Sandbox

MySQL

v5.5.52

DBMS (root / cuckoo)

Mongodb

v2.4.9

DBMS

Python

v2.7.3

사용 언어

PIL

v1.1.7

Python Screenshot 모듈

PE file

V1.2.9.1-1.1

실행 파일 압축 및 시그니쳐 확인

ssdeep

v2.9

Fuzzy Hash 확인

Yara

v3.5.0

패턴을 이용한 악성코드 식별, 분류

TCPdump / libpcap

v4.5.1 / v1.5.3

네트워크 패킷 분석

Django

v1.8.4

파이썬 웹 프레임워크

Iptables

v1.4.21

시스템 내장 방화벽

Process-Explorer

v16.12

프로그램 실행 여부 확인

[1] 구성 환경 및 설치 프로그램 목록

모든 설치 과정은 리눅스 계열의 응용프로그램 설치 디렉토리인 ‘/opt’ 경로에서 진행된다. 또한, Windows 7 Professional ISO 파일의 다운로드 URL은 본 문서에 포함되어 있지 않으므로 OS 설치 파일을 별도로 준비하여 설치를 진행한다.

루트 계정 활성화

-      각 구성 프로그램 설치를 위한 관리자(root) 계정 활성화

ubuntu@A3SECURITY:~# sudo su – root

apt-get 업데이트 및 시스템 재부팅

-      ‘/etc/apt/source.list’의 인덱스를 기반으로 패키지의 정보 업데이트 및 시스템 재부팅

root@A3SECURITY:~# sudo apt-get update; sudo apt-get upgrade –y; sudo apt-get dist-upgrade-y; sudo apt-get autoremove –y; sudo shutdown –r now later

파이썬(Python) 설치

-      Cuckoo Sandbox‘python’으로 제작 되었기 때문에 프로그램 실행하기 위해 필요

root@A3SECURITY:~# sudo apt-get install python python-dev python-sqlalchemy python-dpkt python-jinja2 python-magic python-pymongo python-bottle -y

SVN 설치

-      소프트웨어 버전 관리 프로그램이며 최신 버전의 소스코드를 받기 위해 설치

root@A3SECURITY:~# sudo apt-get install subversion

root@A3SECURITY:~# sudo svnadmin create --fs-type bdb test

PE File 설치

-      ‘SVN Checkout’ 명령어를 이용하여 ‘PE File’의 최신 버전 소스코드를 다운로드

root@A3SECURITY:~# cd /opt

root@A3SECURITY:/opt# sudo apt-get install python-pefile

root@A3SECURITY:/opt# sudo svn checkout https://github.com/erocarrera/pefile/trunk pefile

root@A3SECURITY:/opt# cd /opt/pefile

root@A3SECURITY:/opt/pefile# sudo python setup.py build

root@A3SECURITY:/opt/pefile# sudo python setup.py install

Ssdeep 설치

-      ‘ssdeep’‘Fuzzy Hash’를 사용하여 원본 파일과의 유사도를 파악하기 위해 사용

-      Hash 값은 파일의 일부만 수정해도 전혀 다른 값이 나오지만, ‘Fuzzy Hash’는 하나의 파일을 블록 별로 구분하여 Hashing을 하기 때문에 원본과 유사한 파일을 찾아낼 수 있다.

root@A3SECURITY:~# cd /opt

root@A3SECURITY:/opt# sudo apt-get install git

root@A3SECURITY:/opt# sudo apt-get install build-essential git libpcre3 libpcre3-dev libpcre++-dev -y

root@A3SECURITY:/opt# sudo wget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.9/ssdeep-2.9.tar.gz

root@A3SECURITY:/opt# sudo tar -xvf ssdeep-2.9.tar.gz

root@A3SECURITY:/opt# sudo rm -f ssdeep-2.9.tar.gz

root@A3SECURITY:/opt# sudo mv ssdeep-2.9 ssdeep

root@A3SECURITY:/opt# cd /opt/ssdeep

root@A3SECURITY:/opt/ssdeep# sudo ./configure

root@A3SECURITY:/opt/ssdeep# sudo make && make install

root@A3SECURITY:/opt/ssdeep# sudo ldconfig

root@A3SECURITY:/opt/ssdeep# cd /opt

root@A3SECURITY:/opt# sudo git clone https://github.com/kbandla/pydeep.git pydeep

root@A3SECURITY:/opt# cd /opt/pydeep

root@A3SECURITY:/opt/pydeep# sudo python setup.py build

root@A3SECURITY:/opt/pydeep# sudo python setup.py install

Yara 설치

-      시그니쳐 기반으로 파일의 패턴을 분석하여 악성코드를 분류하는데 사용

-      행동 기반 탐지를 하지 못하지만, 패턴 기반으로 악성 파일이나 프로세스를 탐지

-      식별을 위해 탐지 패턴 즉, ‘rule’ 파일을 생성해야 함

root@A3SECURITY:~# cd /opt

root@A3SECURITY:/opt# sudo wget https://github.com/VirusTotal/yara/archive/v3.5.0.tar.gz

root@A3SECURITY:/opt# sudo apt-get install autoconf automake libtool make gcc -y;

root@A3SECURITY:/opt# sudo tar -xvf v3.5.0.tar.gz

root@A3SECURITY:/opt# sudo rm -f v3.5.0.tar.gz

root@A3SECURITY:/opt# mv yara-3.5.0 yara

root@A3SECURITY:/opt# cd yara

root@A3SECURITY:/opt/yara# sudo ./bootstrap.sh

root@A3SECURITY:/opt/yara# sudo ./configure

root@A3SECURITY:/opt/yara# sudo make

root@A3SECURITY:/opt/yara# sudo make install

TCPdump, pcap 설치

-      파일 실행 시 발생하는 트래픽 분석을 위해 ‘TCPdump’, ‘pcap’ 설치

root@A3SECURITY:~# sudo apt-get install tcpdump libpcap-dev –y

root@A3SECURITY:~# sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

 

 

 

Cuckoo Sandbox 설치

구성 프로그램 간에 버전이 서로 호환되어야 정상적인 설치 및 실행이 가능하며, 설치 환경에 따라 호환되는 버전이 상이할 수 있으니, 가급적 동일한 사용 환경을 갖춰 설치를 진행하는 것이 좋다.

Virtual box 사용자 계정 생성

root@A3SECURITY:/opt# sudo useradd cuckoo

Cuckoo Sandbox 다운로드

root@A3SECURITY:/opt# sudo git clone https://github.com/cuckoobox/cuckoo.git cuckoo

MySQL 설치 및 DB 연결

-      기본으로 제공되는 DBMS‘sqlite’이나 본 가이드에서는 ‘MySQL’을 사용

root@A3SECURITY:/~# sudo apt-get install mysql-server python-mysqldb -y

(mysql root 패스워드 설정)

root@A3SECURITY:/~# sudo mysql -u root -p

mysql> create database cuckoo;

mysql> grant all privileges on cuckoo.* to cuckoo@localhost identified by 'cuckoo';

mysql> flush privileges;

mysql> quit

cuckoo.conf 파일 설정

-     
‘MySQL’ 설치 후 DBMS와 연결을 맺기 위해 아래[그림 1]와 같이 ‘cuckoo.conf’ 파일 수정

root@A3SECURITY:/~# sudo vi /opt/cuckoo/conf/cuckoo.conf

[그림 2] cuckoo.conf 파일 수정



(가상 환경 구축 및 설정에 대한 설명은 ‘Cuckoo Sandbox – 설치 및 구축(2/2)’ 문서에서 이어집니다.)

블로그 이미지

Diano.

http://www.diano.kr / 이사하는중 /

,