TcpForward流量轉發(fā)工具
一款基于命令行實現的功能強大的TCP流量轉發(fā)工具,可用于后滲透過程中橫向移動。它能夠定向轉發(fā)數據包,打破內外網的限制,使用戶能夠攻擊內網中的特定主機或將數據包中轉到外網。此工具僅占用19KB的空間,非常小巧且沒有任何明顯的特征,是一款非常有用的滲透測試輔助工具。
工具簡介
工具提供三種轉發(fā)模式,正向隧道轉發(fā)模式,反向純流量隧道模式,雙向隧道轉發(fā)模式,這三種轉發(fā)模式通常是在網絡架構設計和部署中使用的,它們的使用場景各不相同,可以根據實際需要選擇適合的轉發(fā)模式。下面是對三種轉發(fā)模式的詳細描述:
- 正向隧道轉發(fā)模式
正向隧道轉發(fā)模式是一種將私有網絡中的數據通過公網隧道轉發(fā)到另一個私有網絡的方式。在這種模式下,發(fā)送方將數據發(fā)送到本地隧道接口,該接口將數據封裝為隧道協議,并將其發(fā)送到公網上的遠程隧道接口,然后遠程隧道接口將數據解封裝并轉發(fā)到目標私有網絡中。這種模式通常用于遠程訪問私有網絡資源,如 VPN 連接。
- 反向純流量隧道模式
反向純流量隧道模式是一種將公網上的數據通過隧道轉發(fā)到私有網絡的方式。在這種模式下,接收方先將要接收的數據發(fā)送到公網上的遠程隧道接口,接著本地隧道接口接收到數據后進行解封裝并轉發(fā)到目標私有網絡中。這種模式通常用于提供公網上的服務,例如 Web 服務器、郵件服務器等。
- 雙向隧道轉發(fā)模式
雙向隧道轉發(fā)模式是一種可以同時支持正向和反向轉發(fā)的方式。在這種模式下,本地和遠程隧道接口都可以發(fā)送和接收數據,因此可以同時進行雙向通信。這種模式通常用于需要同時支持遠程訪問和公網服務的場景,例如企業(yè)網絡和云服務之間的連接。
命令行幫助文檔如下:
| 參數名 | 描述 |
|---|---|
| ListenPort | 指定轉發(fā)服務器偵聽端口 |
| RemoteAddress | 指定對端IP地址 |
| RemotePort | 指定對端端口號 |
| LocalPort | 指定本端端口號 |
| ServerAddress | 指定服務端IP地址 |
| ServerPort | 指定服務器Port端口號 |
| ConnectAddress | 指定連接到對端IP地址 |
| ConnectPort | 指定對端連接Port端口號 |
總之,選擇適當的轉發(fā)模式取決于應用場景和需求。正向隧道轉發(fā)模式用于訪問遠程私有網絡資源,反向純流量隧道模式用于提供公網服務,而雙向隧道轉發(fā)模式則可以同時支持這兩種用途。
使用方式
- 正向隧道轉發(fā)模式
當處于正向隧道模式下,用戶訪問本機的8888端口則流量將被轉發(fā)到遠端的8.141.58.64:22地址上,此時如果使用SSH連接本機的8888端口相當于連接了8.141.58.64的22號端口。
Shell> TcpForward.exe Forward --ListenPort 8888 --RemoteAddress 8.141.58.64 --RemotePort 22 [*] 正向隧道模式 [+] 本機偵聽端口: 8888 [+] 流量轉發(fā)地址 8.141.58.64:22 Shell> ssh root@localhost -p 8888 root@localhost's password:
- 反向純流量隧道模式
當處于反向純流量隧道模式下用戶需要做兩件事,服務端需要在本機運行,客戶端需要在內網中的一臺主機上運行。
服務端運行偵聽命令,執(zhí)行后本地將偵聽9999端口等待客戶端連接。
Shell> TcpForward.exe ReverseServer --ListenPort 9999 --LocalPort 8888 [*] 反向純流量隧道模式 (服務端) [+] 偵聽端口: 9999 [+] 本機連接地址: localhost:8888
客戶端運行反彈命令,其中ServerAddress:ServerPort用于指定服務端地址以及端口號,其中ConnectAddress:ConnectPort則是內網中其他主機的IP地址。
Shell> TcpForward.exe ReverseClient --ServerAddress 127.0.0.1 --ServerPort 9999 \ --ConnectAddress 8.141.58.64 --ConnectPort 22 [*] 反向純流量隧道模式 (客戶端) [+] 服務端地址 127.0.0.1:9999 [+] 連接內網地址 8.141.58.64:22
如果你有幸獲得了內網一臺主機的控制權,而你想攻擊其他主機,當你建立了如上隧道,攻擊本機的127.0.0.1:8888則相當于在攻擊內網中的8.141.58.64:22這個地址,其實是在變相的攻擊,如上客戶端執(zhí)行后,服務端連接本地8888端口,則實際連接到了8.141.58.64:22端口上。
Shell> ssh root@localhost -p 8888 root@localhost's password:
- 雙向隧道轉發(fā)模式
當處于雙向隧道轉發(fā)模式下用戶需要做兩件事,服務端需要在本機運行,客戶端需要在內網中的一臺主機上運行。
不同于反向純流量隧道模式此模式主要用于連接帶有頁面的服務,例如連接遠程的3389遠程桌面,這類流量需要更加精細的控制,所以需要使用本隧道完成。
服務端偵聽地址。
Shell> TcpForward.exe TwoForwardServer --ListenPort 9999 --LocalPort 8888 [*] 雙向隧道轉發(fā)模式 (服務端) [+] 偵聽端口: 9999 [+] 本機連接地址: localhost:8888
客戶端執(zhí)行如下命令,主動連接服務端127.0.0.1:9999端口,連接成功后轉發(fā)8.141.58.64:3389的流量到服務端。
Shell> TcpForward.exe TwoForwardClient --ServerAddress 127.0.0.1 --ServerPort 9999 \ --ConnectAddress 8.141.58.64 --ConnectPort 3389 [*] 雙向隧道轉發(fā)模式 (客戶端) [+] 服務端地址 127.0.0.1:9999 [+] 連接內網地址 8.141.58.64:3389
此時通過遠程協助連接本機的localhost:8888端口則相當于連接了內網主機8.141.58.64:3389端口,實現直接訪問。
項目地址
https://github.com/lyshark/TcpForward
