我使用 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 01
to的十六进制表示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 层帧的防火墙。