记一次 ARP 欺骗 + DNS 劫持攻击的尝试

文章目录

前置知识

用较为生动的语言来讲,我们把网络类比成一间屋子,屋子里坐着的每一个人都是一台主机,每个人都有自己的编号(IP 地址)和位置(MAC 地址)。假如说屋子里的 A 需要和 B 通信,A 已知 B 的编号为 13 但是不知道 B 的位置,因此 A 无法和 B 通信。此时 A 会在屋子里大喊“谁的编号是 13”并等待 B 的回复。正常来说,除了 B 以外其他人会对 A 的请求视而不见,只有 B 收到 A 的请求后将自己的位置告诉 A,随后两人就可以开始通信。

但是,这是出现了一个不怀好意的 C,当 A 发送请求的时候,C 就拼命地给 A 回复“我就是 13 号”以至于 A 根本听不到 B 给他的回复,因此 A 就会把 C 当作 B 并与之通信,C 便可以借机充当中间人实施攻击。

动手尝试

攻击前准备

本次攻击尝试中,攻击机与靶机均为使用 NAT 模式连接物理机的虚拟机。这样既可以使两台虚拟机连接到外部网络,又不会在攻击过程中造成流量泄露。

攻击机配置

  • 操作系统:Kali Linux
  • IPv4 地址:192.168.107.135
  • MAC 地址:00:0c:29:62:a9:97

靶机配置

  • 操作系统:Windows 10
  • IPv4 地址:192.168.107.139
  • MAC 地址:00:0C:29:B6:7E:52

网关配置

  • IPv4 地址:192.168.107.2
  • MAC 地址:00:50:56:f2:3a:1f

在开始攻击前,使用 arp -a 命令查看靶机 ARP 缓存中的 MAC 地址。此时,靶机中记录的 MAC 地址为正确的地址,测试用网址 example.com 也能够正常访问。

ARP 欺骗

在攻击机中使用 ettercap 工具,该工具可用于执行多种形式的中间人攻击,本次 ARP 欺骗以及 DNS 劫持都需要用到该工具。sudo ettercap -G 命令可用于打开该工具的图形化界面。

首先扫描局域网下的存活主机,并将网关作为 Target 1, 靶机作为 Target 2:

此时选择 ARP Poisoning 选项进行 ARP 欺骗攻击。这时再使用 arp -a 查看靶机上的 ARP 缓存就会发现,网关的 MAC 地址已经变成了攻击机的 MAC 地址。此时靶机再访问任何外界网站,流量都会首先通过攻击机。

DNS 劫持

在进行 DNS 劫持中,ettercap 会将攻击机作为一台伪 DNS 解析服务器,向靶机发送虚假的服务器地址。首先修改 /etc/ettercap/etter.dns 文件来添加规则。例如说,我们在文件中添加一行 * A 127.0.0.1,则 ettercap 会对靶机发送的任何解析域名请求返回本机回环地址 127.0.0.1

修改好后,启用 ettercap 的 dns_spoof 插件进行 DNS 劫持攻击。

这时就能发现,靶机断网了,因为任何通过域名访问外界的请求,都会被解析成 127.0.0.1。

但是不经过域名解析,直接使用 IP 地址连接的服务器则不受影响。