目录
一、概念
1、基本概念
- 局域网 LAN
在住宅、校园、办公楼等有限区域,互联多台计算机及设备;同网段下不同设备、不同系统可直接互通。 - ARP 地址解析协议
核心作用是将 IP 地址解析映射为 MAC 地址。局域网通信需同时封装源目 IP、源目 MAC 地址,数据包按 OSI 模型逐层封装后传输。 - MAC 地址
又称物理 / 硬件地址,是网络设备全球唯一标识,出厂固化在网卡中。共 6 字节十六进制,前 3 字节为厂商编号(IEEE 分配),后 3 字节为设备序列号,默认全球唯一。 - OSI七层模型

OSI七层模型的数据传输详解:
①应用层数据封装,将封装好的数据传输到传输层;
②传输层将应用层传递下来的数据包添加上相应的TCP头部信息(源端口、目的端口)后传递给网络层;
③网络层收到传输层传递的数据包后添加上相应的IP信息(源IP、目的IP)后将数据包传递给数据链路层;
④数据链路层收到数据包后添加上相应的Ethernet头部信息(源MAC地址、目的MAC地址)和FCS帧尾后将数 据帧传递给物理层;
⑤物理层收到数据包之后根据物理介质的不同,负责将数字信号转换成电信号、光信号、电磁波信号等;
⑥转换完成的信号在物理介质(网线,光纤,空气)中开始传递。
2、ARP欺骗图解

3、查看arp缓存表
局域网内两台主机在互相通信的过程中,会互相交换自己的IP地址和MAC地址,然后存储到本地的ARP缓存表中方便后续通信。
bash
C:> arp -a

二、运行环境
1、目标主机
| 名称 | 值 |
|---|---|
| 操作系统 | Windows 10 |
| IP | 192.168.179.162 |
2、攻击机1
| 名称 | 值 |
|---|---|
| 操作系统 | Windows |
| IP | 192.168.179.1 |
3、攻击机2
| 名称 | 值 |
|---|---|
| 操作系统 | Kali Linux 2023.4 |
| IP | 192.168.179.128 |
4、WebServer
| 名称 | 值 |
|---|---|
| 操作系统 | Windows Server 2008 |
| IP | 192.168.179.31 |
备注:WebServer可以时自己搭建的Web服务器。
三、局域网内ARP攻击
1、ARP单向欺骗
可对局域网目标主机进行欺骗,使其断网。单向欺骗能欺骗局域网内单台设备,也可欺骗网关;欺骗网关后,全网主机都会断网。与之对应还有双向欺骗模式。
Step1:开启目标主机,并查看是否能正常访问互联网。

Step2 :开启科来网络分析系统(下载来源),"实时分析"模块选择对应的局域网

Step3 :打开"工具"界面的MAC地址扫描器,得到目标主机的MAC地址

检测结果:
| 类型 | IP地址 | MAC地址 | 网卡厂商 |
|---|---|---|---|
| 目标地址 | 192.168.179.162 | 00:0C:29:3E:61:D2 | VMware, Inc. |
| 网关地址 | 192.168.179.2 | 00-50-56-EB-0F-0A | VMware, Inc. |
| 科来运行地址 | 192.168.179.1 | 00:50:56:C0:00:08 | VMware, Inc. |
Step4:点击"数据包生成器",添加ARP数据包

Step5:在目的MAC地址和目的IP中输入目标主机的IP和MAC地址,源MAC地址任意输即可,源IP输入网关的IP地址。
输入前:

输入后:
①目的MAC地址:对谁攻击就填谁的MAC地址;
②源地址:随意写(避免被攻击方分析还原);
③目标IP地址:对谁攻击就填谁的IP地址;
④源IP地址:网关的IP地址(欺骗目标主机自己是网关)。

Step6:点击发送,勾选"突发模式"和"循环发送"(循环次数改为0);点击"选择"选择对应的网卡

Step7:点击"开始",即可发起攻击


目标主机已经断网!点击"停止"(停止ARP攻击)后,目标主机可恢复网络。

因此,单向欺骗也叫断网攻击。通过对比ARP欺骗前后状态,发现网关地址(192.168.179.2)的物理地址(MAC)不一样了。

2、ARP双向欺骗
双向欺骗属于中间人攻击,攻击机劫持主机与网关的双向流量。除流量劫持外,还可进行 DNS 劫持,修改域名解析结果,将用户访问的网页跳转至钓鱼网站。
攻击机双向伪造 ARP 包,欺骗目标机与网关的互信关系,同时开启路由转发,使目标机流量全部流经攻击机,实现中间人嗅探。
Step1:安装arpspoof(Kali中运行)
bash
# 下载 Kali 密钥
$ sudo wget -q -O - https://archive.kali.org/archive-key.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kali-archive-keyring.gpg
# 更新软件源
$ sudo apt clean && sudo apt update
# 安装 dsniff(包含 arpspoof)
$ sudo apt install dsniff -y --fix-missing
Step2:查看攻击机kali的MAC地址
bash
$ ip a

