彻底破解全部 —— 尽可能多地快速破解

你现在已有从 Cyber Space Kittens 入侵行动获得的一个很大的密码列表。那么在有限的时间内,怎么能获得最好的收益呢?以下演练将指导你完成初始步骤来尽可能多地破解密码。虽然,我们通常只需要找到几个域管理员/LDAP 管理员/公司管理员帐户,但我的强迫症倾向让我试图破解所有密码。

在开始之前,你确实需要了解你的那些哈希值的密码格式。Hashcat 有一个很好的列表,展示不同类型的哈希值的示例。一旦你知道了是什么类型的哈希算法,最好先进行一些初始测试,以确定该密码哈希算法的速度是快还是慢。这将对你的密码破解方法有巨大的影响。例如,在查看 Windows 系统下使用哈希算法时,我们看到 NTLM(Windows) 执行速度大约为75,000 MH/s。在 Linux下 运行 SHA-256算法的执行速度约为5,000 MH/s。

这意味着对于 SHA-256哈希,你的 GPU 可以每秒破解5,000,000,000次。这可能看起来很多,但是当你有大量的单词列表和很大的规则集时,这个速度可能不够理想。这是因为与每秒运算75,000,000,000个哈希值的 NTLM 相比,SHA-256算法的计算速度非常慢且成本高。在我们的例子中,我们将全力以赴,我们将使用8个1080TI GPU 并使用 NTLM 的快速哈希转储(dump)功能。

破解 CyberSpaceKittens NTLM 哈希:

获得域管理员访问权限后,你使用 DCSync 攻击从域控制器转储所有哈希值。你现在的目标是尝试尽可能多地破解哈希。因为你知道,你将能够在未来的入侵活动中使用这些帐户,并向受害者公司展示他们使用的不安全的密码的做法。

首先,我们将所有 NTLM Windows 哈希保存在一个名为 cat.txt 的文件中。为了使输出结果更易于阅读,我们将省略初始的 hashcat 执行命令。每个命令执行都将以 hashcat -w 3 -m 1000 -o hashes.cracked ./hashes/cat.txt 开头。

这句命令的意思为:

  • hashcat: 运行 hashcat
  • -w 3: 使用调整的配置文件
  • -m 1000: 哈希格式是 NTLM
  • -o hashes.cracked: 将结果输出到一个文件中
  • ./hashes/cat.txt: 我们的哈希存储的地址

