準(zhǔn)備工作
- Ubuntu18.04
- windows7 32位ISO鏡像文件
- VirtualBox
本次搭建是以Ubuntu18.04為主機(jī)(Host),以在VirtualBox中創(chuàng)建的win7系統(tǒng)為客戶機(jī)(Guest).
服務(wù)器(Host)安裝
-
操作系統(tǒng)
Ubuntu18.04
-
更換源
更換到國內(nèi)的Ubuntu源瞬浓,把pip的源也換掉,google或百度上都有相關(guān)博文。
換源時(shí)最好將源文件做個(gè)備份萎胰。 檢查python版本和相關(guān)pip版本
- cuckoo sandbox僅完全支持python2.7,不支持舊版本的python和python3版本葫松。
此時(shí)用$ sudo apt-get install python2.7 $ sudo apt install python-pip $ sudo apt install python3-pip
python -V
和pip -V
查詢python版本和pip版本
-
安裝基本的包
$ sudo apt-get install python python-pip python-dev libffi-dev libssl-dev $ sudo apt-get install python-virtualenv python-setuptools $ sudo apt-get install libjpeg-dev zlib1g-dev swig
安裝數(shù)據(jù)庫
-
為了使用基于Django的Web界面役听,需要使用MongoDB:
$ sudo apt-get install mongodb
-
Mysql用于儲(chǔ)存Cuckoo運(yùn)行狀況:
$ sudo apt-get install mysql-server mysql-client libmysqlclient-dev
注意:在最新版的mysql安裝過程中毛好,不會(huì)再提示手動(dòng)設(shè)置root用戶的密碼,則需要用命令設(shè)置root初始密碼:
$ sudo mysql_secure_installation
然后按照提示一步一步來即可忍燥。
另外搬俊, root連接需要sudo命令紊扬,否則會(huì)出現(xiàn)以下結(jié)果$ mysql -uroot -p ERROR 1698 (28000): Access denied for user 'root'@'localhost'
解決方法:
$ sudo mysql -u root mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart
-
tcpdump
Host機(jī)需要可以嗅探網(wǎng)絡(luò)數(shù)據(jù)包,需要安裝tcpdump 唉擂,執(zhí)行以下命令安裝,并啟用tcpdump 的root權(quán)限:
$ sudo apt-get install tcpdump apparmor-utils $ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
-
安裝Cuckoo
推薦在虛擬環(huán)境中安裝餐屎。virtualenv是一個(gè)創(chuàng)建隔絕的Python環(huán)境的工具,在之前的步驟中已經(jīng)安裝上了玩祟。
$ virtualenv venv $ . venv/bin/activate (venv)$ pip install -U pip setuptools (venv)$ pip install -U cuckoo
然后就會(huì)自動(dòng)下載所需的各種包腹缩。在使用的過程中,如果提示某python模塊缺失空扎,可以再單獨(dú)安裝藏鹊,但注意需要在虛擬環(huán)境中進(jìn)行安裝。
-
安裝yara
$ sudo apt-get install yara $ sudo apt-get install python-yara (venv)$ pip install yara
安裝yara時(shí)有點(diǎn)問題转锈,暫時(shí)找不出解決方案盘寡,博主就沒有裝yara,或者說是其他的問題,然后yara背鍋撮慨,因?yàn)楫?dāng)時(shí)安裝成功時(shí)竿痰,yara并不是唯一變量,所以不確定到底是誰有問題砌溺。大家可以試一下影涉。
-
安裝volatility
如果需要啟用內(nèi)存鏡像分析,需要安裝volatility:
apt-get install volatility
-
初始化cuckoo
(venv)$ cuckoo init
初始化完成后规伐,便會(huì)自動(dòng)生成cuckoo的工作目錄(Cuckoo Working Directory)蟹倾,我們稱之為CWD,是個(gè)隱藏文件夾。
通常這個(gè)目錄在:
非root身份:/home/[username]/.cuckoo/ root身份:/root/.cuckoo/
以后統(tǒng)稱為CWD 或 .cuckoo鲜棠。
這個(gè)CWD肌厨,不運(yùn)行一次Cuckoo是不會(huì)自動(dòng)生成的!2砹簟O目蕖!献联!
這簡(jiǎn)直就是個(gè)大坑竖配,博主剛開始搭建時(shí),是第一次接觸Cuckoo里逆,兩眼一抹黑进胯,啥也不會(huì)就只能跟著網(wǎng)上的教程走,但原押,胁镐,,網(wǎng)上大部分教程都好像默認(rèn)來學(xué)習(xí)的人都知道CWD在哪里诸衔,或者說怎么生成 =-=盯漂,難受的亞批
除了Cuckoo Linux Subsystem: Some Love for Windows 10,此文章是研究怎么把win10當(dāng)作主機(jī)笨农,配置cuckoo就缆,是個(gè)好博文不過我沒學(xué)會(huì)==,win10安裝和Ubuntu安裝有相同之處谒亦,推薦瞅兩眼
客戶機(jī)(guest)安裝
-
操作系統(tǒng)
windows7 32位
-
虛擬機(jī)
官方文檔表示Cuckoo支持VirtualBox 4.3,5.0,5.1和5.2
下載VirtualBox 5.2竭宰,然后在下載文件夾的終端執(zhí)行以下命令:
~/Downloads$ sudo dpkg -i virtualbox-5.2_5.2.30-130521_Ubuntu_bionic_amd64.deb
-
虛擬機(jī)安裝
自行準(zhǔn)備一個(gè)win7系統(tǒng)鏡像,然后在VirtualBox中創(chuàng)建一個(gè)新的虛擬機(jī)份招,
具體設(shè)置為:
1. 虛擬機(jī)名稱為cuckoo1 (在配置時(shí)會(huì)用到切揭,也可設(shè)置為你喜歡的名稱,配置時(shí)自行修改) 2. 內(nèi)存大小為2G锁摔,雙處理器廓旬,硬盤32G 3. 拖放 和 共享文件夾最好是雙向 4. 系統(tǒng)->啟動(dòng)順序 一欄,勾選光驅(qū)和硬盤谐腰,其他不勾選 5. 網(wǎng)絡(luò)配置孕豹,具體看下一節(jié) 6. 然后創(chuàng)建虛擬機(jī)-cuckoo1
注:win7不要設(shè)置密碼,直接下一步就可以了怔蚌。
-
網(wǎng)絡(luò)配置
首先巩步,需要在VirtualBox上添加一塊給Host-Only虛擬網(wǎng)卡旁赊,默認(rèn)是vboxnet0桦踊,IP為192.168.56.1,關(guān)閉DHCP服務(wù)终畅。
然后配置客戶機(jī)的網(wǎng)絡(luò)
網(wǎng)卡1:設(shè)置為僅主機(jī)(Host-Only)網(wǎng)絡(luò)籍胯,界面名稱為vboxnet0竟闪。 網(wǎng)卡2:設(shè)置為網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。
NAT適配器用于Internet訪問時(shí)杖狼,Cuckoo使用Host-Only適配器與Guest映像內(nèi)的代理進(jìn)行通信炼蛤。
禁用DHCP,請(qǐng)執(zhí)行以下步驟:
1. 打開VirtualBox Manager 2. 單擊文件>首選項(xiàng)>網(wǎng)絡(luò) 3. 單擊“僅主機(jī)網(wǎng)絡(luò)”選項(xiàng)卡 4. 突出顯示“VirtualBox Host-Only Ethernet Adapter”并單擊Edit(看起來像螺絲刀的圖標(biāo)) 5. 單擊“DHCP服務(wù)器”選項(xiàng)卡 6. 取消選中“啟用服務(wù)器”
-
客戶機(jī)配置
當(dāng)你虛擬機(jī)的系統(tǒng)安裝好以后蝶涩,就需要對(duì)win7系統(tǒng)本身進(jìn)行配置了理朋,如下:
-
安裝增強(qiáng)功能
設(shè)備>安裝增強(qiáng)功能
安裝增強(qiáng)功能以后,進(jìn)入計(jì)算機(jī)你會(huì)發(fā)現(xiàn)你的CD盤正在工作绿聘,點(diǎn)擊進(jìn)入然后安裝適合你機(jī)器的版本-32位版本嗽上,安裝后重啟,此時(shí)就可以在主機(jī)與客戶機(jī)之間通過拖放熄攘,粘貼傳送文件了兽愤,還可以調(diào)整分辨率大小。
-
配置Guest機(jī)網(wǎng)卡
控制面板>網(wǎng)絡(luò)和 Internet>網(wǎng)絡(luò)和共享中心>更改適配器設(shè)置
這時(shí)你會(huì)發(fā)現(xiàn)兩個(gè)本地連接挪圾,其中一個(gè)已經(jīng)連接(NAT)浅萧,另一個(gè)未識(shí)別(Host-Only),也就是說你可以通過這個(gè)win7網(wǎng)上沖浪哲思,但是卻不能連接到自己的主機(jī)洼畅。
這時(shí)配置Host-Only網(wǎng)卡,如下:
當(dāng)設(shè)置完成后也殖,兩個(gè)網(wǎng)絡(luò)都會(huì)顯示已連接土思。
-
安裝工具或軟件
安裝python2.7,PIL忆嗜,Pillow
安裝一些軟件己儒,如office、Adobe Reader捆毫、Firefox等
-
將CWD/agent/agent.py文件拷貝到客戶機(jī)里闪湾。我們需要這個(gè)文件能開機(jī)自啟動(dòng),做法如下:
1. 把a(bǔ)gent.py文件放到系統(tǒng)開機(jī)啟動(dòng)目錄中绩卤,在Win7中默認(rèn)的路徑是 2. C:\Users[username]\AppData\Roaming\MicroSoft\Windows\Start\Menu\Programs\Startup\途样。 3. 如果想要agent運(yùn)行時(shí)沒有GUI窗口,可以將后綴名改為pyw濒憋。 4. 在任務(wù)管理器中查看進(jìn)程何暇,或在命令行中執(zhí)行netstat -an查看是否有8000端口的監(jiān)聽,來確定agent是否在運(yùn)行.
關(guān)閉windows自動(dòng)更新凛驮,防火墻裆站,UAC。
不用設(shè)置開機(jī)自動(dòng)登陸,因?yàn)殚_始安裝虛擬機(jī)系統(tǒng)時(shí)候就沒設(shè)置開機(jī)密碼哈哈哈哈宏胯,反正是自己用羽嫡。
注:對(duì)于一些工具軟件的安裝是很有必要的
Cuckoo檢查網(wǎng)絡(luò)或檢測(cè)文件是否是惡意的主要過程就是跑實(shí)驗(yàn),他把一個(gè)文件丟進(jìn)虛擬機(jī)內(nèi)運(yùn)行肩袍,觀察文件在操作系統(tǒng)中運(yùn)行的具體流程和最后的結(jié)果杭棵,然后給出反饋。其中主要的一環(huán)氛赐,就是丟進(jìn)去的文件可以運(yùn)行魂爪。
但是!艰管!PDF文件檢測(cè)Cuckoo只認(rèn)Adobe Reader甫窟,所以不用安裝福昕閱讀器,沒用的蛙婴,找不到粗井,我沒測(cè)試doc,所以不清楚wps是否可行街图,估計(jì)是同樣的結(jié)果浇衬。我沒試過修改配置讓他適配WPS,福昕閱讀器餐济,因?yàn)閷?duì)博主沒必要耘擂。(其實(shí)就是懶)
另外,不要因?yàn)樘摂M機(jī)能上網(wǎng)就可以在虛擬機(jī)內(nèi)下載軟件絮姆,因?yàn)檎娴氖亲碓耍「菝酰∥沂窃赨buntu上下載以后蚁阳,拖拽傳進(jìn)虛擬機(jī)的。
快照設(shè)置
對(duì)于快照小白來說鸽照,快照真挺奇怪的螺捐,但是當(dāng)你了解他的原理以后,真香0恰定血!
博主對(duì)虛擬機(jī)接觸不是太多,甚至是沒有接觸過诞外,快照的概念理解算是我安裝Cuckoo的一個(gè)難點(diǎn)澜沟,因?yàn)榭艘欢螘r(shí)間,所以單獨(dú)拎出來寫峡谊,表示尊敬茫虽。
快照(snapshot) 铝条,就是把虛擬機(jī)的某一刻所有的狀態(tài)都記錄下來,以便當(dāng)虛擬機(jī)系統(tǒng)出現(xiàn)問題 或 需要恢復(fù)原來狀態(tài)時(shí)席噩,可以快速恢復(fù),不必再重新安裝系統(tǒng)贤壁、重新設(shè)置相關(guān)配置悼枢、重新安裝相關(guān)軟件,簡(jiǎn)單來說就是復(fù)活點(diǎn)脾拆。
那么馒索,什么時(shí)候進(jìn)行快照就是很神奇的問題了,自己設(shè)置自己的復(fù)活點(diǎn)哈哈哈有點(diǎn)意思名船。
博主是在所有軟件安裝完成绰上,進(jìn)行重啟以后,設(shè)置的快照渠驼,當(dāng)然你也可以不這樣蜈块,不過一定要運(yùn)行agent.py時(shí)進(jìn)行快照,就是設(shè)置的開機(jī)自動(dòng)運(yùn)行的文件迷扇。不然你會(huì)每次恢復(fù)快照百揭,都要自己手動(dòng)運(yùn)行一次,非常浪費(fèi)時(shí)間
-
當(dāng)你進(jìn)行快照時(shí)蜓席,你的虛擬機(jī)應(yīng)該已經(jīng)設(shè)置完畢并保持啟動(dòng)器一,此時(shí)的虛擬機(jī)是運(yùn)行的,agent.py也是運(yùn)行的厨内,然后在Ubuntu終端運(yùn)行如下代碼:
# 把 虛擬機(jī)cuckoo1 此時(shí)的狀態(tài)記錄到 快照Snapshots $ VBoxManage snapshot "cuckoo1" take "Snapshots" --pause # 快照創(chuàng)建完成后祈秕,關(guān)閉計(jì)算機(jī)并將其用剛剛創(chuàng)建的快照(Snapshots)還原 $ VBoxManage controlvm "cuckoo1" poweroff $ VBoxManage snapshot "cuckoo1" restorecurrent
-
如果你的快照出現(xiàn)了錯(cuò)誤,或者遺漏了一個(gè)軟件雏胃。你可以 靈活運(yùn)用 以下代碼進(jìn)行快照設(shè)置请毛,以及快照的快照設(shè)置,在虛擬機(jī)中瞭亮,你可以設(shè)置操作系統(tǒng)在哪個(gè)復(fù)活點(diǎn)復(fù)活获印,還可以改復(fù)活點(diǎn)的名字。
$ VBoxManage snapshot "vmname" take "snapname" [--description desc] [--live]#創(chuàng)建快照街州,有--live參數(shù),快照創(chuàng)建過程中不會(huì)停止虛擬機(jī). $ VBoxManage snapshot "vmname" delete "snapname" # 刪除快照 $ VBoxManage snapshot "vmname" restore "snapname" # 通過某一快照恢復(fù) $ VBoxManage snapshot "vmname" restorecurrent #恢復(fù)到當(dāng)前快照 $ VBoxManage snapshot "vmname" list [--details] #列出快照 $ VBoxManage snapshot "vmname" edit "snapname" [--name <newname>] [--description <newdesc>]# 編輯快照
Cuckoo配置
-
配置文件路徑
CWD/conf/
-
cuckoo.conf
[database] connection = mysql://username:passwd@localhost:port/[數(shù)據(jù)庫名稱] [cuckoo] //每次啟動(dòng)都要檢查更新很費(fèi)時(shí)間兼丰,可以選擇關(guān)閉 version_check = no machinery = virtualbox //有教程建議修改為no,這樣會(huì)導(dǎo)致啟動(dòng)Cuckoo Sandbox需要多一個(gè)步驟唆缴,但會(huì)讓主模塊與處理報(bào)告的模塊分離鳍征,大幅提升穩(wěn)定性,避免各種意外發(fā)生面徽。 //但是多出的步驟艳丛,本博主不會(huì) process_results = yes
-
auxillary.conf
[sniffer] enabled = yes tcpdump = /usr/sbin/tcpdump
-
virtualbox.conf
如果虛擬機(jī)軟件用的是vmware就是vmware.conf匣掸。
[virtualbox] mode = gui //gui是有界面,headless是無界面氮双,調(diào)試的時(shí)候可以選擇 path = /usr/bin/vboxmanage interface = vboxnet0 machines = cuckoo1 //你的虛擬機(jī)名稱碰酝,他默認(rèn)是cuckoo1,所以開始時(shí)創(chuàng)建虛擬機(jī)時(shí)我推薦為cuckoo controlports = 5000-5050 [cuckoo1] //需要與machines一致 label = cuckoo1 //你的虛擬機(jī)名稱戴差,需要與machines一致 platform = windows ip = 192.168.56.101 snapshot = Snapshots//創(chuàng)建的快照名稱
-
reporting.conf
[mongodb] enabled = yes //默認(rèn)是no host = 127.0.0.1 port = 27017 db = cuckoo //數(shù)據(jù)集名稱 store_memdump = yes paginate = 100
-
processing.conf
用于開啟/關(guān)閉某些分析模塊送爸。本文沒有做修改。
-
社區(qū)簽名庫
可以先看 有點(diǎn)問題
#虛擬環(huán)境下暖释,運(yùn)行以下命令下載Cuckoo提供的社區(qū)版行為簽名庫 (venv)$ cuckoo community #或先在瀏覽器下載再導(dǎo)入: (venv)$ cuckoo community --file cuckoo_master.tar.gz
有點(diǎn)問題
這個(gè)有點(diǎn)問題袭厂,有些是稀里糊涂解決的,所以博主只能把遇到的可能的問題 和 解決的步驟說一下球匕,并且有些問題沒寫纹磺,雖然是error,但是在界限內(nèi)并不會(huì)有影響亮曹,比如關(guān)于文件大小問題橄杨。
你下載下來的社區(qū)簽名實(shí)際上名稱為"community-master.tar.gz",我把他改成了"cuckoo-master.tar.gz"然后導(dǎo)入簽名。
可以在沒有設(shè)置簽名之前運(yùn)行
(venv)$ cuckoo 或 cuckoo –d
,只是會(huì)有個(gè)warning照卦,主要看是否會(huì)出錯(cuò)如果出現(xiàn)
********int(port)
錯(cuò)誤讥珍,莫的辦法,如果嘗試修改url.py
還會(huì)出現(xiàn)其他錯(cuò)誤窄瘟,真是老母豬戴胸罩衷佃,一套又一套。這個(gè)博主是真的繞不過去蹄葱,只能把./cuckoo
文件刪除氏义,再重新cuckoo init
再配置吧,簽名可能還需要重新導(dǎo)入一下图云。對(duì)于這個(gè)問題惯悠,這三個(gè)步驟可以無順序執(zhí)行,總有一個(gè)順序是對(duì)的竣况。-
tcpdump Permission denied
tcpdump默認(rèn)是enforce模式克婶,改成complain模式。
查看模式:
grep tcpdump /sys/kernel/security/apparmor/profiles
更改為complain:
aa-complain /usr/sbin/tcpdump
-
WARNING: Uploaded file length larger than upload_max_size, stopping upload.
修改cuckoo.conf upload_max_size = 314572800 或更大 這個(gè)值是從客戶機(jī)中傳回Cuckoo的報(bào)告丹泉、截圖等數(shù)據(jù)的大小情萤。
-
Error fetching configuration file! This is a serious error. if encountered, please notify the Cuckoo developers as this error prevents analysis.
確定關(guān)閉了UAC 確定以管理員身份運(yùn)行agent.py/agent.pyw 確定在agent運(yùn)行中進(jìn)行了快照 將客戶機(jī)休眠,不是關(guān)機(jī)(也許關(guān)機(jī)也是對(duì)的摹恨,但是我沒有成功) 如果不行筋岛,就關(guān)閉pythonw進(jìn)程重開,或重啟客戶機(jī)晒哄。
啟動(dòng)Cuckoo
當(dāng)你把一部分重要問題睁宰,或者所有問題解決時(shí)肪获,你就可以啟動(dòng)cuckoo啦!
-
啟動(dòng)虛擬環(huán)境
. venv/bin/activate
-
通常第一次啟動(dòng)Cuckoo柒傻,會(huì)先運(yùn)行如下命令孝赫,檢查是否出現(xiàn)錯(cuò)誤。
(venv)# cuckoo 或 cuckoo –d
-
啟動(dòng)web
(venv)# cuckoo web
然后就可以通過http://localhost:8000訪問了红符。
-
進(jìn)行文件提交
可以在命令行:
cuckoo submit [file_1] [file_2] [file_3] ...... [file_n]
青柄,也可以在web端提交文件。他們都會(huì)生成一個(gè)任務(wù)n(task #n)违孝,當(dāng)你運(yùn)行
cuckoo
或cuckoo -d
時(shí)會(huì)自動(dòng)執(zhí)行任務(wù),終端中會(huì)有l(wèi)og提示泳赋,每次任務(wù)結(jié)束都會(huì)恢復(fù)一次快照雌桑。 -
分析結(jié)果的儲(chǔ)存路徑為:
CWD/storage/analyses
總結(jié)
-
一定要看官方文檔N拔ΑE材狻!
官方文檔是最基礎(chǔ)函匕,最全面的教程千诬,網(wǎng)上其他教程應(yīng)該只是作為參考耍目,畢竟每個(gè)人的用途,環(huán)境都不一樣徐绑。
-
遇到問題一定要先看日志及推薦的解決方案邪驮。
不要直接復(fù)制粘貼就去網(wǎng)上搜Error了,Error都不讀一下傲茄,知道問題是什么才是解決問題的第一步毅访。
多做嘗試,不要沒弄好就重裝機(jī)器盘榨,會(huì)少很多樂趣喻粹,會(huì)少學(xué)很多的東西
英語不好就弄個(gè)google翻譯吧,=-=
完成目的草巡,而不是解決問題
參考
- cuckoo sandbox官方安裝文檔
- Cuckoo v2.0.6搭建過程
- Cuckoo Linux Subsystem: Some Love for Windows 10
- ubuntu18.04安裝python2.7和python3.6 pip 和 pip3 不同版本共存
- ubuntu 18.04 為 mysql 設(shè)置 root 初始密碼
- 解決 MySQL 的 ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- 搭建Linux工作環(huán)境之VirtualBox
注:
以上有部分直接copy網(wǎng)上教程守呜,如有侵權(quán)請(qǐng)?zhí)嵝眩?/strong>
博主太菜了,教程中如有錯(cuò)誤請(qǐng)指正山憨,或者對(duì)沒有解決的Error有解決方法查乒,或明白原理的,如果可以請(qǐng)發(fā)郵箱Koordinaten@163.com郁竟,或在底下評(píng)論