## 0x01. 什么是ARP协议 |
|
> ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。 |
> |
> 工作在第二层 , 数据链路层 |
|
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一 |
|
个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址 |
|
解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。 |
|
## 0x02. ARP是如何工作的 |
|
举个栗子:现在有两台处于同一局域网的主机A、B。 |
|
|
|
|
|
|
现在主机A要和主机B通信,那么根据上面的介绍可以知道,主机A仅有主机B的IP地址是不可以通信的,还要知道主机B的MAC地址,下面介绍主机A是如何通过ARP协议获取主机B的MAC地址的: |
|
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。 |
|
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求 |
|
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。 |
|
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。 |
|
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。 |
|
了解ARP协议的工作原理后可以分析出其存在一个严重的安全问题:
|
|
在ARP回复时,发送请求包的主机A并不会验证ARP回复包的真实性,也就是不能判断回复主机A的是不是主机B。由此引出一个局域网攻击方式ARP欺骗。 |
|
## 0x03. ARP欺骗的原理及危害 |
|
### 3.1 ARP欺骗原理 |
|
> ARP欺骗的原理就是把自己的MAC地址伪造成网关的地址来欺骗其它的主机
|
|
|
|
当主机A和主机B之间通信时,如果主机A在自己的ARP缓存表中没有找到主机B的MAC地址时,主机A将会向整个 |
|
局域网中所有计算机发送ARP广播,广播后整个局域网中的计算机都收到了该数据。这时候,主机C响应主机A, |
|
说我是主机B,我的MAC地址是XX-XX-XX-XX-XX-XX,主机A收到地址后就会重新更新自己的缓冲表。当主机A |
|
再次与主机B通信时,该数据将被转发到攻击主机(主机C)上,则该数据流会经过主机C转发到主机B。 |
|
### 3.2 ARP欺骗的危害 |
|
ARP欺骗可以造成内部网络的混乱,让某些被欺骗的计算机无法正常访问内外网,让网关无法和客户端正常通信, |
|
也可以截取全网络数据包,控制带宽等。实际上他的危害还不仅仅如此,一般来说IP地址的冲突我们可以通过多种 |
|
方法和手段来避免,而ARP协议工作在数据链路层,隐蔽性更高。系统并不会判断ARP缓存的正确与否,无法像IP |
|
地址冲突那样给出提示。一般的企业都不会在路由层面对arp欺骗做防御,在主机上做的arp防御是无法全面的防 |
|
御arp协议,想要全部防御必须在路由绑定ip,mac和端口,但企业不这样做,影响公司网络。 |
|
``` |
1.造成局域网中的其他主机断网 , 限制带宽速度 ( 工具 : 聚生网关 , 网络执法官)。 |
|
2.劫持局域网中其他主机或网关的流量,获取敏感信息等。 |
``` |
|
## 0x04.ARP欺骗的分类 |
|
### 4.1 单向欺骗 |
|
掐断 A 与 B 的通讯,实现原理:C 向 A 发送一条 Arp 数据包,内容为:B 的地址是 00:00:00:00:00:00 (一个 |
|
错误的地址),那么 A 此后向 B 发的数据包都会发到 00,而这个地址是错误的,所以通讯中断了,但是要注意 |
|
了,这里只是 A –> B 中断了,B –> A 没有中断,所以这个叫单向欺骗 |
|
### 4.2 双向欺骗 |
|
A要跟B正常通讯,C向A说我是才B。C向B说我才是A,那么这样的情况下把A跟B的ARP缓存表全部修改了。以后 |
|
通讯过程就是A把数据发送给C , C再发送给B,B把数据发送C,C在把数据发给A。这个和抓包代理的模型一样 |
|
攻击主机发送ARP应答包给被攻击主机和网关,它们分别修改其ARP缓存表, 修改的全是攻击主机的MAC地址,这 |
|
样它们之间数据都被攻击主机截获。 |
|
## 0x05. ARP命令 |
|
查看当前arp缓存表 |
|
``` |
arp -a |
``` |
|
``` |
Interface: 192.168.1.104 --- 0x10003 |
Internet Address Physical Address Type |
192.168.1.1 e4-f3-f5-5c-89-be dynamic |
网关的ip地址 网关的mac地址 动态 |
``` |
|
我们默认上网所有的数据包都会发送给网关 , 然后网关再转发出去 |
|
清空当前arp缓存表 |
|
``` |
arp -d |
``` |
|
## 0x06. 中间人攻击 |
|
实现中间人攻击分为两个阶段。第一是通过某种手段去攻击一台计算机;第二是欺骗主机 |
|
第一节段 : |
|
|
|
在该阶段主机B通过ARP注入攻击的方法以实现ARP欺骗,通过ARP欺骗的方法控制主机A与其他主机间的流量及 |
|
机密信息 |
|
第二阶段: |
|
在第一个阶段攻击成功后,主机B就可以在这个网络中使用中间人的身份,转发或查看主机A和其他主机间的数据 |
|
流,如图4所示。 |
|
|
|
1)在这个局域网中当主机A向主机C发送请求,此时该数据将先会发送到主机B上 |
|
2)主机A发送给主机C的数据流将会经主机B转发到主机C上。 |
|
3)主机C收到数据以为是主机A直接发送的。此时主机C将响应主机A的请求,同样的该数据流将会被主机B转发到 |
|
主机A上。 |
|
4)主机A收到响应后,将登录主机C。这样主机A登录时的用户名及密码,将会被主机B查看到。 |
|
## 0x07. ARP攻防实战 |
|
> 工具 : arp攻击测试软件 |
|
### 7.1 禁止上网 |
|
首先扫描一下局域网中有哪些主机 , 注意使用网卡一定是当前网段的网卡 |
|
|
|
win2k8的ip为192.168.1.110 , 是可以打开百度的 |
|
|
|
选中ip点击禁止上网 |
|
|
|
|
|
上不了网络了 , 通过查看arp缓存表可以看到网关的mac地址被改成了别的 |
|
|
|
### 7.2 踢出局域网 |
|
直接把当前主机的arp表中的网关清除 |
|
|
|
### 7.3 主机ip冲突 |
|
都是傻瓜式的操作 , 就不展示了 |
|
|
|
110主机 |
|
|
|
### 7.4 单向欺骗(劫取数据) |
|
> 工具 : arpsniffer.exe , 需要安装WinPcap.exe |
|
cmd下执行命令 : |
|
``` |
arpsniffer.exe 192.168.1.1 192.168.1.104 80,3389 log.txt |
``` |
|
参数说明 : |
|
``` |
arpsniffer的第一个参数为网关地址, 我这儿为:192.168.1.1, |
第二个参数为要欺骗的IP地址, IP为:192.168.1.104 |
第三个参数为要截取数据的端口号:80,3389 |
第四个参数是要把捕获的数据保存到指定的文件:当前路径下的log.txt |
``` |
|
只要 192.168.1.104 通过80端口访问数据那么数据包就会保存到攻击者的log.txt 文件中 |
|
### 7.4 用户密码盗取 |
|
攻击者 : |
|
首先安装WinPcap_4_1_beta.exe |
|
|
|
打开劫持工具svchost.exe , |
|
### 7.5 DNS欺骗 |
|
设置欺骗的主机 |
|
|
|
设置arp-dns |
|
|
|
在被欺骗的主机上ping qq.com |
|
|
|
你可以在192.168.1.147上搭建一个和qq.com一样的网站 , 不就可以内网钓鱼了吗 |
|
## 0x08. ARP安全防范 |
|
1、不要随意登录免费的WIFI,没人知道免费的WIFI是不是有恶意的攻击者在搞鬼; |
|
2、使用ARP绑定, 避免被ARP欺骗; |
|
``` |
编写一个批处理文件命名为xx.bat,将批处理文件放到“Windows→开始→程序→启动”中,如果需要立即生效,请运行此文件。批处理文件内容如下: |
@echo off |
arp -d |
arp -s 192.168.1.1 e4-f3-f5-5c-89-be //ip与MAC地址根据具体情况修改。 |
``` |
|
但是这也是一个鸡肋的方法 , 虽然修改不了arp缓存表 , 但是可以新增arp缓存表的记录 , 虽然网关欺骗不了 |
|
但是任然可以进行dns欺骗 |
|
3、开启电脑管家或者360安全卫士的ARP防火墙或金山贝壳或彩影ARP防火墙; |
|
4、使用https协议或者其他有保密协议的连接访问外网,避免被坑。 |