破解与/ - 使用 GPU 进行密码破解,第一部分:设置

作者: Kyle Rankin

比特币挖矿已经过时了。让您昂贵的 GPU 用于破解密码吧。

当比特币挖矿热潮达到顶峰时,我感到一股冲动想要加入这个新兴社区并轻松赚钱。吸引我的不仅仅是金钱;比特币挖矿背后的概念,特别是图形处理器 (GPU) 的新用途,让我非常感兴趣。凭借一张价格适中的显卡,您可以在相对较短的时间内赚到足够的钱来偿还初始投资和电费。

然后比特币崩盘了。不过没关系,因为我还没来得及搭建我的挖矿设备,而且更重要的是,我发现比特币挖矿硬件有一个更有趣的用途:密码破解。比特币挖矿和密码破解是非常相似的操作,GPU 破解密码的速度比 CPU 甚至小型 CPU 集群快得多。在这篇分为两部分的文章中,我将解释如何设置和使用密码破解计算机。在第一部分中,我将重点介绍密码破解背后的原理和整体硬件设置。我将在下一篇文章中介绍具体的攻击和命令行示例。

破解密码的合法理由

在开始之前,让我们承认破解密码有一些相当不正当的理由。您时不时会听到网站被黑客入侵、密码数据库被泄露以及数千个弱密码被发现的故事。通常,人们开始破解密码是因为他们试图闯入别人的系统,或者他们已经闯入了别人的系统,窃取了他们的密码哈希值,并正在破解密码,以便他们可以攻击另一个系统。

话虽如此,就像开锁一样,破解密码也有合法的理由,特别是对于系统管理员或网站管理员而言

  • 测试本地用户的密码强度。

  • 证明用户遵守您的密码策略。

  • 了解您的密码策略应该是什么。

  • 密码学很有趣。

  • 比特币挖矿不再盈利。

事实上,许多 Linux 系统在您更改密码时都会运行基本的字典攻击,以评估密码的弱强度。尽管现在大多数密码系统都不允许用户输入不符合密码策略的密码,但有些系统只是让用户知道他们的密码很弱,但仍然存储它们。无论哪种情况,在公司审核您的密码以确保随机黑客无法在一两天内用价值 300 美元的显卡破解您的密码,这都是有意义的。当您把自己放在密码破解者的角色中时,您将开始意识到哪些密码容易破解,哪些密码几乎不可能破解,这将帮助您了解何时应该更新您的密码策略。

密码哈希简介

创建密码哈希是为了解决一个特别棘手的问题。如果用户必须输入密码才能登录,您必须以某种方式将这些密码存储在系统中。您如何存储这些密码,使其不是纯文本,但在用户输入密码时,您可以判断它们是否正确?解决方案是使用单向哈希加密密码。单向哈希背后的思想是,输入相对容易被加密成哈希值,但几乎不可能将哈希值转换回原始输入。如果您曾经下载过 Linux .iso 并对其运行 md5sum 以确保它与原始文件匹配,那么您使用的是一种非常流行的单向哈希算法 MD5。其他流行的单向哈希包括 SHA 系列(SHA1、SHA256 和 SHA512),而 phpass 是基于 PHP 的网站(如 WordPress)的现代默认设置。

当您登录 Linux 系统时,您输入的密码会使用与您首次设置密码时最初使用的相同算法转换为哈希值。系统将此新哈希值与系统上存储的哈希值进行比较,如果它们匹配,则系统会认为您输入了正确的密码,并且您已登录。例如,在现代 PHP 网站上,如果您的密码是 123456,它可能会存储为 $P$BPlIiO5xdHmThnjjSyJ1jBICfPkpay1。

密码破解的工作原理

在非常基本的层面上,密码破解的工作原理很像常规登录。您获取一个密码猜测,通过哈希算法运行它,并将其与现有的哈希值进行比较。如果匹配,则您破解了密码。破解和常规登录之间的主要区别在于,您每秒执行数十万甚至数百万次比较。

/etc/passwd 和 /etc/shadow

在破解密码之前,您最需要的是密码哈希值。因为我们谈论的是密码破解的完全合法用途,所以这很简单。毕竟,您应该拥有自己系统或数据库的 root 访问权限,并且应该很容易检索密码哈希值。对于 Linux 登录,这些密码哈希值过去存储在 /etc/passwd 中。这似乎是在 Linux 系统上存储密码的逻辑位置。问题是,该文件还存储了系统上使用的用户名和用户 ID,正因为如此,该文件需要是世界可读的。当密码存储在该文件中时,任何本地用户都可以提取完整的密码哈希列表并开始破解。现在,Linux 将密码哈希值存储在 /etc/shadow 中,只有 root 用户才能读取。对于网站密码,哈希值通常存储在文件系统本身的某个位置,或者通常存储在数据库中的特殊用户表中。