因此,每当你看到 [hashcat] 字符串时,请使用此命令替换它:hashcat -w 3 -m 1000 -o hashes.cracked ./hashes/cat.txt。现在,让我们在 8 GPU 1080TI 设备上快速高效地破解 NTLM 哈希。

  • 使用 brute-force(-a 3)的攻击模式破解所有长度少于等于7个字符的密码。字符可以是任何字母、数字或者特殊字符(?a),启用增量破解模式从一个字符到七个字符进行尝试(—increment)。
    • [hashcat] -a 3 ?a?a?a?a?a?a?a —increment
    • 对于7个字符(字母/数字/特殊字符)的密码,破解总时间约为5分钟。我们可以设置为8个字符,但我们看到设置8字符后,运行了9个小时。
    • 你还可以将特殊字符限制为少数几个(!@ #$ % ^),这能显著减少时间和复杂性。
  • 接下来,将所有常见密码列表转储与我们的哈希值进行比较。第一个文件(40GB_Unique_File.txt)是一个3.2GB 的密码文件,运行大约需要9秒:
    • [hashcat] ./lists/40GB_Unique_File.txt
  • 我们可以看到,速度快到即使是这么大的文件,运行也只需要几秒钟。为了提高效率,我们实际上可以使用 * 运算符并与我们的 ./lists/ 文件夹中的每个密码列表进行比较。
    • [hashcat] ./lists/*
  • 接下来,基于哈希算法的速度,我们可以对单个密码列表文件尝试不同的规则集。我们将从 RockYou 规则集开始,破解这些 NTLM 哈希值大约需要2分9秒:
    • [hashcat] ./lists/40GB_Unique_File.txt -r ./rules/rockyou-30000.rule
    • 注意:使用3 GB 文件设置的 NSAKEY 规则大约需要7分钟,使用 NotSoSecure 规则集(组合了其他所有规则集的规则集)大约需要20分钟。
  • 当我用回其他密码列表和规则集组合时。跟所有大型规则集和大型密码泄露列表的第一次破解比较,我们通常可以至少提高30%以上的效率。
  • 接下来,我们可以开始在密码列表的右侧添加字符,以提高破解更长密码的成功率。下面看到的 -a 6 命令会将每个字母/数字/特殊字符添加到密码右侧,从一个字符开始一直到最多四个字符:
    • [hashcat] -i -a 6 ./lists/found.2015.txt ?a?a?a?a
    • 注意:这需要大约30分钟才能完成四个字符
  • 我们也可以在密码列表的左侧添加字符。以下命令将每个字母/数字/特殊字符添加到密码的左侧,从一个字符开始一直到最多四个字符:
    • [hashcat] -i -a 7 ?a?a?a?a ./lists/40GB_Unique_File.txt
    • 注意:这需要大约30分钟才能完成四个字符
  • Hashcat Utils:https://github.com/hashcat/hashcat-utils/releases 。Hashcat 有很多工具可以帮助构建更好的密码列表。一个例子是组合器,它可以采用两个或三个不同的密码列表并进行组合。使用小列表相对较快。使用我们的 shortKrak 列表并将其与自身相结合会导致非常快速的破解:
    • ./hashcat-utils-1.8/bin/combinator.bin lists/shortKrak.txt lists/shortKrak.txt > lists/comboshortKrak.txt
  • 使用一些列表比如“谷歌排名 top1000单词”会生成一个约1.4 GB 的文件,因此你必须注意你选择的文件的大小。
    • ./hashcat-utils-1.8/bin/combinator.bin lists/google_top_1000.txt lists/google_top_1000.txt > lists/google_top_1000_combo.txt
    • 注意:使用一个4MB 文件并运行 combinator 将导致生成体积一个大于25GB 的文件。所以,要当心这些文件的体积大小。
  • 很多时候,人们使用最多的密码不是常见的字典单词,而是基于他们的公司、产品或服务的单词。我们可以使用客户网站创建自定义密码列表。可以提供帮助的两个工具是:
  • 接下来,使用 PACK (Password Analysis and Cracking Kit) 工具对所有破解的密码进行分析并创建掩码:
    • python ./PACK-0.0.4/statsgen.py hashes.password
    • python ./PACK-0.0.4/statsgen.py hashes.password —minlength=10 -o hashes.masks
    • python ./PACK-0.0.4/maskgen.py hashes.masks —optindex -q -o custom-optindex.hcmask

      译者注:本书作者给出的关于 PACK 的链接为:http://thesprawl.org/projects/pack/ ,但是你只要点了试试就会发现现在这个连接被自动跳转到 PACK 作者的博客了。译文中的 PACK 工具的地址是译者自己在 Github 找到的,因为链接变了,所以上面的 python 语句大家根据情况做出调整。可以参考该工具的 README,非常详细。

  • 使用新创建的掩码进行密码破解:
    • [hashcat] -a 3 ./custom-optindex.hcmask
  • 使用 Pipal 分析你的密码列表可以更好地理解密码的基本词汇:
    • cd /opt/pipal
    • ./pipal.rb hashes.password
    • 看看这个列表,你可能会发现这家公司使用resetme12345作为默认密码,可能位于密歇根州(列表里有底特律、老虎、足球这些词汇)。

那么下一步我们做什么?已经有很多对于不同的密码生成工具、密码分析和其他技术的很好的研究,目的是找到更快的破解密码的方法。若你有兴趣,这里给出一些资料: