Shinigami 是一種實驗性工具,旨在檢測和解壓透過進程空洞或通用加殼程式註入的惡意軟體植入物。
該工具透過掛鉤與 Process Hollowing 相關的 NT 函數並使用頁面保護位標記新的可執行記憶體頁面來運行。這項技術允許 Shinigami 檢測間接流變化,這些變化通常是由 shellcode 或解壓縮程式碼引起的,這些變化通常表明存在惡意軟體。 Shinigami 在掛起狀態下建立目標可執行文件,並注入名為「Ichigo」的 DLL 函式庫。該庫自動掛鉤每個必要的函數來檢測和提取植入物。一旦工件被完全提取,該工具將終止該進程。
死神的有效性可能會根據其針對的特定惡意軟體而有所不同。然而,它對於任何惡意軟體分析工具包來說都是一個有價值的補充,並且在檢測和分析使用進程空洞或通用加殼程式例程的惡意軟體時可能會很有用。
重要提示:這是一個動態解包工具,不應在您的個人電腦或靜態分析實驗室中運行
Shinigami 提取使用進程空洞注入的植入物的核心方法涉及掛鉤兩個 NT 函數:NtResumeThread 和 NtWriteVirtualMemory。它的工作原理如下:
NtResumeThread
鉤子
NtWriteVirtualMemory
體鉤子
--stop-at-write
時才使用此選項。 Shinigami 的通用解包器模組使用 PAGE_GUARD 位元標記新分配的記憶體區域,如果任何現有記憶體區域的保護被可執行檔替換,它也會套用該位元。透過使用保護頁,它可以追蹤哪個記憶體區域將用於分配一些 shellcode 或 PE 映像。
對於偵測到的每個 shellcode,Shinigami 都會將原始 shellcode 本身保存在磁碟上。它還掃描該記憶體區域以查找任何 PE 檔案並保存它們。 Shinigami 將每個不同的 shellcode 執行視為一個新階段,因此到最後,您的工作目錄中將包含名為filename_shellcode_STAGENUM.bin or .exe
檔案。
該工具有幾個選項:
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name
Positional arguments:
program_name Name of the program to execute
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-o, --output Directory to dump artefacts
--stop-at-write Unhollow: Stop the execution when the PE file is being to be written
--verbose Display a verbose output
-p, --only-executables Only extract PE artefacts
-e, --exported Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)
一些重要的選項是:
-o, --output :指定轉儲擷取的工件的目錄。預設情況下,提取的工件將儲存到目前工作目錄中名為「輸出」的目錄中。您可以透過將路徑作為參數傳遞來指定不同的目錄。
--stop-at-write :此參數在空進程解包期間使用。當Shinigami偵測到PE檔案正在寫入被挖空的進程時,它會停止執行並保存提取的PE檔案。如果您想避免執行整個空心程序而只需要提取解壓縮的程式碼,則此選項可能很有用。
--verbose :顯示詳細輸出。這對於調試或理解 Shinigami 的內部工作原理很有用。
針對 Dridex 進行測試 |
提取完成後,該進程將被終止,您將擁有(我希望如此)提取的PE:
植入物被傾倒 |
檢測到的植入物將按照檢測方法部分中所述的格式進行轉儲
解壓縮此處描述的隨機加載程序 |
在上面的範例中,Shinigami 會自動偵測通用載入程式的行為,並擷取其中所有已執行的 shellcode 和影像,而不需要任何特定開關來啟用或停用解包程式。這是可能的,因為 Shinigami 使用 Gancho 庫提供的共享鉤子與 unhollow 模組共享一些功能。
解壓縮 Emotet DLL |
Shinigami 還具有 DLL 支援以及使用分離的 DOS 標頭重建注入的二進位檔案的能力。值得注意的是,Emotet 等惡意軟體樣本使用此技術來逃避記憶體 PE 掃描程式。 Shinigami 偵測到此類遺失的部分(DOS 標頭)並採用啟發式方法來重建它們。
在發布頁面抓住你的口味。
如果您能幫助這個項目,那就太棒了,所以如果您願意,這裡是依賴項和步驟
請針對您想要進行的任何變更提出問題或拉取請求。
這個很酷的吉祥物圖像的靈感來自《死神》,由 Dall-E 生成。