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)’ 문서에서 이어집니다.)
'보안 도구' 카테고리의 다른 글
Cuckoo Sandbox 기능 설명 (0) | 2016.10.13 |
---|---|
Cuckoo Sandbox 설치 및 구축 (2/2) (1) | 2016.10.13 |
오픈소스 CMS 취약점 점검 도구 CMSmap이란? CMSmap 사용법 (0) | 2016.09.22 |
[정보 수집 도구] FOCA 란?, FOCA 사용법 (0) | 2016.09.19 |
[웹 프록시 툴] BurpSuite 사용하기 (0) | 2016.09.02 |