http://p1.qhimg.com/t018242c4f7a2fdfd84.jpg




根据纵深防御的概念,一个保护重要服务的多层安全架构,在信息技术领域具有重要地位。基于此,在建设企业网络时,关键系统不能与其他系统在同一网络中。在这篇文章中,我们将结合实例,分析通过使用双网卡的跳板主机,攻击者如何无障碍的访问内部其他网络。


什么是路由?


确定不同网络中的设备如何相互通信的过程称为路由。通常由路由器来执行具体操作。路由器通过路由表将不同的数据包发送到各自的目的地。当然,路由功能不仅可以在设备中实现,比如路由器,也可以安装在操作系统中,在电脑中实现。

http://p4.qhimg.com/t01e713124510ed4ee8.png

根据上图中的例子,为了在192.168.1.0/24和192.168.10.0/24两个网络之间进行通信,就需要一个路由表。根据路由器里面定义好的规则,数据需要从192.168.1.0/24源网络发到192.168.10.0/24目的网络中去。

网络数据包会经历如下过程:

1.这个IP地址是否在本地网络中?

如果在,直接发过去,如果不在,将数据包发送到网关。

2.当路由器收到数据包,首先查看自己的路由表

我有目的IP地址或目的网络的路由规则吗?如果有,将这个数据包路由到目的地址。如果没有,发送到下一网关。

3.其它的路由器重复同样的过程

4.数据包最后到达的路由器负责数据包退出互联网机制。


什么是双网卡中转跳板主机?


http://p1.qhimg.com/t01b42781c4ee2af13e.png

通常,在正常访问网络的过程中,通过已经被攻破的计算机,有些网络我们也不容易进去。如果已经控制的计算机连接着多个网络,那么网络隔离就没有什么用,因为如果控制了这个主机,把这个主机做为跳板,就可以横跨多个网络,只要有这个中转跳板,各种防护方法,都形同虚设。通过这种双网卡中转跳板方式,攻击者在受影响的系统上执行路由,就可以访问到隐藏的网络。对新发现的网络的每一个请求都通过这个数据中转跳板来传输,这就像是一个隧道。

http://p7.qhimg.com/t01a6cf250f1235cf31.png

如上图,有一个设备有两个网卡,能同时访问到192.168.1.0/24和192.168.10.0/24两个网络。在正常情况下,这两个网络之间没有访问权限,除非定义了路由规则。根据这种结构,这个双网卡的用户,能访问到在DMZ区的一些服务。


攻破第一个数据中转跳板主机(双网卡主机)


根据我们的攻击方案,我们首先攻破了RD系统,并返回了meterpreter SHELL ,同时RD能连接到DMZ区。

http://p0.qhimg.com/t01e413eac5681d1893.png

然后,我们通过信息收集,确定了RD系统有两个网卡。如下图所示:

http://p6.qhimg.com/t01bba5f9bdd24cc971.png

攻击者已经获得了RD系统的权限,下一步用第二个网卡,攻击7.7.7.0/24网络。当然,对于攻击者,首先需要在RD上定义路由规则。

在Metasploit里,这非常简单。通过当前的meterpreter会话,输入下面的命令,就可以创建路由规则。

http://p0.qhimg.com/t01e0c02ee15bb4476a.png

根据定义的路由规则,只要ID是2的meterpreter会话一直在运行,攻击者在Metasploit 框架中,就可以访问到7.7.7.0/24网络。

然后,用一些后渗透模块,如arp_scanner,扫描7.7.7.0/24网络中的存活主机,发现了7.7.7.0/24网络中存在多个存活主机。

http://p5.qhimg.com/t01e2274d73ccced79f.png

如上图,发现名为JC的系统主机。

http://p0.qhimg.com/t0166e08cf61c23745c.png

通常,到这一步,会想到下面的问题;像arp_scanner这样的后渗透扫描模块,功能还不够用,能用nmap这样的扫描工具吗?


通过中转跳板,用nmap扫描远程主机


为了实现这个目的,Metasploit中的路由配置必须是存活的,同时这个配置在socks4代理下也要发挥作用。这需要用到另一个metasploit模块。

使用metasploit中的socks4代理模块,如下图:

http://p7.qhimg.com/t0166912014e7f713ef.png

在ProxyChains 工具的帮助下,通过TOR、SOCKS4、SOCKS5、HTTP或HTTPS传输的任何TCP数据都可以路由到目的地。这个隧道技术可以使用多个代理服务器。

http://p1.qhimg.com/t0191c0617692f274d9.png

