Cuckoo Sandbox Install

Cuckoo Sandbox 구축 순서:

🌟 기본 패키지 및 라이브러리 설치

🌟 cuckoo 코어 설치

🌟 sandbox 구성

🌟 cuckoo 웹 데이터베이스 구성

🌟 cuckoo 설정 및 실행


  1. 기본 패키지 및 라이브러리 설치
  • 패키지 및 라이브러리 설치할 준비를 위해 업데이트.
sudo apt-get update

1) 기본 패키지 및 라이브러리 설치

현재 버전 22.04 기준으로 구축시 python2.7, python3 혼용 설치 필요.

sudo apt-get install python2.7 python2.7-dev python3 python3-dev python3-pip

pip 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 -y

2) tcpdump

  • tcpdump

네트워크 상 송수신되는 패킷들의 정보들을 가로채(스니핑) 정보들을 표시해주는 네트워크 패킷 캡처 및 분석도구.

cuckoo sandbox에서는 분석 중 malware에 의해 생성된 네트워크 트래픽을 캡처하고 분석하여 데이터를 제공.

다음 command를 통해 tcpdump와 apparmor-utils 설치:

sudo apt-get install tcpdump apparmor-utils

app 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

tcpdump directory issue: /usr/sbin/tcpdump
나같은 경우에는 cuckoo sandbox를 사용하기 위해 tcpdump가 필요했고… 다른 이유로도 tcpdump가 필요한 분들이 있겠지만 아무튼 최신 버전의 문제인지 몰라도 계속 에러 발생. 근데 어쩐지 그 에러들
jihyun-dev.tistory.com

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 ssdeep

ssdeep 디렉터리로 이동하여 설정:

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 install

4) 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 pefile

pefile 디렉터리로 이동하여 설치:

cd pefile
python3 setup.py build
sudo python3 setup.py install

5) 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 yara

yara 디렉터리로 이동, 설치 및 설정 완료:

cd yara
sudo apt-get install libtool*
./bootstrap.sh
./configure
make
sudo make install

yara를 python에서 사용할 수 있도록 다음 command를 통해 yara-python 설치:

git clone --recursive https://github.com/VirusTotal/yara-python
cd yara-python
python3 setup.py build
sudo python3 setup.py install

6) m2crypto

  • m2crypto

암호화, 암호 해독 및 디지털 서명 등 암호화 기능에 사용되는 Python 라이브러리.

SSL/TLS 암호화 및 디지털 인증서 관리와 같은 네트워크 보안 애플리케이션에 사용.

다음 command를 통해 m2crypto를 설치:

sudo pip install m2crypto

7) 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 distorm3

distorm3 디렉터리로 이동 후 설치:

cd distorm3
sudo python3 setup.py build
sudo python3 setup.py install
  1. cuckoo 코어 설치

다음과 같은 command를 통해 cuckoo 코어 설치:

sudo pip2.7 install cuckoo
sudo pip2.7 install -U cuckoo
cuckoo

  1. 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 virtualbox

2) 가상머신 생성 및 구성

(1) 가상머신 다운로드 및 생성

https://www.microsoft.com/ko-kr/software-download/windows10ISO

Windows 10 디스크 이미지 다운로드(ISO 파일)
요청의 유효성을 검사하는 중입니다. 이 작업은 몇 분 정도 걸릴 수 있습니다. 페이지를 새로 고치거나 뒤로 이동하지 마세요. 그러면 요청이 취소됩니다.
www.microsoft.com

[Virtualbox] – [New]:

machine 이름은 cuckoo1으로 설정.

필자는 Base Memory 4000MB, Processors 2, 50GB 할당.

다운로드한 이미지 디스크를 삽입 후 OK

(2) python 2.7 및 pillow 라이브러리 설치

생성한 cuckoo1을 부팅하고 python 2.7 다운로드 및 설치:

https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi

cmd를 열고 다음과 같은 command를 입력하여 pillow 라이브러리 설치:

cd C:Python27Scripts
pip install pillow

3) 방화벽 및 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을 저장.

https://cuckoo.readthedocs.io/en/latest/installation/host/routing

Per-Analysis Network Routing — Cuckoo Sandbox v2.0.7 Book
Per-Analysis Network Routing Since Cuckoo 2.0-rc1 it is possible to feature per-analysis network routing. In other words, if you have one VM and three samples to analyze, it is possible to deny internet access for the first analysis, route the second analy
cuckoo.readthedocs.io

다음과 같이 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 -v

command를 입력하고 오픈한 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. 웹 데이터베이스 구성

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로 인해 에러 발생시 참고:

https://jihyun-dev.tistory.com/3

Mongodb error: The following packages have umet dependencies
우분투에서 mongodb 설치하기 위해 다음과 같이 입력했을 때 $ sudo apt-get install -y mongodb-org 해당 오류가 발생하는 경우가 있다. The following packages have unmet dependencies: mongodb-org-mongos : Depends: libssl1.1 (>=
jihyun-dev.tistory.com

mongodb 활성화 및 실행:

sudo service mongod start
sudo systemctl enable mongod.service
  1. 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:

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다