Les articles de l’équipeExploiter un réseau

IP欺骗:它是什么以及如何保护自己

用寄信与回信的例子,讲清 IP 欺骗伪造了什么、为什么不等于控制账户,以及来源检查与身份验证各自的作用。

Sommaire

两封白色信封贴着相同的蓝色房屋标记,其中一张寄件标签被掀起。
寄件地址可以照抄。它告诉对方把回信寄到哪里,却不能证明是谁写了这封信。

有人寄出一封信,却在寄件人一栏填了你的地址。收信人可能会把回信寄给你,但这并不能证明原信是你写的。IP 欺骗利用的,也是“写了谁的地址”和“究竟是谁发来的”之间的差别。

伪造的到底是什么?

信息在网络中传输时,会被装进一个个数据包。IP 数据包上有目的地址,也有源地址。所谓 IP 欺骗,就是把源地址填成假的。如果没有其他检查,接收方看到的只是这个自报的来源。

IP 地址主要帮助网络把数据送到目的地,并不是一个人的身份证。几个人可能共用同一个公网地址,一台设备也可能换地址。因此,“允许这个 IP 访问”与“确认这个人有权访问”,解决的是不同问题。

伪造地址,不等于收得到回信

假设有人冒用你的地址向某个服务发出请求,服务通常会把回复发往你的地址。冒用者不会因此自动收到回复,更不会直接取得你的电脑的控制权。

很多应用使用 TCP 通信。建立 TCP 连接需要双方来回确认,连接建立后还要核对通信状态。只把地址改成别人的,并不能完成这些步骤。TCP 协议规范解释了连接和序列检查的机制。不过,这些机制也不能替代对服务或用户的身份验证。

收不到回复,为什么还能造成危害?

因为攻击者有时根本不想与服务交谈,只想让它把回复发给无辜的人。许多服务同时回信,受害者就会收到大量自己从未请求过的流量。这叫反射攻击。如果回复远大于原来的请求,还会产生放大效应。

另外一些攻击会直接消耗系统资源,或利用某个服务对来源地址的过度信任。能造成什么后果,取决于服务怎么工作、攻击者处在什么位置,以及有哪些防护。伪造一个源地址,本身并不能破解加密通信或登录别人的账户。

查来源和验身份,要各做各的

网络运营者可以在连接边界检查:从这条线路来的数据包,是否使用了这条线路本来就不该出现的源地址?例如,客户的网络不应冒用另一个客户的地址范围向外发包。这是 BCP 38 源地址过滤的基本思路。

应用还需要自己的身份验证。HTTPS 在正确配置和验证 TLS 的前提下,能验证服务端并保护通信;用户登录则确认账户身份。一个看起来熟悉的 IP 地址,不能替代这些验证。

普通读者可以做什么?

及时更新软件,使用经过身份验证的加密连接,认真对待证书警告。这些措施保护的是你参与的通信。至于在互联网线路上拦截伪造来源的流量,需要网络运营者来做,不能靠用户换一个更复杂的密码来完成。

如果你负责网络或网站,可以继续看来源检查与身份验证应该放在哪里;想分清反射、流量攻击和其他“欺骗”,可以接着读不同攻击方式的区别。

一个说法,究竟靠什么成立?

理解这件事最有用的习惯,是追问系统实际上验证了什么。卢恒在Note 20:现实层与象征权力中,把这个问题带入了对制度与权力的讨论。那是一篇更广泛的思想论述;这里的网络例子,帮助我们先看清“声称如此”和“有什么机制支撑”之间的距离。