破解带变音符号的密码
Carrie Roberts // *客座博客
您有一个包含变音符号的密码哈希需要破解。变音符号是指字母上方的两个点,常见于德语中。
在我们的示例中,Windows密码哈希对应密码“Möm Rülez!”。我知道这并非德语,但请姑且用之。该密码哈希信息是通过域密码审计工具(DPAT)文档中描述的方法从Active Directory域控制器提取的。
|
|
域名是“dpatdomain.local”,用户名是“larry”,相对ID(RID)号为“1603”。接下来的32个字符(aad3b435b51404eeaad3b435b51404ee)是LAN Manager(LM)哈希。这是一种较旧、较弱的哈希算法,为向后兼容而保留。当配置为不存储这些较弱哈希时,Windows会显示此处所示的值,即空密码的哈希。在这种情况下,只有下一个哈希值才是密码的真实表示。
下一个哈希值(ecd382f6949d712f7f81982242755cc3)称为NT(新技术)或NTLM哈希。这是一种更强的哈希,需要更多计算资源来破解。
开始密码破解时,我们将包含变音符号的密码复制粘贴到名为wordlist.txt的文本文件中。我们将在密码破解过程中使用wordlist.txt作为单词列表。首先,我们尝试使用John the Ripper(JtR)进行密码破解,如下所示:
|
|
一切按预期进行,密码被成功破解,因为该密码包含在单词列表(wordlist.txt)中。
现在尝试使用Hashcat密码破解工具做同样的事情。
|
|
此处,“-m 1000”参数指定密码类型为NTLM,“-a 0”参数指定使用简单单词列表进行密码猜测。
令人沮丧的是,Hashcat未能破解密码。
我们可以使用xxd工具仔细查看单词列表文件,显示文件的字节。
密码由十六进制字符4dc3b66d2052c3bc6c657a21表示。注意每个变音符号字符使用了两个字节。
相反,下图显示了使用不同字符编码将密码从ASCII转换为十六进制(4df66d2052fc6c657a21)的结果。
要让Hashcat正确破解密码,我们需要修复编码不匹配问题。我们可以在Windows的记事本中创建密码列表,并选择ANSI作为编码类型,如下图所示。
或者,我们可以在Linux上使用iconv工具转换单词列表:
|
|
“-f”参数指定源编码,“-t”参数指定目标编码。编码名称令人困惑且不一致,但windows-1252、cp1252和ANSI通常指同一种编码。现在,使用新单词列表(wordlist-ansi.txt)再次运行Hashcat,显示我们已成功破解密码。
|
|
然而,它以有趣的方式显示密码,在$HEX[ ]标签内以十六进制形式给出密码。
啊,是的,我们从之前的调查中认出了这些十六进制字符(4df66d2052fc6c657a21)。让我们将该十六进制转换回ASCII,并确认它是我们预期的密码。
现在我们已成功使用Hashcat破解了密码“Möm Rülez!”。
我们演示了如何使用JtR和Hashcat通过字典攻击破解此特殊密码,但如果我们想暴力破解密码呢?对于暴力破解方法,本博客文章仅展示Hashcat解决方案。
以下命令定义字符集一(-1)为德语特殊字符,字符集二(-2)为所有大写(?u)、小写(?l)和特殊(?s)字符,外加字符集一。十个“?2”值的长行告诉Hashcat使用此字符集破解所有可能的10字符组合。“-a 3”参数指定使用暴力攻击模式而非字典攻击。
|
|
不幸的是,使用此字符集暴力破解10字符密码在您有生之年可能无法完成,但它确实提供了如何将变音符号包含在字符集中的一些见解。
另一种方法是使用“–hex-charset”参数在命令行上直接以十六进制定义变音符号,如下所示。这里我们指定了ö(f6)和ü(fc)应包含在字符集中,以及所有大写、小写和特殊字符。
|
|
祝破解愉快,如果您有其他想法或建议,请随时联系。
*感谢Carrie Roberts的另一篇精彩客座博客。
您可以从Carrie的课程中学到更多! 在此查看: 攻击模拟工具:Atomic Red Team、CALDERA等 PowerShell用于信息安全 提供实时/虚拟和点播课程!