APP下载

基于DNS协议和ICMP重定向的数据监听方法研究

2012-06-15徐国天

中国刑警学院学报 2012年3期
关键词:IP地址字节网关

徐国天

(中国刑警学院 辽宁 沈阳 110035)

基于DNS协议和ICMP重定向的数据监听方法研究

徐国天

(中国刑警学院 辽宁 沈阳 110035)

对基于DNS协议和ICMP重定向的数据监听方法进行了详细的论述,对监听的三个主要环节:ICMP重定向、截获并转发DNS数据报、监听通信数据并提取敏感信息进行了详细的研究,深入分析了监听各个环节截获数据报的基本格式以及转发过程中对报文的修改,得出利用DNS协议和ICMP重定向技术可对局域网内的特定主机实施数据监听的结论。

DNSICMP重定向 监听

数据监听是指捕获、分析网络中其他主机传输的数据包,从中提取出敏感信息。在交换式网络内,通常使用ARP欺骗实施数据监听。但随着360防火墙、ARP静态绑定、交换机端口绑定等措施的采用,这种方法受到有效限制。近年来,基于ICMP重定向的数据监听方法成为研究的热点,这种方法不受ARP欺骗防护措施的限制,可在交换式网络内实施数据监听。

攻击者通过发送ICMP重定向报文可以在受害者主机路由表中添加一条到达特定主机的路由信息,使得受害者发往特定主机的数据包被发往攻击者主机,进而攻击者可以从中提取出敏感信息,如聊天记录、账户数据。下图为在受害者主机上查看到的路由信息,第一条为正常的默认路由,它的优先级最低,当其他路由信息都不匹配时,主机会使用这条路由将数据包转发给网关(192.168.111.4)。第二条是攻击者添加的到达10.1.1.1这台特定主机的路由信息,它的优先级高于默认路由。受害者发往10.1.1.1的数据将发送给192.168.111.1,即攻击者主机,攻击者从报文中提取出敏感信息之后,再将它转发给网关。这样一来,在受害者没有察觉的情况下,攻击者成为了通信的“中间人”。

图1 特定主机路由

但这种方法需要预先通过ICMP重定向报文将特定主机路由信息添加到受害者主机路由表中,在无法预知特定主机IP地址的情况下,这种方法不能应用。为了解决这个问题,本文设计了基于DNS协议和ICMP重定向的数据监听方法。

1 ICMP重定向

ICMP重定向是指在特定情况下,当路由器检测到一台主机使用非优化路由时,会向该主机发送一个ICMP重定向报文,要求主机改变路由,同时路由器会把初始数据报向目的地转发。下面以图2为例说明ICMP重定向过程。

图2 ICMP重定向

图2的网络地址是192.168.8.0,子网掩码是255. 255.255.0,R1和R2路由器均可与因特网连通,正常情况下网络内所有主机的默认网关均指向R1路由器的内网接口,即192.168.8.254。网络内部主机发往因特网的数据包都要经过R1路由器中转。假设R1路由器的因特网链路突然异常中断,这时R1接收到主机1发往因特网的IP数据报,R1发现自己的链路出现异常不能转发这个IP数据报,并且它知道R2路由器可以转发这个IP数据报,于是它向主机1发出一个ICMP重定向报文,要求主机1将默认网关更改为R2路由器,同时将这个IP数据报转发给R2路由器,由R2路由器完成这个IP数据报的转发。主机1接收到ICMP重定向报文,发现这是默认网关R1路由器发给自己的,于是它信任这个ICMP重定向报文携带的数据,将自己的默认网关修改为R2路由器,主机1发往因特网的后续IP数据报就直接提交给R2路由器,由它来完成转发任务。

如果R1路由器的因特网链路得到了恢复,这个信息会通过动态路由协议(如RIP、OSPF)通知给R2路由器,R2更新自己的路由表之后发现到达因特网最优的路径是通过R1路由器,但网络内部主机并不了解这一信息,它们的默认网关仍然指向了R2路由器。于是R2在接收到主机1发往因特网的IP数据报时,会将这个IP数据报转发给R1路由器,由R1完成这个IP数据报的转发,之后R2向主机1发送一个ICMP重定向报文,通知主机1将默认网关更改为R1路由器。主机1收到这个ICMP重定向报文,发现这是当前的默认网关R2路由器发给自己的,于是它信任这个ICMP重定向报文携带的数据,将自己的默认网关修改为R1路由器,主机1发往因特网的后续IP数据报就直接提交给R1路由器,由它来完成转发任务。通过上面的分析,我们可以发现路由器是通过动态路由协议(如RIP、OSPF)来识别网络拓扑结构变化的,而主机是通过ICMP重定向报文来识别这种变化的,因此ICMP重定向报文在网络通信中发挥了重要的作用。

