侧边栏壁纸
博主头像
慧棱镜 All In One 服务平台 博主等级

行动起来,活在当下

  • 累计撰写 23 篇文章
  • 累计创建 58 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

如何利用GPU加速握手包破解过程?

创始者
2024-09-02 / 0 评论 / 3 点赞 / 86 阅读 / 0 字
广告 广告

背景&初衷

WPA/WPA2协议曾经被认为是保护无线通信安全的坚实壁垒,然而随着时间推移和技术进步,这些协议中的漏洞逐渐被发掘出来,特别是针对四次握手过程中捕获的握手包的攻击日益增多。在这种背景下,密码破解工具如aircrack-ng成为了测试和评估无线网络安全性的常用手段。尽管aircrack-ng凭借其开源性和易用性,在无线安全社区中占据了一席之地,但使用CPU进行密码破解的过程往往耗时较长,尤其是在面对复杂或长度较大的密码时,这极大地限制了其实用性。

近年来,随着硬件技术的发展,尤其是GPU(图形处理单元)计算能力的飞速提升,使得利用GPU进行大规模并行计算成为可能。这一技术革新催生了一系列高性能的密码破解工具,其中hashcat因其强大的GPU加速能力和对多种算法的支持而脱颖而出。相较于传统的仅依赖CPU的aircrack-ng,hashcat能够显著提高密码恢复的速度,有时甚至可以将破解时间从数周缩短至数小时,极大地提高了效率。因此,本文将探讨如何利用GPU加速技术优化握手包的破解流程,以及hashcat在实际应用中的优势和实现方法。

1. 捕获 Wi-Fi 握手包

首先,你需要使用 airodump-ng 捕获 Wi-Fi 握手包。假设你已经完成了这一步,并获得了一个 .cap 文件。

2. 安装 Hashcat 和 hcxtools

你需要确保你的系统中已经安装了 Hashcat 和 hcxtools。以下是在 Linux 系统上的安装步骤:

sudo apt-get update
sudo apt-get install hashcat hcxtools

3. 将握手包转换为 Hashcat 支持的格式

Hashcat 需要特定的文件格式来处理握手包。你需要使用 hcxpcaptool.cap 文件转换为 Hashcat 支持的 .hccapx 文件格式。

hcxpcapngtool -o handshake.hccapx capture.cap

其中:

  • capture.cap 是你使用 airodump-ng 捕获的握手包文件。

  • handshake.hccapx 是生成的 Hashcat 可用的文件。

4. 开始破解

4.1 制定密码文件破解

Hashcat 使用字典攻击来破解密码。你需要一个包含常用密码的字典文件。例如,你可以使用 RockYou 字典。

现在你可以使用 Hashcat 来破解握手包了。执行以下命令:

hashcat -m 2500 handshake.hccapx rockyou.txt

其中:

  • -m 2500 指定了 WPA/WPA2 的破解模式。

  • handshake.hccapx 是你生成的握手包文件。

  • rockyou.txt 是密码字典。

4.2 掩码攻击

要使用 Hashcat 制定所有 8 位密码组合(包括小写字母、大写字母、数字和特殊字符),你可以使用 掩码攻击 来实现。这种方法比生成一个完整的密码字典更加高效,因为它动态生成密码组合进行尝试,而不是提前生成并存储整个字典。

掩码攻击基础

