2015-04-23 61 views
0

說有一個客戶端程序保持在端口10000修改插座結構,將數據包發送到另一個IP

TCP套接字連接到服務器是否可以修改插座結構,如目的IP永久無需關閉或重新加載套接字和客戶端程序使用任何類型的系統調用,並且也不使用iptables

我想將數據包重定向到另一臺機器進行分析,而不會中斷連接。

假設我擁有root權限並且可以修改內核或添加內核模塊。

房東是Ubuntu Linux。

編輯:我很清楚,我不能在應用程序層做到這一點,所以我正在尋找方法來直接修改內核和TCP/IP堆棧,這可能嗎?這些信息必須保存在記憶中的某個地方。

回答

0

應用程序絕對沒有辦法通過標準API修改TCP套接字連接。這樣做會破壞與連接相關的大部分狀態,並且第三臺機器上的TCP肯定無法接受這些數據包。這就是說,你可以在IP層重寫目的地(通過iptables),讓它進入第三臺機器,它將捕獲它(再次在IP層),讀取和分析內容,恢復原始目的地,並轉發它。

如果第三臺機器實際上位於源機器和目標機器之間的網絡中,那麼您甚至不必執行任何IP目標重寫 - 您可以在數據包流經時捕獲這些數據包。這是一個「man in the middle」操作。

最後,您可以讓路由器將所有數據包轉發到與#3機器連接的以太網端口,然後捕獲(始終在IP層)正在廣播的數據包的副本。或者使用「啞集線器」(而不是「智能交換機」)將所有數據包轉發到所有端口,以連接源機器或目標機器#3。

任何數據包嗅探器(例如WireShark)將爲最後兩個建議。

相關問題