在/etc/proxychains.conf文件的最后一行,在这里要设置socks4 代理服务器信息。

http://p8.qhimg.com/t01ab7e8fde4cef398b.png

在ProxyChains下执行nmap扫描是一个简单的过程,通过定义的代理,网络数据包会被传输到目的地。

http://p1.qhimg.com/t01ce1812158ea6ab2a.png

根据扫描结果,目标系统中运行着SSH和HTTP服务,在对目标进行攻击前,我们介绍另一种数据路由技术--“端口转发”。


端口转发


端口转发是建立数据跳板的基本步骤。此时,攻击者跨网段,还没法直接访问到隐藏网络中的服务,因为还没有建立双向路由。我们知道如何到达目标系统,并发送一个请求,但是我们的请求包得不到回应,因为目标系统不知道怎么返回给我们。

t017c42d6319ac3c4b8.png

基于这个原因,我们需要在本地开启一个端口,通过meterpreter会话,我们可以将本地的数据包发送到目的地,建立完整的连接。只要我们的meterpreter会话是存活的,这个路由就会一直存在。

有一点需要说明一下,我们用“run autoroute”建立的路由只对Metasploit框架本身起作用。如果我们想用kali下的其他工具,就需要使用端口转发或proxychains工具,而我们在这篇文章中建立的多跳板,大数据时候是为kali下的其他工具准备的。

我们可以使用portfwd模块来建立端口转发,这是Metasploit下的一个后渗透模块。

http://p5.qhimg.com/t0155a3190dc2e4c634.png

前面已经讲到,在ProxyChains和Nmap的帮助下,我们知道7.7.7.20主机上存在HTTP服务,80端口是打开的,下面我们通过,建立端口转发,访问7.7.7.2主机的80端口。

http://p2.qhimg.com/t01c30b938c4cc659ef.png

如上图,输入上面的命令后,我们访问本地的2323端口,实际上就是在访问7.7.7.2主机的80端口。

通过“portfwd list”命令可以查看当前存活的转发规则:

http://p9.qhimg.com/t01a21ec91412ec380d.png

在浏览器中访问7.7.7.20的80端口时,发现是一个“Eash File Sharing Web Server”服务。

t0190da564f49732fe9.png


通过数据中转跳板进行SSH暴力破解


从扫描结果,我们已经知道在7.7.7.20上运行着SSH服务,对SSH进行暴力破解是比较容易实现的。

使用SSH_enumusers模块就可以实现:

http://p5.qhimg.com/t01ba81490121b80804.png

除了Metasploit框架中的SSH_enumusers模块,我们同样可以用kali下的Hydra工具,需要在ProxyChains下运行Hydra,所有通信数据都会经过数据中转跳板(被控的双网卡主机)。

http://p6.qhimg.com/t01c36f52306b150ecc.png

如上图所示,破解出的SSH帐号是admin,密码是123456。同样,通过代理服务,用ProxyChains工具可以连接到远程的SSH服务。如下图:

http://p5.qhimg.com/t01a1eb0b5a01b24ef4.png


攻破第二个数据中转跳板主机(双网卡主机)


根据上面nmap的扫描结果,7.7.7.20主机上存在两个漏洞,分别是MS08_067漏洞和“Easy File Share”应用程序的BOF漏洞,两种方法都可以攻破目标主机,当然也可以通过上面的SSH。

通过MS08_067 + bind_tcp方式:

针对MS08_067漏洞,在Metasploit中有成熟的工具模块,该模块是“ms08_067_netapi”。要注意,在这里我们只能用bind_tcp载荷,因为我们没有定义双向路由,目标系统没法找到我们。但是我们可以找到目标主机,只要它开启一个端口能让我们连接就行,因此我们使用bind_tcp载荷。

bind_tcp和reverse_tcp的区别可以从下面的图中理解到:

http://p8.qhimg.com/t0126001adb6e066b52.png

如下,我们配置好参数,进行攻击:

http://p3.qhimg.com/t01d08d1e1ef2ccd5a3.png

通过“Easy File Share”BOF漏洞方式:

同样,需要设置为bind_tcp,Metasploit中有现成的漏洞利用模块,如下:

http://p8.qhimg.com/t01efeab2f8d35b2b84.png

在这里,我们的攻击数据流如下图所示:

http://p9.qhimg.com/t01b76e1eaed27a87d7.png

当我们攻破了7.7.7.20主机时,需要收集主机信息,发现该主机也是一个双网卡主机,就像RD主机一样,因此我们发现了第二个隐藏网络(8.8.8.0/24)。

