一、什么是ARP欺骗
1.ARP协议
ARP(Address Resolution Protocol)是一种网络层协议,地址解析协议,用来将IP地址转化成MAC地址(局域网地址)
注:
Mac地址用于在网络中标识一个唯一的网卡,一台设备如果有一个或者多个网卡,则每个网卡都需要并存在一个唯一的MAC地址
MAC地址是唯一的,但IP地址不是唯一的,可多次分配,更改。
数据包分为:
请求包(广播):本机IP地址、mac地址+目标主机IP地址
应答包(单播):本机IP地址、mac地址+来源主机IP地址、mac地址
2.ARP 欺骗定义
ARP 欺骗(ARP spoofing)是一种网络攻击技术,通过发送伪造好的 ARP 数据包,伪装成网关使被攻击者误以为攻击者是其网关或其它设备,从而达到欺骗目标设备的目的。这样,攻击者就可以截获查看被攻击者发出的数据包,甚至可以修改、篡改数据包中的内容。
arp欺骗最主要的目的是截获数据
ARP欺骗攻击能导致网络连通性问题。
注:
网关并不是指具体的设备,路由器,计算机终端等各种各样的设备都可以是⽹关,⽹关就是数据必须经过的关⼝。正常情况下路由器是⽹关,但是在ARP欺骗的时候,攻击者终端就变成了⽹关,受害者的数据都流向攻击者。
3.ARP欺骗原理
ARP 欺骗主要基于 ARP 协议的工作原理。
ARP 协议是通过广播请求来获取目标设备的 MAC 地址的。当一个设备需要发送数据到另一个设备时,它会发送一个 ARP
请求,询问局域网内的所有设备,是否有指定 IP 地址对应的 MAC 地址。目标设备收到该请求后,会回复一个 ARP 应答,告诉请求者它的 MAC 地址。
ARP 欺骗利用了这种工作原理,攻击者会发送伪造的 ARP 数据包,将自己伪装成网关或其它设备。目标设备收到伪造的 ARP 数据包后,会将攻击者的 MAC地址映射到目标 IP地址上,并将后续数据包发送给攻击者。攻击者就可以截获目标设备发出的数据包,甚至可以修改、篡改数据包中的内容。此时,攻击者已经拦截了目标设备和网关之间的数据包传输,并可能对数据包进行抓包,修改或篡改等攻击。
同时,攻击者可以再发送伪造的ARP请求,将其它设备的IP映射到自己的MAC地址上,这样攻击者就可以中间人攻击,抓包,篡改等等。
也就是说,ARP 欺骗攻击通过伪造 ARP 数据包来破坏网络的正常通信,达到攻击的目的。
Arp 欺骗分为两种,一种是双向欺骗,一种是单向欺骗
单向欺骗:是指欺骗网关,可以截获从网关从受害主机的通讯内容,但是受害主机到网关的通讯是正常的。分别有三个机器 A(网关) B(server) C(server) 。A要跟C正常通讯。B给A说我才是C,此时A就把原本给C的数据给了B了,A修改了本地的缓存表,但是C跟A的通讯还是正常的。只是A跟C的通讯不正常。
双向欺骗:同时欺骗网关和受害主机,可以同时截获网关和受害主机双向的通讯内容。 从代码实现上讲,双向欺骗只是在单向欺骗的基础上换一个参数。,A(网关) B(server) C(server),A要跟C正常通讯.B对A说我是C,B对C说我是A,那么这样的情况下A跟C的arp缓存表全部修改了,发送的数据全部发送到B那里去了。
4.ARP欺骗的实现
ARP攻击实现过程:
1.攻击者扫描网络中的 IP 地址和 MAC 地址。
2.攻击者构造伪造的 ARP 数据包,其中包含网络中其他设备的 IP 地址和攻击者自己的 MAC 地址。
3.攻击者发送伪造的 ARP 数据包到网络中。
4.被攻击的设备接收到伪造的 ARP 数据包,并更新其 ARP 缓存表。
5.之后,被攻击的设备将数据包发送到攻击者控制的设备上,而不是真正的目标设备,因此攻击者可以截获网络流量并篡改数据包。
5.ARP欺骗的危害
1.使同一网段内其他用户无法上网
2.可以嗅探到交换式局域网中的所有数据包
3.对信息进行篡改
4.可以控制局域网内任何主机
6.ARP欺骗后可以选择进一步攻击
1.中间人攻击 :通过 ARP 欺骗攻击者可以成为网络中的中间人,收集网络流量并篡改数据包。
2.数据劫持 :攻击者可以通过 ARP 欺骗来获取网络中的敏感信息,如用户名和密码。
3.欺骗DNS :攻击者可以通过 ARP 欺骗来重定向 DNS 请求到攻击者控制的服务器上。
4.后门攻击 :攻击者可以通过 ARP 欺骗来在网络中放置后门,进一步控制被攻击主机。
5.分布式拒绝服务攻击 (DDoS) :攻击者可以通过控制多台设备进行 ARP 欺骗来发起 DDoS 攻击。
二、准备
1.kali虚拟机(攻击机)
2.win7虚拟机(靶机)
3.场景:两台设备需要在同一个局域网下,网关相同
主要参数:
-a 主机 :显示 arp 缓冲区的所有条目;
-H 地址类型 :指定 arp 指令使用的地址类型;
-d 主机 :从 arp 缓冲区中删除指定主机的 arp 条目;
-D 使用指定接口的硬件地址;
-e 以 Linux 的显示风格显示 arp 缓冲区中的条目;
-i 接口 :指定要操作 arp 缓冲区的网络接口;
-s 主机 MAC 地址 :设置指定的主机的 IP 地址与 MAC 地址的静态映射;
-n 以数字方式显示 arp 缓冲区中的条目;
-v 显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息;
-f 文件 :设置主机的 IP 地址与 MAC 地址的静态映射。
工具:arpspoof
语法
arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
参数
-i interface:指定要用于发送欺骗数据包的网络接口(eth0...)
-c own|host|both:控制是否将欺骗信息发送给目标主机或路由器,或者两者都发送。
(own表示仅欺骗目标主机;host表示仅欺骗路由器;both表示同时欺骗两者)
-t target:指定要欺骗的目标IP地址。
-r:用于在主机和目标之间进行双向ARP欺骗。
host:想要欺骗的主机的IP地址。
三、ARP欺骗模拟实验
ARP欺骗的工具arpspoof(kali本身自带不需要额外下载)
命令的使用可以参考博客:
ARP攻击--(ArpSpoof 欺骗工具)_arp攻击工具-CSDN博客
1.ARP断网
首先尝试用靶机ping百度
能ping通说明网络环境没问题,接下来就可以进行攻击了
可以通过欺骗win7的arp缓存表,导致win7不能上网,这是最常用的arp断网技术
注:
win7不能上网的原因是linux默认不转发数据,即 此时的kali不转发网关和win7之间的数据导致win7无法上网。
arpspoof -i eth0 -t 172.16.17.73 172.16.17.254
语法:
arpspoof -i 网卡 -t 目标IP 网关
也可以使用反向欺骗:
arpspoof -i 网卡 -t 网关 目标IP
接下来就可以攻击了,首先要查看win7的ip地址和网关
再输入arp -a 对照相应的MAC地址
接着查看kali的ip地址
接下来进行欺骗
然后再查看win7虚拟机的mac地址与kali一样说明成功
尝试ping百度
ping不通,说明断网了,接下来ctrl+c关闭
再去执行ping命令
发现又能ping通了
2.限制网速
使被欺骗的主机能够正常访问网站需要开启路由转发功能:
在使用arp欺骗前先开启Kali的IP转发:(开启后靶机不会断网)
echo 1 > /proc/sys/net/ipv4/ip_forward
查看是否开启:
cat /proc/sys/net/ipv4/ip_forward
/proc/sys/net/ipv4/ip_forward 是配置文件,默认内容为0,表示IP转发是关闭的,使用上述命令将该配置文件的内容改写为1,表示开启IP转发。
首先查看是否开启
发现未开启后执行开启命令
再次查询发现回显1
已开启
关闭路由转发功能
echo 0 > /proc/sys/net/ipv4/ip_forward
开启IP转发后 靶机访问网络需要经过攻击机的网卡,
于是攻击机限制自己网卡的速度或者转发的速度也就可以限制靶机。
使用工具tc限制网速(tc是通过限制自己网卡的速度来限制对方的)
限制网速200ms延时
sudo tc qdisc add dev eth0 root netem delay 200ms
取消限制网速200ms延时
sudo tc qdisc del dev eth0 root netem delay 200ms
参数:
qdisc:排队规则
add:添加
dev:设备(网卡)
root:root用户身份
netem delay:设置网络延时时间
这里我已经是root用户了,不用加sudo
限制网速200ms延时,使用arpspoof发现靶机被限速
证明攻击成功
3.嗅探流量
嗅探流量:
流量中包含着敏感数据,攻击者在不入侵你计算机的情况下获得敏感数据,这个过程叫流量嗅探。
也是先开启IP转发
开启IP转发后 流量会经过kali的主机而后再去到目标,
这时开启arpspoof进行欺骗后目标就不会断网,此时kali可拦截相关受害者主机相关信息,开启wireshark拦截受害者ping数据。
arpspoof -i eth0 -t 172.16.17.139 172.16.17.254
过滤来自靶机的流量:
ip.addr==172.16.17.139
4.嗅探图片
使用driftnet来嗅探图片,它可以展示流经网卡的图片,严格来说是把流经网卡的图片数据还原为图片,即win7上网看到的图片。
安装dirftnet
apt-get install driftnet
使用driftnet -i eth0 来窃取受害者网络中传输的图片,图片以小窗口的形式显示。
安装: sudo apt install driftnet
driftnet -help --获取使用文档
语法: driftnet [options] [filter code]
主要参数:
-b 捕获到新的图片时发出嘟嘟声
-i interface 选择监听接口
-f file 读取一个指定pcap数据包中的图片
-p 不让所监听的接口使用混杂模式
-a 后台模式:将捕获的图片保存到目录中(不会显示在屏幕上)
-m number 指定保存图片数的数目
-d directory 指定保存图片的路径
-x prefix 指定保存图片的前缀名
实时抓取图片
第一步,开启数据转发
echo 1 > /proc/sys/net/ipv4/ip_forward
第二步,arp欺骗
arpspoof -i eth0 -t 192.168.158.56 198.168.158.52
第三步,driftnet实时抓取图片
driftnet -i eth0 #eth0是要抓的网卡
太难用了,什么都没抓到
保存抓取下来的图片
操作同上,改变一下driftnet的命令
driftnet -i eth0 -a -d /tmp/win7
成功
5.嗅探访问的URL
webspy:使用webspy嗅探受害者访问了哪些网页。
操作同嗅探图片 ,然后使用webspy来抓,但是只能抓取一次。
6.dsniff 嗅探账密
当网络中出现了填写账号密码的数据时,dsniff工具就开始截获数据,-m参数会解析网络协议。
开启路由转发功能,使用arpspoof开启欺骗,然后使用dsniff来抓。
注意:dsniff不会实时显示结果,当在win7中输入quit的时候dsniff才会显示结果
dsniff -i eth0 -m
可以发现,当用户登录时成功获取到了账号和密码。
ftp>open 115.146.60.252
//尝试连接到IP地址为115.146.60.252的FTP服务器。
//这是FTP客户端用来初始化与服务器通信的标准命令。连接成功就能够登录到该服务器,并进行文件的上传、下载等操作
7.dns欺骗
dnsspoof启用DNS欺骗,如果是请求解析某个域名,dnsspoof会让该域名重新指向另一个IP地址(黑客所控制的主机),如果dnsspoof嗅探到局域网内有DNS请求数据包,它会分析其内容,并用伪造的DNS响应包来回复请求者。
由于dns查询是客户机向网关发起请求,所以如果要在局域网中实现DNS欺骗,前提仍然是arp欺骗。
arpspoof -i eth0 -t 172.16.17.139 172.16.17.254 //ip 网关