宋平凡,刘嘉勇,华 伟(四川大学电子信息学院,四川成都610064)
一种基于DNAT技术的DNS重定向改进方案*
宋平凡,刘嘉勇,华 伟
(四川大学电子信息学院,四川成都610064)
DNS重定向是基于DNS欺骗实现的一种数据流重定向技术。文中首先总结了几种不同形式的DNS欺骗技术,重点分析了现有DNS重定向技术的实现方式及其所存在的缺陷:一是会直接暴露监测主机的IP地址;二是不能同时监测多个域名。然后介绍了NAT和DNAT的技术原理,并基于DNAT技术给出了一种针对现有DNS重定向技术实现缺陷的改进方案。最后给出了改进方案在Linux上的实现方法,对方案改进前后进行了对比,证明了改进方案的优越性。
DNS重定向 目的地址转换 监控 Linux防火墙
随着用户对自身的信息安全越来越重视,以及网络终端处理能力的提升,越来越多的网站与移动APP开始运用SSL/TLS等加密通信协议来对自己全部或部分的通信数据进行保护。应用加密通信协议可以有效防止基于被动嗅探技术的监听,这在为普通用户提供隐私数据保护的同时,也为某些不法分子规避有关部门的审查提供了温床。
要对SSL/TLS等加密流量进行审查,必须用到主动嗅探技术。贺龙涛等人研究了基于协议欺骗的主动嗅探[1],指出协议欺骗其实就是攻击者有目的地破坏网络访问过程中存在的映射关系,并根据所破坏映射关系的不同将可用于主动嗅探的协议欺骗技术分为四大类:ARP欺骗、路由欺骗、DNS欺骗,以及应用层欺骗。其中,ARP欺骗、路由欺骗仅适用于同一局域网内的主动嗅探,应用层欺骗不能用于加密传输协议的嗅探,这些技术都有一定的局限性。故此,出于通用性考虑,一般选用DNS欺骗来实现数据流的重定向,也简称为DNS重定向。
本文在分析现有DNS重定向技术实现方式及其缺陷的基础上,提出了一种基于DNAT技术的DNS重定向改进方案。
根据欺骗赖以成功的不同基础,可以将DNS欺骗分为:
(1)内应攻击
其成功依赖于DNS服务器存在某种漏洞。攻击者可以利用这种漏洞非法控制一台DNS服务器,而后直接操作域名数据库,将特定域名所对应的IP地址修改为自己指定的IP地址,从而使所有使用该DNS服务器的客户端,在查询特定域名时,都得到攻击者伪造的IP地址。在有些文献中,也将这种攻击直观地称为DNS服务器攻陷[2]。
(2)序列号攻击
其成功依赖于DNS协议本身在鉴别机制上存在的缺陷。攻击者在嗅探到对特定域名的DNS查询请求包后,可以根据其查询ID轻易伪造一个DNS应答包,并在其中填入自己指定的IP地址,只要赶在正常响应之前返回给发出该查询的DNS客户端,就能使该客户端的DNS缓存里特定域名对应的是攻击者伪造的IP地址。在有些文献中,也将这种序列号攻击直观地称为DNS ID欺骗[3]。如无法嗅探到DNS查询请求包,则还可以通过一种称为DNS缓存投毒[4]的技术来实现扩展的序列号攻击。
依前文所述,DNS重定向是一种基于DNS欺骗实现的网络数据流重定向技术。无论完成DNS欺骗时使用的是前述哪种具体形式,现有的中间人监测系统在实现DNS重定向时,都是将特定域名原本对应的真实IP地址替换成监测主机的IP地址,从而使被监控主机向该域名发送的所有数据包都会发送到监测主机而不是拥有该域名的真实服务器,其实现效果如图1所示。
图1 改进前DNS重定向技术的效果示意Fig.1 Effect of unimproved DNS redirection
这种将数据流直接重定向到监测主机IP地址的实现方式存在两个重大缺陷:
一是会把监测主机的IP地址直接暴露出来,如果被监控的不法分子拥有足够的安全意识与技术,较容易通过实际访问的IP地址察觉到异常,甚至还可能发生被监控主机反入侵监测主机的情况。
二是会使监测系统一次运行只能监控一个域名的加密通信。因为如果同一时间把两个或更多域名的加密流量都重定向到一台监测主机,则由于目的地址都是监测主机的IP地址,监测主机无法根据四元组信息区分接收的加密流量到底属于哪个域名,也就无法完成正常的代理转发功能。
2.1 NAT与DNAT
NAT(Network Address Translation,网络地址转换)是由IETF制定[5],并在1994年提出的一项标准,其设计初衷是为了缓解当时已经日益严重的IP地址紧缺问题。在进行转换处理时,如果是对数据包中的源IP地址和源端口进行转换,则称之为SNAT(Source Network Address Translation,源网络地址转换);反之,若是对数据包中的目的IP地址和目的端口进行转换,则称之为DNAT(Destination Network Address Translation,目的网络地址转换)。通过SNAT,可以让内网多台主机共享一个IP地址访问互联网,或是实现IP欺骗;通过DNAT,可以让外网主机访问内网主机所提供的服务,或是实现数据流的重定向与透明代理[6]。其中,DNAT的原理如图2所示。
图2 DNAT的原理示意Fig.2 Schematic of DNAT
2.2 基于DNAT的DNS重定向改进方案描述
基于前文的分析,本文结合DNAT技术对现有DNS重定向实现提出了一种改进方案。本方案对DNS欺骗的实现方式没有要求,主要对以下三点进行了改进:
1)将特定域名的真实IP地址篡改为一个不可达的地址,以此隐藏监测主机的IP地址,并增强监测行为的隐蔽性和监测系统的安全性。
2)将不同域名的真实IP地址篡改为不同的不可达地址,以此对发往不同域名的加密流量进行区分,使监测主机可以同时监控多个域名的通信,并分别处理。
3)为了能够让监测主机基于系统协议栈正常处理目的地址是不可达地址的数据包,在数据包接收后,上交协议栈前,增加了目的地址转换的处理流程。
为了防止本文所讨论的技术被不法分子滥用,在进行下面DNS重定向改进方案流程的讨论前,本文先做一些关于讨论背景和范围方面的限制:改进方案的使用者应当拥有被监控网络的一定管理权限。例如,使用者对被监控网络的DNS服务器有管理权限,可以直接修改DNS服务器的域名数据库记录;又如,使用者拥有网络设备和线路的管理权限,可以在主干网上使用分光器,可以使用路由器、交换机等网络设备的镜像口。
基于此,不失一般性,本文假设监测主机接在被监控网络上连网络设备的镜像口上,使用的欺骗技术是DNS ID欺骗,则改进方案的流程详细描述如下:
1)监测主机预先搜集一批IP地址,这些IP地址经过测试是不可达的,后文称之为虚拟地址。
2)对于所有被监控域名,监测主机需建立一个域名与虚拟地址之间一一对应的静态映射表,记为表A;建立一个虚拟地址与连接处理参数之间的静态映射表,记为表B。
3)监测主机嗅探到对某被监控域名的查询请求后,根据该域名在表A中查询得到对应的虚拟地址,将这个虚拟地址填入伪造的DNS响应包,返回给被监控客户端。
4)被监控客户端由于鉴别机制的缺陷,信任了这个响应包,建立了该域名与虚拟地址之间的错误映射关系。
5)被监控客户端把对该被监控域名的连接请求发往虚拟地址,由于默认路由的存在,该请求会经上连交换机,被一路发往被监控网络的出口网关以及上级路由器,但毕竟虚拟地址是不可达的,在转发过程中最后会因TTL耗尽等原因被丢弃。
6)监测主机可以通过嗅探从被监控网络的上连网络设备的镜像口获取被监控网络所有上行数据的一份拷贝。它在里面找到发往虚拟地址的连接请求后,首先将该连接请求的四元组信息(源IP、源端口、目的IP和目的端口)呆存到一个动态表,记为表C;接着经过DNAT处理,把该请求的目的IP(虚拟地址)、目的端口(真实端口)改为监测主机代理程序的监听IP和监听端口,最后将该请求转给代理程序。
7)代理程序首先根据所处理连接的源IP和源端口去表C中查询DNAT处理前的虚拟地址和真实端口,再根据虚拟地址去表B中查询该连接对应的处理参数,结合真实端口、连接处理参数,代理程序就可以对该连接进行完整的处理了。
类似于图1,改进方案实现后的效果如图3所示。
图3 改进后DNS重定向技术的效果示意Fig.3 Effect of improved DNS redirection
3.1 Netfilter/Iptables
Netfilter/Iptables是2.4.x以及后面版本Linux内核中自带的防火墙系统[7],它由Netfilter和Iptables两个相对独立的组件组成。
(1)Netfilter组件
它工作在内核空间,是Linux内核的一部分。它定义并存储了四个内置表(raw、mangle、nat、filter)和五个内置链(PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING)。其中,表是按照对数据包的操作类型区分的,一个表就是实现一类功能的所有规则的集合;链是按照挂接的HOOK点不同[8]来区分的,一条链就是在某个HOOK点(钩子连接点)上某个表所引用规则的集合。表和链实际上是Netfilter的两个不同维度,所有的四表和五链合起来就是内核用来控制数据包过滤处理的完整规则集。
(2)Iptables组件
它工作在用户空间,本质上是一个用以编辑Netfilter中数据包过滤处理规则的工具。Iptables有着严格的语法规则,其基本格式为: Iptables[-t表名]命令选项[链名][条件匹配] [-j目标动作或跳转]。
3.2 基于Netfilter/Iptables的改进方案实现
改进方案的实现可以分为两部分:一是DNS欺骗模块;二是DNAT转换模块。其中,DNS欺骗模块基本沿用了原有方案的实现方式,此处不做讨论。本节主要讨论DNAT转换模块的实现。
在Linux系统上,DNAT的实现当前有两种方式:一种是杨文潮等人提到的通过修改Linux网络部分内核源代码来实现[9];另一种则是基于Netfilter/Iptables实现方式。由于修改内核源码的实现方式,对于不同版本的系统内核,需要针对性地编写内核补丁,兼容性上不好。所以,本文重点讨论基于Netfilter/Iptables的DNAT实现方式。
Netfilter实质上工作在系统协议栈内部,所以数据包能被Netfilter处理的前提是它已经被送入系统协议栈。可是,经DNS重定向后的数据包,其目的地址(MAC、IP地址、TCP端口)均非监测主机的通信地址,如果直接用网卡的通信模式接收这些流量,那么由于数据包的目的MAC地址并非本机,数据包会被通信网卡直接丢弃;而如果使用网卡的混杂模式,虽然可以采集到数据包,但会直接提交到应用层,还是不会被送进系统协议栈,Netfilter也还是无能为力。
为了解决这个问题,本文基于多网卡实现了目的MAC地址转换功能:监测主机先用一张设置了混杂模式的网卡(简记为采集网卡)从网络设备镜像口将重定向后的数据包先采集下来,然后修改数据包的目的MAC地址为通信网卡的MAC地址,再用一张和通信网卡接入同一台内部交换机的网卡(简记为转换网卡)将数据包转发给通信网卡,由此完成目的MAC地址转换的功能,如下图4所示。
图4 目的MAC地址转换的流程Fig.4 Process of destination MAC address translation
上图所示流程中的一大关键是如何判定一个目的IP是否为虚拟地址。为了便于处理,本文找到了一个不可达的IP地址网段,并将所有监控域名都重定向到此网段内的不同IP地址,也就是前文中提到的虚拟地址。于是可以简单地根据目的IP是否属于预定的不可达IP地址网段,来判定该IP是否为虚拟地址。
图4中的“地址转换动态记录表”中主要保存地址转换前经过DNS欺骗改变流向的网络数据包的源IP、源TCP端口、目的IP、目的TCP端口,它在目的地址转换模块运行过程中逐步建立。
经过目的MAC地址转换后,数据包被转发到通信网卡。由于目的MAC地址是通信网卡自身的MAC地址,因此,通信网卡会将数据包上交给系统协议栈。此时,就可以用到Netfilter/Iptables的DNAT功能将接收数据包的目的IP(虚拟IP)、目的端口(真实端口)自动转为监测主机的监听IP、监听端口。
Netfilter/Iptables中实现DNAT用的内置表是nat。DNAT要在数据包进入Netfilter后,进行路由判定前完成,故此使用的内置链是PREROUTING。综上,实现DNAT时需使用Iptables配置的规则如下(假设虚拟地址网段为1.1.1.0/24,监听地址为192.168.1.111:1011):
iptables-t nat-IPREROUTING-p tcp-d 1.1. 1.0/24-j DNAT--to 192.168.1.111:1011
经过Netfilter/Iptables的DNAT转换后,数据包就可以顺利被路由表送到监测主机应用层,由通用代理模块继续处理。对于通用代理模块来说,虽然它从同一个套接字得到分属不同域名的流量,但它可以通过每个连接的源IP、源TCP端口去图4中的“地址转换动态记录表”查询该连接经DNAT转换前的目的IP,也就是虚拟地址,从而区分不同域名的流量。
由于Netfilter/Iptables在实现NAT时有一个特性:如果一个包被匹配,那么和它属于同一个流的所有包都会被自动转换。因此,当通用代理模块向被监测主机发送数据包时,Netfilter/Iptables的NAT功能也会自动将数据包的源地址信息由监听IP、监听端口转回虚拟IP和真实端口。由此,就实现了完整的目的地址转换。
基于DNAT技术,本文对主动嗅探中常用的
DNS重定向技术进行了改进。本文提出并实现的改进方案一方面隐藏了监测主机的IP地址,增强了监测行为的隐蔽性和安全性;另一方面也使一台监测主机可以同时监控多个域名。相比现有的DNS重定向技术有较大的优越性。实现本文所提出的改进方案的关键是要搜集一批IP地址作为虚拟地址,虚拟地址除了必须是不可达地址外,还要求具有统一的、易识别的特征。本文当前使用的是手工测试方式来搜集虚拟地址,效率不高。如何实现一种高效的虚拟地址搜集方法,是下一步要重点解决的问题。
[1] 贺龙涛,方滨兴,胡铭曾.主动监听中协议欺骗的研究[J].通信学报,2003,24(11):146-152. HE Long-tao,FANG Bin-xing,HU Ming-zeng.The Study on Protocol Spoofing in Active Sniffing[J].Journal of China Institute of Communications,2003,24(11):146-152.
[2] 闫伯儒,方滨兴,李斌等.DNS欺骗攻击的检测和防范[J].计算机工程,2006,32(21):130-132,135. YAN Bo-ru,FANG Bin-xing,LIBin,et al.Detection and Defence of DNSSpoofing Attack[J].Computer Engineering,2006,32(21):130-132,135.
[3] 孔政,姜秀柱.DNS欺骗原理及其防御方案[J].计算机工程,2010,36(3):125-127. KONG Zheng,JIANG Xiu-zhu.DNSSpoofing Principle and Its Defense Scheme[J].Computer Engineering, 2010,36(3):125-127.
[4] 田杰,谷大武,陆海宁.预防缓存中毒的DNS报文校验方案[J].通信技术,2010,43(8):146-148,151. TIAN Jie,GU Da-wu,LU Hai-ning.A Solution for Packet Validity Check Against DNS Cache Poisoning [J].Communications Technology,2010,43(8):146-148,151.
[5] Egevang K.The IP Network Address Translator(NAT) [S].RFC 1631,May,1994.
[6] 张金良.用iptables实现NAT[J].唐山师范学院学报,2007,29(2):74-76. ZHANG Jin-liang.NAT-HOWTOMaking Use of Iptables [J].Journal of Tangshan Teachers College,2007,29 (2):74-76.
[7] 景建笃,俞宁.Linux下NAT的实现机制及应用[J].微机发展,2004,14(9):4-6,88. JING Jian-du,YU Ning.Implementation Mechanism and Applications of NAT based on Linux[J].Microcomputer Development,2004,14(9):4-6,88.
[8] 杨刚,陈蜀宇.Linux中基于Netfilter/Iptables的防火墙研究[J].计算机工程与设计,2007,28(17):4124 -4125,4132. YANG Gang,CHEN Shu-yu.The Research on Linux Firewall based on Netfilter/Iptables[J].Computer Engineering and Design,2007,28(17):4124-4125,4132.
[9] 杨文潮,姜志坚,于洪章.基于NAT的网络安全技术研究[J].福建电脑,2005,(9):80-81. YANGWen-chao,JIANG Zhi-jian,YU Hong-zhang. The Study on Network Security Technology based on NAT [J].Fujian Computer,2005,(9):80-81.
SONG Ping-fan(1989-),male,graduate student,mainly working at network communication and network security.
刘嘉勇(1962—),男,教授,博士,主要研究方向:信息安全理论与应用、网络通信与网络安全;
LIU Jia-yong(1962-),male,professor,Ph.D.,principally working at theory and application of information security, network communication and network security.
华 伟(1967—),男,博士,副教授,主要研究方向:通信与信息系统。
HUAWei(1967-),male,Ph.D.,associate professor,principally working at communication information system.
A Modified Scheme for DNSRedirection based on DNAT Technology
SONG Ping-fan,LIU Jia-yong,HUAWei
(College of Electronic and Information Engineering,Sichuan University,Chengdu Sichuan 610064,China)
DNS redirection is a network redirection technology based on DNS spoofing.Firstly,this paper summarizes several forms of DNS spoofing,analyzes the current implementation of DNS redirection,including its disadvantages:one is that the current implementation would directly expose the IP address ofmonitoring computer to themonitored computer,and another is that the current implementation could notmonitormultiple domain names at the same time.Then,this paper describes the technical principles of NAT and DNAT,and based on DNAT technology,provides amodified scheme for DNS redirection.Finally,this paper proposes the implementation of thismodifeid scheme on Linux system,and the superiority of this scheme is verified via comparison of between the original scheme and the proposed one.
DNS redirection;DNAT;monitoring;Linux firewall
date:2014-09-05;Revised date:2014-12-10
TP393.08
A
1002-0802(2015)02-0223-05
宋平凡(1989—),男,硕士研究生,主要研究方向:网络通信与网络安全;
10.3969/j.issn.1002-0802.2015.02.022
2014-09-05;
2014-12-10