在多GPU系统上使用hashcat进行密码破解U8国际 U8国际官方网站 体育APP下载
栏目:U8哈希 发布时间:2025-06-23
  u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口就在几天前我针对Linux服务器池做了一次渗透测试,在我执行这项任务的时候我就知道在这些服务器上存在很大的密码重用概率。我设法获取其中一个服务器上的shell并通过使用privesc内核漏洞来取

  u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口就在几天前我针对Linux服务器池做了一次渗透测试,在我执行这项任务的时候我就知道在这些服务器上存在很大的密码重用概率。我设法获取其中一个服务器上的shell并通过使用privesc内核漏洞来取得root权限,然后我就能够完全的控制这台服务器。而对于其他的服务器,由于我知道密码可能会被重复使用,因此我只要利用已获取的root访问权限来提取/etc/shadow文件就很有可能将它们一举拿下。

  /etc/shadow文件是用于存放用户帐户及其密码的以密文形式存储使用多种哈希算法之一。每次用户使用其密码登录时系统都会检查该帐户使用的哈希算法并对用户输入的密码执行哈希操作然后将输出与影子文件中的存储值进行比较如果结果是相同的则用户帐户验证成功并允许登录操作

  所以我现在要做的第一步是分析我刚刚恢复的影子文件中存储密码的加密哈希类型。

  在类Linux的系统上你可以通过查看以下文件来了解用于密码散列常用的算法

  这里我们可以看到散列算法为sha512。我们也可以通过直接查看存储在影子文件中的散列来识别其使用的散列算法。

  在该文件中我们在哈希的开头看到一个$6的符号。该符号标识用于生成它的散列算法。根据所使用的算法$符号的数字可以从1到6。

  另外从该行我们还可以获取到其他一些信息例如算法的选项盐最后是散列密码如下图所示

  这里真正与我们相关的是其算法和散列密码。salt是用于生成散列的随机字符串因此它可以防止诸如。其他几个选项也可以在文件中找到我建议你在更多关于它们的知识。下面我们将继续进行密码破解的过程因为文件中的其他选项/参数与密码破解无关。

  这里要注意的一个主要问题是散列算法因为根据所使用的散列算法我们可能会花费不同的时间来破解密码但并不是越高级的算法就一定意味着破解效率就低。

  正如你看到的数字越大就意味着散列算法越高级。但这并不意味着使用越高级的散列算法哈希就越难被破解。但请注意例如MD5是一种已过时的哈希算法通过碰撞攻击就可以轻易的破解出它但对于sha算法碰撞攻击就会困难许多。

  一个针对影子文件密码破解的标准攻击是检测哈希算法然后根据某些字符组合生成一组哈希并将它们中的每一个与我们希望破解的哈希进行比较以查看是否匹配如果匹配则破解成功。

  像john the ripper或hashcat这些破解程序基本上就是这么做的他们会先分析这些哈希然后对其发起某种暴力攻击以获取密码。算法很容易理解我们生成一个candite然后根据散列值对其进行测试如果它们不匹配那么我们重复这个过程。如果我们将字典分成2个相同的文件将它们发送到一个单独的处理器我们可以将攻击的速度提升两倍如果我们有更多的CPU我们就可以加速n倍

  但如果你考虑哈希生成和比较操作的本质并结合你的实际经验你会发现通过GPU进行的并行化破解操作可以获得比基于CPU的破解更好的结果。

  因为GPU具有成百上千个核非常适合执行这些操作。以下我引用Thomas Pornin的解释

  GPU通过使用成百上千个核的大量并行性来实现其卓越的性能。这可以通过流水线操作实现每个单独的操作需要多个周期才能运行但是连续操作可以像高速公路上的卡车一样启动并共享指令解码因为许多核将同时运行相同的指令。

  GPU通过使用成百上千个核的大量并行性来实现其卓越的性能。这可以通过流水线操作实现每个单独的操作需要多个周期才能运行但是连续操作可以像高速公路上的卡车一样启动并共享指令解码因为许多核将同时运行相同的指令。

  而hashcat可以使用一个或多个GPU的强大功能来破解许多不同的密码哈希值。

  因此我决定使用多个GPU和带有hashcat程序的linux操作系统构建一个专门的破解站。

  我们将使用这些文件稍微测试一下hashcat检查它的性能并了解它的基本原理。

  以上安装完成后我们决定安装ubuntu 18.04作为操作系统。Ubuntu附带了一些标准的视频驱动程序但为了能够释放我们GPU的全部功能我们需要下载并安装其专有的驱动程序。你可以在找到它们。

  下载hashcat后我们可以通过简单运行它的主二进制文件来执行它。这里我为hashcat创建了一个别名并指向/fullpath/hashcat64.bin。

  你可以使用许多不同的参数从命令行运行Hashcat。首先让我们使用“-I”选项来检查我们的设置如果我们已正确安装了GPU我们应该能够看到它们并会为我们列出其属性和使用的驱动程序信息。

  字典攻击是最简单和最容易理解的。在字典攻击中我们使用一个包含多个潜在密码的字典文件我们对其中的每一个进行哈希处理并将其与要破解的散列进行比较。

  在该场景中hashcat可以将字典分成N个部分并将每个部分转发给一个GPU这样就可以并行处理多个字典文件并大大提升我们的破解速度。

  密码字典里包括许多人们习惯性设置的密码这样可以提高密码破译软件的密码破译成功率和命中率缩短密码破译的时间。

  从SN数据库泄露的密码字典在大规模和有针对性的攻击中非常有用因为我们很有可能会在某些SN中找到我们的目标。

  从SN数据库泄露的密码字典在大规模和有针对性的攻击中非常有用因为我们很有可能会在某些SN中找到我们的目标。

  -a参数是指定攻击模式0代表Straight模式使用字典进行破解尝试-m参数是告诉hashcat解密的Hash类型1800则是指SHA-512(Unix)类型密码最后是准备的密码字典文件。

  相较于单个字典文件的攻击组合攻击的优势在于它们可以使用两个文件组合来创建新的单词然后使用它们生成哈希并执行攻击。

  例如在我们的例子中我们可以将common_english_names字典中的所有单词与1900年到2018年的所有年份组合在一起这将产生如下组合

  这将非常有用因为很多人倾向于使用诸如nameYear之类的密码特别是当他们注册的页面/系统要求使用字母数字的组合密码时。

  如果我们运气不好密码字典种并不包含目标的密码那么破解程序仍会对哈希进行爆破攻击生成所有字符组合并一个接一个地测试它们。例如:

  这将非常的繁琐和耗时。如果我们知道我们的目标密码是6个字符呢 如果我们已经知道第一个字符是什么

  以下命令将对包含md5哈希的hashes1.txt文件发起攻击测试每3个字母的组合。

  Hashcat还为我们提供了一个名为“hybryd attack”的有趣攻击场景。在混合攻击中我们可以使用掩码将字典中的单词与某些字符组合在一起。

  在该攻击中我们通过将dict_eng.txt中的每个单词与2位数组合来攻击存储在hashes1.txt中的md5哈希值。我们将生成以下单词:

  注意我们可以在字典名称之后或之前附加掩码具体取决于在每个单词之后或之前使用掩码生成其他字符的位置。

  下面我将使用一个包含500多个MD5密码哈希值的文件你可以在这里下载到它。

  在我们的6-GPU破解站中攻击持续了大约一个小时我们破解出了15个密码。

  hashcat的规则引擎加上它的GPU破解能力使它超越了许多其他同类的工具如john the ripper。

  基于规则的攻击流程非常简单。首先我们选择一个单词字典作为攻击的“基点”然后选择一个包含一个或多个规则的文件。该程序将使用这些规则对字典中提供的每个单词执行转换以增强我们的攻击并最大化我们成功的机会。

  所以规则基本上改变了字典中的单词。规则系统背后的关键思想是例如你可能有一个包含最常用英文名称的文件

  当然这些名称可以用作密码但将“david”直接作为密码的并不常见。人们更倾向于使用以下密码

  正如你所看到的基于字典和掩码的攻击不足以基于我们的英语字典破解这些密码。我们可以生成某种脚本来转换字典添加那些密码或类似的转换但这将是一个非常冗长的过程。

  hashcat的规则引擎可以很轻松地完成这类工作。hashcat附带的“best64.rules”文件的开头如下

  正如你所看到的典型的规则文件包含一个或多个规则。规则可以对单词执行不同的变换例如添加数字大写/小写字母等。

  符号含义: 什么都不做 l 将所有字母转为小写 c 大写首字母小写其余字母 t 改变单词中所有字母的大小写 TN 改变单词中第N个字母的大小写 C 小写首字母大写其余部分 u 将所有字母转为大写

  使用best64规则文件和英文字典t对shado2文件进行简单攻击如下所示

  正如你所看到的基于规则的攻击可能需要花费大量时间具体取决于你所使用的规则和字典。我们的攻击持续了6个多小时破解出了5个密码。注意这些密码是多样性的有大小写字母、结尾数字以及简单的英语单词。

  另外你也可以选择一个你容易记住的长短语来作为密并使用密码管理器和双因素身份验证

  如果我有更多空闲的时间我会保持这篇文章的更新,因为hashcat确实是一个非常出色的程序。