티스토리 뷰
ubuntu 16.04 LTS 버전 설치
#시스템 부팅시 동작하는 업데이트 서비스 중지
sudo systemctl stop apt-daily.service
#오전 6시와 오후 6시에 업데이트를 학인하고 동작하는 서비스
#오전 6시와 오후 6시에 업그레이드를 학인하고 동작하는 서비스
# 서비스 자동실행 비활성화
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer
# 저장소 목록 업데이트
sudo apt update
# 쿡쿠 필수 패키지 및 라이브러리 설치
sudo apt install -y python-pip python-dev libssl-dev libjpeg-dev zlib1g-dev tcpdump apparmor-utils vim curl iptables-persistent
※ 중간에 iptables-persistent 를 설치중 TUI에 선택화면이 두번 출력시 YES 선택
# tcpdump 보호기능 비활성화 및 사용권한 수정
sudo aa-disable /usr/sbin/tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
# 버츄얼박스 저장소 등록과 인증
echo deb http://download.virtualbox.org/virtualbox/debian xenial contrib | sudo tee -a /etc/apt/sources.list.d/virtualbox.list
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add
sudo apt update
# 저장소 업데이트 및 버추얼박스 설치
sudo apt install -y virtualbox-5.1
# pip 최신 버전 업그레이드
sudo -H pip install -U pip
# 쿡쿠 코어 설치
sudo -H pip install cuckoo==2.0.5.3
※ 쿡쿠 버전확인
sudo -H pip install cuckoo==
# 쿡쿠 코어 실행
cuckoo
# 쿡쿠 디렉터리 경로 직접 명시 방법
cuckoo --cwd ~/test
# 쿡쿠 디렉터리를 환경변수에 설정
echo "export cwd=/home/\"\$USER\"/.cuckoo" >> ~/.profile
source ~/.profile
# 환경변수 등록 확인
env | grep cwd
# 가상머신 다운로드
wget https://az792536.vo.msecnd.net/vms/VMBuild_20150916/VirtualBox/IE8/IE8.Win7.VirtualBox.zip
# 다운로드한 윈도우 가상머신 압축해제
unzip ~/Downloads/IE8.Win7.VirtualBox.zip
※ ubuntu의 경우 기본적으로 파일을 다운로드 할 경우 Downloads폴더에 저장됨
# 버츄얼 박스 실행
virtualbox
# 가상머신 설정
Import Appliance
unzip한 윈도우 가상머신 선택
가상머신 이름을 cuckoo1으로 변경
하단의 Reinitialize the Mac address of all network cards 체크
Import
가져오기가 끝난 후 윈도우 가상머신을 실행해 부팅
부팅이 완료 후 네트워크 설정창이 뜨면 Treat all future networks ~~~~~ 체크박스 선택
Public network 선택
# 관리자 계정 활성화
Command Prompt 를 마우스 오른쪽 버튼 클릭 후 Run as administrator를 선택해 관리자 권한으로 실행
net user administrator /active:es
net user administrator *
엔터
엔터
# 컴퓨터 이름 변경
wmic computersystem where caption="IE8Win7" rename 'cuckoo1'
※ 다수의 샌드박스를 동시 운영할 경우 네트워크상 컴퓨터 이름 때문에 충돌이 일어날 수 있으므로 변경
# 불필요한 사용자 삭제
net user IEUser /delete
net user sshd /delete
net user sshd_server /delete
#윈도우 시스템 재시작
shutdown -r -t 0
# 윈도우 IP 설정
상단의 file - Preferences ...선택
Network - Host-only Networks
우측의 +
ok
ok
※ 우분투 터미널에서 ifconfig를 입력할 경우 가상머신네트워크 확인 가능
※ 부팅과 함께 vboxnet0 인터페이스를 생성 하도록 설정
# systemctl이 관리하는 디렉터리에 서비스 제어파일 생성
sudo vim /lib/systemd/system/vboxhostonlynic.service
[Unit]
Description=Autorun VirtualBox Hostonly Network Interface
After=vboxdrv.service
[Service]
Type=oneshot
RemainAfterExit=yes
GuessMainPID=yes
User=ssp
ExecStart=/usr/bin/VBoxManage hostonlyif ipconfig "vboxnet0" --ip 192.168.56.1
[Install]
WantedBy=multi-user.target
:wq!
# vboxnet0 자동실행 등록
sudo systemctl daemon-reload
sudo systemctl enable vboxhostonlynic.service
sudo systemctl start vboxhostonlynic.service
# vboxnet0 사용하도록 설정
버츄얼 상단 Device- Network -Network Settings
Attached to : Host-only Adapter
Name : vboxnet0
# 첫 번째 샌드박스 네트워크 설정
netsh interface ipv4 set address name="Local Area Connection 2" static 192.168.56.101 255.255.255.0 192.168.56.1
netsh interface ipv4 set dns name="Local Area Connection 2" static 8.8.8.8
# 네트워크 설정 확인
ipconfig
# 네트워크 동작 학인
ping www.google.co.kr
# iptables 방화벽 설정
sudo iptables -t nat -A POSTROUTING -o ens33 -s 192.168.56.0/24 -j MAQUERADE
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -j L0G
※ 안될 경우 위의 설정들을 삭제하고 아래의 설정으로 변경
(
sudo iptables -A FORWARD -o enp2s0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
)
# 방화벽 정책 설정 확인
sudo iptables -L -v
# IP 포워딩 설정
sudo vim /etc/sysctl.conf
line 28
net.ipv4.ip_forward=1
sudo sysctl -p /etc/sysctl.conf
# 방화벽 정책 저장 및 확인
sudo netfilter-persistent save
sudo cat /etc/iptables/rules.v4
# 윈도우 네트워크 동작 학인
ping www.google.co.kr
# 윈도우 임시 인증 활성화
slmgr /ato
# 시스템 시간 설정
우측 하단 시계
change date and time settings
change time zone
seoul
# 방화벽 비활성화
netsh advfirewall set allprofiles state off
# 윈도우 업데이트 비활성화 명령
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 1 /f
# UAC 비활성화 명령
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 0 /f
# python 2.7버전 설치
www.python.org 에서 Windows x86 MSI installer 2.7 최신 버전 설치
※ 가상머신에 설치된 윈도우는 32비트 이므로 x86을 설치한다, 설치중 Customize Python 단계에서 맨 밑에 내려 파이썬 경로를 추가하는 옵션 선택한다.
# 샌드박스에 필로우 라이브러리 설치
pip.exe install pillow
※ 만약 안될 경우 c:\Python27\Scripts\pip.exe install pillow
# agent.py파일, 공유폴더 설정
가상머신 상단 Devices
Share Folders - Shared Folders Settings
오른쪽에 + Folder Path - Other
./cuckoo/agent 입력
※ 비활성화 되더라도 일단 엔터
※ 만약 cwd위치를 변경했따면 cwd 위치에 agent 디렉터리를 지정
※ 안넘어 간다거나 에러가 날 경우 우분투 터미널에서 find / -name agent 검색후 해당 폴더 경로를 확인하여 윈도우 내에서 해당경로에 접근하여 공유폴더 설정
윈도우 재부팅
공유폴더에 agent.py 바탕화면에 복사
agent.py 실행
# 선택한 가상머신 스냅샷 설정 후 일시정지
VBoxManage snapshot "cuckoo1" take "Snapshot 1" --pause
VBoxManage controlvm "cuckoo1" poweroff
VBoxManage snapshot "cuckoo1" restorecurrent
※ 루트 권한의 경우 실행이 안되므로 루트권한에서 빠져나온뒤 일반 사용자 모드에서 입력
# PostgreSQL 설치
sudo apt install -y postgresql libq-dev
# PostgreSQL 계정 비밀번호 설정
sudo passwd postgres
원하는 패스워드
원하는 패스워드 확인
# PostgresSQL에 계정 등록
sudo -u postgres createuser --interactive
우분투 로그인 계정
n
y
y
# cuckoo 데이터베이스 생성
createdb cuckoo
# PostreSQL 쉘 접근
psql cuckoo
# PostgreSQL 사용자 cuckoo의 비밀번호 생성
alter user 로그인계정 wit password '원하는 비밀번호'
# PostgreSQL IP 설정
sudo vim /etc/postgresql/9.5/main/postgresql.conf
line 59
listen_addresses = 192.168.0.100 // 우분투 ip
:wq!
sudo vim /etc/postgresql/9.5/main/pg_hba.conf
line 100
host all all 192.168.0.1/24 md5 // 우분투 ip 대역대
# PostgreSQL 서비스 데몬 재실행 및 자동실행 등록
sudo systemctl restart postgresql@9.5-main.service
sudo systemctl enable postgresql@9.5-main.service
# 몽고DB 설치
sudo apt install -y mongodb
# 몽고DB IP 설정
sudo vim /etc/mongodb.conf
line 11
bind_ip = 192.168.0.100 // ubuntu IP
wq!
# 몽고DB 서비스 실행 및 자동실행 설정
sudo systemctl restart mongodb.service
# 몽고DB 접속
mongo 192.168.0.100
# 몽고DB 데이터베이스 및 사용자 생성
use cuckoo
db.createUser({user:"사용자명",pwd:"원하는 패스워드",roles:[{role:"readWrite",db:"cuckoo"}]})
Exit
# cuckoo.conf의 [resultserver] 섹션 설정
vim $cwd/conf/cuckoo.conf
line 80
[resultserver]
line 87
ip = 192.168.56.1 //가상머신 대역대
line 90
port 2042
line 95
force_port = no
line 99
upload_max_size = 134217728
# cuckoo.conf 설정에 데이터베이스 주소 등록
line 113
[database]
line 122
connection = postgresql://[데이터베이스 사용자 이름]:[데이터베이스 사용자 비밀번호]@[데이터베이스 서버 주소(우분투):5432/[데이터베이스이름]
# 파이썬 언어가 PostgreSQL 데이터베이스르 제어하기 위한 라이브러리 설치
sudo -H pip install psycopg2==2.6.2
# virtualbox.conf의 [virtualbox] 섹션 설정
vim $cwd/conf/virtualbox.conf
line 1
[virtualbox]
line 5
mode = gui
line 8
path = /usr/bin/VBoxManage
line 13
interface = vboxnet0
line 18
machines = cuckoo1
# virtualbox.conf의 샌드박스 설정
line 21
[cuckoo1]
line 24
label = cuckoo1
line 28
platform = windows
line 33
ip = 192.168.56.101
line 38
snapshot =
line 44
interface =
resultserver_ip =
line 61
resultserver_port =
line 65
tags =
line 68
options =
line 74
osprofiles =
# reporting.conf 설정
vim $cwd/conf/reporting.conf
line 34
[mongodb]
line 35
enabled = yes
line36
host = 192.168.0.100 //ubuntu ip
line 37
port 27017
line 38
db = cuckoo
line 39
store_memdump = yes
line 40
paginate = 100
line 41
# MongoDB authentication (optional).
line 42
username = 데이터베이스 계정
line 43
password = 데이터베이스 패스워드
# 쿡쿠 도움말
cuckoo -help
# 쿡쿠 디버깅 모드 실행
cuckoo -d
# 쿡쿠 웹 서비스 도움말
cuckoo web -help
# 쿡쿠 웹서비스 실행
cuckoo web -H 192.168.0.100