利用被入侵的路由器获取网络流量-华盟网

利用被入侵的路由器获取网络流量

华盟学院山东省第二期线下学习计划

 利用被入侵的路由器获取网络流量

 

 

  0x00 前言

  现在,对终端路由器进行流量劫持的方法很多,如DNS劫持等等,但是根据不同的渗透场景,如对电信级别的组织进行大范围攻击时,利用被入侵的路由器进行流量重定向则会显得更加高效。这种类似“核攻击”的攻击方法会导致X州市数字电视一样的后果。  

  0x01 介绍

  这篇文档详细描述了在最近试验中,使用边界路由器作为工具来捕获网络流量的方法 、步骤以及结果。

  在渗透测试场景中,人们经常会入侵一个组织的边缘路由器。这些路由器往往部署在公司防火墙外,而且缺乏保护。在某些情况下,被入侵的路由器可能会成为进一步攻击目标网络的一个跳板,但是真正的价值用被掌握的路由器用来嗅探组织内部进出的网络流量。

  这种使用GRE隧道和策略路由的技术最早在Phrack由Gauis发表的第56篇文章“Things to do in Cisco Land when you are dead” (http://www.phrack.com/show.php?p=56&a=10),Gauis的方法使用tcpdump修改的proof-of-concept(poc)程序,来在被嗅探的路由器和一台Linux之间建立一条GRE隧道。

  而Joshua Wright在他为SANS GCIH的实用鉴定课程中写的的论文:“Red Team Assessment of Parliament Hill Firewall”中使用了另一种方法,Joshua使用了另外一台思科路由器终结了GRE隧道,但他只设法捕捉到一个方向的流量:从该组织出站方向的流量。

  在本次这个试验中扩展了Joshua的方法,同样使用另外一台思科路由器来终结GRE隧道,但是从组织中透明地捕捉到了进出的流量。对这个技术进行扩展的主要因素是为了最少进行软件定制以及组件的需要。

  特别感谢Darren Pedley(Darren.Pedley@alphawest6.com.au)对路由器配置的协助以及对整个实验完整的检查。

  0x02 方法

  所选择的方法是,在目标路由器(“Target router”)和被黑客控制的中间路由器(“Attacker router”)之间建立GRE隧道。使用策略路由来把该组织中进出的流量通过GRE隧道重定向到中间路由器(Attacker router)中。流量在最终被目标路由器(Target router)传送之前,就已经被黑客控制的中间路由器(Attacker router)处理过了。

  本次测试了两种场景。第一个场景,被捕获的流量只是被中间路由器通 “反射”进了GRE隧道,如图1。这种方法有一个好处就是在路由器上配置简单,但是介绍以下出现的问题:

  为了方便捕获数据流量,必须嗅探中间路由器外端的端口(即中间路由器的tunnle隧道上的物理接口)。这种方法在非以太网络媒介中会难以实现。

  被捕获的流量是通过GRE报文封装的,就必须在执行IP解码之前对流量进行解封装。

利用被入侵的路由器获取网络流量 

  图1 – 场景1

  在第二个处理场景中,中间路由器被配置为在回传捕获流量给目标路由器之前,先把流量发传送给一台Unix工作站,如图2,这个脚本克服前面的两个缺点:

  对于中间路由器来说,可以使任意媒介的外部网络。

  流量转发给Unix工作站时已经解封装,则使用较少的处理过程就可以提取流量中有用的信息。

利用被入侵的路由器获取网络流量 

  图2 – 场景2

  0x03 步骤

  图3显示了在本次试验的网络拓扑。

利用被入侵的路由器获取网络流量 

  图3 - 实验测试拓扑

  实验设备

  目标路由器(target router)使用双以太网接口的Cisco 3600路由器,中间路由器(attacker router)使用双以太网接口的Cisco 2600路由器。这个实验同样适用于任何IOS系统的思科路由器,可能适用于其他支持GRE隧道和策略路由的路由器。

  邮件服务器是一台装有Linux的笔记本,网络嗅探设备是一台Solaris工作站,这些设备都是任意选择的。

  建立一条GRE隧道

  第一步,在对路由器进行基础的IP配置之后,就在目标路由器和中间路由器间建起GRE隧道,在实际环境使用这种方法时,目标路由器应必须首先已被入侵并可以远程配置,入侵目标路由器的方法以已经超出了本文的讨论范围。

  目标路由器配置:

利用被入侵的路由器获取网络流量 

  建立名称为tunnel0的隧道接口,分配本地IP地址192.168.5.1(虚拟的IP地址),外部以太网接口定义为本地tunnel隧道的终点,同时定义中间路由器的外部IP地址为tunnel隧道对端的终点。在中间路由器上配置类似的命令。

  中间路由器操作:

利用被入侵的路由器获取网络流量 

  到这一步,两台路由器间的GRE隧道已经建立了,不管这两台路由器间在互联网间相隔多少跳路由,GRE隧道都只认为经过了一跳路由。

  场景1中的策略路由配置

  在场景1中(见图1),我们在中间路由器tunnel0的接口上建立策略路由,并通过GRE隧道向目标路由器“反射”流量。

  中间路由器操作:

利用被入侵的路由器获取网络流量 

  访问控制列表100(acl100)匹配所有IP协议流量,route map策略抓取了所有匹配访问控制列表100的流量,然后发往192.168.5.1,也就是目标路由器上终结GRE隧道的地址。这条route map策略在tunnel0接口上应用。

  这样配置的结果就是,所有通过tunnel0接口到达中间路由器的流量,随后会通过tunnel接口(即tunnel隧道)返回给目标路由器。

  场景1中的Unix工作站初始化

  在场景1中,攻击者的Unix工作站在外部署在中间路由器的外部接口中,在这个实例中,Unix工作站的IP地址可以配置或不配置,因为工作站只需要被动地捕获网络流量。

  场景2中的策略路由配置

  在第二个场景中,我们在中间路由器tunnel接口上和在与Unix工作站互联的内网接口上建立了策略路由,来“反射”通过GRE隧道及Unix工作站内网接口传来的流量。

  中间路由器操作:

利用被入侵的路由器获取网络流量 

  策略路由“send-traffic-in”被应用在tunnel0接口上,这条策略路由将从tunnel所有到达的流量转发到Unix工作站的住IP地址的以太网接口上(192.168.3.2)。工作站通过缺省路由经将该流量转发回中间路由器上(192.168.4.1)。

  策略路由“send-traffic-out”被应用在中间路由器的内部以太网接口上(与Unix工作站互联的接口),它将从Unix工作站返回的流量通过GRE隧道全部转发回目标路由器。

  场景2中的Unix工作站初始化

  在场景2中的Unix工作站配置如下:

  Primary IP address(主IP地址): 192.168.3.2

  Secondary IP address(从IP地址): 192.168.4.2

  从IP地址是在同一物理网络接口上的虚拟地址。

  Default route(缺省路由): 192.168.4.1

  定义一个需要被捕获的流量

  接下来,在目标路由器上建立访问控制列表(ACL)来抓取需被捕获流量。

  在目标路由器上操作:

利用被入侵的路由器获取网络流量 

  这条访问控制列表匹配了所有SMTP协议(25/TCP)流量,定义规则来对进出的数据包进行匹配是非常有必要的,因为这条访问控制列表将被应用在目标路由器的所有接口上。

  在目标路由器上的策略路由

  最后,我们在目标路由器上建立策略路由,用来将感兴趣的流量通过GRE隧道发送。

  在目标路由器上操作:

利用被入侵的路由器获取网络流量

  定义的这条策略路由(capture-traffic)匹配了访问控制列表101(即所有SMTP流量),同时通过GRE隧道向中间路由器转发这些流量,这条策略路由需被同时应用在这台路由器对内、对外接口上。

  到现在,所有进出目标路由器的SMTP流量将通过GRE隧道被重定向到中间路由器上,流量(返程流量)到达中间路由器是通过GRE隧道、中间是根据标准的路由协议进路由转发由的。

  目标路由器上最终配置请见附录A,中间路由器在场景1和场景2中的配置可以分别在附录B和C中找到。

  0x04 结果

  在两个场景中,SMPT连接通过GRE隧道转移,成功地被UNIX工作站抓取。

  场景1中的抓包验证

  以下抓包片段显示了在场景1中,截取的SMTP会话建立过程(即三次握手)。

利用被入侵的路由器获取网络流量 

  第1条数据包显示客户端向邮件服务器发送TCP SYN包。

  第2、3条数据包显示这个SYN包从目标路由器发向了中间路由器,并返回到目标路由器。

  在第3条数据包之后,这个SYN包就被传送到了邮件服务器上了:这个包在抓包过程中没有显示。邮件服务服务器应答了一个SYN/ACK包:这个包在抓包过程中没有显示。

  数据包4和5显示了这个SYN/ACK包正在穿越GRE隧道。

  数据包6显示这个SYN/ACK包被返回到了邮件客户端。

  数据包7显示从客户端应答的ACK包(即三次握手过程中的最后一个数据包)发向邮件服务器。

  数据包8和9显示这个ACK包正在穿越GRE隧道。

  在第9个数据包之后,这个ACK包就已经被传送到了邮件服务器上,会话建立成功,随后的SMTP连接继续继续建立。

  更完整的抓包结果,以及第2条数据包详细的协议解码请见附录D。

  Scenario 2场景2的抓包验证

  以下抓包片段显示了在场景2中,截取的SMTP会话建立过程(即三次握手)。

利用被入侵的路由器获取网络流量 

  数据包1和2显示了客户端发往邮件服务器的TCP SYN数据包,由于被捕获的流量在去往Unix工作站时在同一接口上被路由了两遍(即中间路由器路由一次,Unix工作站缺省路由一次),所以这条(同时所有)流量在抓包显示被复制了二份。

  数据包3和4显示了邮件服务器发往客户端的SYN/ACK数据包。

  数据包5和6显示了客户端回复邮件服务器的ACK数据包(三次握手的最后一步)

  更完整的抓包结果请见附录E。

  0x05 结论及讨论

  透明度

  这种数据拦截的方法对于这个系统中的终端用户是完全透明的(见下面的部分),标准的traceroute追踪不能发现数据在GRE隧道重定向而带来的额外路由跳数,因为traceroute的数据包并没有被策略路由(即上文中提到的策略路由)所匹配。

  有这种可能,但是比较困难,就是编写一个基于TCP 协议,使用25号端口以及利用递增TTL值的traceroute程序,去发现已经增加的额外路由跳数。

  当然,通过检查目标路由器的配置来发现(是否被攻击)会更简单。

  延迟考虑

  在通过中间路由器路由器捕获重定向的流量会增加网络延迟,这种延迟的增加可以表示为:

  2n + m

  n代表流量从目标路由器到中间路由器间所花费的时间,m代表中间路由器(以及Unix工作站)处理这条流量所带来的时间延迟。

  在实验室场景中,发现m的值大约有10ms的延迟 - 详见附录F。

  n的值显得要更大一些,这种(流量重定向)技术应被限制在类似如SMTP, DNS域传送等一类流量非严格时间敏感的场景中使用。

  对流量进一步解码

  从被捕获流量中提取有用数据的联系就交给读者了,在标准的Unix工具集中,例如strings以及od命令都可以方便地处理这些数据。

  实用性

  在现实情况下使用这种技术,应该注意中间路由器(以及在场景2中的Unix工作站)可能会导致单点通信故障,如果任何一台设备出现故障,那么在3.7章节中的访问控制列表所匹配的流量(即目标流量)将不能被正常转发。

  0x06 附录

  附录A - 目标路由器完整配置(Target Router)

利用被入侵的路由器获取网络流量 

利用被入侵的路由器获取网络流量 

  附录C -场景2中间路由器完整配置(Attack Router)

利用被入侵的路由器获取网络流量 

  附录D - 场景1中的流量抓包

利用被入侵的路由器获取网络流量 

  对嗅探到的GRE数据包解码如下:

利用被入侵的路由器获取网络流量 

  这个GRE数据包使用Hex方式解码如下所示:

利用被入侵的路由器获取网络流量 

  附录E - 场景2中的流量抓包

利用被入侵的路由器获取网络流量 

  附录F - 延迟测试 测试了额外增加的流量处理时间的延迟测试,在实验室中使用ICMP ping对互联网上的客户端机器进行测试。

  在没有重定向/抓包时…

利用被入侵的路由器获取网络流量 

  在进行重定向/抓包时…

利用被入侵的路由器获取网络流量 

www.idc126.com

原文地址:https://hack.77169.com/201509/211311.shtm

本文由 华盟网 作者:怪狗 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论