Cuckoo Sandbox 구축 순서:
🌟 기본 패키지 및 라이브러리 설치
🌟 cuckoo 코어 설치
🌟 sandbox 구성
🌟 cuckoo 웹 데이터베이스 구성
🌟 cuckoo 설정 및 실행
- 기본 패키지 및 라이브러리 설치
- 패키지 및 라이브러리 설치할 준비를 위해 업데이트.
sudo apt-get update1) 기본 패키지 및 라이브러리 설치
현재 버전 22.04 기준으로 구축시 python2.7, python3 혼용 설치 필요.
sudo apt-get install python2.7 python2.7-dev python3 python3-dev python3-pippip 2버전을 설치하기 위해 다음과 같은 command:
sudo add-apt-repository universe
sudo apt-get install curl
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2.7 get-pip.py유니버스 리포지토리 활성화 후, curl 스크립트로 다운로드하여 pip를 설치.
나머지 라이브러리 설치 진행:
sudo apt-get install subversion
sudo apt-get install libssl-dev libjpeg-dev zlib1g-dev libffi-dev git
sudo apt-get install automake autoconf libtool build-essential wget swig
sudo apt-get install libpcre3 libpcre3-dev libpcre++-dev -y
sudo apt-get install python3-magic python3-dpkt python3-sqlalchemy python3-jinja2 -y
sudo apt-get install python3-pymongo python3-bottle python3-virtualenv python-setuptools -y2) tcpdump
- tcpdump
네트워크 상 송수신되는 패킷들의 정보들을 가로채(스니핑) 정보들을 표시해주는 네트워크 패킷 캡처 및 분석도구.
cuckoo sandbox에서는 분석 중 malware에 의해 생성된 네트워크 트래픽을 캡처하고 분석하여 데이터를 제공.
다음 command를 통해 tcpdump와 apparmor-utils 설치:
sudo apt-get install tcpdump apparmor-utilsapp armor를 비활성화하고, tcpdump를 root 권한 없이 사용할 수 있도록 설정:
sudo aa-disable /usr/bin/tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/tcpdump※ tcpdump issue : https://jihyun-dev.tistory.com/4
3) ssdeep, pydeep
(1) ssdeep 설치
- ssdeep
Fuzzy Hash를 사용하여 원본 파일과 유사도 측정, Hash 값을 통해 무결성 체크.
sandbox에 submit된 파일의 Hash값을 통해 malware의 변종인지 비교하는데 사용, 관련있는 파일을 빠르게 식별.
다음 command를 통해 ssdeep.tar.gz 파일 다운로드 및 압축해제:
wget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.13/ssdeep-2.13.tar.gz
tar zxf ssdeep-2.13.tar.gz
rm -r ssdeep-2.13.tar.gz
mv ssdeep-2.13 ssdeepssdeep 디렉터리로 이동하여 설정:
cd ssdeep
./configure && make && make install
sudo ldconfig(2) pydeep
- pydeep
cuckoo sandbox에 있어서 pydeep은 Fuzzy Hashing을 수행, 파일을 cuckoo sandbox에 submit하면 pydeep이
해당 파일에 대한 CTPH Hash를 생성하고 알려진 Hash 데이터베이스와 비교하여 분석 진행.
즉, 잠재적으로 악성일 파일을 효율적으로 분석 및 식별 가능.
다음 command를 통해 pydeep 설치:
git clone https://github.com/kbandla/pydeep.git pydeep
cd pydeep
sudo apt-get install libfuzzy-dev
python3 setup.py build
sudo python3 setup.py install4) pefile
- pefile
실행파일(.exe), DLL 및 기타 바이너리 파일에 사용하는 파일 형식인 PE(Portable Executable)파일에 작업하는
Python 모듈. malware 분석에서 PE파일의 정보 추출이 가능하며, 추출 정보는 주로 파일의 목적, malware 여부,
실행 시 어떤 동작을 보이는지 파악하는데 사용.
다음 command를 통해 PE file 다운로드:
wget https://github.com/erocarrera/pefile/releases/download/v2023.2.7/pefile-2023.2.7.tar.gz
tar zxf pefile-2023.2.7.tar.gz
rm -r pefile-2023.2.7.tar.gz
mv pefile-2023.2.7 pefilepefile 디렉터리로 이동하여 설치:
cd pefile
python3 setup.py build
sudo python3 setup.py install5) yara
- yara
malware 패턴 매칭 및 탐지에 사용. 특정 malware의 동작이나 특성을 식별하기 위해 yara rule을 생성하고
이 rule을 사용하여 파일, 메모리에서 잠재적인 malware를 검사 가능(Signature 기반 탐지)
yara-4.3.0.tar.gz 파일을 다운로드:
wget https://github.com/VirusTotal/yara/archive/refs/tags/v4.3.0.tar.gz
tar zxf v4.3.0.tar.gz
rm -r v4.3.0.tar.gz
mv yara-4.3.0 yarayara 디렉터리로 이동, 설치 및 설정 완료:
cd yara
sudo apt-get install libtool*
./bootstrap.sh
./configure
make
sudo make installyara를 python에서 사용할 수 있도록 다음 command를 통해 yara-python 설치:
git clone --recursive https://github.com/VirusTotal/yara-python
cd yara-python
python3 setup.py build
sudo python3 setup.py install6) m2crypto
- m2crypto
암호화, 암호 해독 및 디지털 서명 등 암호화 기능에 사용되는 Python 라이브러리.
SSL/TLS 암호화 및 디지털 인증서 관리와 같은 네트워크 보안 애플리케이션에 사용.
다음 command를 통해 m2crypto를 설치:
sudo pip install m2crypto7) Volatility
- Volatility
메모리 덤프에서 malware나 해킹, 기타 보안 사고 증거를 분석하는데 사용되는 메모리 포렌식 도구.
실행 중인 프로세스, 개방형 네트워크 연결 및 보안 문제를 나타낼 수 있는 기타 시스템 활동에 대한 정보 추출하는데
사용.
volatility를 git clone으로 복제하여 받아오고 해당 디렉터리로 이동 및 설치:
sudo git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
python3 setup.py build
sudo python3 setup.py install- distorm3
리버스 엔지니어링 및 malware 분석에 사용. 실행 코드를 어셈블리 언어로 디스어셈블하는데 사용되는 디스어셈블러
라이브러리로, 프로그램의 작동 방식과 기능을 파악하는데 이용.
distorm3을 다운로드하고 압축 해제:
sudo apt-get install libboost-all-dev
wget https://github.com/gdabah/distorm/archive/v3.4.4.tar.gz
tar zxvf v3.4.4.tar.gz
sudo rm -r v3.4.4.tar.gz
mv distorm-3.4.4 distorm3distorm3 디렉터리로 이동 후 설치:
cd distorm3
sudo python3 setup.py build
sudo python3 setup.py install- cuckoo 코어 설치
다음과 같은 command를 통해 cuckoo 코어 설치:
sudo pip2.7 install cuckoo
sudo pip2.7 install -U cuckoo
cuckoo- sandbox 구성
1) VirtualBox 설치
※ 수동으로 설치시 다음과 같이 command 입력:
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian focal contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt update
sudo apt-get install virtualbox2) 가상머신 생성 및 구성
(1) 가상머신 다운로드 및 생성
[Virtualbox] – [New]:

