如何使用UnhookMe分析惡意軟件中未受監控的系統調用問題
關于UnhookMe
UnhookMe是一款通用的Windows API動態解析工具,可以幫助廣大研究人員分析和處理惡意軟件中未受監控的系統調用問題。
在這個侵入式反病毒產品和EDR產品盛行的年代,很多網絡攻擊者必須擁有強大的工具來繞過這些安全防御工具。而動態導入解析器能夠在運行中取消已用函數的鉤子,這也是增強攻擊者攻擊能力的又一方法。
而UnhookMe可以幫助廣大研究人員在編譯的可執行文件的PE頭中保持可視性。
工具下載
廣大研究人員可以使用下列命令將該項目源碼克隆至本地:
- git clone https://github.com/mgeeky/UnhookMe.git
工具使用
我們總共需要在自己的解決方案中引入五個C++源文件/頭文件。不過,你的主程序文件僅需要引入兩個必要的頭文件即可,文件描述如下:
- resolver.h - 頭文件中包含了UnhookingImportResolver的大部分實現;
- resolver.cpp - 包含了全局選項的源代碼;
- usings.h - 一個非常大的頭文件,包含了針對常見Windows API的using類型定義;
- PE.cpp - 自定義PE解析器源代碼文件;
- PE.h - 自定義PE解析器源頭文件;
必須的頭文件
你的程序僅需要下列兩個必要的頭文件:
- #include "usings.h"
- #include "resolver.h"
全局選項
下面給出的是解析器的全局配置選項,我們可以根據自己的需要來進行修改,這些參數全部定義在resolver.cpp文件中:
- globalQuietOption - 如果你不想獲取輸出,則設置為true;
- globalVerboseOption - 如果你想要獲取詳細的Verbose輸出,則設置為true;
- globalAntiSplicingOption - 解除函數鉤子;
- globalLogFilePath - 重定向輸出日志;
- bool globalQuietOption = false;
- bool globalVerboseOption = true;
- bool globalAntiSplicingOption = true;
- wchar_t globalLogFilePath[MAX_PATH] = L"";
工具使用樣例
項目地址
UnhookMe:【GitHub傳送門】