Tcp

如何偽造 TCP 數據包的源埠?

  • June 30, 2011

是否有一種簡單的方法(或有可能)在 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是沒有選擇的……

假設你在談論 Linux,iptables有一個mangle表可以對傳出的 TCP 流量做各種瘋狂的事情。 iptablesNAT 功能也可能會有所幫助,因為聽起來您確實想做“埠地址轉換”或“手動 NAT”。

如果您真的在使用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是您唯一的選擇。

引用自:https://unix.stackexchange.com/questions/15818