sRDI:一款通過Shellcode實現反射型DLL注入的強大工具
今天給大家介紹的是一款名叫sRDI的注入工具,它可以基於Shellcode實現反射型DLL注入,並能夠將DLL轉換成獨立的Shellcode。
工具介紹
sRDI的所有功能基於以下兩個組件:
1.一個C語言項目,可將PE Loader編譯為Shellcode;
2.轉換代碼負責將DLL、RDI和用戶數據進行綁定。
該項目由以下元素組成:
- ShellcodeRDI:編譯Shellcode;-NativeLoader:在必要情況下將DLL轉換為Shellcode,並將其注入至內存;-DotNetLoader:NativeLoader 的C#實現;-PythonConvertToShellcode.py:將DLL轉換為Shellcode;-PythonEncodeBlobs.py:對已編譯的sRDI進行編碼,並實現動態嵌入;-PowerShellConvertTo-Shellcode.ps1:將DLL轉換為Shellcode;-FunctionTest:導入sRDI的C函數,用於調試測試;-TestDLL:樣本Dll,包含兩個導出函數,可用於後續的載入和調用;
使用樣例
在使用該工具之前,我建議大家先對反射型DLL注入有一個基本了解,可以先閱讀一下【這篇文章】:
https://disman.tl/2015/01/30/an-improved-reflective-dll-injection-technique.html
使用Python將DLL轉換為Shellcode:
from ShellcodeRDI import *dll =open("TestDLL_x86.dll", "rb").read()shellcode= ConvertToShellcode(dll)
使用C#載入器將DLL載入進內存:
DotNetLoader.exe TestDLL_x64.dll
使用Python腳本轉換DLL,並用NativeLoader完成載入:
python ConvertToShellcode.py TestDLL_x64.dllNativeLoader.exe TestDLL_x64.bin
使用PowerShell轉換DLL,並用Invoke-Shellcode完成載入:
Import-Module.Invoke-Shellcode.ps1Import-Module.ConvertTo-Shellcode.ps1Invoke-Shellcode-Shellcode (ConvertTo-Shellcode -File TestDLL_x64.dll)
工具隱蔽性
目前社區有多種方法可檢測內存注入,載入功能實現了兩種增強隱蔽性的方法:
1.適當的許可權:在對內存空間進行定位時,工具會根據內存區域的特徵來設置內存許可權;
2.PEHeader清理(可選):目標DLL的DOS Header和DOS Stub會在載入完成之後被清空為NULL位元組,這一步可通過C/C#代碼,或命令行參數(Python或PowerShell)來實現。
工具構建
本項目採用Visual Studio 2015(V140)和Windows SDK 8.1構建,Python腳本基於Python 3開發,Python和Powershell腳本位於:
PythonConvertToShellcode.pyPowerShellConvertTo-Shellcode.ps1
項目構建完成之後,可在下列位置找到其他組件代碼:
binNativeLoader.exebinDotNetLoader.exebinTestDLL_.dllbinShellcodeRDI_.bin
使用到的其他項目
本項目用於將C代碼編譯為Shellcode時所採用的項目框架為Mathew Graeber的PIC_BindShell:
http://www.exploit-monday.com/2013/08/writing-optimized-windows-shellcode-in-c.html
Python腳本中的代碼解析模塊採用的是PEFile項目:
https://github.com/erocarrera/pefile
*參考來源:sRDI,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM
※黑產拿「偽基站」強勢轉賬,我是手機我現在慌得一批
※BlackHat 2018 | 關注三個熱點領域:加密數字貨幣、醫療設備和機器學習
TAG:FreeBuf |