Cuckoo沙箱遠端除錯環境搭建
阿新 • • 發佈:2022-04-21
環境介紹
工具:vscode
主機(vscode宿主機):win10 64位
虛擬機器:centos7 64位 cli版
cuckoo原始碼:/usr/lib/python2.7/site-packages/cuckoo/
步驟
1. 確保ssh連線可用
用cmd命令列進行測試,成功如下圖;如果失敗,則需要下載和配置ssh環境,這裡不多介紹
2. 用vscode遠端連線
在vscode開啟遠端資源管理器,輸入ssh指令連線到虛擬機器。如圖
連線成功後,左下角會顯示遠端主機IP。然後通過左上角的資源管理器(Ctrl+Shift+E),開啟cuckoo原始碼所在的資料夾
3. 配置python環境
點選選單欄執行 ->啟動除錯(或直接F5)選擇環境,可以看到沒有合適的除錯環境,->選擇安裝擴充套件,搜尋安裝Python相關外掛
外掛安裝完後,再次按F5配置環境,選擇Python-遠端連線(remote-attach)。注意
:這裡可能需要安裝Remote-SSH外掛
輸入虛擬機器ip和埠後(埠號預設5678),會自動生成launch.json
檔案,新增兩個欄位後儲存
"justMyCode":false, // 這個選項預設為true,表示只能夠在自己新增的程式碼下斷點,改成false才能夠除錯原始碼
"logToFile":true, // 這個選項將斷點等資訊儲存到檔案
4. 虛擬機器中安裝外掛
在虛擬機器用pip安裝ptvsd外掛
pip install ptvsd
5. 修改原始碼
在原始碼主函式的開頭位置新增如下程式碼並儲存
import socket
import ptvsd
try:
ptvsd.enable_attach(address=("192.168.18.101",5678))
ptvsd.wait_for_attach()
except socket.error:
pass
新增異常處理是因為,cuckoo沙箱每次執行cuckoo submit
提交樣本時,會再次執行整個程式。這就會導致上述程式碼被多次執行,enable_attach 函式建立遠端除錯連線是通過建立socket套接字,並且地址不能複用,所以再次執行時會連線失敗,使程式異常中斷。
問題
https://github.com/microsoft/debugpy/issues/318
如果斷點無法斷下,出現提示 Breakpoint in file that does not exist ,嘗試將launch.json
配置檔案中的 pathMappings 欄位註釋掉,示例如下
{
// 使用 IntelliSense 瞭解相關屬性。
// 懸停以檢視現有屬性的描述。
// 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: 遠端連線",
"type": "python",
"request": "attach",
"connect": {
"host": "192.168.18.231",
"port": 5678
},
// "pathMappings": [
// {
// "localRoot": "${workspaceFolder}",
// "remoteRoot": "."
// }
// ],
"justMyCode": false,
}
]
}