Accenture 制作了一个名为Spartacus的工具 ,可以在 Windows 上发现 DLL 劫持机会。我们以 Spartacus 为起点,创建了 Crassus 来扩展 Windows 提权查找功能,而不仅仅是查找丢失的文件。特权进程的文件和目录所使用的ACL可以找到不仅仅是 寻找丢失的文件 来达到目的。
本地解析 ProcMon PML 文件。日志 (PML) 解析器已通过将部分功能从 https://github.com/eronnen/procmon-parser/移植到 C# 来实现。您可以在此处找到格式规范 。
Crassus 将为所有已识别的缺失 DLL 的代理 DLL 创建源代码。例如,如果应用程序容易受到version.dll的 DLL 劫持,Crassus 将为您创建version.cpp和version.def 文件,其中包含所有导出。默认情况下,代理 DLL 将启动calc.exe。包含构建脚本以在 Visual Studio 或 MinGW 上构建 DLL。
对于其他感兴趣的事件,例如创建进程或加载库,研究了非特权用户修改文件或文件路径的任何部分的能力。
能够处理大型 PML 文件并将所有感兴趣的事件存储在输出 CSV 文件中。
1.在 Process Monitor中,选择Enable Boot Logging 选项。
2.重启
3.一旦您登录并且 Windows 稳定下来,还可以选择运行 可能配置为以特权运行的计划任务。
4.再次运行进程监视器。
5.出现提示时,保存引导日志。
6.使用Ctrl-R重置默认的 Process Monitor 过滤器。
7.例如,将此日志文件保存到boot.PML中。重新保存日志文件的原因有两个:
Process Monitor 的旧版本不会将引导日志保存为单个文件。
默认情况下,引导日志是未经过滤的,其中可能包含额外的噪音,例如 Process Monitor 本身启动时的本地用户 DLL 劫持。
下载地址:https://github.com/vu-ls/Crassus#getting-crassusexe
如VU#114757中所述,较旧的 Acronis 软件包含多个权限升级漏洞。
放置openssl.cnf
在非特权用户可创建的位置。
目录中的 ACL 不合适C:\ProgramData\Acronis
。
Crassus 会自动发现这两个问题。
通过将编译后的curl.dll
文件放入C:\ProgramData\Acronis\Agent\var\atp-downloader\
目录并使用新的 Process Monitor 启动日志重新启动,我们可以看到运行 calc.exe 的有效载荷以 SYSTEM 权限运行。
openssl.cnf
易受攻击的 Acronis 软件试图从两个不同的位置加载。我们将把模板openssl.cnf
文件放在 中c:\jenkins_agent\workspace\tp-openssl-win-vs2013\17\product\out\standard\vs_2013_release\openssl\ssl
,将 32 位calc.dll
负载放在c:\tmp
.
如VU#240785中所述,由于安装目录的 ACL 较弱,较旧的 Atlassian Bitbucket 软件容易受到权限升级的影响。对于安装到外部位置C:\Program Files\
或其他受 ACL 限制的位置的任何 Windows 软件,由软件安装程序在目标目录上明确设置 ACL。
Crassus 找到了许多方法来使用此软件实现权限提升,包括:
将丢失的 DLL 放置在用户可写的位置。
将丢失的 EXE 放置在用户可写的位置。
重命名特权 EXE 的目录以允许用户放置同名的 EXE。
在 Crassus 输出中,我们可以看到它c:\atlassian\bitbucket\7.9.1\elasticsearch\bin\elasticsearch-service-x64.exe
具有特权,但由于它正在运行,我们不能简单地替换它。但是,我们可以使用另一种技巧来劫持它。我们可以简单地重命名它所在的目录,创建一个同名的新目录,并将我们的有效载荷以相同的名称放置在那里。
一旦我们使用进程监视器启动日志重新启动,我们可以看到我们植入的elasticsearch-service-x64.exe
文件正在运行,而不是真正的文件,基于 Windows 计算器图标。
如VU#287178中所述,旧版本的 McAfee 软件容易受到通过openssl.cnf
. 我们来看一下:
要查看为什么在这个引导日志中有两个不同的引用openssl.cnf
,我们可以参考该results.csv
文件:
openssl.cnf
请注意,从路径加载文件D:\
需要进一步手动调查,因为加载此类路径的可行性取决于所讨论的平台以及对系统的可用访问权限。可以创建一个提供openssl.cnf
文件的光盘,该文件也引用解析为光驱的路径。
除非将 SQL Server 2022 安装到非标准位置,否则SQL Server 2022 显然不会因为弱 ACL 而容易受到权限提升的影响。如果将其安装到 之外的位置C:\Program Files
,Crassus 将发现几种提权的可能性。如果将大多数包含特权组件的 Windows 应用程序安装到本身不具有安全 ACL 的目录中,它们似乎可以通过这种方式进行利用。
项目地址:https://github.com/vu-ls/Crassus#getting-crassusexe