[Cuckoo Sandbox] 구축하기 1 - 호스트 설정

Y·5일 전
post-thumbnail

M4 맥북(ARM 아키텍처) 가상 환경(Ubuntu 20.04)에서 오픈소스 악성코드 분석 도구인 Cuckoo Sandbox를 구축하는 과정을 정리합니다.

1. 환경 세팅

  • Host Machine: Apple M4 (ARM64)
  • Host OS: Ubuntu 20.04 LTS (Server)
  • Guest OS: Windows 7 (추후 설치 예정)
  • Python Version: 2.7 (Cuckoo Sandbox 요구사항)

2. 호스트(Ubuntu) 기본 설정

Cuckoo Sandbox 구동을 위한 필수 패키지와 Python 2.7 환경을 구성한다.

2-1. 파이썬 라이브러리 및 가상환경 설치

Ubuntu 20.04부터는 Python 2가 기본 제공되지 않으므로 수동으로 설치해야 한다.

# 시스템 패키지 업데이트 및 필수 라이브러리 설치
sudo apt-get update
sudo apt-get install -y python2 python2.7-dev libffi-dev libssl-dev libjpeg-dev zlib1g-dev swig

# Python 2용 pip 수동 다운로드 및 설치
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2 get-pip.py

# 가상환경 도구 설치
sudo pip2 install virtualenv
sudo pip2 install -U setuptools

2-2. MongoDB 설치

Cuckoo 분석 결과를 저장할 데이터베이스를 설치한다. M4(ARM) 환경 호환성을 위해 우분투 기본 저장소 패키지를 사용했다.

# MongoDB 설치
sudo apt-get install -y mongodb

# 서비스 시작 및 부팅 시 자동 실행 설정
sudo systemctl start mongodb
sudo systemctl enable mongodb

# 실행 상태 확인 (active (running) 확인)
sudo systemctl status mongodb

active (running)으로 뜨면 성공이다.

TCPDUMP 설치

네트워크 패킷 캡처를 위한 도구이다. Cuckoo가 루트 권한 없이도 캡처할 수 있도록 권한을 조정해야 한다.


# tcpdump 및 관련 도구 설치
sudo apt-get install -y tcpdump apparmor-utils

# AppArmor에서 tcpdump 예외 처리 (권한 문제 방지)
sudo aa-disable /usr/sbin/tcpdump

# 일반 사용자도 캡처 가능하도록 권한 부여 (중요)
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

3. 핵심 의존성 설치

이 부분이 가장 까다로웠다. M2crypto, Volatility 등을 설치할 때 ARM 아키텍처 특성상 컴파일 에러가 계속 발생했다.

발생한 에러들
1. M2Crypto 에러: 최신 버전이 Python 3 문법을 사용하여 Python 2.7에서 설치 불가
2. 컴파일러 에러: ARM용 GCC(aarch64-linux-gnu-gcc)가 없어서 빌드 실패
3. Volatility 에러: pip 저장소에서 구버전 설치 지원 중단

3-1. Volatility & M2Crpyto 설치

# 1. ARM용 컴파일러 및 필수 도구 설치 (가장 중요)
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu build-essential

# 2. Python 심볼릭 링크 설정 ('python' 명령어 인식용)
sudo ln -sf /usr/bin/python2.7 /usr/bin/python

# 3. Pillow (이미지 처리) - 구버전 설치
sudo pip2 install "pillow<7.0.0"

# 4. M2Crypto (암호화) - 경로 지정 및 컴파일러 연결
# CFLAGS와 LDFLAGS로 ARM 라이브러리 경로를 명시해줘야 함
sudo env CFLAGS="-I/usr/include/aarch64-linux-gnu" LDFLAGS="-L/usr/lib/aarch64-linux-gnu" pip2 install m2crypto==0.31.0

# 5. Volatility (메모리 분석) - 소스코드 직접 설치
sudo pip2 install https://github.com/volatilityfoundation/volatility/archive/master.zip

위 코드대로 진행하면 내가 겪었던 에러는 발생하지 않을 것이다.

설치하는 과정에서 에러 남. M2Crypto 버전이 최신이라 Python 3 문법을 사용하기 때문이라고 한다. (내가 사용하는 파이썬은 2.7임)

aarch64-linux-gnu-gcc 파일을 설치해 주고, m2crypto 버전을 지정해서 설치했더니 성공했다.

volatility 설치 과정에서도 에러가 떴다. pip 명령어로 직접 설치하는 방식이 더 이상 지원되지 않는다고 한다. 소스코드를 직접 다운로드해서 설치하는 방법을 사용했더니 성공했다.

4. Cuckoo Sandbox 설치 및 확인

Cuckoo 본체를 설치할 차례이다.

sudo pip2 install -U cuckoo

설치가 완료되면 cuckoo init으로 초기화를 진행하고(설정 파일 생성), 웹 서버를 실행하여 대시보드에 접속해 본다.

cuckoo web runserver 0.0.0.0:8000

브라우저에서http://우분투ip:8000으로 접속했더니 대시보드가 떴다!

이제 호스트 설정은 끝났다.

M4 맥에서는 VirtualBox 대신 KVM/QEMU를 사용해야 하니 관련 도구들을 미리 설치해둔다.

sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
sudo adduser $USER libvirt
sudo adduser $USER kvm

다음 글에서는 Windows 7 게스트 VM을 설치하고 KVM을 통해 연동하는 과정을 정리해 봐야겠다.

0개의 댓글