目录

简介

ARP报文

ARP流程

四种情况

ARP请求

ARP响应

ARP攻击原理

实战

ARP欺骗

环境

查看arp表

更新攻击机软件

使用ettercap进行攻击

查看劫持到的图片

ARP攻击防御

静态绑定

ARP防火墙

参考


简介

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址(MAC地址)的一个协议。划分到网络层或数据链路层,用在局域网内。

功能:完成主机或路由器IP地址到MAC地址的映射。

ARP高速缓存(arp表):IP地址和MAC地址的映射。

注:网络设备的接口有MAC地址,并不是一个网络设备仅有一个MAC地址,二层交换机这种设备没有MAC地址。

ARP报文
网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP中毒ARP报文格式

ARP报文的总长度为64字节,FCS(Frame Check Sequence,帧校验序列),俗称帧尾,即数据链路层的协定数据单元(帧)的尾部栏位,是一段4个位元组的循环冗余校验码,用来验证帧在传输过程中的完整性。

硬件类型:16位,2字节,用来定义运行ARP的网络类型。每个局域网基于其类型被指派一个整数。例如:以太网的类型为1。ARP可用在任何物理网络上。

协议类型:16位,2字节,用来定义使用的协议。例如:对IPv4协议这个字段是0x0800。ARP可用于任何高层协议。

硬件长度:8位,1字节,用来定义物理地址的长度,以字节为单位。例如:对于以太网的值为6。

协议长度:8位,1字节,用来定义逻辑地址的长度,以字节为单位。例如:对于IPv4协议的值为4。

操作码:16位,2字节,用来定义报文的类型。已定义的分组类型有两种:ARP请求(1),ARP响应(2)。

源硬件地址:可变长度字段,单位字节,用来定义发送方的物理地址。例如:对于以太网这个字段的长度是6字节。

源协议地址:可变长度字段,单位字节,用来定义发送方的逻辑(IP)地址。例如:对于IP协议这个字段的长度是4字节。

目的硬件地址:可变长度字段,用来定义目标的物理地址,例如,对以太网来说这个字段位6字节。对于ARP请求报文,这个字段为全0,因为发送方并不知道目标的硬件地址。

目的协议地址:可变长度字段,用来定义目标的逻辑(IP)地址,对于IPv4协议这个字段的长度为4个字节。

ARP流程

流程:检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF FF-FF-FF-FF的帧封装并广播ARP请求分组同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。

四种情况

1.主机A发给本网络上的主机B:用ARP表找到主机B的硬件地址;
2.主机A发给另--网络上的主机B:用ARP表找到本网络上一个路由器(网关)的硬件地址;
3.路由器发给本网络的主机A:用ARP表找到主机A的硬件地址;
4.路由器发给另一网络的主机B:用ARP表找到本网络上的一个路由器的硬件地址。

ARP请求

广播ARP请求分组

ARP响应

单播ARP响应分组

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_02网络拓扑图

PCi对应IPi与MACi,i为1~5。默认网关为IP6。

PC1想与PC3通信

PC1广播ARP请求分组(IP1,IP3,MAC1,FF-FF-FF-FF-FF-FF),“我的ip为IP1,我的MAC地址为MAC1,哪位老哥的ip为IP3呀,你的MAC地址是多少呢?”,交换机发给PC2、PC3,PC2发现不是找自己的,不予答复(后续不再赘述),PC3单播ARP响应分组(IP3,MAC3),“小老弟,我的IP是IP3、MAC地址是MAC3”。

PC1想与PC5通信

PC1广播ARP请求分组(IP1,IP6,MAC1,FF-FF-FF-FF-FF-FF),“我的ip为IP1,我的MAC地址为MAC1,默认网关IP6,你的MAC地址是多少呢?”,路由器R1单播ARP响应分组(IP6,MAC6),“小老弟,我的IP是IP6、MAC地址是MAC6”。PC1收到后单播ARP请求分组(IP1,IP5,MAC1,MAC6),路由器R1收到后再次封装,单播ARP请求分组(IP1,IP5,MAC7,MAC8),路由器R2收到后再次封装,广播(IP1,IP5,MAC9,FF-FF-FF-FF-FF-FF),PC5单播ARP响应分组(IP5,MAC5),路由器R2收到PC5的单播知道PC5的MAC地址后再单播给路由器R1,R1再单播给PC1,PC1就知道PC5的MAC地址了。

ARP攻击原理

