ubuntu 18.04 lts 安裝cuckoo沙箱踩坑記錄

夢想鬧鐘發表於2020-12-15

記錄下安裝沙盒cuckoo的過程,差不多花費了一個星期,這中間遇到了各種各樣的坑
首先是安裝系統,我是原來的系統是win10,安裝ubuntu版本是18.04 lts
Ubuntu 18.04官網下載地址:
https://releases.ubuntu.com/18.04/ubuntu-18.04.5-desktop-amd64.iso.torrent?_ga=2.21914808.2028854723.1605333772-1051256952.1605169591

下載好之後,在我的電腦裡進行劃分硬碟,可以參考下面帖子的劃分硬碟及用u盤燒錄等部分:
https://www.cnblogs.com/masbay/p/10745170.html

之後需要關閉safe boot,這個在win10的恢復選項裡點選高階啟動裡的重新啟動後可以找到主機板的管理選項,其中就有safe boot的選項。不同的電腦可能不一樣,如果有fast boot的選項那麼也要一起關閉

在這裡插入圖片描述

接下來是通過u盤安裝ubuntu,18.04版本我遇到的問題是
1.安裝後進入介面卡死-解決方法:在安裝的時候啟用線上更新,開手機熱點
2.亮度無法調節-解決方法:更新linux核心版本,但可能會和之後的安裝衝突
3.按網上教程劃分硬碟後,提示在指定區域無法安裝-解決辦法:劃分磁碟後,安裝程式會自動檢測到存在windows的boot manager,然後選則系統的自帶安裝即可

注意!!!裝好後先不要換阿里的源,也不要嘗試獲取root許可權,我之後安裝經常出現的問題就是突然wifi模組部件失效,在root許可權下也會出現提示許可權不夠等等。網上提示是linux核心版本太低導致衝突的原因。

接下來先是安裝python依賴部分
先apt-get install apparmor-utils
這個包需要先安裝,因為它要求的python版本是3.6以下,因此需要先安裝防止衝突。

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
sudo apt-get install mongodb
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo apt-get install python-m2crypto
sudo apt install volatility

如果安裝的包和之前衝突了,可以用aptitude這個包管理器來解決

sudo apt-get install aptitude
aptitude install <有衝突的包>

接下來安裝mysql
注意:在最新版的mysql安裝過程中,不會再提示手動設定root使用者的密碼,則需要用命令設定root初始密碼:
sudo mysql_secure_installation
然後按照提示一步一步來即可。
另外, root連線需要sudo命令,否則會出現以下結果

$ 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

安裝Cuckoo
Cuckoo推薦在虛擬環境中安裝。virtualenv是一個建立隔絕的Python環境的工具,在之前的步驟中已經安裝上了。

$ virtualenv venv

#以後啟動也需要在通過venv啟動

$  .  venv/bin/activate  (注意是 . 後面有空格)
(venv)$ pip install -U pip setuptools
(venv)$ pip install -U cuckoo

安裝tcpdump

$ sudo apt-get install tcpdump apparmor-utils
$ sudo aa-disable /usr/sbin/tcpdump
$ sudo groupadd pcap
$ sudo usermod -a -G pcap simon                
#simon = [ubuntu username]

#simon是當前的使用者名稱,賬戶叫什麼就換什麼
#這一步要確定自己當前使用者不是root,如果是root要通過su命令切回來,不然cuckoo會提示tcp許可權不夠

$ sudo chgrp pcap /usr/sbin/tcpdump
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump   啟用root賬戶

#(如果系統裡沒有setcap命令,則需要安裝libpcap包;

$ sudo apt-get install libcap2-bin)

#可以使用以下命令驗證上一個命令的結果:

$ getcap /usr/sbin/tcpdump

之後下載file.master.tar.gz進行簽名操作(可以到官方社群去下載,要翻牆,我下載好後傳了個百度雲)
連結:https://pan.baidu.com/s/1KpOPK96D_H67wi330THCYw
提取碼:l05s

下載到ubuntu後,在之前的venv環境裡用

cuckoo community --file master.tar.gz

來載入簽名

接下來是安裝virtualbox5.2
只能是5.2,因為高版本不支援cuckoo。我嘗試了直接從官網下deb檔案進行安裝,但是會報錯,通過apt-get方法最後成功安裝
安裝前需要確認電腦支援虛擬化,關閉了safeboot等

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'

sudo apt update
sudo apt-get install virtualbox-5.2
安裝後大概率提示error,會提示缺少一個5.3.0-xxx版本的header,這時候根據報錯資訊補上

sudo apt-get -y install gcc make linux-headers-<提示缺少的版本>  dkms
之後重新安裝即可
sudo apt-get remove virtualbox-5.2
sudo apt-get install virtualbox-5.2

下載win7映象作為靶機。注意使用的映象不能大於4G,大於4G會報錯
我用的win7映象:
連結:https://pan.baidu.com/s/1jCo-KG4cHIPaIkhMgVtPoA
提取碼:bw1b
下載好後就是安裝win7虛擬機器,輸入啟用碼,設定使用者,強烈建議虛擬機器名字設為cuckoo1

