DNS投毒
黑客只要伪造响应报文给暂存DNS伺服器,暂存DNS伺服器上就记录了错误的域名到IP地址的对应关系,然后暂存DNS伺服器把这个错误的对应关系发给先 前查询的用户计算机的浏览器,这样,您尽管在浏览器里输入的是www.91ri.org,可访问的确不是真正的IP地址,这个地址是黑客任意指定的。
原因:
1. 仅用ID实施真实性验证。
2.在DNS Request Message中可以增加信息,这些信息可以与客户机所申请查询的内容没有必然联系,因此攻击者就能在Request Message中根据自己的目的增加某些虚假的信息。
比如增加其它Domain Server的Domain Name及其IP Address。此时Client在受到攻击的Domain Server上的查询申请均被转向此前攻击者在Request Message中增加的虚假Domain Server,由此DNS欺骗得以产生并对网络构成威胁。
3.缓存。若再有Client请求查询此Domain Name对应的IP Address,Domain Server就会从Cache中将映射信息回复给Client,而无需在Database中再次查询。如果黑客将DNS Request Message的存在周期设定较长时间,就可进行长期欺骗。
DNS Cache Poisoning
一台DNS服务器只会记录本身所属域中的授权的主机,如果它想要知道其它的,在自身域以外主机的信息,就必须向信息持有者(另一台DNS服务器)发送请求,同时,为了不每次都发送请求,这台DNS服务器会将另一台DNS服务器返回的信息又记录下来。
攻击者有自己的域(attacker.net)和一个已被攻陷的DNS服务器(ns.attacker.net)。注意!我说的是被攻陷的DNS服务器,因为攻击者已经自定义了他自己的DNS服务器的记录,比如,记录可以是[url]www.google.com=81.81.81.81[/url]
1)攻击者向你的DNS服务器发送请求查询[url]www.attacker.net[/url]
2)你的DNS服务器不知道这台主机的IP地址,因为他不属于本身域,所有你的DNS服务器就会问此主机的所属域的DNS服务器。
3)这时被黑DNS服务器就会回复你的DNS服务器,在此同时它也会给出它所有的记录(包括连接[url]www.google.com[/url]的记录)
注意,这个过程叫做zone transfer.
4)这是你的DNS服务器还没有被麻痹。攻击者得到了自己的IP地址,但是他的目标不是得到自己网络服务器的地址,而是逼迫zone transfer进行以使你的DNS服务器麻痹直到其缓存不会被清楚或更新。
5)现在如果你再问你的DNS服务器关于[url]www.google.com[/url]的IP地址,它会告诉你172.50.50.50,这也正是攻击者的服务器所在!现在,攻击者就能为所欲为,例如挂马什么的……当然这也对google造成了相当的损失!
第一种方式:
redirecting the nameserver of another domain unrelated to the original request to an IP address specified by the attacker.
1. Dns服务器询问:what are the address records for subdomain.attacker.example? 【告诉服务器target的domain用的是attacker的nameserver,并告诉它attacker的nameserver用的attacker的IP】
【subdomain.attacker.example. IN A】
2. 攻击者回应:
【Authority section: target.example. 3600 IN NS ns.attacker.example.】
【Additional section: ns.attacker.example. IN A w.x.y.z】
3. 这样服务器就缓存unrelated authority information for target.example's NS-record (nameserver entry), allowing the attacker to resolve queries to the entire target.example domain.
第二种方式:
redirecting the nameserver of the attacker's domain to the nameserver of the target domain, then assigning that nameserver an IP address specified by the attacker【告诉服务器,attacker的domain使用target的nameserver,并告诉它target的nameserver的 IP是attacker的IP,这样就让服务器把这些信息存到缓存里】
1. Dns服务器询问:what are the address records for subdomain.attacker.example?
【subdomain.attacker.example. IN A】
2. 攻击者回应:
【Authority section: attacker.example. 3600 IN NS ns.target.example.】
【Additional section: ns.target.example. IN A w.x.y.z】
3, 这样服务器就缓存additional A-record (IP address) for ns.target.example。
攻击者就能resolve queries to the entire target.example domain.
DNS ID Spoofing
攻击者必须得到ID,且在真DNS服务器前回复。
【攻击流程如下:
①攻击方向目标反复发送伪造的ARP Request Message,修改目标机的ARP 缓存内容,同时依靠IP续传使Data经过攻击方再流向目的地;攻击方用Sniffer软件侦测DNS请求包,获取ID序列号和Potr;
②攻击方一旦获 得ID和Potr,即刻向客户机发送虚假的DNS Message,Client接收后验证ID和Potr正确,认为接收了合法的DNS应答;而Client得到的IP可能被转向攻击方诱导的非法站点,从 而使Client信息安全受到威胁;
③Client再接收DNS Server的Message,因落后于虚假的DNS响应,故被Client丢弃。当Client访问攻击者指向的虚假IP时,一次DNS ID欺骗随即完成。】
1)用户请求暂存DNS伺服器返回www.91ri.org的IP地址。
2)如果暂存DNS伺服器上没有www.91ri.org对应的IP地址,暂存DNS伺服器就会通过迭代的方法最后询问主要DNS伺服器。
3)在主要DNS伺服器还未返回给暂存DNS伺服器时,黑客趁此时间空隙,把错误的对域名到IP的应关系告诉暂存DNS伺服器,这就是给DNS缓存服务器的一次投毒。
4)暂存DNS伺服器回应给用户错误的域名到IP对应关系。
5)用户访问黑客任意指定的IP地址,比如指向矛盾网(矛盾网因此获得了非常高的流量,如果矛盾网想冒充网上银行也是可以的)。
因 为暂存DNS伺服器会在一段时间内发送多个DNS查询报文,所以为了使查询报文与响应报文匹配,在DNS的报头中使用了ID字段,响应的报头ID必须与 先前发出去的查询报头ID一致才会被暂存DNS伺服器收录,否则丢弃。所以,黑客若想投毒成功,必须猜中查询报文的ID号。DNS报头的ID号是16位2 进制,也就是有2的16次方=65536个ID号,这就是说黑客一次投毒的命中率是1/65536,不过只要攻击程序稍微优化一下,这个命中率可以缩小到 1/655。
http://241072.blog.51cto.com/blog/231072/54307
防御
Many cache poisoning attacks can be prevented on DNS servers by being less trusting of the information passed to them by other DNS servers, and ignoring any DNS records passed back which are not directly relevant to the query.
Secure DNS (DNSSEC) uses cryptographic electronic signatures signed with a trusted public key certificate to determine the authenticity of data.
对DNS服务器进行了合理的配置。这包括强制服务器检查其他非权威的服务器转发的DNS响应信息,并丢弃任何返回的与最初的查询不相关DNS响应记录。
检测:
1. 被动监听检测。即监听、检测所有DNS的请求和应答报文。因此在限定的时间段内一个请求如果会收到两个或以上的响应数据报文,则被怀疑遭受了DNS欺骗。
2. 主动试探检测。即主动发送验证包去检查是否有DNS欺骗存在。通常发送验证数据包接收不到应答,然而黑客为了在合法应答包抵达客户机之前就将欺骗信息发送给客户,所以不会对DNS Server的IP合法性校验,继续实施欺骗。若收到应答包,则说明受到了欺骗攻击。
防范措施有:
①在客户端直接使用IP Address访问重要的站点,从而避免DNS欺骗;
②对DNS Server和Client的数据流进行加密,Server端可以使用SSH加密协议,Client端使用PGP软件实施数据加密。
防护方案:
1. 进行IP地址和MAC地址的绑定。
预防ARP欺骗攻击。
DNS信息绑定。可以把DNS Server的MAC Address与其IP Address绑定,然后此绑定信息存储在客户机网卡的Eprom中。当客户机每次向DNS Server发出查询申请后,就会检测DNS Server响应的应答数据包中的MAC Address是否与Eprom存储器中的MAC Address相同,要是不同,则很有可能该网络中的DNS Server受到DNS欺骗攻击。
2. 使用Digital Password进行辨别
在不同子网的文件数据传输中,为预防窃取或篡改信息事件的发生,可以使用任务数字签名(TSIG)技术即在主从Domain Name Server中使用相同的Password和数学模型算法,在数据通信过程中进行辨别和确认。
DNSSEC
3. 优化DNS SERVER的相关项目设置
①对不同的子网使用物理上分开的Domain Name Server,从而获得DNS功能的冗余;②将外部和内部Domain Name Server从物理上分离开并使用Forwarders转发器。外部Domain Name Server可以进行任何客户机的申请查询,但Forwarders则不能,Forwarders被设置成只能接待内部客户机的申请查询;③采用技术措施 限制DNS动态更新;④将区域传送(zone transfer)限制在授权设备上;⑤利用事务签名对区域传送和区域更新进行数字签名;⑥隐藏服务器上的Bind版本;⑦删除运行在DNS服务器上的不 必要服务,如FTP、telnet和Http;⑧在网络外围和DNS服务器上使用防火墙,将访问限制在那些DNS功能需要的端口上。
4. 对DNS数据包进行监测
http://www.admin5.com/article/20120411/421875.shtml
http://www.shwglm.com/thread-86806-1-1.html?jdfwkey=kvwkm2
http://en.wikipedia.org/wiki/DNS_spoofing
来源:https://www.cnblogs.com/songhan/archive/2012/07/27/2611062.html