使用 Aircrack-ng 破解 WEP 密码 - 背景知识
最近这些天一直在学习 Wi-Fi 网络破解相关的内容, 今天想和大家分享下. 这将是一个系列长文, 然而我希望我的每篇帖子都是精炼短小, 能够快速阅读完的, 所以这篇文章会分几个篇章. 这几篇文章也将是 geek 流的文章, 希望 steemit 上的 geek 们能喜欢.
- 背景知识
- 破解原理简介
- aircrack-ng 套件的安装
- 实际破解流程
这一篇里首先介绍背景知识.
背景知识
网卡设备的工作模式
- Station
这就是我们通常情况下上网时, 笔记本, 手机中的网卡所工作的模式. 当网卡工作在这种模式下时, 它可以连接到其他的 AP 上. - AP
网卡工作在这种模式时, 可以接受其他的 Station 的连接. 具体能够接受多少 Station 的连接, 就要看这个网卡自身的能力了, 也就是我们所说的带机量. - Monitor
这其实是我们这篇文章里最重要的一个工作模式. 我们这篇文章所说的破解方式, 一定要网卡工作在这种模式才行. 当网卡工作在这个模式的时, 网卡就能够接收到周围所有的数据帧, 这个过程我们就叫做 Interception. 需要注意的是, 网卡要工作在这个模式, 需要满足以下两点才行:- Wi-Fi 芯片 (下面会介绍) 自身需要支持 Monitor 模式, 这也就意味着网卡芯片上实现 802.11 协议栈的固件程序具有不过滤其他数据帧的功能, 因为硬件射频电路本身是不会过滤数据帧的
- Aircrack-ng 所运行的操作系统, 需要拥有支持 Wi-Fi 芯片的 Monitor 模式的驱动程序
网卡与网卡芯片
上面我们提到了 Wi-Fi 芯片 这个词, 不了解的同学可能不懂了: 不是一直说网卡网卡的吗, 怎么又冒出一个 Wi-Fi 芯片? (如不特殊说明, 下文中的 "芯片" 以及 "网卡芯片" 也是指 "Wi-Fi" 芯片)
大家一定不要搞混了, 网卡和 Wi-Fi 芯片完全不是同一个东西.
- Wi-Fi 芯片是被芯片厂商设计来专门跑 802.11 协议的, 对于 802.11 数据帧的处理, WPA/WEP 加密协议做了很多优化. 比较有名的 Wi-Fi 芯片厂商有 Atheros, Broadcom 等.
- 而网卡则是在芯片的基础上做了一些软硬件方面的功能延伸, 比如在硬件方面, 网卡添加了一些其它的组件或芯片 (指除 Wi-Fi 芯片之外的芯片), 比如加上一个自家的 MCU, 大容量 Flash, 大容量 RAM, 放大天线等等; 又比如在软件方面, 移植一个牛逼的操作系统跑在 MCU 上. 比较有名的网卡厂商, 比如网件, TP-Link, Netcore 等, 所作的工作无非如此.
网卡芯片才是实现整个 802.11 协议的核心的软硬件部分. 射频, 数据帧处理, 加解密等等都是在这里处理的
WEP 加密协议
要破解 WEP, 当然要首先对 WEP 有一定的了解才好. 但是如果要看懂本文, 我们只要知道几个要点就好, 这几个要点贯穿后文, 如果大家看到后面有看不懂的地方, 可以返回这里找对应的要点.
WEP 使用的是名为 RC4 的流式对称加密算法. 且 WEP 被设计为最多能支持 4 个密钥
但是 WEP 并没有一个健全的密钥管理机制. 密钥的管理机制是厂商自定义的, 根据密钥分配的方式特点, WEP 可以分为静态 WEP 与动态 WEP
静态 WEP 出现在 WEP 早期, WEP 缺乏健全的密钥管理机制, 导致密钥一般都是网络管理员手动分配的, 并且用于连接到此 AP 的所有工作站, 这个密钥也就是默认密钥. 这个密钥用于所有 Station 与 AP 之间的所有数据帧, 并且由于更换密钥就意味着网管的繁杂的工作量, 所以大多数场合下密钥已经设定, 几乎就不修改了, 这对系统的安全性造成了很大的威胁
上面说了 WEP 最多能支持 4 个密钥. WEP 最初这么设计, 并没有什么高深的动机, 其目的有两点: 1. 使 AP 能不至于一直用一个 key, 或多或少的增强一点安全性 2. 减轻网管的负担, 在更换 key 的时候, 可以平滑的更换, 不至于必须在同一下午到所有 Station 上重设 Key. 比如说, 0 号 key 已经用了一个月了, 网管想要换成 1 号 key, 那么网管只需在 AP 管理界面, 将 1 号 key 启用, 但是并不禁用 0 号 key. 这样网络上 AP 发给 Station 的数据帧就都是用 1 号 key 加密的了, 没有修改成 1 号 Key 的 Station 发给 AP 的数据帧仍然是 0 号 key 加密的, 这也没关系, 因为 AP 也能解读 0 号 key 的密文. 但是网管可以不用急于一个下午更新完所有 Station 上的 Key 了, 他可以花一个月更新完, 然后再 AP 管理界面上禁用 0 号 key. 这样, 整个网络的 key 就平滑的升级完了.
大部分路由器的 WEP 密钥配置就是这种方式, 见下图:
(WEP 标准没有规定的密钥 (WEP seed) 长度, 不过标准中以 64bit 来举例的, 其中前 24bit 是 IV, 也就是说只有 40bit 是用户可键入的, 也就是 5 个 ASCII 字符; 大部分路由器都支持 128bit 或以上的 WEP seed 长度, 同理, 对 128bit WEP seed 来说, 可供用户键入的 ASCII 字符数就是 13 个)
动态 WEP 并没有出现在 802.11 标准中, 而是厂商们自定义的, 可以说是事实标准吧. 动态 WEP 的一些思想后来被 802.11i 采纳了. 在动态 WEP 中, 可以使用两种密钥, 一种叫做映射密钥, 所有的由工作站发送的, 或者是发往工作站的数据帧, 都用这个密钥加密; 另一种叫做默认密钥, 所有其它的数据帧都用这个密钥加密, 比如多播/广播数据帧.
因为要实现这两种密钥, 所以在动态 WEP 中, 4 个密钥的编号就不能像静态 WEP 中那么用了. 由于动态 WEP 对密钥管理机制的原因, 可能适用于 Station 和适用于 AP 的芯片在结构和性能上还会有所不同.
对于 Station 来说, 一般 0 号密钥被用作映射密钥, 用于发送单播消息给 AP; 而 1 号密钥被用作默认密钥, 用于发送多播/广播给 AP (你知道的, 在基础结构型里面, Station 发什么包都得经过 AP 的).
而对于 AP 来说, 一般来说其芯片会有较多的密钥卡槽 (不止是 4 个了), 对于每一个连接上来的 Station, 至少映射密钥是互不相同的, 默认密钥则可能相同也可能不同. 另外, 每个 Station 与 AP 通信用的映射密钥也是随时间动态改变的, 这也是 "动态 WEP" 名称的由来.
从上面的说明我们看出, 动态 WEP 需要为每个 Station 维持一个不同的密钥, 而且还要及时的更改这些密钥, 所以相比静态 WEP, 动态 WEP 一定还引入了某种密钥管理与分配的机制.WEP 协议所使用的密钥中, 前 24 位被称作初始向量 (Initialise Vector), 初始向量是随没一个数据帧变化的, 其目的就是为了使密钥每次都不相同, 增强安全性
WEP 所使用的身份认证协议
WEP 可以使用两种身份认证协议:
- 开放认证 (Open Authentication)
Station 不需要经过身份验证就能连接 AP. 但是要想后续和 AP 通信, 你还是得提供正确的密钥. 具体表现为, 你用电脑连接某个开放认证的 WEP 热点, 可能瞎指定一个密钥就能过认证, 但是并不能与 AP 通信, 可能连 IP 地址都获取不到 - 共享密钥认证 (Shared Key Authentication)
共享密钥, 也就是我们在 AP 管理后台指定的 4 个密钥之一, 它本是用来加密数据帧的. 这个认证方式之所以叫做共享密钥认证, 也就是因为, 我们直接使用用来加密数据帧的密钥来认证 Station 了. 具体表现为, 当你连接 AP 时, 必须提供正确的密钥, 否则认证是过不了, 会直接给你提示密码错误.
大部分的动态 WEP 并没有在身份认证这块做什么文章, 所以动态 WEP 也是上用的上述两种认证方式. 可以看出, 上面两种认证方式都是简单粗暴的, 只要知道了密钥, 任何人, 在任何机器上, 就都能连 AP; 只要这台机器上连上过 AP, 那么其它任何人再过来用这台机器, 就也能直接上这个 AP. 这种认证方式并不能做到对每个人进行认证, 充其量是对每个 Station 进行认证. 这个问题在 802.1X 中得到了解决.
@originalwork