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
解释
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得通能上网

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

网关192.168.37.2
和攻击机192.168.37.128
的MAC地址不一样
使用arpspoof命令进行arp欺骗
1 | arpspoof -i eth0 -t <靶机IP> <网关IP> |
再次查看arp表,发现靶机和网关IP的MAC地址一样,欺骗成功

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

为啥单向欺骗时会断网?
单向 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上就能实时显示被攻击主机访问的图片
也可以使用ettercap工具进行ARP双向欺骗
输入ettercap -G
命令打开Ettercap工具,选择网卡eth0然后点击√进入工具
点击右上角三个点然后点击Hosts然后点击Scan for host,待扫描完成后点击Host list,可以看到四个主机,第二个是网关,第三个是windows10
选择攻击目标,点击windows10的ip地址,然后点击Add to Target 1 ,让其作为目标1,然后选择网关的ip地址,点击Add to Target 2,让其作为目标2
明确目标攻击方式:点击Mitm -> arp poisoning -> Sniff remote connections -> 确定
工具就会抓取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
Ettercap Menu—>Plugins—>Manage Plugins,双击dns_spoof。下方显示框会显示dns_spoof插件已经启动,同时Plugin列表中dns_spoof左边会有一个*,表示插件被激活
此时靶机继续ping批改网,发现IP已经变成攻击机的IP

在Ettercap的显示框中会有dns消息提示,如下图所示。可以看到靶机实际ping的是攻击者的主机
此时靶机上访问批改网,因为进行了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复现不了
参考: