查看原文
其他

第33篇:DNS劫持攻击原理讲解及溯源分析的常规步骤

abc123info ABC123安全研究实验室 2023-02-12

 Part1 前言 

在世界杯举办期间,DNS劫持事件估计会和链路劫持事件一样,风险提升很多。上期分享了一篇《第32篇:某运营商链路劫持(被挂博彩页)溯源异常路由节点(上篇)》,本期就讲一下DNS劫持攻击的相关知识吧。关于DNS层面的攻击手段比较多,比如DNS劫持、DNS污染、DNS重绑定攻击、DNS反射放大攻击等等。一般认为DNS劫持攻击与DNS污染是两回事,DNS污染一般指的是DNS缓存投毒攻击,这个我们后续再讲。DNS劫持通过改变用户的域名解析记录实现攻击,即使用户访问的是正常网址,也会在不知情的情况下被引流到仿冒网站上,因此DNS劫持破坏力强,而且不易察觉。


 Part2 前置基础知识 

依照惯例,为了照顾一些新手朋友,首先讲一些前置的基础知识,否则始终理解不了DNS劫持的分析方法。


  • DNS解析过程

在分析DNS劫持攻击事件前,一定要先把DNS解析过程理清楚。网上对于DNS解析的流程图很多,但很多图画的不是很清晰明白,有的还有错误。ABC_123看了10几篇文章,选择了一张看起来清晰明了的示意图分享给大家。


网上的文章对于DNS解析后半程的“迭代查询”过程讲的都差不多,但是对于前期的“递归查询”部分说法不一。接下来我就重点讲讲“递归查询”部分吧。这里ABC_123给出自己的见解,欢迎大家批评指正。

大致流程应该是这样:当我们在浏览器中输入www.qq.com时,浏览器首先会检查浏览器自己的缓存记录中是否有此域名的dns解析记录;如果没有,接下来会去查找操作系统的DNS缓存记录;如果还没有,就会去本机的HOST文件去找;如果还没找到,浏览器会向我们电脑“本地连接”中的“TCP/IP参数”中设置的首选DNS服务器(本地DNS服务器)中发起域名解析请求,如果这个本地DNS服务器的本地区域文件与缓存解析的记录都没有找到,那么本地DNS服务器会替代我们的本地浏览器,将域名解析请求转发给全球13个根服务器去进行迭代查询。

后续的DNS迭代查询,网上的文章说法都比较统一,没有异议,我这里就不多讲了。其实真实的DNS解析过程比这个要复杂多的,如果细究起来,一个DNS本地缓存解析,就能写很长很长的一篇文章了。


  • 谷歌浏览器DNS缓存记录

打开chrome浏览器,输入命令chrome://net-internals/#dns,可以看到浏览器的DNS缓存记录,但是此功能默认是关闭的,需要开启相应选项才能用。


  • 操作系统DNS缓存记录

执行ipconfig /displaydns命令可以查看本地DNS缓存记录,输入ipconfig /flushdns可以刷新DNS缓存。


  • 使用指定DNS查询域名

如果在应急排查中,需要使用指定DNS服务器来查询域名的ip地址,可以用如下命令:

Windows系统:nslookup www.baidu.com 114.114.114.114

Linux系统:dig @114.114.114.114 www.baidu.com


 Part3 DNS劫持排查点 

前面我们弄清楚了DNS域名解析的过程,那我们也就知道攻击者可以在哪些地方去篡改用户的DNS解析记录了,接下来依次给大家讲一讲。

  • 本地HOSTS文件配置

网上传播的木马病毒,可能会修改HOSTS文件,强制将受害者电脑的百度、淘宝、银行等网站的域名解析到一个恶意IP上,实施DNS劫持攻击,HOSTS文件的位置是C:\Windows\System32\drivers\etc\HOSTS。如果一些攻击者想要盗取我们密码,他们可以做一个跟目标网站一模一样的页面,让用户登录,当用户输入完密码提交的时候就,用户名密码就被攻击者记录到了。


  • 本地连接的DNS配置

网上传播的木马病毒,可能会修改用户本地的“首选DNS服务器”配置,将用户的首选DNS服务器指向一个恶意的DNS服务器,攻击者可以操作此恶意DNS服务器,篡改用户的域名解析记录。


  • 路由器的DNS配置

如果用户将个人电脑设置了“自动获取DNS服务器地址”,那么这个DNS地址一般会从路由器上获取。打开路由器web管理界面,即可看到默认的DNS服务器地址。攻击者可以批量入侵用户的路由器,将路由器的DNS记录更改掉。读者可能会有疑问,现在的路由器一般外网访问不到,客户怎么会中招呢?举个例子,DNS重绑定攻击就可以做到外网打内网,这种攻击比较复杂,我们后续再讲。再比如说,假设酒店的总路由存在弱口令,一旦被攻击者猜解成功后,就可以将DNS地址更改掉。



  • 运营商强制DNS解析

如果前面2个步骤设置了DNS,但是本地看到的DNS和你设置的DNS完全不同,既不是电脑本机设置的DNS,也不是路由器设置的DNS,那就有可能是运营商强制指定了DNS服务器。这样运营商可以屏蔽用户对一些恶意网址的访问,当然,一旦用户欠费了,那么访问任意url,都会跳转到指定的缴费提醒界面。

本机使用的DNS服务器也可以通过这个URL可以查询:https://nstool.netease.com/


  • 域名账号被盗

域名管理员的密码设置得太过简单,被攻击者猜解到,攻击者也可能通过社工库查找到域名管理员的账号密码,从而登录后台,将域名解析记录修改掉。


  • 恶意DNS服务器或DNS被黑

用户自己设置的看起来很正常的DNS服务器也是可能出问题的,DNS服务器可能被攻击者控制,也可能是有相关权限的工作人员恶意修改了某些域名解析记录,导致了正常用户域名访问被解析到恶意ip上。


 Part4 应对方案及总结 

1.  本地安装杀毒软件,及时更新病毒库。

2.  加强域名账号密码的复杂度,防止密码被攻破。

3.  在客户端和递归DNS服务器通信的最后阶段中使用DNS加密技术,如DNS-over-TLS,DNS-over-HTTPS等。

4.  DNS重绑定攻击及DNS缓存投毒攻击是非常巧妙的,但理解起来有一定的困难,欢迎关注本公众号,后续会继续分享相关的技术文章。


专注于网络安全技术分享,包括红队攻防、蓝队分析、渗透测试、代码审计等

每周一篇,99%原创,敬请关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存