您需要的第二个重要的事情是了解用于这些哈希值的哈希算法。没有它,您将不知道为您的攻击使用哪种类型的哈希算法。对于登录哈希,哈希类型存储在密码哈希本身中。如果您查看 /etc/shadow 中的密码哈希,您会注意到一连串奇怪的字符以及一些 $ 符号。这些 $ 字符分隔了哈希的不同部分,如下所示


$id $salt $encrypted

id 部分告诉您正在使用哪种哈希

  • 1 = MD5

  • 5 = SHA-256

  • 6 = SHA-512

现在,您最有可能遇到 SHA-256 和 SHA-512 密码。由于哈希算法和盐值与密码本身一起存储,因此 Linux 密码哈希具有很强的可移植性。如果您有一个哈希值,您可以将其复制到另一个系统,并使用相同的密码登录。

为什么要使用 GPU?

使用 GPU 而不是 CPU 进行密码破解的简单原因是它速度更快。事实证明,破解密码很像挖比特币,因此 GPU 在比特币挖矿中速度更快的原因也适用于密码破解。简短的答案是,GPU 上有更多专门的芯片可以非常快速地执行 32 位运算。虽然 CPU 可以执行许多通用计算,但 GPU 上的芯片可以更快、更并行地执行特定类型的运算。如果您想要更具体的细节,这个网站从比特币挖矿的角度更详细地解释了这一点: https://en.bitcoin.it/wiki/Why_a_GPU_mines_faster_than_a_CPU

硬件

破解密码所需的最重要的硬件是一块快速的 GPU。由于破解密码就像挖比特币,因此您可以通过 GPU 挖比特币的表现来很好地了解 GPU 的性能。

这个网站提供了一个可用的显卡列表,并描述了它们的性能: https://en.bitcoin.it/wiki/Mining_hardware_comparison。当您查看该网站时,您会注意到 AMD GPU 往往比 NVIDIA GPU 快得多,即使对于游戏而言,情况通常相反。其原因在关于为什么 GPU 比 CPU 挖矿速度更快的解释中详细说明,但简而言之,AMD GPU 使用大量小型、简单的芯片来解决图形渲染问题,这些芯片可以快速执行 32 位运算。NVIDIA GPU 的芯片数量较少,但更复杂,更接近 CPU 的复杂性。对于比特币挖矿或密码破解(可能是高度并行的),大量简单的芯片工作速度最快。另请注意,破解软件可以利用多个 GPU,因此如果您的预算允许,并且您的主板可以支持,您可能会发现两个更便宜的 GPU 比一个昂贵的 GPU 获得相同的性能。

就我而言,我手头没有可以用于此目的的台式电脑,所以我专门构建了一台用于密码破解的台式机。如果您想效仿我的做法,以下是我的确切硬件以及价格

  • GPU:SAPPHIRE FleX 100312FLEX Radeon HD 6950 2GB:280 美元

  • 电源:RAIDMAX HYBRID 2 RX-730SS 730W:60 美元

  • 主板:ASUS M4A88T-V:95 美元

  • CPU:AMD Phenom II X6 1090T Black Edition Thuban 3.2GHz:170 美元

  • 内存:Corsair CMX4GX3M2B2000C9 4Gb 240-pin DDR3:55 美元

  • 存储:Seagate ST95005620AS 500GB 7200 RPM 混合硬盘:100 美元

  • 机箱:已拥有

  • 总计:760 美元,带显示器 930 美元,仅 GPU + 电源 340 美元

如果您已经拥有一台支持现代显卡的台式机,您可能只需要购买 GPU 和电源。请记住,现代高性能显卡需要大量电力,因此您需要机箱中至少有 700W 的电源,如果您打算将两张显卡链接在一起,则需要更多。我发现 AMD 6950 在我的预算范围内具有良好的性能,而且这款特殊型号理论上可以通过固件更新变成 6970。如果您有更大的预算,您可能需要购买两个或多个 6950 并将它们链接在一起。

就是这样。您现在有一个月的时间来准备硬件,在下一篇文章中,我将讨论密码破解的软件方面,解释字典攻击、暴力破解和掩码攻击,并使用我的密码破解系统给出具体示例。

资源

为什么 GPU 比 CPU 挖矿更快: https://en.bitcoin.it/wiki/Why_a_GPU_mines_faster_than_a_CPU

挖矿硬件比较: https://en.bitcoin.it/wiki/Mining_hardware_comparison

密码图片 来自 Shutterstock.com。

Kyle Rankin 是 Linux Journal 的技术编辑和专栏作家,也是 Purism 的首席安全官。他是 Linux Hardening in Hostile NetworksDevOps TroubleshootingThe Official Ubuntu Server BookKnoppix HacksKnoppix Pocket ReferenceLinux Multimedia HacksUbuntu Hacks 的作者,也是许多其他 O'Reilly 书籍的贡献者。Rankin 经常在安全和开源软件方面发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。您可以在 @kylerankin 上关注他。

加载 Disqus 评论