http://p3.qhimg.com/t01ecf2836a62465fc1.png

继续收集信息,用arp_scanner扫描存活主机:

http://p7.qhimg.com/t01d0f64b8d3e9196b7.png

如上图,在8.8.8.0/24网络中发现4台主机。

同样,我们需要在JC系统上添加路由规则(至此,两个跳板主机上都分别添加了不同路由)。

http://p4.qhimg.com/t0160bf83ebe7cbbb79.png


数据跳两次(双网卡主机)


在第一波攻击中,我们已经建立了172.16.0.0/24网络到7.7.7.0/24网络的路由,而现在,我们在JC上收集信息时,又发现了一个网络(8.8.8.0/24)。

在当前的情况下,数据包从攻击者(172.16.0.20)发到JC主机(第二波攻破的主机),数据首先要发到RD主机(第一波攻破的主机),然后RD主机再将数据传送到JC主机。

如果攻击者(172.16.0.20)想将数据发送到8.8.8.0/24网络(第二个隐藏网络)的任何一个主机时,就必须建立一个新的路由规则。这主要是为了使用Metasploit框架以外的其他工具,我们必须新建一个socks4代理服务,用于连接两个跳板主机,并重新定义proxychains工具的配置文件。

例如,如果攻击者(172.16.0.20)要给8.8.8.9地址发送数据包,要经过以下两点:

RD:我不知道怎么访问到8.8.8.9,但我知道哪个系统能访问到它,我可以将数据发给它。

JC:我知道怎么将数据从7.7.7.0/24网络发送到8.8.8.0/24网络。

数据流如下图所示:

http://p6.qhimg.com/t01e96bd79354529ae5.png


牛逼的Proxychains工具


Proxychains工具能连接代理服务,并可以将数据从攻击者发送到第二个隐藏网络中。当然,还需要设置一下,为了能访问到8.8.8.0/24网络,在攻击端,我们还需要创建一个新的socks4代理服务(第一波攻击时已经建立了一个),不同的是,这次需要改一下端口(运行在不同端口上),在这里我们改成1081,第一次建的端口是1080。

http://p4.qhimg.com/t01449fec2b6cc13601.png

同时,在/etc/proxychains.conf中添加新的代理配置信息。通过激活动态链配置,确保能正确切换不同的代理服务。

http://p2.qhimg.com/t0182b7a687703ed460.png

通过一系列的配置,现在,用Proxychains工具通过多个跳板,就可以访问到8.8.8.0/24网络了,下面我们用nmap扫描一下8.8.8.9目标信息,如下图:

http://p8.qhimg.com/t012b8f57e075d31f56.png

正如上图你所看到的,数据包穿过第一次代理服务,又经过了第二次代理服务,最终,到达了目的地。查看扫描结果,发现8.8.8.9上vsftpd对应的版本存在漏洞

首先在Metasploit框架中设置好相关攻击参数,如下图,开始攻击:

http://p0.qhimg.com/t0187ca8901ebcf3116.png


综述


攻击者通过以下步骤,发现了2个不同的内部核心隐秘网络:

1.首先,攻击者攻破了RD主机,该主机和攻击机在同一个网络中。

2.然后,他了解到RD主机有2个网卡。

3.通过使用autoroute后渗透模块,在172.16.0.11上定义了一个路由规则。

4.攻击者对7.7.7.0/24网络执行ARP和NMAP扫描,发现了JC主机。

5.JC有两个不同的漏洞,分别是MS08_067和“Easy File Share”漏洞。

6.成功执行了MS08_067漏洞,得到了7.7.7.20的控制权。

7.收集JC主机信息,发现JC有2个网卡。

8.在7.7.7.20上添加了第二个路由。

9.对8.8.8.0/24网络执行ARP和NMAP扫描。

10.在名称为SK的8.8.8.9主机上发现vsftp漏洞。

11.结束。

http://p5.qhimg.com/t01fde9a18b409ecf7c.png

正常情况下,虽然攻击者的系统只能访问他所在的网络,但是通过攻击,结果是他最终又成功访问了2个隐藏的网络。


演示视频


为了帮助大家更好学习、理解,我按照步骤做了下面的视频:


防御措施


1.包含多个网卡,并提供DMZ访问权限的系统,应该从现有网络架构中清除。

2.DMZ区的系统最好只能访问DMZ区。



本文由 安全客 翻译 ,作者pwn_361

原文链接:https://pentest.blog/explore-hidden-networks-with-double-pivoting/