本仓库是我对原始 'creddump' 程序的修改,原始程序位于: https://code.google.com/p/creddump/ 我没有编写原始程序。 我整合了从不同论坛和用户建议中看到的许多补丁和修复,并修改了用法,使其更清晰。 我遵循了以下链接中的补丁和修复:
享受吧! Ronnie Flathers (@ropnop)
挂载 Windows 7/Vista 分区:
# mkdir /mnt/win
# ntfs-3g /dev/sda1 /mnt/win
在 SYSTEM 和 SECURITY 配置单元上运行 cachedump.py 以提取缓存的域凭据:
# ./cachedump.py
usage: ./cachedump.py <system hive> <security hive> <Vista/7>
Example (Windows Vista/7):
./cachedump.py /path/to/System32/config/SYSTEM /path/to/System32/config/SECURITY true
Example (Windows XP):
./cachedump.py /path/to/System32/SYSTEM /path/to/System32/config/SECURITY false
# ./cachedump.py /mnt/win/Windows/System32/config/SYSTEM /mnt/win/Windows/System32/config/SECURITY true |tee hashes
nharpsis:6b29dfa157face3f3d8db489aec5cc12:acme:acme.local
god:25bd785b8ff1b7fa3a9b9e069a5e7de7:acme:acme.local
如果你想破解这些哈希并有一个好的字典,可以使用 John。哈希格式是 'mscash2':
# john --format=mscash2 --wordlist=/usr/share/wordlists/rockyou.txt hashes
Loaded 2 password hashes with 2 different salts (M$ Cache Hash 2 (DCC2) PBKDF2-HMAC-SHA-1 [128/128 SSE2 intrinsics 8x])
g0d (god)
Welcome1! (nharpsis)
现在我们有两个域用户的密码。注意:这些密码非常简单,我知道它们在我使用的字典中。通常,如果你想实际暴力破解密码,我不推荐 John。提取哈希并使用支持 GPU 的破解设备(如 oclHashcat)。
概述
creddump 是一个 Python 工具,用于从 Windows 注册表配置单元中提取各种凭据和机密。它目前能够提取:
* LM 和 NT 哈希(受 SYSKEY 保护)
* 缓存的域密码
* LSA 机密
它基本上执行了 bkhive/samdump2、cachedump 和 lsadump2 的所有功能,但以平台无关的方式实现。
它也是第一个以离线方式完成所有这些操作的工具(实际上 Cain & Abel 也能做到,但它不是开源的,且仅在 Windows 上可用)。
要求
alldump 仅已在 Python 2.5 上测试。它应该也能在 2.4 上运行,但可能需要进行修改才能在 2.3 或更低版本上运行。
需要 python-crypto 来提供 MD5/DES/RC4 支持。获取方式:http://www.amk.ca/python/code/crypto
对于 lsadump:system 和 SECURITY 配置单元
对于 cachedump:system 和 SECURITY 配置单元
对于 pwdump:system 和 SAM 配置单元
用法
转储缓存的域哈希:
usage: ./cachedump.py <system hive> <security hive>
转储 LSA 机密:
usage: ./lsadump.py <system hive> <security hive>
转储本地密码哈希:
usage: ./pwdump.py <system hive> <SAM hive>
特性
* 平台无关的操作。唯一输入是来自系统的配置单元文件——完全不依赖任何 Windows 功能。
* 开源(希望如此!)且可读的 Windows 混淆算法实现,用于保护 LSA 机密、缓存域密码等。
* 一个相对宽容的纯 Python 注册表文件解析器。查看 framework/types.py 和 framework/win32/rawreg.py 了解其工作原理。
* 第一个完整的 advapi32 的 SystemFunction005 开源实现。Wine 源代码中的版本似乎不允许长度超过 7 字节的密钥,而 Windows 版本(以及本版本)允许。参见 framework/win32/lsasecrets.py 中的 decrypt_secret()。
作者
creddump 由 Brendan Dolan-Gavitt ([email protected]) 编写。
关于 Syskey、LSA 机密、缓存域凭据以及大量易失性内存取证和逆向工程的信息,请查看:
http://moyix.blogspot.com/
致谢
* AAron Walters。大部分数据类型解析代码取自 Volatility,一个用 Python 编写的优秀内存分析框架。他也是一位非常好的人,在我的研究中给了我很多帮助。
https://www.volatilesystems.com/default/volatility
* Massimiliano Montoro (mao),他逆向分析了 Windows 用于派生 LSA 密钥的机制,从而可以直接从配置单元文件中计算 LSA 密钥,详见以下文章:
http://oxid.netsons.org/phpBB2/viewtopic.php?t=149
http://www.oxid.it/
* Jeremy Allison,他提供了应用于 SAM 中密码哈希的混淆细节,就像原始 pwdump 中实现的那样。
http://us4.samba.org/samba/ftp/pwdump/
* Nicola Cuomo,他对 syskey 机制以及如何在 Windows 2000 及以上版本中使用它加密 SAM 进行了出色的描述。
http://www.studenti.unina.it/~ncuomo/syskey/
* Eyas[at]xfocus.org,他编写了 x_dialupass2.cpp,演示了如何在给定 LSA 密钥的情况下直接从注册表中读取 LSA 机密。
http://www.xfocus.net/articles/200411/749.html
[注:上述文章是中文的,但如果你用 Google Translate 并且能读 C 语言,那是相当容易理解的;)]
* Nicholas Ruff,他提供了 des_set_odd_parity 的 Perl 实现,显然是从 SSLEAY 中获取的:
http://seclists.org/pen-test/2005/Jan/0180.html
* Arnaud Pilon,他提供了如何检索缓存域密码的细节,如 cachedump 中实现的那样。
http://www.securiteam.com/tools/5JP0I2KFPA.html
* S�bastien Ke,他提供了可爱的 hexdump 配方:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/142812
许可证
本程序是自由软件:你可以重新分发和/或修改它,遵循自由软件基金会发布的 GNU 通用公共许可证条款,无论是许可证的第 3 版,还是(根据你的选择)任何更高版本。
本程序分发时希望它有用,但没有任何担保;甚至没有隐含的适销性或特定用途适用性的担保。请参阅 GNU 通用公共许可证以获取更多详细信息。
你应该已经随本程序收到了一份 GNU 通用公共许可证副本。如果没有,请访问 <http://www.gnu.org/licenses/>。