如何检测欺骗数据包?

信息安全 网络 防火墙 ip欺骗
2021-08-09 12:29:10

我的假设:

当防火墙配置为丢弃欺骗性数据包时,它会尝试 ping(不一定是 ICMP)源 IP 并查看它是否属于真实主机或者它是否已启动,如果不是,它会丢弃数据包。

我的问题:

如果欺骗数据包的源 IP 属于真实且在线的主机,会发生什么情况?还有其他方法可以检测欺骗数据包吗?

4个回答

虽然我确信实际上有防火墙可以做到这一点,但我并不知道任何以这种方式运行的防火墙。存在数据包欺骗检测机制,尽管它们的行为往往略有不同。

波贡过滤器

bogon定义为伪造的 IP 地址。具体来说,它是 IANA 尚未由授权 RIR 分配的所有 IP 地址的列表。获取此列表的最佳方法是让您的防火墙支持订阅 bogon 服务。如果您在防火墙上启用 bogon 过滤,它还倾向于包括源地址被列为RFC 1918地址的入口数据包。

习惯上也使用相同的规则来阻止,或者在本地编辑您的 bogon 列表,以包括您的本地分配。通常认为您的内部 IP 地址不太可能出现在防火墙的入口端口上。一个例外是您的任何设备都存在于您的防火墙之外。这很可能包括数据包整形器、路由器或其他基础设施设备,但在某些情况下,可能会故意将其他设备留在外部。确保将那些从 bogon 列表中排除。

MAC 限制

对于边界防火墙等设备,我们通常非常清楚哪些物理设备能够直接与它们通信。同样,这应该是基础设施设备,例如数据包整形器、路由器等。如果您有 DMZ,那么您可能还会在其中看到这些设备,具体取决于您的架构。在这种情况下,我们可以枚举应该能够直接与防火墙对话的 MAC 地址,并拒绝任何不在该列表中的 MAC 地址。顺便说一句,这也有助于捕获最终在该网段上不应该出现的系统。

对于可能为部门部署的防火墙,或者在网络中以透明/桥接模式对主机子集进行分段,构建这些列表可能要困难得多。

TTL分析

在两台主机之间,数据包之间的跳数通常保持不变,或者变化很小。因此,如果 TTL 从一个数据包到另一个数据包发生显着变化,这很容易成为一种欺骗尝试。这确实需要保留更多的状态信息,并且由于路线可能会改变,因此并非万无一失,但通常具有足够的指示性。

路线检查

如果您有多个活动的上行链路,那么您还可以验证数据包是否在正确的接口上进入。存在一个称为反向路径转发 ( RPF ) 的标准。简而言之,每次在接口上接收到数据包时,路由器都会检查其路由表并确定该接口是否是该源地址的正确接口。也就是说,如果路由表显示发往 144.152.10.0/24 的数据包通过接口 ge-0/0/18 传输,并且它在接口 ge-0/0/20 上接收到来自 144.152.10.5 的数据包,那么它可能是被欺骗,应该被删除。

定义欺骗数据包

首先,有一个 IP 范围所有权的概念。我会说任何不是来自 IANA(以及子公司和授权 ISP)的 IP 块的注册所有者或代表的任何内容都是恶搞。

一切都与路由有关

在谈论欺骗时,有几件事情需要考虑。第一个是您只能防止在数据包来源的网络上进行欺骗。由于 Internet 路由的动态特性,中转提供商无法过滤来自其他中转提供商的数据包。所有源过滤都必须来自 ISP 级别,因此除非我的 ISP 只允许我从分配的地址发送数据包,否则一旦将其从谷仓中取出,它就会留在外面。

防止跨网络欺骗的主要措施是大多数通信依赖于双向通道。特别是对于 TCP,协调序列号是一个挑战。1989 年的一篇论文强调了基本问题,尽管大多数现代系统现在生成完全随机的序列号。

Bogon 过滤曾经用于过滤掉某些地址空间,实际上它仍然适用于保留地址。但是,对于 IPv4,现在分配了所有地址空间。

即使有过滤并需要双向通信,您仍然不能保证不受欺骗。任何有权访问传输路由器的人都可以更改路由或插入数据包。

非对称路由可防止根据传出路径检查传入数据包的路径。对于烫手山芋路由的常见策略尤其如此数据包路径也可以在会话期间定期更改网络,因此 TTL 值也可能是高度可变的。这限制了执行检测的能力。

没有检测

您可以通过拒绝进入错误接口的地址来防止对您拥有的网络进行欺骗。您可以通过仅允许您范围内的源地址来防止网络上的人进行欺骗。普通最终用户缺乏路由功能会阻止双向通信,从而阻止大多数攻击场景。然而,没有什么能阻止其中一个“大男孩”在公告路径中获取使用 IP 地址的能力。他们中的许多人也可以影响该公告路径。

由于事情可以如此动态地变化,并且您可以收到由于路由损坏而没有回家路径的数据包,因此无法简单地判断数据包是否被欺骗。

欺骗数据包是具有虚假源 IP 地址的数据包为了将传入的数据包检测为欺骗,防火墙会尝试应用“本地规则”:如果数据包来自名义上与所谓的源地址不兼容的链接,它们会拒绝该数据包。例如,如果防火墙位于具有已知 IP 范围的内部网络和广泛的 Internet 之间,则防火墙将拒绝来自链接到 Internet 但声称内部网络范围内的源地址的数据包。

我不知道有任何防火墙试图发送 ICMP 请求以查看所谓的发送主机是否存在。首先,它不会判断该主机是否真的发送了数据包,只有存在。此外,存在许多主机但会阻止 ICMP 请求。最后,如果两个防火墙都应用这种“ping 以确保发送者存在”策略,那么它们很可能会进入令人震惊的无休止的乒乓狂潮。

TCP序列号可以看作是一种反欺骗措施:只有在三次握手完成后,连接才会被视为“完成”;只有当客户端能够从服务器看到答案时,这才可能起作用,这意味着源 IP 地址不能被欺骗“太多”。

底线:就整个情况而言,欺骗性数据包可以在发件人附近被阻止,而不是在收件人附近。ISP 应该阻止来自其客户的欺骗尝试。TCP 3 次握手可防止欺骗的基本用法。

从报告的角度来看,实时 mrtg 图或类似于 nagois 或 wireshark 流量分析的东西,您可以通过检查到目标网络的出站流量来有效地分辨欺骗与真实。在预测 tcp 序列号和窗口大小的情况下,欺骗并不容易,因此欺骗地址将接收比真实数据包更多的第一个数据包。