关于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:Datalogs.pml中。所有存在漏洞的DLL都将存储在C:DataVulnerableDLLFiles.csv,所有的代理DLL都存储在C:DataDLLExports中:
--procmon C:SysInternalsProcmon.exe --pml C:Datalogs.pml --csv C:DataVulnerableDLLFiles.csv --exports C:DataDLLExports --verbose
(向右滑动,查看更多)
仅收集与Teams.exe和OneDrive.exe相关的事件:
--procmon C:SysInternalsProcmon.exe --pml C:Datalogs.pml --csv C:DataVulnerableDLLFiles.csv --exports C:DataDLLExports --verbose --exe "Teams.exe,OneDrive.exe"
(向右滑动,查看更多)
仅收集与Teams.exe和OneDrive.exe相关的事件,并使用位于C:DatamyProxySkeleton.cpp中的自定义代理DLL模版:
--procmon C:SysInternalsProcmon.exe --pml C:Datalogs.pml --csv C:DataVulnerableDLLFiles.csv --exports C:DataDLLExports --verbose --exe "Teams.exe,OneDrive.exe" --proxy-dll-template C:DatamyProxySkeleton.cpp
(向右滑动,查看更多)
仅收集与Teams.exe和OneDrive.exe相关的事件,但不生成代理DLL:
--procmon C:SysInternalsProcmon.exe --pml C:Datalogs.pml --csv C:DataVulnerableDLLFiles.csv --verbose --exe "Teams.exe,OneDrive.exe"
(向右滑动,查看更多)
解析一个现有的PML事件日志输出,将结果存储到CSV文件,并生成代理DLL:
--existing-log --pml C:MyDataSomeBackup.pml --csv C:DataVulnerableDLLFiles.csv --exports C:DataDLLExports
(向右滑动,查看更多)
以监控模式运行,并尝试检测任何代理DLL调用的应用程序:
--detect
针对所有已识别的导出函数创建代理:
--generate-proxy --ghidra C:ghidrasupportanalyzeHeadless.bat --dll C:WindowsSystem32userenv.dll --output-dir C:Projectsspartacus-wtsapi32 --verbose
(向右滑动,查看更多)
针对指定导出函数创建一个代理:
--generate-proxy --ghidra C:ghidrasupportanalyzeHeadless.bat --dll C:WindowsSystem32userenv.dll --output-dir C:Projectsspartacus-wtsapi32 --verbose --only-proxy "ExpandEnvironmentStringsForUserW"
(向右滑动,查看更多)
工具运行截图
Spartacus执行
CSV输出
输出导出
导出DLL函数
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
Spartacus:
https://github.com/Accenture/Spartacus
https://github.com/eronnen/procmon-parser/
https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain
https://github.com/NationalSecurityAgency/ghidra
原文始发于微信公众号(FreeBuf):Spartacus:一款功能强大的DLL劫持发现工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论