如何黑入服务器(如何黑掉一个服务器)
我们已经了解过DDoS攻防的原理,探讨过最常见的DNS Request Flood攻击和DNS Reply Flood攻击。今天华安给大伙说说缓存投毒。
DDoS攻击者的“恶作剧”
Lizard Squad,可算是最近两年最活跃的黑客组织之一了。这个自诩为“DDoS攻击之王”的黑客组织在过去一段时间里,可是没少干坏事。2014年的圣诞节,Lizard Squad成功“调戏”了IT巨头微软和索尼,攻陷了PlayStation Network和Xbox在线服务,影响了全球数亿用户上网。
2015年2月,Lizard Squad又“调戏”了一把越南Google。越南网民在访问Google主页的时候,看到的不是Google搜索页面,而是一个男人的自拍照。
根据Google的DNS服务商OpenDNS所述,这名自称Lizard Squad成员的黑客通过将Google的域名服务器(ns1.google.com, ns2.google.com)修改成CloudFlare的IP(173.245.59.108, 173.245.58.166)来重定向访客。
不过Google受攻击可不止这一次,2015年4月,马来西亚的Google也遭受了黑客攻击。这次攻击和越南那次攻击如出一辙,不同的是,这次网民访问主页时,看到的不是自拍照,而是下面这个黑底红字的页面。
这些事件的发生,其实都是由于黑客篡改了域名和IP地址的映射关系,将用户访问的域名指向了其他IP地址。DNS篡改可能发生在各个环节,比如在客户端侧篡改、在授权服务器端篡改,或者在缓存服务器端篡改。今天我们就来聊聊比较常见的几种篡改方式。
路由器DNS劫持
黑客利用路由器的漏洞入侵受害者的路由器,篡改路由器中设置的DNS服务器的地址,将DNS服务器地址指向恶意的DNS服务器。这种篡改对于一个用户来说是最可怕的,一旦发生了这种情况,那么这个用户访问的每一个域名,可能都会被解析成其他恶意地址。
之前的TP-Link路由器的劫持事件,就是黑客构造了一个恶意Web页面,页面的功能是自动登录路由器并修改DNS地址。然后,黑客再构造一个URL发送给受害者,当受害者点击这个链接的时候就访问了恶意页面。攻击要想成功的前提是黑客必须知道TP-link路由器的登录账号和密码,才能完成恶意Web页面的构造。实际上,大多数人都会使用TP-link路由器厂商预置的默认密码,所以这就给了黑客实施攻击的机会,导致路由器的DNS服务器的IP地址更改为恶意的IP地址。
▲ 毒了你的路由器,让你上网云里雾里
这种劫持方式不容易被发现,受害者只要输入真实域名或者合法网站地址,黑客就可将其重定向到一个钓鱼网站上。一旦发生了这种情况,那么对于受害者来说后果是非常可怕的。受害者访问的每一个域名,可能都是假的。他看到的淘宝不再是淘宝,登录的网银也不再是网银,用户的各种敏感信息都会受到严重威胁。
对于这种方式,最有效的防御办法就是路由器设置安全系数高的密码,然后定期修改密码。另外,对于不明链接,也不要随便点击。
修改授权服务器
直接在授权服务器上修改域名和IP地址的映射关系,这是最直接,最暴力的一种方式。这种方式如果作为攻击的手段的话,需要黑客通过特殊手段获取授权服务器的管理员权限,难度系数其实是非常大的。
当然,也有另一种可能,就是出于某种特殊目的,管理员直接修改授权服务器上的域名和IP地址映射关系,这种类型比较少见,也不是我们能控制的,这里就不做详细介绍。
修改缓存服务器
这就是常见的DNS缓存投毒,是一种典型的DNS攻击,也是我们今天要讲解的重点。下面我们就一起来看一下黑客如何篡改缓存服务器。
▲ DNS缓存服务器:“就这样被你投毒”
前面我们也讲过,缓存服务器并不知道域名和IP地址的映射关系,一旦从授权服务器获取了映射关系后,会存储在内存中一段时间,直到记录老化。老化时间由DNS reply报文中的TTL决定。在这个有效期内如果再有客户端请求这个相同域名的解析,缓存服务器就会直接用缓存中的IP地址进行回应。老化以后,如果有客户端再次请求这个域名时,缓存服务器就会重新向授权服务器请求。
缓存投毒攻击就是黑客伪造了恶意的DNS reply报文,导致缓存服务器无意中将恶意的域名和IP地址映射关系存储到自己的缓存中。当客户端再通过缓存服务器请求这个域名解析时,就会被指向恶意主机。
为了达到攻击的目的,黑客伪造的DNS reply报文的源IP地址必须是授权服务器的源IP地址;目的端口也必须是缓存服务器的源端口;同时DNS reply报文的Query ID和DNS request报文的Query ID也要一致。
源IP地址和目的端口都很好伪造,但是Query ID伪造成功是有一定难度的。所以黑客伪造大量DNS reply报文时,会不断变换Query ID字段。可能就会有一个Query ID字段命中DNS request的Query ID。一旦先于授权服务器发送给缓存服务器,缓存服务器就会将黑客发送的伪解析IP地址作为解析地址,保存到本地的缓存表中。
后续当授权服务器再将真正的回应报文发送到缓存服务器时,缓存服务器也不会接收,直接丢弃。
在DNS缓存服务器中,如果仅仅gh1.ddos.com的解析地址是假的,这个其实也没有多大影响。毕竟黑客利用投毒的这个子域名gh1.ddos.com通常都是不存在的,正常客户端也不会请求这个不存在的子域名。
但是我们再仔细看一下下面这个DNS reply报文就会发现,蓝框内是对子域名gh1.ddos.com的解析地址,而红框内则是主域名ddos.com所在的DNS授权服务器和IP地址的对应关系。授权服务器在回答缓存服务器请求时,也会将这部分内容一起发送过去。而缓存服务器不仅仅存储子域名的解析地址,还会将主域名的解析地址一并更新到自己的缓存列表中。
这样后续再有客户端请求这个主域名时,也会一并被指向虚假的IP地址。
对于缓存投毒,Anti-DDoS系统采用会话检查模式进行防御。在防御过程中,检查DNS reply报文的会话五元组信息(源IP地址、目的IP地址、源端口号、目的端口号、协议),Query ID和域名是否和缓存服务器发出的DNS request报文一致。
▲ Anti-DDoS匹配会话信息,投毒报文被拒之门外
好啦,到今天为止,我们基于DNS类攻击和防御的连载告一段落了。从DNS报文基础到DNS类攻防原理,再到网络中如何利用DNS基础设施架构制造DDoS攻击,大家是不是有了一个全新的认识?
点击“阅读原文”,解密缓存投毒!