修改通信双方的数据包,使双方ARP表中对方IP对应的MAC地址为攻击者的MAC地址。以最简单的网络拓扑为例,其中PC1的IP、MAC为IP1、MAC1、PC2的IP、MAC为IP2、MAC2,路由器R1的IP、MAC为IP3、MAC3:

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_03ARP攻击示例
  • 攻击者PC2聆听局域网上的MAC地址。它只要收到主机PC1和路由器R1洪泛的ARP Request,就可以进行欺骗活动。

  • 主机PC1、路由器R1都洪泛了ARP Request.攻击者现在有了主机和路由器的IP、MAC地址,开始攻击。

  • 攻击者发送一个ARP Reply给主机PC1,把此包ARP协议头部里的Source Protocal Address设为路由器的IP地址IP3,Source Hardware Address设为攻击者PC2自己的MAC地址MAC2。

  • 主机PC1收到ARP Reply后,更新它的ARP表,把路由器的MAC地址(IP3, MAC3)改为(IP3, MAC2)。

  • 当主机PC1要发送数据包给路由器R1时,它根据ARP表来封装数据包的Link报头,把目的MAC地址设为MAC2,而非MAC3。

  • 当交换机收到主机PC1发送给A路由器R1的数据包时,根据此包的目的MAC地址(MAC2)把数据包转发给攻击者PC2。

  • 攻击者收到数据包后,可以把它存起来后再发送给路由器R1,达到偷听效果。攻击者也可以篡改数据后才发送数据包给路由器R1。

  • 反之同理,如果局域网内还有PC3,PC1与PC3通信,攻击机PC2也可同样攻击。

看过博主其他文章的应该清楚,不实践一下是手痒的,接下来就看一看吧

实战

ARP欺骗

ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP中毒)或ARP攻击,是针对ARP的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。

以攻击局域网,获取局域网内其他用户浏览的图片为例。

环境

攻击机(虚拟机)

操作系统:kali

使用软件:ettercap v0.8.3

IP:10.28.149.132

靶机(主机)

操作系统:Windows 10

查看arp表

使用cmd命令

arp -a

来查看arp表

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_局域网_04主机arp表

更新攻击机软件

ettercap v0.8.2 不知什么原因,无法发现主机(图形界面,命令行都试了),所以进行了更新,如果你的本来就是0.8.3或者可以发现主机可以跳过此步骤。

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_050个主机
网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP中毒_060个主机

 博主的ettercap是0.8.2版本,截至目前(2020.12.1),ettercap的最新版本是0.8.3,由于无法发现主机,所以更新到了0.8.3版本。

apt update
网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_07更新
apt list --upgradable | grep ettercap

查看最新版本

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_08查看最新版本
apt install ettercap-common ettercap-graphical

 更新到0.8.3版本

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_09更新中
ettercap -G

使用ettercap进行攻击

启动图形界面,选择网卡eth0,点击下图对勾

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_10启动图形界面

点击左上角搜索标志(左数第二个),发现主机,点击右侧按钮(左数第三个)查看发现的主机列表。

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_11发现22个ip地址

选中网关xxx.xxx.xxx.1,点击Add Target1、选中主机IP点击Add Target2。

 点击右侧三个点,选择Targets可查看两个Targets。

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_12当前目标

目标增删

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_局域网_13两侧可以进行目标增删

查看连接

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_14查看连接

进行ARP攻击

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_15进行ARP攻击

选择插件

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_16插件

选择remote_brower插件

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_17选择remote_brower插件

主机arp表增加了攻击机

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_18主机arp表

 

访问一个非https的、含图片的网站(http://www.cxtuku.com/sucai/129877.html),可以看到攻击机kali抓到了图片。

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP中毒_19浏览器访问

查看劫持到的图片

使用命令

driftnet -i eth0

捕获TCP传输的图片

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_20捕获到图片

如果你没有安装,可以使用命令

apt-get install driftnet

 来安装,

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_网络安全_21安装driftnet

----------------2020年12月18日更新----------------

ARP攻击防御

静态绑定

静态绑定之前先看一下删除,使用以下命令进行删除:

arp -d ip

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_22删除

 可以看到,下图红线处的已经删除掉了

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP中毒_23删除后的arp表

将刚才的添加为静态,这样就不会动态修改了。与这个ip的通信相对安全,同理,可以添加网关等其他ip与MAC的映射。

网络-ARP协议详解与ARP欺骗(中毒)攻击实战_ARP欺骗_24添加为静态

 

ARP防火墙

腾讯电脑管家、360、彩影等都可以,一般就是软件上面有个按钮,点击一下即可,博主这些都没安装,就“裸奔”呢,就不做演示了。

参考

ettercap的YouTube频道

ettercap的GitHub

《TCP/IP详解卷I》

更多内容查看:网络安全-自学笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。