2 基于DNS协议和ICMP重定向的数据监听方法

主机在进行网络通信时(如浏览主页、收发邮件),首先向DNS服务器发送一个请求报文,请求将目标主机的域名解析为IP地址,在DNS服务器返回的应答报文中包含了目标主机的多个IP地址,之后主机会选择一个IP地址与目标主机通信。

基于DNS协议和ICMP重定向的数据监听流程如图3所示,整个攻击流程可以分为三个环节:(1)对客户机进行ICMP重定向,在客户机路由表中添加一条到达DNS服务器的主机路由,其中下一跳路由器为黑客主机;(2)黑客主机截获并转发DNS数据报,根据DNS应答数据报中的IP地址对客户主机实施多次ICMP重定向攻击,将到达这些IP的下一跳路由器均指向黑客主机;(3)黑客主机截获、转发客户机收发的IP数据报,从中提取出敏感信息(如账户、密码)。下面具体介绍重点环节。

图3 ICMP重定向攻击步骤

2.1 通过ICMP重定向在受害者主机中添加到达DNS服务器的路由信息

构造一个ICMP重定向报文发给受害者主机,在受害者主机路由表中添加一条到达DNS服务器的路由信息,其中下一跳路由器为黑客主机,这样一来,受害者发出的DNS请求报文将被提交给黑客主机。ICMP重定向报文如图4所示,这个数据包共70字节,由14字节的链路层数据、20字节的IP首部、8字节的ICMP首部、20字节的伪造IP首部和8字节的附加数据组成。

图4 ICMP重定向报文

在链路层数据中,目的MAC地址是受害者主机MAC地址,源MAC地址是攻击者主机MAC地址。此处源MAC地址不伪造成网关的MAC地址是为了不破坏交换机的MAC地址表。

因为网络内的主机只信任网关发出的ICMP重定向报文,攻击者需要伪造网关向受害者发送这个ICMP重定向报文,因此在IP首部中、源IP地址设置网关的IP地址,这样一来,受害者会误认为这个ICMP重定向报文来自默认网关,进而信任这个报文携带的重定向信息。目的IP地址设置为受害者主机的IP地址。length字段值为56。对IP首部20字节计算校验和,添入check字段。

构造8字节ICMP首部,第1字节是ICMP类型字段,5代表这是一个ICMP重定向报文。第2字节是代码字段,1代表这是一个重定向主机数据报。第3、4字节是校验和字段,校验范围包括ICMP首部开始的36个字节数据。第5-8字节是新的网关地址,这里填为攻击者主机的IP地址。受害者会将这个IP地址作为新的默认网关。

构造20字节假IP首部,其中源IP地址设置为受害者主机IP,目的IP地址为DNS服务器IP。其后是8字节附加数据,这8字节数据按照ICMP首部格式构造。这样一来,受害者会误认为这28字节数据来自自己发给DNS服务器的某个ICMP数据包,进而在自己的路由表中添加一条到DNS服务器的路由信息,其中下一条地址设置为黑客主机IP地址。

2.2 截获并转发DNS数据报

下面以受害者浏览www.shou.com主页为例进行说明。由于攻击者已经预先在受害者主机路由表中添加了一跳到DNS服务器的路由信息,因此受害者主机发给DNS服务器的请求报文被提交给黑客主机,黑客重新封装该报文之后将它转发出去。转发出去的数据包如图5所示。

图5 转发的DNS请求报文

报文包括14字节链路层数据、20字节IP数据、8字节UDP数据、12字节DNS首部和可变长度的DNS数据。

在链路层数据中,目的MAC地址修改为网关的MAC地址,源MAC地址改为黑客主机的MAC地址,使得该报文可以通过交换机正常传递给网关。

在IP数据中,源IP地址由受害者IP改为黑客IP,这样一来,DNS服务器会将应答报文返回给黑客主机,否则DNS应答报文会直接返给受害者。重新计算IP首部20字节校验和,添入check字段。UDP和DNS数据不进行任何修改。

DNS服务器收到这个请求报文,会认为这是黑客主机在请求查询www.sohu.com域名对应的IP地址,于是将DNS应答报文返回给黑客主机,如图6所示。在该应答报文的DNS数据部分携带了sohu服务器的两个可用IP地址,即61.135.131.183和61. 135.132.65。黑客根据这两个IP地址构造两个ICMP重定向报文发送给受害者,在受害者主机路由表中添加两条到这两个IP地址的主机路由,下一跳地址均设置为黑客主机IP。这样一来,不管受害者选择哪个IP地址与sohu服务器通信,其收发的数据报都会经过黑客主机中转。

