记一次 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 地址连接的服务器则不受影响。