一:DNS 概述

在网络中,机器之间只认识 IP 地址,机器之间最终都要通过IP来相互访问。但是为了方便记忆,可以为 IP 地址设置一个对应的域名,通过访问域名,就可以找到对应的 IP 地址的网站。

1
2
3
4
5
6
7
8
9
10
11
12
ping baidu.com

正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=21ms TTL=54
来自 110.242.68.66 的回复: 字节=32 时间=20ms TTL=54
来自 110.242.68.66 的回复: 字节=32 时间=19ms TTL=54
来自 110.242.68.66 的回复: 字节=32 时间=21ms TTL=54

110.242.68.66 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 19ms,最长 = 21ms,平均 = 20ms

看似我们访问的是域名,而实际上是通过 IP 地址访问的百度。由 ping 命令,我们可以看出 baidu.com 到 110.242.68.66 的转换工作称为域名解析,域名解析需要专门的域名解析服务器来完成,DNS就是进行域名解析的服务器(Domain Name System 或者 Domain Name Service)。

二:DNS 原理

DNS 查询时,会先在本地缓存中尝试查找,如果不存在或者记录过期,就继续向 DNS 服务器发起递归查询,这里的 DNS 服务器一般就是运营商的 DNS 服务器。

  • 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
  • 第二步:当本地的域名服务器收到请求后,就查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询结果(域名对应的IP地址)返回。
  • 第三步:如果本地的缓存中没有该记录,则本地域名服务器就直接请求发给根域名服务器,然后根域名服务器再返回本地域名服务器一个所查询域(根的子域)的主域名服务器地址。
  • 第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级的域名服务器地址。
  • 第五步:重复第四步,直到找到正确的记录。
  • 第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

三:什么是 DNS 劫持

DNS 劫持又称域名劫持,是指通过某些手段取得某域名的解析控制权,修改此域名的解析结果,导致对该域名的访问由原 IP 地址转入到修改之后指定的 IP,其结果就是对特定网址不能访问或者访问的是假网址。

如果可以冒充域名服务器,然后把查询的IP地址设置为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站主页,这就是DNS劫持的基本原理。

DNS劫持其实并不是真的 “黑掉” 了对方的网站,而是冒名顶替、招摇撞骗罢了。

四:DNS 劫持危害

  • 钓鱼诈骗
    • 网上购物,网上支付有可能被恶意指向别的网站,泄密个人账户;
  • 网站内出现恶意广告
  • 轻则影响网速,重则不能上网

五:Ettercap 进行内网 DNS 劫持

  1. 准备欺骗页面,放在 /var/www/html 目录下并启动
  2. 配置 ettercap 工具配置文件
    • leafpad /etc/ettercap/etter.dns
    • 注释记录→添加记录→保存退出
  3. 设置 ettercap 的配置
    • ettercap -G 启动 Ettercap
    • 启动嗅探→ 设置eth0网卡 → 扫描主机 → 将网关与主机添加到target选项 → 选择ARP欺骗 → 选择 DNS spoof 欺骗模块 → 点击start 开始欺骗