前面写了 3 篇有关如何攻击 Wi-Fi 可用性的 post,于是这里也来简单的介绍一下自己所想的一个非常简单的、用于保护 Wi-Fi 可用性的思路。现实生活中的情况总是复杂的,不过个人认为下面这个思路在理论上来看是成立的(也或许实践中早有公司应用),没有过多的问题,当然这也有它自身的局限性,似乎还没有一个足够完美的方案(如果有的话,业界应该早就推广开了)。
我们已经提到过三种攻击,分别是 Deauthentication Flood,Beacon Flood 和 Authentication Flood,这三种攻击都需要攻击者发送数量非常多的包才行。于是我们也可以反过来利用这一点。
首先我们需要一个预警,比如当收到以上三种类型的包超过每秒 $x$ 个之后,我们就触发针对攻击者的追踪。这个追踪过程也是很常见的三(多)点定位法,我们的目的是找到攻击者的大致位置。不过这个方法对于家庭用户来说不太现实,在公司的环境中还是可以做到的(而且考虑到,相比攻击个人用户,攻击公司的网络似乎会更有价值)。
那么这里在 Wi-Fi 中的三(多)点定位法也需要探知距离。显然,攻击者在发送这些伪造的包的时候,会有多个 AP 收到(这里我们再次简化模型,必然是有办法只让 1 / 2 个 AP收到,但是被攻击的用户大可加入另一个 AP,所以这里的影响相对较小,本文不考虑)。在这些 AP 收到包的时候,我们可以根据 RSSI (Received Signal Strength Indicator),配合 FSPL (Free-Space Path Loss) 估算出信号源到该 AP 的大概的距离。
FSPL,Free-Space Path Loss,或者翻译为自由空间路径损耗(个人觉得“开放空间”的翻译可能稍微好点?)。官方的定义在 Standard Definitions of Terms for Antennas 里。简单来说,它是描述了无线信号在一个开放空间中(即没有障碍物,因此也不会有该无线信号的反射和衍射)经过一个确定的距离之后,信号强度的衰减的函数。
\begin{equation}
\begin{aligned}
\text{FSPL}&=(\frac{4\pi d}{\lambda})^2\\
&=(\frac{4\pi df}{c})^2
\end{aligned}
\end{equation}
在这个公式中,
- $d$ 是到信号源的距离
- $\lambda$ 是信号的波长,单位是米, $m$
- $f$ 是信号的频率,单位使用赫兹,$Hz$
- $c$ 则是真空中的光速,也就是 $2.99792458 \times 10^8 m/s$
不过在我们抓的包中,信号强度的单位是 $dB$,因此需要变形一下,取原式以 10 为底的对数,然后乘以 10,得到 $dB$ 为单位的度量
\begin{equation} \begin{aligned} \text{FSPL(dB)}&=10\log_{10}(\frac{4\pi df}{c})^2\\ &=20\log_{10}\frac{4\pi df}{c}\\ &=20\log_{10}d+20\log_{10}f+20\log_{10}\frac{4\pi}{c}\\ &\approx 20\log_{10}d+20\log_{10}f-147.552216778 \end{aligned} \end{equation}
显然我们这里是已知接收到的信号的强度 RSSI,它的绝对值则是 $FSPL(dB)$,信号的频率$f$,需要求的是 $d$,那么再次简单变形
\begin{equation} \begin{aligned} \text{FSPL(dB)}&=20\log_{10}d+20\log_{10}f-147.552216778\\ 20\log_{10}d&=\text{FSPL(dB)}-20\log_{10}f+147.552216778\\ \log_{10}d&=\frac{\text{FSPL(dB)}-20\log_{10}f+147.552216778}{20}\\ d&=10^{\frac{\text{FSPL(dB)}-20\log_{10}f+147.552216778}{20}} \end{aligned} \end{equation}
这里的 $f$ 我们可以根据 Wi-Fi 信道来确定,2.4 GHz 下常见的有 13 个信道,5 GHz 下常见的有具体的信道、对应的频率以及上表对应的 $20\log_{10}f$ (保留 9 位小数,四舍五入) 如下,先是 2.4 GHz 下的
Channel | Frequency (MHz) | $20\log_{10}f$ |
---|---|---|
01 | 2412 | 187.647546069 |
02 | 2417 | 187.665533008 |
03 | 2422 | 187.683482776 |
04 | 2427 | 187.701395527 |
05 | 2432 | 187.719271412 |
06 | 2437 | 187.737110584 |
07 | 2442 | 187.754913192 |
08 | 2447 | 187.772679387 |
09 | 2452 | 187.790409317 |
10 | 2457 | 187.808103130 |
11 | 2462 | 187.825760972 |
12 | 2467 | 187.843382990 |
13 | 2472 | 187.860969328 |
对应与一开始,我们展示了 2.4 GHz 下的 1 到 13 信道,从 0 到 100 米的 FSPL 变化图。整体上来说保留小数后两位就可以了,信道 1 和信道 13 在 0 到 100 米的范围内,FSPL 的实际差距并不大。
然后是 5 GHz 部分的,
Channel | Frequency (MHz) | $20\log_{10}f$ |
---|---|---|
36 | 5180 | 194.286595195 |
40 | 5200 | 194.320066873 |
44 | 5220 | 194.353410060 |
48 | 5240 | 194.386625740 |
52 | 5260 | 194.419714883 |
56 | 5280 | 194.452678451 |
60 | 5300 | 194.485517392 |
149 | 5745 | 195.185800660 |
153 | 5765 | 195.215986233 |
157 | 5785 | 195.246067266 |
161 | 5805 | 195.276044481 |
165 | 5825 | 195.305918594 |
鉴于单独画 5 GHz 的部分不易看出与 2.4 GHz 下有多少区别,于是这里分别画了 2.4 GHz 下的信道 1 和 13,5 GHz 下的信道 36 和 165 作为对比。
再附上一种比较常见的 RSSI 值与可用性的参考。
- $-30 dB$,是能够达到的最大信号强度,STA 距离 AP 也就十几厘米吧,好是好,但是不切实际。
- $-67 dB$,是那些对网络可用性要求很高的程序的最低信号强度,比如语音电话/视频流。
- $-70 dB$,则是日常的上网、发送邮件的基本要求。
- $-80 dB$,到这之后,包就不一定能从 STA 送到 AP,反之亦然。
- $-90 dB$,基本处于不可用的状态。
对照上面的参考和上图,我们可以真正的了解到,为什么传输速率高的、运行在 5 GHz 下的 802.11ac 比运行在 2.4 GHz 下的 802.11b/g/n 覆盖范围要小很多——这是它(电磁波)本身的特性决定的(当然业界也有很多办法提高 802.11ac 的信号质量,比如波束成形就是其中之一)。
回到这篇 post 的主题上来,我们以 2.4 GHz 下的信道 1 (2412 MHz) 为例子,假如 RSSI 是 $-63 dB$,那么带入计算距离 $d$ 的式子,我们有
\begin{equation}
\begin{aligned}
d&=10^{\frac{\text{FSPL(dB)}-20\log_{10}f+147.552216778}{20}}\\
&\approx 10^{\frac{63-187.647546069+147.552216778}{20}}\\
&=10^{\frac{22.904670709}{20}}\\
&=10^{1.14523353545}\\
&\approx 13.971194395 m\\
&\approx 13.97 m
\end{aligned}
\end{equation}
于是可以估算出信号源距离我们大约是 13.97 米,即以该 AP 为圆心,半径约 13.97 米这个范围的圆内。当然,严格来讲,我们还应该考虑信号源的发射功率、发射端的 cable loss、发射端和接收端的天线增益、接收端的灵敏度、信号穿墙的衰减等等。实际中是非常复杂的,这里做了许多的简化,主要目的也只是提供一个思考的方向。
接下来,因为这个包被多个 AP 接收到了,综合这些 AP 所估算出的信号源范围,我们就可以利用三(多)点定位来确定一个相对准确的攻击者的位置。