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
是沒有選擇的……
假設你在談論 Linux,
iptables
有一個mangle
表可以對傳出的 TCP 流量做各種瘋狂的事情。iptables
NAT 功能也可能會有所幫助,因為聽起來您確實想做“埠地址轉換”或“手動 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
是您唯一的選擇。