freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Spartacus:一款功能强大的DLL劫持发现工具
2023-06-06 15:29:23
所属地 广西


关于Spartacus

Spartacus是一款功能强大的DLL劫持发现工具,当一个易受DLL劫持攻击的进程请求加载DLL时,就有可能发生DLL劫持攻击。在该工具的帮助下,广大安全研究人员可以轻松识别和发现DLL劫持攻击的发生。

功能介绍

1、在本地解析ProcMon PML文件,PMC配置和PML日志解析器通过将procmon-parser部分功能移植到C#来实现的;

2、Spartacus将为所有已识别的缺失DLL创建代理DLL。比如说,一个应用程序因为version.dll导致易受DLL劫持攻击的话,Spartacus将会创建一个version.dll.cpp文件,其中包含所有的export导出,我们可以插入自己的Payload或执行技术来对其进行编译;

3、支持处理大型PML文件,并将所有感兴趣的DLL存储在输出的CSV文件中。本地基准测试在45秒内处理了一个包含800万个事件的3GB文件;

4、[防御]支持监控模式,试图识别正在运行的应用程序所代理的调用行为;

5、支持为导出函数创建代理,以比main使用DllMain,该技术需要使用到Ghidra

工具执行流程

1、基于传递的参数创建一个ProcMon(PMC)配置文件,过滤器设置如下:操作为CreateFile;路径以.dll结束;进程名称不能是procmon.exe或procmon64.exe;启用Drop Filtered Events以确保最小化的PML输出大小;禁用Auto Scroll;

2、执行进程监控程序;

3、停止执行,直到用户按下ENTER键;

4、终止进程监控程序;

5、解析输出事件日志(PML)文件:使用NAMEW_NOT_FOUNDS和PATH_NOT_FOUND Dll创建一个CSV文件;与之前的DLL文件进行对比,并尝试识别实际加载的DLL文件;针对每一个找到的DLL,使用其所有的导出函数生成一个代理DLL;

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/Accenture/Spartacus.git

工具使用

收集所有的事件,并将其存储到C:\Data\logs.pml中。所有存在漏洞的DLL都将存储在C:\Data\VulnerableDLLFiles.csv,所有的代理DLL都存储在C:\Data\DLLExports中:

--procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --exports C:\Data\DLLExports --verbose

仅收集与Teams.exe和OneDrive.exe相关的事件:

--procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --exports C:\Data\DLLExports --verbose --exe "Teams.exe,OneDrive.exe"

仅收集与Teams.exe和OneDrive.exe相关的事件,并使用位于C:\Data\myProxySkeleton.cpp中的自定义代理DLL模版:

--procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --exports C:\Data\DLLExports --verbose --exe "Teams.exe,OneDrive.exe" --proxy-dll-template C:\Data\myProxySkeleton.cpp

仅收集与Teams.exe和OneDrive.exe相关的事件,但不生成代理DLL:

--procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --verbose --exe "Teams.exe,OneDrive.exe"

解析一个现有的PML事件日志输出,将结果存储到CSV文件,并生成代理DLL:

--existing-log --pml C:\MyData\SomeBackup.pml --csv C:\Data\VulnerableDLLFiles.csv --exports C:\Data\DLLExports

以监控模式运行,并尝试检测任何代理DLL调用的应用程序:

--detect

针对所有已识别的导出函数创建代理:

--generate-proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --output-dir C:\Projects\spartacus-wtsapi32 --verbose

针对指定导出函数创建一个代理:

--generate-proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --output-dir C:\Projects\spartacus-wtsapi32 --verbose --only-proxy "ExpandEnvironmentStringsForUserW"

工具运行截图

Spartacus执行

CSV输出

输出导出

导出DLL函数

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

Spartacus:【GitHub传送门

参考资料

https://github.com/eronnen/procmon-parser/

https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain

https://github.com/NationalSecurityAgency/ghidra

# 系统安全 # DLL劫持 # 恶意DLL # 安全检测 # DLL安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录