之後需要給虛擬機器增加下配置,不然速度會很慢
參考 https://blog.csdn.net/ass121/article/details/82561541
可以給虛擬機器增加視訊記憶體記憶體,處理器配置等等,只要不那麼卡就行

接下來開啟win7虛擬機器,
以管理員身份執行cmd,輸入net user administrator /active:yes
啟用administrator,然後登出,以administrator這個使用者名稱重新登入
(不這樣做的話之後會cuckoo會提示init failed)

之後需要在win7裡關閉防火牆,並開啟字尾名顯示
我的電腦->資料夾選項->常規選項,在顯示所有資料夾裡打勾,然後點選檢視,在高階設定中找到隱藏已知檔案型別的副檔名並去除勾,點選確定即可。

之後安裝和本機互動的虛擬工具
選擇Devices目錄裡的Insert Guest Additions CD Image這個選項,然後進虛擬機器進行檢視

在這裡插入圖片描述
雙擊進行安裝即可,並在設定裡把貼上和檔案拖動都設定為雙向
在這裡插入圖片描述
進行網路配置:
在VirtualBox中全域性工具->Host Network Manager中新建Host-Only虛擬網路卡,預設是vboxnet0,IP為192.168.56.1(預設的地址),關閉DHCP服務。在配好host-only網路卡後,需要再配一塊nat模式的網路卡,地址設為192.168.57.1,網路卡為vboxnet1這樣虛擬機器才可以上網

在這裡插入圖片描述
在這裡插入圖片描述

之後在網路裡把win7的ip設為192.168.56.101(101是cuckoo預設的),配置閘道器和掩碼
在這裡插入圖片描述
弄好後確定虛擬機器和ubuntu能互相ping通,且虛擬機器能正常上網即可
之後用虛擬機器下載python2.7執行並安裝,地址:https://www.cr173.com/soft/22163.html
在配置的時候注意到customize這一步要把
最後的自動配置路徑和特性全點上
在這裡插入圖片描述
之後繼續配置win 7:
安裝python2.7環境後
將Host機中~/.cuckoo/agent/agent.py檔案拷貝到客戶機裡的系統開機啟動目錄中,顯示隱藏資料夾

在Win7預設路徑是C:\Users[username]\AppData\Roaming\MicroSoft\Windows\Start Menu\Programs\Startup
將字尾名改為pyw(使agent執行時沒有GUI視窗)
重啟win7,確保agent.pyw執行(在工作管理員中檢視程式,或在命令列中執行netstat -an檢視是否有8000埠的監聽)
一切正常,關主機和虛擬機器的防火牆後再拍攝快照

這裡記錄下virtualbox恢復快照的方法,virtualbox很貼心的提供了gui的拍攝快照介面,但是恢復快照需要通過命令列。。。
vboxmanage snapshot <虛擬機器名稱> list --details 來看能用的快照
vboxmanage snapshot <虛擬機器名稱> restore <快照名稱>

最後配置
先用ifconfig 等來看網路卡名稱
將流量從虛擬機器轉發到主機
Ens160要換成自己網路卡的名稱

iptables -t nat -A POSTROUTING -o ens160  -s 192.168.56.0/24 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
iptables -A FORWARD -j LOG
iptables -nL -v
#192.168.56.0這個網段是之前hostonly網路卡的網段
#開啟核心轉發
$ echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
$ sudo sysctl -w net.ipv4.ip_forward=1
# 安裝iptables-president,使iptables規則持久化,否則重啟後會丟失規則
**#這一步最後在試用cuckoo成功無報錯後再做!!!!ubuntu的iptables設定後再刪除更新很麻煩,很可能會讓網路部分崩掉**
apt-get install iptables-persistent

修改cuckoo配置檔案

$ gedit  ~/.cuckoo/conf/cuckoo.conf 

照著下面改

version_check = no
[resultserver]
upload_max_size = 314572800


gedit  ~/.cuckoo/conf/virtualbox.conf

[virtualbox]
mode = gui
machines = cuckoo1
[cuckoo1]  
#注意前兩個cuckoo1是類似於標籤,最後一個cuckoo1才是虛擬機器實際的名字,為防止麻
#煩最好統一成cuckoo1,cuckoo2這樣的
label = cuckoo1
platform = windows
ip = 192.168.56.101
snapshot = snapshot1
gedit ~/.cuckoo/conf/reporting.conf 


[mongodb]
enabled = yes
host = 127.0.0.1
port = 27017
db = cuckoo
store_memdump = yes
paginate = 100

之後可以提交檔案進沙箱裡檢視結果
首先開啟mongodb服務

$sudo systemctl enable mongodb
$systemctl start mongodb 
提交樣本:
$ cuckoo submit /tmp/sample1.exe (你要提交的檔案)
Success: File "/tmp/sample1.exe" added as task with ID #1
$ cuckoo
#執行cuckoo分析樣本
分析結束後結果會儲存在.cuckoo的storage資料夾下

其他報錯解決
https://blog.csdn.net/niatruc/article/details/108576818

相關文章