掩码攻击允许你定义每个字符的位置可以使用的字符集。Hashcat 提供了一些预定义的字符集表示法:

  • ?l:小写字母 (a-z)

  • ?u:大写字母 (A-Z)

  • ?d:数字 (0-9)

  • ?s:特殊字符 (!@#$%^&*()_+-=[]{}|;:'",.<>?/~)

  • ?a:所有字符的集合(?l?u?d?s

  • ?b:8-bit 字符集(包含所有可能的 ASCII 字符)

生成 8 位所有密码组合

要生成所有由 8 位字符组成的密码组合(包括小写字母、大写字母、数字和特殊字符),你可以使用以下 Hashcat 命令:

hashcat -m <hash_type> -a 3 hashfile ?a?a?a?a?a?a?a?a
命令说明:
  • -m <hash_type>:指定你要破解的哈希类型。常见的 Wi-Fi WPA/WPA2 握手包使用 -m 22000(注意使用的是 .hccapx.22000 文件)。

  • -a 3:表示掩码攻击(攻击模式 3)。

  • hashfile:包含哈希的文件(例如 Wi-Fi 握手包的 .hccapx 文件)。

  • ?a?a?a?a?a?a?a?a:表示生成 8 位长度的密码组合,?a 代表所有字符集(小写字母、大写字母、数字和特殊字符)。

示例

假设你有一个 .hccapx 文件并想破解它,你可以执行以下命令:

hashcat -m 22000 -a 3 "F:\wifi-handshakes\44DF65C9313A_202409011029.hccapx" ?a?a?a?a?a?a?a?a

hashcat_2024-09-02_13_50_58.png

hashcat_20240902134604.png

如上图所示核显(Intel UHD Graphics 770)和独显(RTX4090)的负载都达到了100%. 其余Hashcat的参数解释如下:

  • Session

    • Session:当前 Hashcat 会话的名称。在这个例子中,默认会话名称是 hashcat。这个名称可以通过命令行参数 --session 指定。

  • Status

    • Status:当前破解的状态。在这个例子中,状态是 "Running",表示 Hashcat 正在进行中。

  • Hash.Mode

    • Hash.Mode:哈希算法的模式编号。在这个例子中,22000 是用于破解 WPA-PBKDF2-PMKID+EAPOL(即 Wi-Fi WPA/WPA2)的模式。

  • Hash.Target

    • Hash.Target:目标文件,包含要破解的哈希值。在这个例子中,文件名是 44DF65C9313A_202409011029.hccapx

  • Time.Started

    • Time.Started:破解开始的时间。在这个例子中,破解开始于 2024 年 9 月 2 日 13:41:27。

  • Time.Estimated

    • Time.Estimated:预计破解完成的时间。这个时间是基于当前速度估算的。在这个例子中,预计完成时间是 2114 年 7 月 18 日(显然这个时间过长,表示当前配置下的破解任务过于庞大,可能需要调整策略)。

  • Speed.# (Speed.#1, Speed.#3)*

    • Speed.#1 : 设备1(RTX 4090)上的CUDA核心 的破解计算速度. 其值为2336.1 kH/s

    • Speed.#3: 设备3(Intel UHD Graphics 770) 上的hash计算速度. 其值为23291 H/s

    • Speed.#*: 是所有设备的总破解速度的汇总。也就是说,它代表你系统中所有参与破解的设备的综合速度。

    • kH/sH/s 是速度单位:

      • kH/s:千哈希每秒(表示每秒处理的哈希数量,1 kH/s = 1,000 H/s)。

      • H/s:哈希每秒。

    • (1.67ms)(10.66ms)

      • 这是计算每次哈希所需的时间,以毫秒为单位。它表示设备计算每组哈希所用的平均时间:

        • 对于设备 #1,每组哈希计算的平均时间是 1.67 毫秒。

        • 对于设备 #3,每组哈希计算的平均时间是 10.66 毫秒。

      • 时间越短,设备执行哈希计算的速度就越快。

    • @ Accel:8 Loops:64 Thr:256 Vec:1

      这是每个设备执行任务时的具体配置参数:

      • Accel(加速):表示工作负载分配的程度。Accel 是将工作划分为更大块的部分,使得 GPU 能够更高效地处理数据。在这个例子中,设备 #1 的加速因子是 8,设备 #3 的加速因子是 64。

      • Loops(循环):表示在一个计算周期内执行的哈希循环次数。循环次数越多,可能会有更高的吞吐量,但同时也会增加延迟。设备 #1 的循环次数是 64,设备 #3 是 32。

      • Thr(线程):表示分配给每个计算单元(如 GPU 核心)的线程数量。设备 #1 的线程数是 256,设备 #3 是 16。

      • Vec(矢量宽度):用于描述 SIMD(Single Instruction, Multiple Data)操作的宽度。Vec:1 表示没有使用 SIMD 矢量化或每次只处理一个数据元素。

  • Kernel.Feature

    • Kernel.Feature:当前使用的内核特性。在这个例子中,Pure Kernel 表示 Hashcat 使用了纯内核来进行计算,没有使用优化的自定义内核。

  • Guess.Mask

    • Guess.Mask:当前使用的猜测掩码。在这个例子中,掩码是 ?a?a?a?a?a?a?a?a,表示 Hashcat 正在尝试所有由 8 个字符组成的密码组合,其中每个字符可以是字母、数字或特殊字符。

  • Guess.Queue

    • Guess.Queue:当前掩码队列中的进度。在这个例子中,只有 1 个掩码,并且已经完成了 100.00% 的进度。

  • Recovered

    • Recovered:当前已成功破解的哈希数量。格式是 已破解数量/总哈希数量。在这个例子中,还没有任何哈希被破解 (0/1,即 0.00%)。

  • Progress

    • Progress:当前任务的进度。表示已经处理的密码组合数与总密码组合数的比率。在这个例子中,已经尝试了 13,647,446,016 个组合,但总共需要尝试 6,634,204,312,890,625 个组合,因此进度为 0.00%

  • Rejected

    • Rejected:被拒绝的密码数量。一般表示与掩码或哈希模式不匹配的密码。在这个例子中,没有拒绝任何密码 (0/13,647,446,016)。

  • Restore.Point

    • Restore.Point:当前的恢复点,表示任务从何处恢复。恢复点是指已经完成的猜测组合的数量,可以在暂停后恢复任务。在这个例子中,恢复点是 138,510,336

  • Restore.Sub.#1 and Restore.Sub.#3

    • Restore.Sub.#1Restore.Sub.#3:每个设备的详细恢复点,包括 Salt(盐)、Amplifier(放大器)和 Iteration(迭代次数)。这些参数与哈希算法的特定实现有关。

  • Candidate.Engine

    • Candidate.Engine:密码候选生成的方式。在这个例子中,是通过设备生成器生成的候选密码。

  • Candidates.#1 and Candidates.#3

    • Candidates.#1Candidates.#3:表示当前设备正在尝试的具体密码组合。在这个例子中,设备 #1 正在尝试组合 Ew"'INAN -> EF?x'tan,而设备 #3 正在尝试 YN>]RINA -> Yf+yWANA

  • Hardware.Mon.#1 and Hardware.Mon.#3

    • Hardware.Mon.#1Hardware.Mon.#3:表示设备的硬件监控信息,如温度、风扇速度、利用率、核心频率和内存频率。在这个例子中:

      • 设备 #1 的温度为 81°C,风扇速度为 95%,核心频率为 2640 MHz,内存频率为 10251 MHz。

      • 设备 #3 的硬件信息不可用(显示为 N/A)。

5. 优化选项

如果你发现破解速度较慢或有其他问题,可以使用以下优化选项:

  • 使用 GPU:确保 Hashcat 能够利用你的 GPU 资源(通常它会自动检测 GPU)。

  • 限制 GPU 超时:避免在长时间运行时遇到 GPU 内核超时问题:

    --force

  • 限制温度:设置一个温度上限,避免 GPU 过热:

    --gpu-temp-abort=85

  • 调整工作负载:通过调节工作负载增加 GPU 计算效率:

    --optimized-kernel-enable

6. 考虑因素

  • 性能要求:8 位密码组合可能生成 6.1 万亿个组合(94^8 = 6,095,689,385,410,816),即使使用 GPU 进行加速,也需要相当长的时间来遍历所有密码。

  • 硬件:这种攻击方法非常依赖于硬件性能,特别是 GPU 的计算能力。

通过 Hashcat 的掩码攻击,你可以有效地针对所有 8 位的密码组合进行破解,避免生成巨大的字典文件。

3
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区