【cuckoo】Ubuntu安裝布谷鳥沙箱docker鏡像

一、安裝過程
1、下載cuckoo2.0 docker鏡像
2、下載mongo5.0鏡像,由于cuckoo2.0的docker鏡像已經(jīng)不維護(hù)了,github倉代碼顯示是在2017年,如果下載最新的mongo6.0,會導(dǎo)致后續(xù)web界面服務(wù)起不起來。web界面的數(shù)據(jù)是從mongodb數(shù)據(jù)庫中讀取的,最新的mongodb語法已經(jīng)不適應(yīng)docker-cuckoo2.0了。
3、下載elasticsearch:5.6鏡像,web界面服務(wù)會用到。
4、下載postgres:14鏡像,cuckoo的API服務(wù)會使用到。
5、使用mango docker鏡像起一個容器。
6、使用elasticsearch:5.6鏡像起一個容器。
7、使用postgres:14鏡像起一個容器。
8、啟動cuckoo的api服務(wù),方便代碼中調(diào)用沙箱接口。
--link postgres表明api這個服務(wù)依賴容器postgres.
-p 8000:1337 表示把容器中api服務(wù)的端口1337映射到本地的8000端口,這樣我們在瀏覽器里或代碼中對http://{ip}:8000發(fā)送請求就可以查看api返回值了。
如果本地的8000端口被其他應(yīng)用程序占用了,可以更換其他空閑端口。
9、啟動cuckoo的web服務(wù),方便在瀏覽器中直接觀察沙箱中運行了哪些任務(wù),也可以直接上傳文件或者url進(jìn)行惡意行為檢測。
--link mongo --link elasticsearch表明web服務(wù)依賴mongo和elasticsearch兩個容器。
-p 80:31337表示將容器中的web服務(wù)端口31337映射到本地80端口。我們在瀏覽器里輸入http://{ip}:80直接就可以進(jìn)行界面操作了。
如果本地80端口被其他應(yīng)用程序占用了,可以更換其他空閑端口。
10、鏡像下載之后如下:

11、容器啟動之后如下:

12、檢測web頁面是否正常
瀏覽器中輸入:http://127.0.0.1:80或者h(yuǎn)ttp://{本機(jī)IP}:80就可以訪問,效果如下圖所示:

13、檢測api服務(wù)是否正常
瀏覽器中輸入:http://127.0.0.1:8000/cuckoo/status,如果API服務(wù)正常,效果如下圖所示,會把系統(tǒng)信息打印出來。cuckoo其他api自行調(diào)測。

二、安裝過程中遇到的問題
1、elasticsearch容器啟動失敗

問題定位:
查看容器啟動日志:
報錯情況如下:

根據(jù)報錯描述可知:虛擬機(jī)最大內(nèi)存區(qū)域設(shè)置的是65530,太小了,期望最小存儲為262144。把虛擬機(jī)最大內(nèi)存區(qū)域設(shè)置到262144就可以了。這一步是在宿主機(jī)上做的操作。


重新啟動elasticsearch容器:

三、參考資料
docker倉庫cuckoo鏡像:https://hub.docker.com/r/blacktop/cuckoo#installation
cuckoo官方文檔:https://docs.cuckoosandbox.org/en/latest/faq/#can-i-analyze-urls-with-cuckoo
cuckoo官網(wǎng)主頁:https://cuckoosandbox.org/about
git倉庫docker-cuckoo: https://github.com/blacktop/docker-cuckoo
四、遺留問題
1. 盡管經(jīng)過上述步驟,可以提交任務(wù),但是任務(wù)一直處于pending狀態(tài),這個還需要看文檔學(xué)習(xí)。
