使用 Scapy 进行 ARP 欺骗。Scapy 如何重新路由流量?

信息安全 中间人 dns Python ARP欺骗 iptables
2021-08-14 22:40:35

背景:

我知道为了使用 Scapy 在网络中对受害者进行 ARP 欺骗,我们需要向受害者和网关路由器发送 ARP 回复数据包,其中包含正确的目标和源 IP 地址,但使用攻击者的源 Mac 地址,基本上说明攻击者是受害者的网关,也是网关的受害者,因此是中间人。攻击者还需要将 1 回显到 /proc/sys/net/ipv4/ip_forward 以启用 ip 转发

问题:

所以我的问题是,在arp毒化受害者和网关之后,受害者的流量如何重定向到路由器,路由器的响应流量如何重定向回受害者?攻击者是否需要更改 iptable 中的防火墙配置?比如在nat表的pre-routing链中,将受害者的流量tcp端口80、443重定向到网关IP,还将路由器响应包(src端口80/443)转发回受害者?

由于网络上的大多数示例都没有讨论他们的防火墙配置,所以我想知道是否为预路由链更改 nat 表也是管理 MITM 攻击的必要步骤。

例子:

https://www.youtube.com/watch?v=fkYd8MPzgts 关于这个示例视频的问题:攻击者究竟是如何使用 scapy 仅通过过滤 tcp 端口 80 来嗅探 dns 数据包的。由于在视频中攻击者没有显示任何防火墙(iptables)配置,我假设受害者的所有流量包括DNS查询数据包都发送给了攻击者,那么如果攻击者没有将流量转发到网关,受害者如何获得与google和twitter的连接/受害者?

有人可以解释一下吗?先感谢您。

1个回答

在这种情况下,Scapy 不会路由流量,也不会触及流量。当您在主机上启用 IP 转发时,它就变成了路由器。当主机接收到一个不是发往它自己地址之一的数据包时,它的内核将根据它的路由表路由数据包。由于来自受害者的流量的目标 IP 地址与攻击者的机器不匹配,因此在大多数情况下,这将导致流量被转发到攻击者的默认网关,该网关通常是网络的网关/路由器。

例如,攻击者执行了双向 ARP 中毒攻击。受害者认为攻击者的机器是路由器,路由器认为攻击者的机器是受害者的机器。受害者向 8.8.8.8 发送一个数据包,该数据包在攻击者的机器上接收。数据包不是发给攻击者的,所以它被发送到默认网关。来自服务器的响应行为相同;路由器会将寻址到受害者的数据包发送给攻击者。同样,它不是针对攻击者的,因此会再次转发。

您提到涉及的防火墙规则。干净的 iptables/nftables 设置具有所有链的默认接受。一旦在内核中打开转发,就没有任何东西可以阻止上述数据包的路由,除非添加了防火墙规则来阻止它。