악성코드 분석을 위한
Cuckoo sandbox 2.0 설치 – for Windows 7
* 본 포스팅은 인터넷 블로그 및 공개된 단행본을 참고 하였습니다.
I. Cuckoo Sandbox란?
1) 개요
: 쿠쿠 샌드박스(Cuckoo Sandbox)는 가상머신을 이용한 악성코드 분석 플랫폼이다. 각 기업의 네트워크 환경에서 현업 PC에 악성코드가 실행 탐지/감염되었을 경우 보안솔루션에 의해 샘플을 얻거나, 네트워크 패킷 분석을 통해 얻은 악성실행 파일에 대하여 가상머신에서 실행하고 그 행위를 분석하여 결과를 자동으로 수집한 정보를 얻을 수 있다.
쿠쿠 샌드박스는 기본적으로 GNU/Linux(Debian 계열 또는 우분투)에 설치하는 것을 가정하고 있다. 때문에 윈도우 운영체제를 사용하여 분석할 경우 가상머신 소프트웨어를 윈도우 OS에 설치하고 가상머신 소프트웨어에 Ubuntu를 설치한 후에 다시 Ubuntu 환경에서 Sandbox에 사용할 환경(Window OS)을 구축해야 하는 번거로움이 있다.
이번에는 Host 운영체제를 Linux 계열 또는 Mac OS X 운영체제를 사용하지 않는 이상 보통의 기 윈도우이기 때문에 윈도우 환경에서 구축해보도록 하겠다. (최근에는 docker 환경에서 간단히 설치 및 실행하는 방법도 있다)
2) 주요 기능
- 악성코드에 의해 수행되는 Windows API 함수 호출 추적
- 악성코드에 의해 파일 생성 및 복사, 삭제 확인
- 선택한 프로세스의 메모리 덤프
- 분석 시스템의 전체 메모리 덤프
- 악성코드 실행하는 동안 스크린 샷(Process explorer)
- 네트워크 덤프
3) 구성 프로그램 및 기능
- Virustotal 검색결과 (기본적으로 연결되며 사용 유무 설정 가능)
- 실행 압축 확인 (PE file 설치)
- Fuzzy Hash 확인 (ssdeep 설치)
- 패턴을 이용하여 악성코드 식별 및 분류 (Yara 설치)
- 네트워크 트래픽 분석 (tcp dump 설치)
- 분석을 위한 가상환경 구성 (Virtualbox 설치)
4) 분석 가능한 파일
* 실행파일 및 DLL 파일 외에도 가상머신 관련 프로그램을 설치하여 여러 종류의 파일 분석이 가능하다.
- Windows PE files (DLL files 포함)
- PDF files 및 Office Documents files 등 문서파일
- URLs
5) 2.0 Release 핵심 내용
64비트 윈도우 응용프로그램과 샘플 모니터링
- 지난 반년동안 제대로된 64비트 윈도우 시스템의 모니터링을 구현하기 위해 노력했다.
- Dmitry Rodionov가 구글 섬머 코드 2015의 일환으로 쿡쿠 샌드박스를 위한 맥 OS X 분석기를 개발했다. 하지만 맥 OS X를 가상머신으로 구축하여 운영하는 것은 애플의 약관에 위반될 수 있으니 주의바란다. 물론 우리가 책임지지는 않는다. 이 분석기의 핵심은 Dtrace의 사용이다.
- Mark Schloesser가 이 부분을 집중적으로 제작했는데 사실 이 시스템이 쉘 쇼크랑 엘라스틱서치 취약점으로 고생했다. 리눅스 분석은 Sysdig, LTTNG, SystemTap과 같은 기존의 몇몇 프로젝트를 잘 활용하여 구현했다. 다만 ARM이나 MIPS와같은 다른 플랫폼으로 확장할 때 문제가 발생한다.
- Cuckoo Droid로 잘 알려진 Idan Revivo이 고생하여 만든 안드로이드 분석기를 사용했다. ADB 기반으로 에뮬레이터를 실행하고, 달빅/자바 런타임을 후킹하여 자바 함수를 기록하는 형태로 모니터링을 구현했다.
- 수리카타(Suricata), 스노트(Snort) 그리고 모로치(Moloch)와 같은 PCAP 분석 도구의 기능들을 통합하여 기능화하였다. 최종적으로 아이피나 도메인에서 하이퍼링크를 타고 모로치 웹 인터페이스에 접속하면 자동으로 차단 쿼리를 생성하는 형태로 구현하려고 한다.
- TLS/HTTPS 트래픽을 수집하여 분석할 수 있게 구현했다. 물론 분석을 위한 목적도 있지만, 투명한 방식으로 TLS를 차단하는것이 최종 목표다. 암호화를 복호화하기 위해 VM에 인증서를 설치하지 않는다. Cuckoo Sandbox의 동작과 함께 암호화와 복호화가 함께 진행하도록 구현했다.
- Erik Kooijstra과 n3sfox의 도움으로 VPN을 지원하는 형태로 구성할 수 있었다. 다음 릴리즈에서는 FakeNet와 InetSim과 같은 서비스를 지원하도록 구현할 예정이다.
- 200여개의 새로운 시그니처를 제공한 RedSocks에게 무한한 감사를 드린다. community.py -waf 명령으로 모든 패턴을 다운로드 받을 수 있다. 시그니처들은 악성코드의 악성행위에 따른 수치화를 진행했다.
- 구현하고 싶은 기능이 매우 많지만, 잠재적인 참여자의 도움이 클 경우 우선순위가 올라갈 수 있다. 우리는 Bart Mauritz 와 Joshua Beens의 도움으로 볼라티리티 분석 데이터를 실시간 표시할 수 있는 개념을 증명했다. 이제는 모든 메모리 분석이 끝난 후 레포트를 받아 볼 필요없이 실시간으로 받아 볼 수 있다.
- 메모리에서 URL을 추출할 수 있는 기능을 구현했지만, 좀 더 정교하고 자동화된 기능은 다음 릴리즈에서 기대할 수 있을 것이다.
- 오랜 시간동안 많은 사용자들의 요청에 의해 만들어진 기능이다. 특별한 상황에서는 악성코드가 네트워크를 통해 부가적인 확산을 시도할 수 있다. 이를 위해 여러대의 가상머신을 실행하여 분석하는 기능을 구현할 예정이다. 현재는 원시적인 단계에 있지만, 앞으로의 업데이트에서 점점 세련되게 구현할 것이다. 예를 들면 허니팟 시나리오의 지원과 실제 기업 환경을 복제하기 위한 AD 서버를 지원하려고 한다.
1. 구성
1) 구성 환경
Host PC(WIN 7 64bit)
Guest OS(Ubuntu 16.04 64bit)
Cuckoo Sandbox(Win7 32bit)
2) 네트워크 구성
II. 가상머신 환경 구축
1) Host PC에서 VirtualBox를 이용하여 Cuckoo Sandbox 설치
1. Host PC 및 Guest PC 구성
1) Host PC에 Oracle VirtualBox 프로그램 다운로드 및 설치
2) Ubuntu iso 파일 다운로드 및 설치, 게스트 확장 설치
3) Guest PC에 Ubuntu 설치 및 Cuckoo Sandbox 환경 구축
① Ubuntu에서 Virtualbox 설치
# apt-get install virtualbox
- virtualbox 실행
② sandbox OS 이미지 download
- http://modern.ie 접속 및 VM 다운로드 (iso 이미지가 있으면 해당 이미지로 VM 설치)
2. 네트워크 인터페이스 설정(Guest PC - Ubuntu)
* 네트워크 설정
– 2개의 인터페이스 (NAT, Host전용 또는 NAT, Bridge)
ex) 네트워크 구성 확인 예
1) NAT- IP
: 10.0.2.15
======Virtualbox 설치======
uname –a
apt-get install linux-headers-(커널버전)-generic
/etc/init.d/vboxdrv setup
apt-get install virtualbox -y
======사용자 생성======
# usermod –G vboxusers <username>
2) vboxnet0
: 192.168.56.1
: vboxnet 인터페이스 생성하기 (Guest OS와 Sandbox 통신하기 위함)
# vboxmanage hostonlyif create
# vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
# vboxmanage registervm /home/cuckoo/VirtualBox VMs/cuckoo1/cuckoo1.vbox
# vboxmanage modifyvm cuckoo1 --hostonlyadapter1 vboxnet0
# vboxmanage modifyvm cuckoo1 --nic1 hostonly
==============================================================
vi /etc/init.d/vboxnet
#!/bin/sh
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
vboxmanage modifyvm cuckoo1 --hostonlyadapter1 vboxnet0
vboxmanage modifyvm cuckoo1 --nic1 hostonly
chmod 755 vboxnet
apt-get install sysv-rc-conf
sysv-rc-conf vboxnet on
init 6
ifconfig -> 확인
==============================================================
3) 포트 포워딩
- Host only Adapter(호스트 전용 네트워크)
: 호스트 PC의 네트워크 어댑터를 통하여 게스트(VM)과 통신하기 위한 네트워크 설정
-> 포트 포워딩 설정을 위해 필요
3. iptables 설정
1) Hostonly Network로 설정하였을 경우
iptables -A FORWARD -o enp0s3 -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
sh -c "iptables-save > /etc/iptables.rules"
2) sysctl 수정
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1 -> ip forwarding 커널단에서 활성화
4. 라이브러리 패키지 설치
# apt-get update –y
# apt-get upgrade -y
# apt-get dist-upgrade –y; apt-get autoremove –y; shutdown –r now later
# apt-get install python python-dev python-pip python-sqlalchemy python-dpkt python-jinja2 python-magic python-pymongo python-bottle libtool byacc flex bison git subversion libffi-dev libpq-dev libxml2-dev libssl-dev libxslt1-dev libldap2-dev libsasl2-dev libfuzzy-dev curl automake libvirt-dev vim python-dist swig tesseract tesseract-ocr m2crypt python-dateutil pymisp
# apt-get install python python-dev python-sqlalchemy python-dpkt python-jinja2 python-magic python-pymongo python-bottle -y
# apt-get install swig -y
# apt-get default-jre
# apt-get install libmysqlclient-dev
# apt-get install subversion -y
5. Cuckoo 설치
1) cuckoo archive download 및 설치
① github 저장소에서 다운로드하기
cd /cuckoo
wget https://github.com/cuckoosandbox/cuckoo/archive/master.zip
② cuckoo 공식 사이트에서 다운로드
- 최신버전 : Cuckoo sandbox 2.0-rc2
- 다운로드 받은 파일
- ubuntu로 파일 옮긴 후 압축 해제 및 버전 확인
2) 라이브러리 업데이트
pip install --upgrade pip
- community signatures download modules
cd /cuckoo/utils/
python community.py -wafb monitor
pip install –r requirements.txt
-> github에서 배포되는 패키지들은 대부분 requirements.txt 라는 파일을 포함하고 있다. 관련된 의존 패키지를 나열해 놓은 것이며, cuckoo의 경우 각 패키지의 버전까지 명시가 되어 있어 매우 편리하다.
pip install pydeep
pip install cybox==2.0.1.4
pip install maec=4.0.1.0
pip install m2crypto
pip install sqlalchemy requests MySQLdb MySQL-python(또는 mysql-python) bson python-dateutil
3) Yara 설치
- 시그니처 기반으로 파일의 패턴을 분석하여 악성코드를 분류하는데 사용하는 Tool
- 행동기반 탐지를 하지 못하지만, 패턴 기반으로 악성 파일이나 프로세스를 탐지 (식별을 위해 탐지패턴 즉, rule 파일을 만들어야 한다)
wget https://github.com/plusvic/yara/archive/v3.3.0.tar.gz -O yara_3.3.0.tar.gz
tar xvfz yara_3.3.0.tar.gz
cd yara-3.3.0
chmod +x build.sh
./build.sh
make && make install
cd yara-python
python setup.py build
python setup.by install
ldconfig
python tests.py
yara –v
4) Volatility 설치
wget https://github.com/volatilityfoundation/volatility/archive/2.4.1.tar.gz -O volatility-2.4.1.tar.gz
tar xvfz volatility-2.4.1.tar.gz
cd volatility-2.4.1
make && make install
python setup.py install
svn checkout http://distorm.googlecode.com/svn/trunk/ distorm
cd distorm
python setup.py install
5) tcpdump 설치
apt-get install tcpdump -y
ll /usr/sbin/tcpdump
chmod +s /usr/sbin/tcpdump
ll /usr/sbin/tcpdump
apt-get install libcap2-bin -y
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
getcap /usr/sbin/tcpdump
6) Suricata 설치 및 설정 (ids/ips 시스템 구성)
apt-get install suricata
cp /etc/suricata/suricata-debian.yaml /etc/suricata/suricata-cuckoo.yaml
vi /etc/suricata/suricata-cuckoo.yaml
Locate file-store: (use ctrl+w to search).
Set enabled to yes.
Set force-md5 and force-filestore to yes.
Enable file-log, which should be located right below it.
Locate reassembly: use ctrl+w to search (You'll need to do this twice; the first reference is just comment documentation about it, you want is the actual, non-commented reassembly:)
Set depth, to 0 (without a unit of measurement)
Set request-body-limit and response-body-limit to 0
(without any measurement unit), under default-config:
Under the vars: address-groups: section, set EXTERNAL_NET to any.
Download etupdate to update Emerging Threat's Open IDS rules:
$ git clone https://github.com/seanthegeek/etupdate.git
$ sudo cp etupdate/etupdate /usr/sbin
$ sudo /usr/sbin/etupdate -V
Edit the crontab:
$ sudo crontab –e
42 * * * * /usr/sbin/etupdate
7) inetsim 설치
apt-get install inetsim 또는 패키지 받아서 설치
8) Moloch 설치
apt-get install uuid
cuckoo 디렉터리로 이동
# git clone https://github.com/aol/moloch.git
cd /moloch
9) snort 설치
apt-get install snort
pip install snort
10) PE file 설치
# apt-get install python-pefile
# svn checkout http;//pefile.googlecode.com/svn/trunk/pefile
-> 해당 명령어를 실행한 위치에 ‘pefile’ 디렉터리가 생성 -> /opt 위치가 아니라면 /opt 로 이동
11) ssdeep 설치
- ssdeep은 Fuzzy Hash를 사용하여 원본 파일과의 유사도를 파악하기 위해 사용
- 해쉬 값은 파일의 일부만 수정해도 전혀 다른 값이 나오지만, Fuzzy Hash는 하나의 파일을 블록 별로 구분하여 해싱을 하기 때문에 원본과 유사한 파일을 찾아낼 수 있다.
# apt-get install git
wget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.10/ssdeep-2.10.tar.gz
tar xvfz ssdeep-2.10.tar.gz
rm ssdeep-2.10.tar.gz
mv ssdeep-2.10 ssdeep
cd /opt/pefile/ssdeep
./configure
make && make install
ldconfig
cd /opt
12) pydeep 설치
pip install pydeep
또는
git clone https://github.com/kbandla/pydeep.git pydeep
cd pydeep
python setup.py build
python setup.py install
13) dev 2.0
pip install python-datautil
cuckoo 설치 후 /cuckoo ./utils/community.py -wafb monitor
6. Cuckoo Sandbox 설치
1) modern.ie에서 다운로드 받은 VM 불러오기
- Ubuntu(게스트 OS)에서 VM 분석을 하기 위한 sandbox
2) Host와 Guest PC 간 공유폴더 설정하기
① 공유폴더 설정_1
mkdir /opt/share
mount –t vboxsf 폴더이름 마운트할 경로
② 공유폴더 설정_2
- samba 설치 및 공유폴더 설정
apt-get install samba system-config-samba gksu
gksu system-config-samba
top menu
Preferences - server settings
- Guest Account : avahi
Preferences - samba users
- Add User : avahi
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf --list
- smbd 와 nmdb 데몬이 실행되어야 자동 실행됨
update-rc.d smbd defaults
update-rc.d nmbd defaults
sysv-rc-conf --list | grep -E "nmbd|smbd"
gksu system-config-samba
- +add samba share
- basic
- access : only allow access to specific users
-> 폴더권한 설정 후 윈도우에서 접속 확인
3) VM 불러오기 - Sandbox 환경 구축
① modern.ie 사이트에서
다운로드 받은 VM을 불러온다.
② VM 이름 : cuckoo sandbox 1
(cuckoo설치디렉터리/conf/virtualbox.conf에 이름 지정 시 동일하게 세팅 필요)
③ sandbox 네트워크 설정 – Host-only (vboxmanage 명령어로 vboxnet0 생성 후 선택)
5) Guest 확장 패키지, Python, PIL 설치 , agent.py 복사 및 실행
6) 방화벽, UAC off 및 자동업데이트 비활성화
7) 네트워크 설정 (Sandbox)
① 호스트 전용 어댑터 설정
IP : 192.168.56.103/24
GW : 192.168.56.1 (Ubuntu vboxnet0 IP)
DNS : 8.8.8.8, 168.126.63.1
8) Snapshot 생성 및 Clone 생성
9) Sandbox VM Name 설정
l Mysql 설치 및 데이터베이스 연결
apt-get install mysql-server python-mysqldb -y
mysql -u root -p
create database 데이터베이스명;
grant all privileges on 데이터베이스.* to user@localhost identified by ‘패스워드;
flush privileges;
quit
- mysql 설치 후 설정된 데이터베이스 연결 파라미터를 반영하기 위해 cuckoo.conf 파일을 수정
[database] 부분
7. Cuckoo Sandbox 설정
1) cuckoo conf 설정
① auxiliary.conf : 보조 모듈 설정
② avd.conf : 안드로이드 sandbox 환경 설정
③ cuckoo.conf : cuckoo 엔진 설정
④ esx.conf : esx 가상화 sandbox 환경 설정
⑤ kvm.conf : kvm sandbox 환경 설정
⑥ memory.conf : memory dump 설정
⑦ physical.conf :
⑧ processing.conf : process 모듈 설정
⑨ qemu.conf : qemu를 사용한 sandbox 환경 설정
⑩ reporting.conf : 분석 결과 보고서 설정
- json
- html
- mongodb
- elasticsearch : Shay Banon이 Lucene을 바탕으로 개발한 분산 검색엔진이다. 설치와 서버 확장이 매우 편리하기 때문에 개발하고 있는 시스템에 검색 기능이 필요할 경우에 적용하며, 분산 시스템이기 때문에 검색 대상 용량이 증가했을 때 대응하기 수월한 점이 장점이다.
⑪ virtualbox.conf : sandbox 사용 소프트웨어 virtualbox 설정
⑫ vmware.conf : sandbox 사용 소프트웨어 vmware 설정
⑬ vpn.conf : vpn 연결하여 네트워크 구성 시 설정
⑭ vsphere.conf : Hyper-v를 활용하여 구성 시 설정
⑮ xenserver.conf : Xenserver 가상화를 활용하여 구성 시 설정
- /opt/cuckoo/conf/virtualbox.conf 설정 파일에서 Guest PC의 호스트네임을 동일하게 설정(cuckoo1)
- Guest PC 종료
- Guest PC에서 Host PC 통신 시 vboxnet0 으로 연결하도록 NIC 설정
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
======Cuckoo.conf 파일 설정======
* /opt/cuckoo/conf/cuckoo.conf
[cuckoo]
version_check = on
-> cuckoo 최신 버전을 체크한다. On/off로 지정
delete_original = off
-> 검사하는 원본 파일을 삭제 또는 사본 저장을 on/off로 지정
machinery = virtualbox
-> cuckoo가 사용할 가상화 소프트웨어를 지정
memory_dump = off
-> VirtualBox와 libvirt 모듈(KVM)을 이용하여 메모리 덤프의 생성을 on/off로 지정
-> Memory Dump를 하기 원한다면 on으로 수정한다. 악성코드가 감염되고 메모리 덤프 파일을 통해 악성코드의 행동을 분석할 시 이용된다.
[resultserver]
ip = 192.168.56.1
-> 분석 결과에 대한 로그를 수신하는 서버의 IP주소를 지정
port = 2042
-> 분석 결과에 대한 로그를 수신하는 서버의 포트번호를 지정
upload_max_size = 10485760
-> 업로드 하는 파일의 최대 크기를 설정
[processing]
analysis_size_limit = 104857600
-> 프로세스에서 생성된 파일의 크기를 설정
resolve_dns = on
-> DNS 조회의 사용 여부를 on/off로 지정
sort_pcap = on
[database]
mysql://kiwoom:kiwoom24!#%@localhost/cuckoo
-> 데이터베이스 연동
timeout =
-> 데이터베이스 연결의 타임아웃 시간 설정
[timeouts]
default = 120
-> 기본 분석 시간을 설정. 더 자세한 정보를 보기 위해서 시간을 더 크게 할 필요성은 없으며, 너무 짧으면 악성코드가 활동하기 전에 분석이 완료될 수 있기 때문에 분석을 통해 적당한 시간을 지정
critical = 600
-> 최대 분석 시간을 설정, 분석 시스템이 강제 종료되고 분석 결과의 대부분은 손실하게 된다
vm_state = 60
-> 가상머신의 상태를 변경하는데 대기하는 시간
===== Processing.conf 설정=====
* Processing.conf 는 cuckoo 프로세스 동작에 대한 활성화/비활성화를 설정할 수 있다. 원하지 않는 기능을 사용하지 않으면 최종보고서에 해당 분석 부분이 보여지지 않는다.
Analysisinfo, apkinfo, baseline, behavior, buffer, debug, droidmon, dropped, dumptls, googleplay, memory, network, procmemory, screenshots, snort, static, strings, suricata, targetinfo, virustotal
* Cuckoo Sandbox 0.5 버전 이후부터는 VirusTotal의 API 키가 설정파일에 기본으로 저장되어 있는 것이 있기 때문에 이 키를 그대로 사용해도 되나, 자신의 API키를 사용하여 VirusTotal 서비스에 히스토리를 남기는 것이 좋다.
- Guest PC에서 Host PC 통신 시 vboxnet0으로 연결하도록 NIC 설정
vboxmanage registervm /home/user/virtualBox\ VMs/cuckoo1/cuckoo1.vbox
- Guest PC NIC 설정 후 error 발생 할 경우 가상 머신 등록 설정
Vboxmanage modifyvm cuckoo1 --hostonlyadapter1 vboxnet0
====== IPTABLES 규칙 추가======
- Guest PC 네트워크를 NAT 처럼 사용할 수 있도록 IPTABLES 규칙 추가
====== iptables 저장======
sh –c “iptables-save > /etc/iptables.rules”
vi /etc/network/interfaces
pre-up iptables-restore < /etc/iptables.rules
:wq
- Host PC에서 패킷을 포워딩 하도록 설정 (마스커레이드, MASQUERADE)
sysctl –w net.ipv4.ip_forward=1
- VirtualBox Guest PC (Windows 7) 네트워크 설정
III. Cuckoo 실행
1. Cuckoo 엔진 실행
/opt/cuckoo-master/
python cuckoo.py –d &
2. Cuckoo Web UI 사용 및 Django 연동
1) python /cuckoo_설치디렉터리/web/manage.py runserver 10.0.2.15:8001 &
Ex) python manage.py runserver x.x.x.x:port
- Guest PC의 NAT IP로 cuckoo web 서비스를 올린다. (포트는 임의로 지정가능)
* Django 에러 시 버전 확인
pip freeze | grep Django
pip install Django==1.8
* 현재 문서에서는 Django 1.8 버전으로 진행 -> update하여 1.10.2 버전으로 되면 설정 상 에러 발생
3. Port Forwarding
1) 설정 – 네트워크 – 어댑터1 – 포트 포워딩
2) ssh 및 web UI를 로컬 PC에서 접근 가능하도록 포트 포워딩 설정
① Host PC의 호스트 전용 네트워크 어댑터 IP 설정
② Oracle VirtualBox (Host PC와 Guest PC간) 포트포워딩 규칙
③ Host PC에서 Guest PC(Ubuntu)로 ssh 접속하기
④ Host PC에서 Cuckoo Engine Web UI 접속(8000)포트
IV. Cuckoo 활용
1. Utils 활용
1) api.py
cd /opt/cuckoo-master/utils
python api.py –H 192.168.56.101 –p 8090 &
api.py로 서비스 실행 후 curl 명령어로 파일 분석 명령내리기
curl –F “file=@파일위치;filename=nameinpost” url.com
- cuckoo 상태 출력
# curl http://localhost:8090/cuckoo/status
2) submit.py
- 커맨드라인 인터페이스를 통해 분석을 요청하는 기능이며, 특정 디렉터리에 수집해 놓은 악성코드들에 대해 작업 예약을 해놓을 수 있다. 작업을 추가해 놓으면 Cuckoo Sandbox가 순서대로 작업 정보를 보고 자동 분석을 진행한다. 한곳에서는 악성코드를 정기적으로 수집하고, 수집된 악성코드를 자동으로 분석하도록 스케줄할 때 활용할 수 있다.
- 사용법
utils 경로로 이동 -> cd /cuckoo/utils
python submit.py [바이너리 파일 경로]
python submit.py --url [URL 경로]
python submit.py --priority 5 [바이너리 파일 경로] 우선순위
python submit.py --timeout 60 [바이너리 파일 경로] 분석시간제한
python submit.py --package [패키지명] [바이너리 파일 경로]
python submit.py --package exe --option arguments=--dosomething [바이너리 파일 경로]
python submit.py --machine cuckoo1 [바이너리 파일 경로]
python submit.py --platform windows [바이너리 파일 경로]
python submit.py --memory [바이너리 파일 경로]
python submit.py --enforce-timeout [바이너리 파일 경로]
python submit.py –clock “03-23-2017 10:51:20” [바이너리 파일 경로]
ex) 명령어를 실행하면 해당 바이너리 파일에 대한 분석을 바로 진행하는 것을 알 수 있다.
2. Report
1) default – Json, Html, Maec, MongoDB
- Maec
pip install lxml
pip install cybox==2.0.1.4
pip install maec==4.0.1.0
apt-get install libxsl1-dev libxml2-dev
vi /home/cuckoo/conf/reporting.conf
[maec40]
enabled=yes
mode=overview
processtree=true
output_handles=false
static=true
strings=true
virustotal=true
3. Django, MongoDB 설치
- Cuckoo 1.0 버전 이전에는 cuckoo 설치경로/cuckoo/utils/web.py 를 통해 웹 UI를 이용할 수 있지만 오래된 인터페이스이며, 분석 결과가 많은 경우 로드 시간이 오래걸리는 등 불편함이 존재한다. 또한 Cuckoo 2.0 버전에는 web.py 가 존재하지 않는다.
이러한 이유로 단순한 설정 및 설치로 MongoDB를 이용한 파이썬 웹 프레임워크인 Django(장고)를 통해 운영 및 분석이 가능하다.
apt-get install mongodb mongodb-dev python-pymongo –y
또는
apt-get install mongodb && sudo apt-get install mongodb-org && sudo apt-get install mongodb-dev && sudo apt-get install mongodb-server && sudo apt-get install mongodb-10gen
* apt-get error 날 경우
# rm /var/lib/dpkg/status
# touch /var/lib/dpkg/status
-> 다시 시도
pip install django (python-django 설치 안됨) -> 설치 후 /data/db 생성
======Django, MongoDB 설정======
# vi reporting.conf
[mongodb]
Enable = yes
====== Django 실행======
# cd /opt/cuckoo/web
# python manage.py runserver &
Firefox -> http://127.0.0.1:8000 cuckoo web ui 접속 확인
- mongod 로컬 포트 : 27017
7. Psql 설치
참고 : chess72.tistory.com/113, gurubee.net/lecture/2939
매뉴얼 : http://www.postgresql.org/docs
sudo -u postgres psql
* postgresql 설치
sudo apt-get install postgresql
* postgresql 문서 받기
sudo apt-get install postgresql-doc-8.4
* postgresql tool 설치
sudo apt-get install pgadmin3
* 설정
sudo gedit /etc/postgresql/8.4/main/postgresql.conf
아래의 문장을 찾아 주석을 해제한다
#listen_addresses = 'localhost'
listen_addresses = 'localhost'
sudo gedit /etc/postgresql/8.4/main/pg_hba.conf
아래의 문장을 찾아 peer를 md5로 변경한다.
# Database administrative login by Unix domain socket
local all postgres md5
sudo /etc/init.d/postgresql restart
sudo /etc/init.d/postgresql reload
sudo -u postgres psql
위의 문장은 postgres 유저 이름으로 postgress db 를 로그인한다.
위의 문장을 수행하면 postgress 명령을 수행할 수 있고 아래와 같이 표시가 변경된다
postgres=#
위의 상태에서 sql 및 psql 명령어를 입력할 수 있으며 종료 명령은 \q 이며
도움말은 \? 이다
* DB 생성
sudo -u postgres createdb < db name >
* DB 접속
sudo -u postgres psql < db name >
사용자계정 조회
SELECT * FROM PG_SHADOW;
또는 \du
CREATE USER TEST;
ALTER USER TEST ENCRYPTED PASSWORD 'aa' CREATEDB;
ALTER USER TEST CREATEROLE;
DROP USER TEST;
psql -U TEST
\l #데이터베이스 리스트
user : cuckoo
db : cuckoo_db
포트 :5432
접속 리셋
http://www.mozmorris.com/2011/11/15/configure-postgresql-to-accept-tcpip-connections.html
중요! 원격접속시 설정
postgresql.conf
listen_addresses = '*'
sudo gedit /etc/postgresql/9.3/main/pg_hba.conf
#IPv4 local connections:
host all all 0.0.0.0/0 trust
pgAdmin3 설치
sudo apt-get install pgadmin3
쿼리 테스트
select * from [table] where [row] = '1234a'
delete from table
iptables 설정
sudo iptables -A INPUT -p tcp --dport 5432 -s 192.168.0.0/16 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.rules"
sudo gedit /etc/network/interfaces
- 작성 : pre-up iptables-restore < /etc/iptables.rules
---------------------------------------------------------------
cuckoo에서 postgre db 사용시 설치
- sudo apt-get install libpq-dev
- sudo pip install psycopg2
cuckoo/conf cuckoo.conf 수정
connection = postgresql://cuckoo:pw@192.168.202.137:5432/cuckoo_db
8. Error Message
1) VM 분석 시에 윈도우 창 에러 메시지에 is32bit 관련 메시지가 출력된다면, VM의 Snapshot의 agent.py를 관리자 권한으로 상승시켜 다시 실행 후에 Snapshot도 다시 캡쳐한 후에 분석을 진행한다.
V. 악성코드 자동 분석
1. Malware 및 악성URL 분석
1) file submit 및 Analyze(수동 분석)
2) 분석 결과
- API Call 추적, File Dump, Screenshots, Network Traffic, Process, System memory dump
2. 상세 분석
1) 파일 정보
- 악성코드 샘플 파일 : 063627014979bc2c3d0f84261ad65a83.zip ( Cerber Ransomware )
- Size, File Type, MD5, SHA1, SHA256, SHA512, CRC32, ssdeep 정보
2) 동적 분석
- 프로세스 트리 (Process Tree)
V. 정리
1. 참고 URL
1) suricata IDS 구축
2) Howto : Build a Cuckoo sandbox
https://infosecspeakeasy.org/t/howto-build-a-cuckoo-sandbox/27
3) 악성코드 분석을 위한 Cuckoo Sandbox 설치(for Mac)
https://cpuu.postype.com/post/325368/
'DFIR' 카테고리의 다른 글
[윈도우 포렌식 실전 가이드] 2장 소프트웨어 덤프 (0) | 2017.07.03 |
---|---|
[윈도우 포렌식 실전 가이드] 1장_라이브 리스폰스 스크립트 (0) | 2017.06.30 |
cuckoo update error (0) | 2016.01.20 |
스테가노그래피란 (0) | 2015.10.03 |
메모리 덤프 개념 및 도구 (0) | 2015.05.31 |