One simple means to defend Wi-Fi availability

前面写了 3 篇有关如何攻击 Wi-Fi 可用性的 post,于是这里也来简单的介绍一下自己所想的一个非常简单的、用于保护 Wi-Fi 可用性的思路。现实生活中的情况总是复杂的,不过个人认为下面这个思路在理论上来看是成立的(也或许实践中早有公司应用),没有过多的问题,当然这也有它自身的局限性,似乎还没有一个足够完美的方案(如果有的话,业界应该早就推广开了)。

我们已经提到过三种攻击,分别是 Deauthentication FloodBeacon FloodAuthentication Flood,这三种攻击都需要攻击者发送数量非常多的包才行。于是我们也可以反过来利用这一点。

FSPL From 2412 MHz to 2472 MHz
FSPL From 2412 MHz to 2472 MHz

首先我们需要一个预警,比如当收到以上三种类型的包超过每秒 $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 作为对比。

FSPL For Some Certain Channels
FSPL For Some Certain Channels

再附上一种比较常见的 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 所估算出的信号源范围,我们就可以利用三(多)点定位来确定一个相对准确的攻击者的位置。

Leave a Reply

Your email address will not be published. Required fields are marked *

sixteen − 13 =