反向工程/破解 Windows XP 密码
本页介绍如何在 Windows XP 机器上破解(恢复)密码,这是一个计算上很困难的过程。如果你只需要设置一个新密码(而不需要恢复旧密码),那么本指南不适合你。为此,你可以使用例如免费软件工具 Offline NT Password & Registry Editor 或其他类似的程序。
Windows XP 密码使用 哈希 函数,方法是 LM 哈希 和 NTLM 哈希(长度不超过 14 个字符的密码)或仅 NTLM 哈希(长度超过 15 个字符的密码)。这些哈希值存储在 C:\WINDOWS\system32\config\SAM
中。 SAM 文件使用 C:\WINDOWS\system32\config\system
进行加密,并在 Windows 运行时锁定。此文件是一个注册表配置单元,在 Windows 运行时被挂载到 HKLM\SAM
。SYSTEM 帐户是唯一能够读取此注册表部分的帐户。要获取密码,你需要关闭 Windows, 解密 SAM 文件,然后破解哈希值。如果一切顺利,你将在 15 分钟内获取到密码。
也可以使用像 pwdump 这样的软件从正在运行的系统中获取哈希值。但是,需要在具有管理员权限的帐户下运行。
通常,我们可以通过两种传统方式恢复 Windows 管理员密码。第一种是使用另一个管理员帐户更改屏幕密码;第二种是使用之前创建的 Windows 密码重置磁盘来恢复以前的密码。以 Windows XP 为例,
- 在 Windows XP 登录提示符下,当密码输入错误时,点击登录失败窗口中的重置按钮。
- 将密码重置软盘插入电脑,然后点击下一步。
- 如果软盘正确,Windows XP 将打开一个窗口,提示你输入要使用的新的密码。
然而,我们经常忽视安全的重要性,直到我们被锁在电脑外面。幸运的是,还有最后一种方法可以在不重新安装的情况下解锁你的电脑 - 使用 Windows 密码重置 CD 删除 Windows 密码,它可以恢复 Windows 7/XP/Vista/NT/2000/2003.... 以 Windows 密码解锁工具为例,以下是创建重置 CD 的步骤
- 从密码解锁工具官方网站下载 Windows 密码解锁工具
- 解压缩 Windows 密码解锁工具,注意有一个 .ISO 映像文件。使用密码解锁工具免费支持的刻录机将映像文件刻录到空白 CD 上。
- 将新创建的 CD 插入锁定的电脑,并从 CD 驱动器启动。
- 启动 CD 后,会弹出一个窗口,显示你所有帐户的名称(如果你有多个帐户),选择你忘记了密码要重置的一个帐户。
- 访问 http://loginrecovery.com/,并在主页上点击下载软盘映像或 CD 映像的选项。如果你使用软盘映像,将空白软盘插入电脑,运行程序,就会创建一个可启动的软盘。如果你使用 CD 版本,你需要使用专门刻录 ISO 映像的软件手动将 ISO 映像刻录到 CD 上。
- 将软盘或 CD 插入你想要提取密码的目标电脑。然后启动电脑。你可能需要修改 BIOS 设置以确保从软盘驱动器或 CD 启动。
- 如果你使用的是软盘驱动器,屏幕上会短暂显示一些信息,然后电脑会关机。在软盘上会创建一个名为 "upload.txt" 的新文件,其中包含加密的密码。如果你使用的是 CD 版本,加密的密码会显示在屏幕上;将其写到文本文件中。
- 如果你想等待长达 48 小时或付费获取密码,你可以将文件上传到 LoginRecovery 网站。否则,请继续阅读。
- 该文件将包含多个两行条目,每个条目对应一个帐户。复制你要的帐户的这两行,并将其粘贴到 此工具 中,将其解码为 "pwdump" 格式。
- 使用以下部分中的任何工具来解码 pwdump 哈希值。
- 如果从 pwdump 中检索到的信息的第一部分为空,则未存储 LM 哈希值。这意味着密码为空,在这种情况下它将如下所示
Administrator:500:0: _31,D6,CF,E0,D1,6A,E9,31,B7,3C,59,D7,E0,C0,89,C0,xxxxx:::
如果显示其他内容,则表示他们实现了更好的安全措施,迫使你破解 NTLM 哈希值,这要困难得多,超出了本指南的范围。
- 这仅适用于长度不超过 14 个字符的密码
- 如果 Windows 2000/XP/2003 中的密码长度超过 14 个字符,它将被缩短为两个长度为 7 个字符的哈希值
- 另一种使用相同方法将已知哈希值与未知哈希值进行比较的方法称为 RainbowCrack,可在 http://www.antsight.com/zsl/rainbowcrack/ 获取,虽然该程序使用 彩虹表,其大小可能超过 64 Gb;这些表可在 http://rainbowtables.shmoo.com/ 获取
- 一个将已知哈希值与未知哈希值进行比较的综合项目位于 http://www.rainbowcrack.com/,但它要求你提交一个彩虹表才能访问他们的服务器
- 使用长度超过 14 个字符的密码。
- http://support.microsoft.com/kb/299656/ - 阻止 Windows 存储 LM 哈希值
Mac OS X 10.3 (Panther) 也会为每个用户存储隐藏的 LM+NTLM 哈希值。可以使用与上述 Windows 哈希值相同的方式破解它们
- 首先使用以下命令查找你要的用户对应的 "generateduid"
$ niutil -readprop . /users/<username> generateduid 70902C33-AC79-11DA-AFDF-000A95CD9AF8
- 哈希值存储在以下文件中/var/db/shadow/hash/<generateduid>. 该文件长度为 104 个字符,包含 64 个字符的 NTLM+LM 哈希值和 40 个字符的 SHA1 哈希值。要检索 NTLM+LM 哈希值,你可以以管理员身份运行以下命令,例如
$ sudo cut -c1-64 /var/db/shadow/hash/70902C33-AC79-11DA-AFDF-000A95CD9AF8 996E6760CDDD8815A2C24A110CF040FBCC5E9ACBAD1B25C9AAD3B435B51404EE
- 哈希值存储的顺序与 pwdump 格式相反(NTLM 优先而不是 LM 优先),因此你需要交换 32 个字符的半部分并在它们之间插入一个冒号
CC5E9ACBAD1B25C9AAD3B435B51404EE:996E6760CDDD8815A2C24A110CF040FB
- 然后按照 Windows 密码的说明操作
Mac OS X 10.4 (Tiger) 通过仅为启用 Windows 共享帐户的用户存储 LM+NTLM 哈希值来提高安全性;当他们启用 Windows 共享时,它会要求他们输入密码并提示他们的密码将以不太安全的格式存储。但是,对于那些启用了 Windows 共享的用户的,上述方法仍然有效。shadow 文件的格式略有不同,但 LM+NTLM 哈希值仍然是前 64 个字符。如果未存储哈希值,在尝试检索哈希值时,你将获得全为 0 的值。
在旧版本的 Samba 中,Samba 用户的密码哈希值存储在 /etc/smbpasswd 文件中(位置可能会有所不同,只有 root 有权访问),格式与上述 Windows 密码哈希值类似。在较新版本的 Samba 中,以 root 身份运行以下命令以获取相同的信息
pdbedit -L -w