如何即时替换 udp 数据包?

如何即时替换 udp 数据包?

我使用 iptables 将流量重新路由到 netsed像这样,但它似乎将流量路由到另一个位置。

我这样使用 hexinject :

hexinject -s -i eth0 -c 1 -f 'arp' | replace '06 04 00 01' '06 04 00 02' | hexinject -p -i eth0

但 hexinject 的问题是它只是注入,它不会替换原始数据包,它只是发送另一个数据包。

我也使用过ettercap + etterfilter,但它似乎并不能取代流量:

if (ip.proto == UDP) {
   if (search(DATA.data, "\x1f\x0f\x00\x08\x00\x01")) {
      log(DATA.data, "/tmp/payload");
      drop();
      execinject("/bin/sed s/\x1f\x0f\x00\x08\x00\x01/\x1f\x0f\x00\x08\x00\x00/g' /tmp/payload");
      msg("caught!");   
   }
}

我想要做的是替换1f 0f 00 08 00 01to的十六进制表示1f 0f 00 08 00 00,只需将最后一位更改为零,但我无法让 iptables + netsed、hexinject 或 ettercap + etterfilter 工作。

这是一个可视化:

服务器尝试发送1f 0f 00 08 00 01给某人,程序发生更改,以便1f 0f 00 08 00 00改为发送。

接下来我可以尝试什么?或者也许我以错误的方式使用这些程序。

答案1

您可以使用 HexInject,只需添加防火墙规则即可阻止该特定数据包的转发。

简单又容易。

使用 IPTables 阻止发送至端口 53 的 UDP 数据包的示例:

iptables -A FORWARD -p udp --destination-port 53 -j DROP

如果你想在第 2 层进行过滤,你可以看看EB表

它是一种针对第 2 层帧的防火墙。

相关内容