DNS欺骗

  DNS欺骗是这样一种中间人攻击形式,它是攻击者冒充域名服务器的一种欺骗行为,它主要用于向主机提供错误DNS信息,当用户尝试浏览网页,例如IP地址为XXX.XX.XX.XX ,网址为www.bankofamerica.com,而实际上登录的确实IP地址YYY.YY.YY.YY上的www.bankofamerica.com ,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这个网址是攻击者用以窃取网上银行登录证书以及帐号信息的假冒网址,DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。整个操作过程其实非常简单,下面我们将探讨DNS欺骗攻击是如何实现的以及如何抵御这种攻击。

  正常DNS通信

  域名系统(DNS)协议在RFC 1034/1035中是这样定义的:它被认为是互联网使用中最重要的协议之一。当你在浏览器输入网址时(例如http://www.google.com),就会向DNS服务器发送一个DNS请求以便找到与该网址相对应的IP地址。这是因为与互联网互连的路由器和设备并不知道google.com,它们只知道IP地址,如74.125.95.103。

  DNS服务器本身的工作原理是,存储IP地址到DNS名称映射的记录(称为资源记录)数据库,联系这些资源记录与客户端,并将这些资源记录与其他DNS服务器联系。整个企业和整个互联网的DNS服务器架构是有点复杂的,事实上,有很多关于DNS架构的专门书籍,但在本文中我们将不会涵盖DNS架构或者所有不同DNS通信类型的内容,不过我们将介绍基本的DNS通信,如图1所示。

  

  图1: DNS查询和响应

  DNS函数是属于查询/响应类型的格式,当客户端希望解析DNS域名为IP地址时,就会向DNS服务器发送一个查询,然后服务器会将对应的作为回复。从客户端的角度来看,看到的只有两个数据包:查询和响应。

  图2: DNS查询和响应数据包

  而当我们进一步考虑DNS递归问题时,这种情况就会变得更加复杂。由于互联网DNS结构的层次性,DNS服务器需要能够互相通信以便获取客户端发送的查询所对应的答案。我们的内部DNS服务器可能知道本地局域网络服务器的IP地址映射,但是我们不能指望内部DNS服务器知道全世界网络的IP地址映射。这也就是递归发挥作用的地方,就是当一台DNS服务器代表客户端的名义向另一台DNS服务器发送查询请求,也就是说,这种情况下,DNS服务器变成了客户端,如图3所示。

  

图3: DNS通过递归的查询和响应

  欺骗DNS

  执行DNS欺骗攻击的方法有很多,在这里我们将使用一种称为DNS ID欺骗的技术。

  每个通过互联网发送的DNS请求都包含一个独特的识别码,其目的在于辨识查询和响应,并将对应的查询和响应配对在一起。这就意味着,如果我们的攻击计算机可以拦截目标设备发送的DNS查询,我们就只需要做一个包含该识别码的假数据包,这样目标计算机就会根据识别码而接受我们发送的查询结果。

  我们将使用一个简单的工具分两个步骤来完成整个操作。首先,我们对目标设备进行ARP缓存中毒攻击以重新路由通过攻击主机的目标设备的通信,这样我们就能够拦截DNS查询请求,然后我们就能够发送欺骗性的数据包。这样做的目的是为了让目标网络的用户访问我们制造的恶意网址而不是他们试图访问的网址,如图4所示。

  

  图4: 使用DNS ID欺骗方法的DNS欺骗攻击

  有几种不同的工具可以用于执行DNS欺骗攻击,我们选择使用Ettercap,它包含windows和Linux两个版本,大家可以点击此处下载该工具。如果你稍微研究一下这个网址就会发现Ettercap包含很多除DNS欺骗外的功能,它可以用于很多形式的中间人攻击。

  如果你是在windows系统中安装Ettercap,你会发现它包含一个很强大的图形用户界面,不过对于DNS欺骗的情况,我们只需要使用命令行界面。

  在操作Ettercap之前,需要进行一些配置。Ettercap的核心是数据包嗅探器,主要利用不同的插件来执行不同的攻击。dns_spoof插件是用于本文示例的工具,所以我们需要修改与该插件相关的配置文件。在windows系统中,该文件位于C:\Program Files (x86)\EttercapNG\share\etter.dns以及/usr/share/ettercap/etter.dns,这个文件很简单并且包含你想要欺骗的DNS记录。对于我们而言,我们希望所有试图打开yahoo.com的用户被定向到本地网络的主机上,所以我们加入了一些条目,正如图5中所示。

 

图5: 添加欺骗性的DNS记录到etter.dns

  这些信息就是告诉dns_spoof插件这样的信息:当它发现针对yahoo.com www.yahoo.com或者的DNS查询请求时,就发送IP地址172.16.16.100作为响应。在实际情况下,172.16.16.100会运行某种web服务器软件向用户展现假冒网站。

  一旦文件配置好并保存后,我们就可以执行命令字符串来发动攻击了,命令字符串使用以下选项:

  -T –指定文本界面的使用

  -q –以静音模式运行命令,这样捕捉的数据包不会输出到屏幕

  -P dns_spoof –指定dns_spoof插件的使用

  -M arp –发起中间人ARP中毒攻击以拦截主机间的数据包

  // // -指定整个网络作为攻击的目标

  我们需要的最终命令字符串为:

  Ettercap.exe –T –q –P dns_spoof –M arp // //

  运行此命令将启动两个阶段的攻击,首先是对网络设备的ARP缓存中毒攻击,然后是发送假的DNS查询响应信息。

  

图6:Ettercap主动搜寻DNS查询

  一旦启动,任何用户试图打开www.yahoo.com都会被重新定向到我们的恶意网站。

  图7: 从用户角度看到的DNS欺骗的结果

  如何抵御DNS欺骗攻击

  DNS欺骗攻击是很难防御的,因为这种攻击大多数本质都是被动的。通常情况下,除非发生欺骗攻击,否则你不可能知道你的DNS已经被欺骗,只是你打开的网页与你想要看到的网页有所不同。在很多针对性的攻击中,用户都无法知道自己已经将网上银行帐号信息输入到错误的网址,直到接到银行的电话告知其帐号已购买某某高价商品时用户才会知道。这就是说,在抵御这种类型攻击方面还是有迹可循:

  保护内部设备: 像这样的攻击大多数都是从网络内部执行攻击的,如果你的网络设备很安全,那么那些感染的主机就很难向你的设备发动欺骗攻击。

  不要依赖DNS:在高度敏感和安全的系统,你通常不会在这些系统上浏览网页,最后不要使用DNS。如果你有软件依赖于主机名来运行,那么可以在设备主机文件里手动指定。

  使用入侵检测系统: 只要正确部署和配置,使用入侵检测系统就可以检测出大部分形式的ARP缓存中毒攻击和DNS欺骗攻击。

  使用DNSSEC: DNSSEC是替代DNS的更好选择,它使用的是数字前面DNS记录来确保查询响应的有效性,DNSSEC现在还没有广泛运用,但是已被公认为是DNS的未来方向,也正是如此,美国国防部已经要求所有MIL和GOV域名都必须开始使用DNSSEC。

  总结

  从攻击技术水平和恶意意图来看,DNS欺骗攻击是非常致命的中间人攻击形式,使用这种攻击技术我们可以利用钓鱼技术来窃取登录信息,利用漏洞安装恶意软件或者导致拒绝服务的情况。在下篇文章中,我们将分析“哈希值传递”攻击,看看它们如何被用于登录windows计算机,而不需要帐号信息。

DNS欺骗原理及工作工程分析相关推荐

  1. DHCP snooping 原理和工作工程:

    1.信任功能: 作用:DHCP snooping的信任功能,就是为了让用户从合法的DHCP 服务器上获取到IP地址. DHCP Snooping 信任功能允许将端口分为信任端口和非信任端口:信任端口正 ...

  2. ARP和DNS欺骗以及网站钓鱼分析

    实验目的 1.掌握ARP中间人攻击原理 2.掌握DNS欺骗原理 3.熟悉网站钓鱼的原理. 实验环境 VMware15.0.windows客户端.windows server2008.kali linu ...

  3. 投毒、伪装、攻击,DNS 欺骗和钓鱼网站如何一步步诱人掉入陷阱?

    [编者按]这篇文章将详细讲解DNS欺骗(DNS投毒)及钓鱼网站原理知识,并通过Ettercap工具复现某购物网站的钓鱼漏洞,本文的重点是让您对ARP欺骗.DNS欺骗和钓鱼攻击有一定认识.真心希望这篇基 ...

  4. 利用Kali Linux的Ettercap工具实施DNS欺骗攻击

    1 DNS域名系统 DNS即Domain Name System 的缩写,是把主机域名解析IP地址的系统,解决了IP地址难记的问题,用相对好记的域名就可以对服务器进行访问,即使服务器更换了IP地址,我 ...

  5. 网络攻防实验:ARP和DNS欺骗攻击

    一.实验目的 通过本实验,读者重点掌握以下知识: (1) 常见的ARP欺骗和DNS欺骗原理及实现过程. (2) 结合具体应用,分析ARP欺骗和DNS欺骗产生的原因. (3) ARP欺骗和DNS欺骗的防 ...

  6. python脚本实现~DNS欺骗攻击

    DNS     DNS即域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用 ...

  7. win7安装ettercap_使用ettercap进行dns欺骗和获取目标浏览的图片

    一.实验环境 攻击者:kali2020.1虚拟机 受害人:Win7虚拟机 二.基础知识 1.ARP协议:ARP协议是根据ip地址获取物理地址的一个TCP/IP协议.主机发送信息是将包含目标IP地址的A ...

  8. DNS欺骗及防御技术

    一.DNS工作原理 1.DNS:域名服务协议,提供主机域名和IP地址之间的转换. 属应用层协议,端口号为53.DNS数据通过无连接的UDP协议传递 2.过程: 被 二.DNS欺骗原理原理及实现 1.D ...

  9. 2.9 ARP和DNS欺骗

    1.预备知识:ARP和DNS欺骗原理 1.1ARP欺骗 ARP(Address Resolution Protocol,地址解析协议)涉及TCP\IP体系结构中网络层的IP地址和数据链路层的MAC地址 ...

最新文章

  1. 和12岁小同志搞创客开发:如何驱动LED点阵模块?
  2. Lucene之删除索引(备忘)
  3. 用 Javascript 获取页面大小、窗口大小和滚动条位置
  4. 分子排列不同会导致_原子或分子之间的作用力是什么力?
  5. Jackson注解学习参考
  6. urllib2介绍(转)
  7. 统计MySQL中某数据库硬盘占用量大小
  8. k8s极简史:K8s多集群技术发展的历史、现状与未来
  9. Java基础整理(二)
  10. savefiledialog对话框的取消和确定按钮分别返回一个什么值?_确定按钮该放在左边还是右边?...
  11. python中sn的意思_python学习笔记
  12. 免费资源下载:超酷超全的PSD按钮资源
  13. 解决idea使用jdbc连接数据库失败的方法(针对驱动导入失败)
  14. mysql byte存入数据库_byte 保存到数据库
  15. 《指导生活的算法》读后感
  16. 好用的linux分屏软件tmux安装及使用
  17. 调用百度ocr接口识别表格
  18. 数据分析之Quick bi
  19. win11任务图标变成白色处理方法
  20. kubernetes(k8s)——使用教程

热门文章

  1. ubuntu命令行启动浏览器_linux命令行下使用linux打开浏览器命令
  2. android 自定义长条进度条_Android 条形进度条
  3. Android制作圆形背景
  4. linux系统下的动态壁纸,桌面应用|动态壁纸给linux发行版添加活力背景
  5. Git原理杂谈之pull/push命令
  6. SQL查询cross join 的用法(笛卡尔积)
  7. 1 语言模型和词向量
  8. jsp使用URLRewrite实现url地址伪静态化
  9. 蓝桥杯---历届真题 题解
  10. OpenGL画自行车+菜单设置(附源码)