接下来,黑客重新封装这个DNS应答报文发送给受害者。目的MAC地址修改为受害者主机MAC、源MAC地址修改为黑客主机MAC、目的IP地址修改为受害者IP、重新计算IP首部20字节校验和、添入check字段。

图6 DNS应答报文

2.3 监听通信数据、提取敏感信息

受害者接收到DNS应答报文后会从中选择一个IP地址与目标主机通信,由于黑客已经预先在受害者主机路由表中添加了达到目标主机的特定路由,并将下一跳路由器指定为自己的IP地址。这样一来,受害者发给目标主机的通信数据都被提交给黑客主机,黑客可以从中提取出账户、密码等敏感信息。

用户在登录自己的邮箱、论坛、微博、网银时都需要在网页内输入账户和密码,输入的敏感信息会被封装在一个特定的报文内发送出去。截获这个数据报并从中提取出敏感信息是黑客最为关心的一件事情。图7给出的是黑客主机截获的包含受害者账户、密码的登录数据报。这类报文包括14字节链路层数据、20字节IP数据、20字节TCP数据和多个字节的HTTP数据。如何从中转的海量数据报中准确识别出包含敏感信息的报文呢?通过大量实验我们发现敏感信息通常使用POST方法发送,即数据报的HTTP数据部分前四个字节是“POST”,根据这个条件可以将包含敏感信息的报文过滤出来。

确定了包含敏感信息的通信报文,接下来如何从该数据报中提取出敏感信息呢?通过大量实验我们发现敏感信息通常包含在HTTP数据的content部分。这部分内容包含在HTTP数据的尾部,并且content与上一项内容之间存在一个空行,使用sniffer查看,即存在两个字节0x0a和0x0d,分别代表回车和换行。我们以此为条件就可以提取出content数据,即从HTTP数据的尾部开始向前读取,当识别出0x0a和0x0d时识别结束,将这部分内容保存下来,其中就包含了敏感信息。

图7 截获的IP数据报

2.4 记录连接状态

黑客可能利用ICMP重定向攻击对局域网内的多台主机实施数据监听,并且同一个受害者也可能与多个目标进行通信。黑客主机需要将截获的数据报转发给正确主机的正确进程,为此本文设计了如下图所示的状态转换图。其包含七个字段,从左至右依次是:源IP地址、目的IP地址、源端口、目的端口、协议类型、序列号和定时器。

TCP是面向连接的协议,在进行数据通信前,需要通过三次握手建立连接,在数据通信之后,使用四次挥手中断连接。第一次握手报文一定是由受害者主机发出,黑客截获这个报文之后会在连接状态表中添加一条新记录,记录下报文的源IP地址、目的IP地址、源端口、目的端口、协议类型、初始序列号、启动定时器。

当黑客接收到一个数据报,会从报文中提取出相关信息到连接状态表中进行匹配,如果和某条记录匹配,就使用对应的信息转发这个报文,并重置定时器。如果所有记录均不匹配,则丢弃这个报文。如果某条记录的定时器递减为0,说明这条连接在10秒中内没有使用,对应的TCP连接已经关闭。每隔一秒程序会检查一次连接状态表,将所有记录的定时器值减1,删除定时器为0的记录。

图8 连接状态表

3 总结

本文对基于DNS协议和ICMP重定向的数据监听方法进行了详细的论述,对三个主要环节:ICMP重定向、截获并转发DNS数据报、监听通信数据并提取敏感信息进行了详细的研究,深入分析了监听各个环节截获数据报的基本格式,以及转发过程中对报文的修改,并得出利用DNS协议和ICMP重定向技术可对局域网内的特定主机实施数据监听的结论。

1.Behrouz A.Forouzan.数据通信与网络[M].北京:机械工业出版社,2006

2.谢希仁.计算机网络[M].北京:电子工业出版社,2008

3.裴有柱.计算机网络技术[M].北京:电子工业出版社,2009

4.Behrouz A.Forouzan.TCP/IP协议族[M].北京:清华大学出版社,2003

猜你喜欢

IP地址字节网关
基于FPGA的工业TSN融合网关设计
No.8 字节跳动将推出独立出口电商APP
铁路远动系统几种组网方式IP地址的申请和设置
No.10 “字节跳动手机”要来了?
信号系统网关设备的优化
轻量级分组密码Midori64的积分攻击
天地一体化网络地面软网关技术及其应用
基于ETC在线支付网关的停车场收费系统设计
公安网络中IP地址智能管理的研究与思考
《IP地址及其管理》教学设计