machine 이름은 cuckoo1으로 설정.
필자는 Base Memory 4000MB, Processors 2, 50GB 할당.
다운로드한 이미지 디스크를 삽입 후 OK
(2) python 2.7 및 pillow 라이브러리 설치
생성한 cuckoo1을 부팅하고 python 2.7 다운로드 및 설치:
cmd를 열고 다음과 같은 command를 입력하여 pillow 라이브러리 설치:
cd C:Python27Scripts
pip install pillow3) 방화벽 및 UAC 설정
(1) 방화벽 OFF

(2) UAC(사용자 계정 컨트롤) OFF

4) 가상머신 네트워크 구성
(1) Hostonly Network 설정
hostonly 어댑터 생성 및 설정:
sudo vboxmanage hostonlyif create
sudo vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.10(2) iptables 설정
설정 후 저장하려면 iptable 설정하기 전에 다음과 같은 command :
sudo apt-get install iptables-persistent※ 재부팅시 iptable 초기화. 따라서 스크립트 파일로 저장하거나, 명령어로 설정한 iptable을 저장.
다음과 같이 iptables 설정:
sudo iptables -t nat -A POSTROUTING -o ens33 -s 192.168.56.10/24 -j MASQUERADE
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.10/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.10/24 -d 192.168.56.10/24 -j ACCEPT
sudo iptables -A FORWARD -j LOG
sudo iptables -L -vcommand를 입력하고 오픈한 conf 파일에서 net.ipv4.ip_forward = 1 부분을 찾아 활성화:
sudo nano /etc/sysctl.conf설정한 iptables을 저장:
sudo sysctl -p /etc/sysctl.conf
sudo netfilter-persistent save
sudo cat /etc/iptables/rules.v4- 설정한 ip는 sandbox 내에서 static으로 변경
5) 공유폴더 설정 및 스냅샷
[Devices] – [Shared Folder] – [Shared Folders Settings…] 선택 후
디렉터리 경로는 cuckoo 폴더의 agent로 지정, Auto-mount·Make-Permanent 체크:
- .cuckoo 폴더가 보이지 않을경우 ctrl + H. cuckoo 명령 실행해야 생성되는 폴더.

