针对 WPA2 的实际攻击

信息安全 wpa2
2021-08-24 12:01:19

可能重复:Bruteforce on 10 characters length WPA2 password

因此,我正在尝试进入家庭网络安全以获得乐趣。更具体地说,我正在尝试重现破解我家用路由器的 WPA2 密码短语的场景。

用我的 AP 记录握手是微不足道的。现在,破解(我已经知道的)密码。密码由保加利亚语中的两个长单词(但用拉丁语拼写)组成,首字母大写,没有空格、特殊字符或数字。

  • 在保加利亚语中找到了两本此类密码的字典:两个词都没有出现在任何字典中。

  • 密码长度为 18 个字符。根据我的计算,虽然选择它可能是“correcthorsestaple”的一个幸运示例,但即使是 10 个字符的密码也无法用于brute-force 。请注意,维基百科似乎另有说明。

为了防止暴力攻击,13 个字符的真正随机密码(从 95 个允许的字符集中选择)可能就足够了。 维基百科

aircrack-ng: 1500 keys/second
worst_case_attempts = (lowercase(26) + uppercase(26) + numbers(10) + common_symbols(15)) ^ pass_len(10)
The result is about 80 million years.

那么我从这里去哪里呢?我是否学习如何根据用户输入的概率分布生成字典,例如大写字母通常是第一个字母?我是否了解更多有关协议的详细信息?我是否会搜索其他攻击类型,例如以某种方式攻击 AP 的开放端口?

1个回答

WPA2 使用PBKDF2用于密码哈希;它配置了 HMAC/SHA-1 和 4096 次迭代。结果是一个 256 位的字符串。由于 SHA-1 仅提供 160 位输出,PBKDF2 需要应用迭代的 HMAC/SHA-1 两次,以获得全部 256 位输出,因此这意味着 8192 次 HMAC/SHA-1 调用。每次调用都意味着对 SHA-1 的两次基本调用(“基本调用”意味着“使用 SHA-1 压缩函数处理一个 512 位块”),因此这是 16384 次哈希函数调用。一旦获得了 256 位密码相关密钥,仍然需要一些额外的计算来检查该密钥与观察到的内容,但这是轻量级的,因此我们在这里忽略该成本(这与更多 SHA-1 调用一样昂贵)。整个 256 位密钥必须可用于该检查,因此此处没有快捷方式:字典攻击必须支付每个密码计算 16384 个 SHA-1 实例(加上一些额外代码)的成本。

拥有良好 GPU 的攻击者可能希望每秒获得 10 亿个 SHA-1 实例,因此他可能每秒“尝试”6 万个密码——但这是假设他拥有良好的可编程 GPU,并且他使用的软件由它决定。像Aircrack-ng这样的常见破解软件通常只有 CPU,产生您观察到的那种性能(每秒 1500 个密码)。假设你能找到一个合适的字典(这可能很困难,你注意到,当目标使用保加利亚语单词时),并且知道构造方法(正如你解释的:两个单词,大写),那么你可以计算出可能的密码(带有N个单词的字典,即N 2 可能的密码)和一个简单的除法会给你“全部尝试”所需的时间。

如果没有关于密码组件概率分布的任何进一步信息,您就无能为力了。这也表明 PBKDF2 的 4096 次迭代有效地使攻击者的生活变得艰难。


现在,有没有可能的捷径?有一个潜在的捷径,那就是 PBKDF2 使用salt就好像没有一个PBKDF2 功能,而是数十亿个不同的功能,每个盐值一个。如果多个接入点使用相同的盐,那么试图破坏这些接入点中的任何一个的攻击者可能会串通一气并分担努力,因为一个接入点的“尝试过的密码”也将(以某种方式)适用于其他接入点。在 WPA2 中,PBKDF2 的盐是网络 SSID。因此,如果多个接入点使用相同的 SSID,那么它们会将相同的密码转换为相同的密钥。

但是,实际消息和实际加密密钥不仅来自散列密码,还来自接入点和连接客户端作为握手初始步骤的一部分发送的 nonce 值(有关指针,请参阅此答案)。这实际上阻止了预计算的有效性。有一个关于不使用“通用 SSID”的通用建议,但在 WPA2 的情况下,使用与许多其他接入点相同的 SSID 似乎不会导致任何额外的弱点。


以上所有内容都是关于尝试找到接入点密码,以便解密流量,或连接到接入点并从其服务中受益(即“免费”互联网访问)。WPA2 目前没有已知弱点,这使得密码猜测成为唯一实用的入侵途径。

但是,如果真正的目标不是接入点,而是连接到该接入点的另一台机器,则其他方法可能适用。例如,攻击者可能会设置一个虚假的接入点,宣传相同的 SSID,但根本不需要身份验证;目标机器可能会连接到假接入点(取决于受害者的操作系统和配置,以及人类用户“点击”警告弹出窗口的能力)。此时,攻击者必须提供“互联网访问”服务,但他也可以直接访问受害者的机器,允许他尝试与该机器相关的任何远程攻击。此外,这使攻击者处于尝试中间人攻击的理想位置。