ARP欺骗和DNS劫持实验

原理

ARP (Address Resolution Protocol,地址解析协议),其作用是把IP地址转化成MAC地址

在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。这个目标主机的MAC地址就是通过地址解析协议ARP获得的

举个栗子:

1.你的电脑要访问 192.168.1.5,但不知道它的 MAC 地址

2.你的电脑会广播一个ARP请求:谁是 192.168.1.5?请告诉我你的 MAC 地址

3.局域网内所有主机都收到请求,但只有 192.168.1.5 回答:我是 192.168.1.5,我的 MAC 地址是 XX:XX:XX:XX:XX:XX

4.你的电脑就把这个映射关系保存到 ARP 缓存表(IP ↔ MAC)

以后再通信时,直接查缓存表,不需要重复请求

ARP协议特点:

  • 无认证机制:只要有人应答,主机就会相信
  • 基于广播:ARP 请求是广播帧,局域网内所有设备都能听到
  • 有缓存:缓存有一定的生存时间(Linux/Windows 下通常几分钟)

正是因为ARP无验证,攻击者可以伪造 ARP 响应,从而实施ARP 欺骗 → 中间人攻击 → DNS 劫持

ARP 欺骗的原理就是 伪造 ARP 响应,篡改目标主机的 ARP 缓存,使其把攻击机的 MAC 地址当作网关的 MAC,从而把流量导向攻击机

正常通信:
靶机 → (网关 MAC) → 网关

ARP 欺骗后:
靶机 → (攻击机 MAC) → 攻击机 → 网关

实验

攻击主机:kali2023虚拟机,IP为192.168.37.128

靶机:Windows10虚拟机,IP为192.168.37.131

网关地址:192.168.37.2

ARP单向欺骗

攻击者只向目标主机发送伪造的ARP响应包,将目标主机的IP地址和MAC地址对应关系改为自己的MAC地址。这样,目标主机就会将网络流量发送到攻击者的MAC地址,攻击者就能够获取到网络流量

用nmap命令查看当前网段的活跃主机,发现了靶机192.168.37.131

image-20250910093620863

解释nmap -sn 192.168.37.0/24

nmap -sn用于探测主机是否存活,不做端口扫描

192.168.37.0/24表示要扫描的网段

  • /24 = 子网掩码 255.255.255.0
  • 表示扫描 192.168.37.1 ~ 192.168.37.254 这 254 台可能的主机

Win10主机ping百度,发现ping得通能上网

image-20250910100920027

先查看一下靶机正常的IP地址和MAC地址对应表,在命令行下输入arp-a

image-20250910101526449

网关192.168.37.2和攻击机192.168.37.128的MAC地址不一样

使用arpspoof命令进行arp欺骗

1
arpspoof  -i eth0 -t <靶机IP> <网关IP>

image-20250910101949082

再次查看arp表,发现靶机和网关IP的MAC地址一样,欺骗成功

image-20250910102322272

再次ping百度发现已经ping不通了,靶机已经断网

image-20250910102854461

为啥单向欺骗时会断网?
单向 ARP 欺骗的本质就是:把靶机的 ARP 表“毒化”,以为“网关 = 攻击机”,让它找不到真正的网关,结果靶机发出去的包全进了攻击机的“黑洞”,没转发 → 通信中断 → 相当于 DoS 攻击

ARP双向欺骗

攻击者不仅向目标发送伪造的ARP响应包,还向网关发送伪造的ARP请求包,将网关的IP地址和MAC地址对应关系改为攻击者的MAC地址。这样,目标将网络流量发送到攻击者的MAC地址,攻击者将网络流量转发到网关,实现中间人攻击

首先开启kali的IP转发功能,保证流量正常转发,不让靶机断网

1
echo 1 > /proc/sys/net/ipv4/ip_forward

使用arpspoof进行双向欺骗

1
arpspoof -i eth0 -t <靶机IP> -r <网关IP>

这个时候win10可以进行联网,在win10主机中访问网站http://nm.people.com.cn/(需要使用http协议,信息在http协议中通常以明文形式传输,便于验证)在网站访问图片

使用drifnet来进行图片抓取,在kali上就能实时显示被攻击主机访问的图片

image-20250910112155053

也可以使用ettercap工具进行ARP双向欺骗

输入ettercap -G命令打开Ettercap工具,选择网卡eth0然后点击√进入工具

image-20250910112352316

点击右上角三个点然后点击Hosts然后点击Scan for host,待扫描完成后点击Host list,可以看到四个主机,第二个是网关,第三个是windows10

image-20250910112513469

选择攻击目标,点击windows10的ip地址,然后点击Add to Target 1 ,让其作为目标1,然后选择网关的ip地址,点击Add to Target 2,让其作为目标2

明确目标攻击方式:点击Mitm -> arp poisoning -> Sniff remote connections -> 确定

image-20250910112625698

工具就会抓取win10的数据包和网关的数据包,点击View–Connections可以看到所有截获的包

DNS劫持

本次实验要劫持的网站为批改网,网站为http://www.pigai.org

靶机ping批改网

编辑etter.dns文件,输入命令vi /etc/ettercap/etter.dns,在结尾添加

www.pigai.org A 192.168.37.128

在Ettercap工具下把win10当做目标1

image-20250910141620589

Ettercap Menu—>Plugins—>Manage Plugins,双击dns_spoof。下方显示框会显示dns_spoof插件已经启动,同时Plugin列表中dns_spoof左边会有一个*,表示插件被激活

image-20250910141719382

此时靶机继续ping批改网,发现IP已经变成攻击机的IP

image-20250910141941315

在Ettercap的显示框中会有dns消息提示,如下图所示。可以看到靶机实际ping的是攻击者的主机

image-20250910142232068

此时靶机上访问批改网,因为进行了dns欺骗,所以靶机每次访问www.pigai.org时把该域名的IP地址解析为192.168.37.128,所以靶机访问批改网等于访问192.168.37.128:80,也就是说只要靶机访问批改网都会跳到192.168.37.128:80,在靶机上登录批改网,DNS回显用户名和哈希加密后的密码

为了让靶机相信这是真的批改网,使用kali的setoolkit工具设置192.168.37.128:80网站,可以克隆批改网到192.168.37.128:80

输入命令setoolkit命令,会跳出选择选项,选择1、2、3、2

set:webattacks输入克隆的网站http://www.pigai.org,即批改网的网站

靶机访问批改网网站,成功访问,但是这个并不是真正的批改网,而是攻击主机创建的钓鱼网站,是攻击主机克隆批改网出来的,所以与批改网页面一样,用户以为是真的,然后输入用户名和密码进行登录

在攻击机上就可以抓取信息

注:后面这个批改网改为https,所以用set复现不了

参考:

网络攻防之ARP欺骗和DNS劫持实验

kali [DNS劫持] 实验(详细步骤)


猫猫🐱



© 2025 子非鲲 使用 Stellar 创建
共发表 48 篇 Blog · 总计 118.6k 字