VirtualBox의 상단 메뉴 [Devices] – [Insert Guest Additions CD image…]
다음과 같이 나타나면 해당 파일 다운로드 후 insert :

CD 드라이브에서 VirtualBox Guest Additions 설치:

재부팅 후 네트워크에서 공유폴더의 이름이 변경되면 공유폴더 설정 완료.
agent.py 파일을 바탕화면으로 복사하여 실행:

ubuntu에서 다음과 같은 command 실행하여 스냅샷 설정:
VBoxManage snapshot "cuckoo1" take "Snapshot1" --pause
VBoxManage controlvm "cuckoo1" poweroff
VBoxManage snapshot "cuckoo1" restorecurrent- 웹 데이터베이스 구성
1) mongodb
다음 command를 통해 mongodb public key를 가져오기:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -mongodb 설치:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org※ libssl1.1로 인해 에러 발생시 참고:
mongodb 활성화 및 실행:
sudo service mongod start
sudo systemctl enable mongod.service- cuckoo 설정 및 실행
1) conf 파일 설정
다음 command를 통해 cuckoo,conf 파일을 수정:
sudo nano .cuckoo/conf/cuckoo.conf
[resultserver]의 ip주소를 수정. port는 기본값 2042이나 필요시 수정.
reporting.conf 파일 수정:
sudo nano .cuckoo/conf/reporting.conf
[mongodb]의 enabled 값을 yes로 변경하여 db 연결. host 주소값은 cuckoo db의 ip 주소를 입력.
db에 생성한 사용자가 있는 경우 사용자 계정과 비밀번호 값 수정
virtualbox.conf 파일 수정:
sudo nano .cuckoo/conf/virtualbox.conf
mode의 기본값은 headless. gui로 수정.
interface와 machines의 이름 확인.

생성한 샌드박스 cuckoo1의 설정 확인 및 ip 수정.
❗tcpdump directory issue update로 경로가 usr/bin/tcpdump에 존재하는경우
기존의 cuckoo 설정에서는 tcpdump를 찾지 못해 에러 발생하므로 경로 수정바람.

2) cuckoo 서버 실행
다음 command를 통해 cuckoo 서버 실행:
cuckoo -d
cuckoo web -H 192.168.159.134 -p 8000주소 접속 시 다음과 같은 UI:

 

답글 남기기