1 DNS域名系统
DNS即Domain Name System 的缩写,是把主机域名解析IP地址的系统,解决了IP地址难记的问题,用相对好记的域名就可以对服务器进行访问,即使服务器更换了IP地址,我们依旧可以通过域名访问该服务器,这样能够使我们更方便的访问互联网。DNS域名查询请求与回应的过程可简单描述成以下五个步骤:1、网络用户的浏览器提出将域名转换为IP地址的请求;2、地址解析程序resolve生成查询报文;3、地址解程序将查询请求语句封装在UDP包中发送出去;4、DNS服务器查找到IP地址并生成相应报文;5、DNS服务器将查询结果封装到UDP报文中发回给查询者。
2 DNS欺骗原理
尽管DNS在互联网中扮演着如此重要的角色,但是在设计DNS协议时,设计者没有考虑到一些安全问题,导致了DNS的安全隐患与缺陷[2]。DNS欺骗就是利用了DNS协议设计时的一个非常严重的安全缺陷。首先欺骗者向目标机器发送构造好的ARP应答数据包,ARP欺骗成功后,嗅探到对方发出的DNS请求数据包,分析数据包取得ID和端口号后,向目标发送自己构造好的一个DNS返回包,对方收到DNS应答包后,发现ID和端口号全部正确,即把返回数据包中的域名和对应的IP地址保存进DNS缓存表中,而后来的当真实的DNS应答包返回时则被丢弃。
以用户访问新浪网为例,DNS服务器的域名映射表中有一条信息是:新浪网站的IP地址是119.75.217.109,如果此映射信息中的IP地址被篡改为192.168.83.128。当用户访问新浪www.sina.com.cn网站时,从DNS上解析回来的目的IP地址就变成了192.168.83.128,用户主机按照步骤向192.168.83.128发送请求,收到的确实恶意攻击或进入不希望访问的网址。
DNS欺骗的危害是巨大的,常见被利用来钓鱼、挂马等,这在用户访问自己的银行账户,在线购书网站甚至是网页电子邮件时显得尤为重要。通常情况下,除非发生欺骗攻击,否则你不可能知道你的DNS已经被欺骗,只是你打开的网页与你想要看到的网页有所不同。在很多针对性的攻击中,用户都无法知道自己已经将网上银行帐号信息输入到错误的网址,直到接到银行的电话告知其帐号,已购买某某高价商品时用户才会知道。
3 DNS欺骗测试
DNS欺骗也可以被称为DNS毒化,属于中间人攻击,实验过程中采用虚拟机来模拟DNS欺骗攻击。测试环境为两台虚拟机,一台装有Kali Linux系统(192.168.83.129)和另一台装Windows系统。(192.168.83.130)
Kali Linux是基于Debian的Linux发行版,设计用于数字取证操作系统,面向专业的渗透测试和安全审计,由Offensive Security Ltd维护和资助。Kali Linux预装了许多渗透测试软件,包括nmap、Wireshark、John the Ripper ,以及Aircrack-ng.用户可通过硬盘、live CD或live USB运行Kali Linux。
本实验用到的主要工具是Kali Linux预装的Ettercap工具,具体欺骗工程如下:
首先来看目标靶机IP地址为192.168.83.130,网关192.168.83.2 ping www.sina.com.cn 解析的IP地址为112.25.53.229,这时访问新浪,所指向到的IP地址是正确的。
接着在kaliLinux上用ettercap来进行DNS欺骗,首先查看kali linux的ip地址192.168.83.128 进入usr/ettercap路径下找到etter.dns配置文件
vi编辑配置文件etter.dns添加一条A记录,将 www.sina.com.cn 指向到本机IP192.168.83.130,保存并退出
编辑文件/var/www/html/index.html ,添加<html><h1>justkidding!</h1></html>字段,保存退出。使用命令serviceapache2 start开启apache服务。
使用ettercap开始欺骗:ettercap -i eth0 -Tq -M arp:remote -P dns_spoof/192.168.83.130// /192.168.83.2// 回车
接着我们在到受到攻击的主机上看一下:欺骗之前,pingwww.sina.com返回的地址为119.75.217.109,这时访问新浪,所指向到的IP地址是正确的。DNS欺骗攻击之后,可以看到,目标主机对域名sina的访问已经被指向到192.168.83.128,返回的这个IP地址是KaliLinux的IP地址,在浏览器中访问该域名便访问到事先搭建好的一台WEB服务器,显示just
kidding!
以上便完成了一次DNS欺骗攻击。