1. 程式人生 > 其它 >Cuckoo沙箱遠端除錯環境搭建

Cuckoo沙箱遠端除錯環境搭建

環境介紹

工具: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,
        }
    ]
}