Linux

cuckoo

REAOR 2018. 11. 23. 12:00

ubuntu 16.04 LTS 버전 설치


#시스템 부팅시 동작하는 업데이트 서비스 중지

sudo systemctl stop apt-daily.service

#오전 6시와 오후 6시에 업데이트를 학인하고 동작하는 서비스

sudo systemctl stop apt-daily.timer
#시스템이 부팅되면서 바로 동작하는 업그레이드 서비스
sudo systemctl stop apt-daily-upgrade.service

#오전 6시와 오후 6시에 업그레이드를 학인하고 동작하는 서비스

sudo systemctl stop apt-daily-upgrade.timer


# 서비스 자동실행 비활성화

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