攻击机Kali的信息:
①MAC地址:00:0c:29:6b:18:b2
②IP地址:192.168.179.128
③网卡名称:eth0
Step3:用arpspoof进行双向欺骗攻击
bash
# 调用arpspoof对目标主机(192.168.179.162)和网关(192.168.179.2)进行双向欺骗
$ sudo arpspoof -i eth0 -t 192.168.179.162 -r 192.168.179.2

对比欺骗前后的MAC地址:

说明:在Kali中将欺骗指令按Ctrl+C停止。当停止欺骗后,目标主机能恢复正常。
Step4:开启端口转发功能,并再次实施ARP欺骗攻击
bash
#开启ip转发,关闭的话把1改为0
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
#查看端口转发是否成功,如果显示1则表示开启成功,显示0则开启失败
$ cat /proc/sys/net/ipv4/ip_forward
# 调用arpspoof对目标主机(192.168.179.162)和网关(192.168.179.2)进行双向欺骗
$ sudo arpspoof -i eth0 -t 192.168.179.162 -r 192.168.179.2

说明:此时靶机可以访问外网,但是靶机的ARP缓存表中的网关MAC地址已经变成了攻击机kali的MAC地址。

3、ARP欺骗------抓取图片
Step1:开启端口转发,并开启arp欺骗
bash
#开启ip转发,关闭的话把1改为0
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 调用arpspoof对目标主机(192.168.179.162)和网关(192.168.179.2)进行双向欺骗
$ sudo arpspoof -i eth0 -t 192.168.179.162 -r 192.168.179.2
Step2:安装driftnet
bash
$ sudo apt install driftnet -y
Step3:开启新的shell执行命令,该命令会自动打开一个shell窗口并获取目的主机所浏览的图片
命令格式:
bash
$ driftnet -i <网卡名>
bash
$ sudo driftnet -i eth0
# 自定义路径
$ sudo driftnet -i eth0 -a -d /home/kali
相关参数解读:
- -b:捕获到新的图片时发出嘟嘟声
- -i:interface选择监听接口
- -f:file读取一个指定pcap数据包中的图片
- -p:不让所监听的接口使用混杂模式
- -a:后台模式:将捕获的图片保存到目录中(不会显示在屏幕上)
- -m:number指定保存图片数的数目
- -d:directory指定保存图片的路径
- -x:prefix指定保存图片的前缀名
Step4:在目标机中的浏览器中浏览图片

当目标机图片被浏览时,在kali中,会自动保存图片到本地。

备注:此处为HTTP协议方式;当图片地址是HTTPS方式时,在kali中无任何反应。
4、ARP欺骗------获取账号密码
Ettercap 是基于 ARP 欺骗的局域网嗅探工具,适用于交换网络。可抓取局域网内明文传输数据,检测通信安全,拦截泄露的账号密码等敏感信息。
Step1:找一个网站(http协议的),且支持输入用户名和密码登录
httpbin.org HTTP Basic 认证(简单弹框登录)
bash
http://httpbin.org/basic-auth/user/passwd
Step2:开启对网卡的流量监控
bash
# 监控eth0网卡的流量
$ sudo ettercap -Tq -i eth0
参数说明:
- -T文本模式运行
- -q安静模式
- -i网卡,后接网卡名
Step3:再次访问网站------httpbin.org HTTP Basic 认证
- 账号:user
- 密码:passwd
弹出浏览器原生登录框,Base64 明文,ettercap/Wireshark 都能轻松解码。


Step4:在kali中查看登录的用户和密码信息

四、DNS劫持
Step1:修改DNS配置文件
bash
$ sudo vim /etc/ettercap/etter.dns
# 添加以下字段:
www.baidu.com A 192.168.179.31
Step2:打开kali机的ettercap工具
bash
$ sudo ettercap -G


Step3:将目标主机和网关分别添加到Target1和Target2中
说明:因双向欺骗的缘故,需添加两个组,即网关为一组,目标主机为二组。

Step4:开启插件


Step5 :选择DNS欺骗插件,点击开始按钮

Step5:在目标机中清空目标机的 DNS 缓存
bash
C:\> ipconfig /flushdns
Step6:访问目标机,验证劫持是否成功
bash
# 查看DNS是否被劫持
C:\> ping www.baidu.com

总结 :
通过 ARP 中间人欺骗配合 ettercap 的 dns_spoof 插件,目标机访问或 ping 百度域名时,域名解析结果被篡改,流量被劫持到攻击者指定的 192.168.179.31。