M4 맥북(ARM 아키텍처) 가상 환경(Ubuntu 20.04)에서 오픈소스 악성코드 분석 도구인 Cuckoo Sandbox를 구축하는 과정을 정리합니다.
Cuckoo Sandbox 구동을 위한 필수 패키지와 Python 2.7 환경을 구성한다.
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

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)으로 뜨면 성공이다.
네트워크 패킷 캡처를 위한 도구이다. 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

이 부분이 가장 까다로웠다. M2crypto, Volatility 등을 설치할 때 ARM 아키텍처 특성상 컴파일 에러가 계속 발생했다.
발생한 에러들
1. M2Crypto 에러: 최신 버전이 Python 3 문법을 사용하여 Python 2.7에서 설치 불가
2. 컴파일러 에러: ARM용 GCC(aarch64-linux-gnu-gcc)가 없어서 빌드 실패
3. Volatility 에러: pip 저장소에서 구버전 설치 지원 중단
# 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 명령어로 직접 설치하는 방식이 더 이상 지원되지 않는다고 한다. 소스코드를 직접 다운로드해서 설치하는 방법을 사용했더니 성공했다.
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을 통해 연동하는 과정을 정리해 봐야겠다.