如何伪造 TCP 数据包的源端口?

如何伪造 TCP 数据包的源端口?

有没有一种简单的方法(或者是否有可能)在 TCP 数据包离开机器时重写它?
例如,如果我跑

telnet binfalse.de 22

它会寻找一个未使用的端口来离开机器。在这种情况下是46576

root@srv % lsof -i -P -n | grep telnet
telnet    10150   user    3u  IPv4 1159425      0t0  TCP 1.2.3.4:46576->87.118.88.39:22 (ESTABLISHED)

但现在我想重写这些数据包,让服务器认为请求来自 port 1337,或者类似这样。当然,我知道我不必期待在telnet会议中得到答案。

编辑:
当然,在1337另一个节目上正在听,所以告诉telnet说出来1337是没有选择的......

答案1

假设您正在谈论 Linux,iptables有一个mangle表可以对传出 TCP 流量执行各种疯狂的操作。 iptablesNAT 功能也可能有所帮助,因为听起来您确实想要进行“端口地址转换”或“手动 NAT”。

答案2

如果您确实使用该telnet协议(或原始 tcp 流),则可以使用nc -p <source_port>...-t协商 telnet 选项。我下面有一个终端服务器,它接受 telnet 连接tcp/2015,我将从tcp/31415

# Window 1
[mpenning@hotcoffee ~]$ nc -p 31415 -t 192.168.12.117 2015
????????????????

8024-1(config-if-Po2)#

核实...

[mpenning@hotcoffee tshark_wd]$ netstat -an | grep 31415
tcp        0      0 192.168.12.236:31415    192.168.12.117:2015     ESTABLISHED
[mpenning@hotcoffee tshark_wd]$

这假设您还没有侦听本地套接字tcp/31415...如果您已经在所需端口上绑定了本地 tcp 套接字,iptables这是您唯一的选择。

相关内容