ARP协议简介
ARP是Address Resolution Protocol (地址解析协议)的缩写。在以太网中,两台主机想要 通信,就必须要知道目标主机的MAC (Medium/Media Access Control,介质访问控制)地址, 如何获取目标主机的MAC地址呢?这就是地址解析协议ARP的工作。地址解析协议的基本功 能就是在主机发送数据之前将目标IP转换为MAC地址,完成网络地址到物理地址的映射,以 保证两台主机能够正常通信。
ARP缓存表
任何一台主机安装了 TCP/IP协议都会有ARP缓存表,该表保存了这个网络(局域网)中 各主机IP对应的MAC地址,ARP缓存表能够有效地保证数据传输的一对一特性。在Windows 中可以使用arp-a命令来查看缓存表,结果如下:
C:\>arp -a
Interface: 192.168.1.8 0x20002
Internet Address Physical Address
192.168.1.1 00-27-19-66-48-84
192.168.1.12 2c-d0-5a-05-8e-fl
在此时的ARP缓存表中可以看到,192.168.1.12对应的MAC地址为2c-d0-5a-05-8e-fl,并 且类型为动态。如果主机在一段时间内不与此IP通信,将会删除对应的条目。而静态ARP缓 存条目是永久性的。
在Windows中建立静态类型的ARP缓存表可以使用arp -s命令,如: C:\>arp -s 192.168.1.23 f4-b7-e2-8f-ld-91 〃建立静态缓存表 查看ARP缓存表可以发现,192.168.1.23类型已经变为静态,内容如下: C:\>arp -a
Interface: 192.168.1.8 —— 0x20002
Internet Address Physical Address Type
192.168.1.1 00-27-19-66-48-84 dynamic
192.168.1.23 f4-b7-e2-8f-ld-91 static
如果想要清空ARP缓存表,可以使用arp -d命令;如果想删除单个条目,则可以使用arp -d ip命令。
ARP缓存表中的条目也是有时效的,在超过指定的时间后,将从缓存中删除它们,Windows 默认的ARP缓存项存活时间为两分钟。
注:MAC地址如同身份证号码,具有全球唯一性。
局域网主机通信
假设现在拥有两个网段、两个网关和三台主机,内容分别如下:
主机IP |
MAC |
|
网关1 |
192.168.0.1 |
01-01-01-01-01-01 |
主机A |
192.168.0.2 |
02-02-02-02-02-02 |
主机B |
192.168.0.3 |
03-03-03-03-03-03 |
网关2 |
192.168.1.1 |
11-11-11-11-11-11 |
主机C |
192.168.1.2 |
12-12-12-12-12-12 |
现在主机A与主机B通信,主机A使用命令ping 192.168.0.3,这时主机A首先会通过子 网掩码进行对比,看与目标主机是否在同一局域网内,如果在同一个局域网中,主机A将会 查询本机的ARP缓存表,看是否存在主机B的MAC地址,如果存在,则直接发送数据,如 果不存在,主机A将会对局域网内所有的主机大喊:“我是192.168.0.2, MAC地址是 02-02-02-02-02-02,谁是192.168.0.3,快把你的MAC地址给我,我要给你发送数据! ”,局域 网内所有的主机都可以听到“叫声”,当主机B听到有人叫自己,就会将自己的MAC地址发 送给主机A,并且将主机A的MAC地址加入自己的ARP缓存中,而其他主机发现不是在“叫” 自己,所以不会有任何应答。
接下来,主机A会收到主机B的响应,并把主机B的MAC地址加入到自己的ARP缓存 中,方便下次联系,然后发送数据。主机A这声“呐喊”其实就是以广播方式发送一个ARP请求报文。ARP请求报文中包含 本机的IP地址、MAC地址等信息。
在局域网中通信比较简单,不需要经过网关就可以直接通信,但若不在一•个局域网内就比 较复杂了,如主机A与主机C的通信过程如下:
主机A通过网络掩码对比,发现与主机C不在同一局域网内,所以需要网关来转发处理。 主机A首先将会查询自己的ARP缓存中是否存在网关1的MAC地址,如果不存在,使用 广播获取,如果存在,就直接向网关1发送数据包,由网关1向网关2发送数据包,网关2 收到数据包之后发现是发送给主机C的数据,网关2将会查询自己的ARP缓存中是否存在 主机C的MAC地址,若存在,则直接发送数据,不存在则以广播方式获取MAC地址后发送 数据。
ARP欺骗原理
ARP协议最初设计的目的是为了方便传输数据,设计该协议的前提是在网络绝对安全的情 况下。随着信息技术的发展,攻击者的手段层出不穷,他们经常会利用ARP协议的缺陷发起攻 击,ARP协
议主要的缺陷如下:
•由于主机不知道通信对方的MAC地址,所以才需要ARP广播请求获取。当在广播请求 时,攻击者就可以伪装ARP应答,冒充真正要通信的主机,以假乱真。
・ARP协议是无状态的,这就表示主机可以自由地发送ARP应答包,即使主机并未收到 查询,并且任何ARP响应都是合法的,许多主机会接收未请求的ARP应答包。
• 一台主机的IP被缓存在另一台主机中,它就会被当作一台可信任的主机。而计算机没有 提供检验IP到MAC地址是否正确的机制。当主机接收到一个ARP应答后,主机不再 考虑IP 到MAC地址的真实性和有效性,而是直接将应答包中的MAC地址与对应的1P 地址替换掉原有ARP缓存表的相关信息。
我们知道,以太网中主机之间不知道对方的MAC地址是无法通信的,所以主机会以广播 的形式发送请求来获取对方的MAC地址,请求中包含发送方的IP、MAC地址,如果入侵者正 处在局域网内,利用ARP设计的一些缺陷可以在网络中发送虚假的ARP请求或响应,这就是 ARP欺骗。
从上面内容可知,主机A与主机C之间通信会经过网关1和网关2,但当主机收到 一个ARP的应答包后,它并不会去验证自己是否发送过这个ARP请求,而是直接将应答包的 MAC地址与IP替换掉原有的ARP缓存信息,这就导致了主机A与主机C之间的通信内容可 能会被主机B截取。下面是主机B的ARP欺骗场景:
首先,主机B向主机A发送一个ARP响应:192.168.0.1的MAC地址是03-03-03-03-03-03 (主机B的MAC地址),而主机A接收到响应后却不会去验证数据的真实性,而是直接替换本 机ARP缓存表中192.168.0.1的MAC地址。同时主机B也向主机网关1发送一个ARP响应: 192.168.0.3的MAC地址是03-03-03-03-03-03,同样网关也不会去验证,直接放到自己的ARP 缓存中。当主机A与主机C通信时,主机A首先会检査自己的ARP缓存表中是否有网关的 MAC地址,发现有缓存MAC地址为:03-03-03-03-03-03,于是直接向MAC地址发送数据, 但是此时的MAC却不是网关1的,而是主机B的MAC地址。主机B接收到数据后再转发到 真正的网关1,由网关1发送到主机C。当主机C接收到数据后,可能会返回数据,而返回数 据在到达网关1的时候,网关I首先会检查自己的ARP缓存表,去寻找192.168.0.3对应的MAC 地址,MAC地址为:03-03-03-03-03-03,也就是主机B的地址,当主机B接收到数据包后,再 转发给真正的主机A,可以说主机A与主机C的通信数据都经过了主机B,没有任何秘密可言, 这就是ARP欺骗。
ARP欺骗是入侵者常用的攻击手段,也许读者听说过一种攻击一中间人攻击。中间人攻 击即Man-in-the-Middle Attack,简称“MITM攻击”,是一种“间接”的入侵攻击,就好比主机 A与主机C之间通信都要通过主机B,主机B就被称为“中间人”。使用“中间人”能够与原 始计算机建立活动连接,并允许其读取或修改传递的信息,然而两个原始计算机却认为它们是 在直接通信。
就如Burp Suite那样,作为一个代理可以拦截并编辑HTTP请求,也算是一个中间人攻击 软件。
常见的中间人攻击有会话劫持、DNS欺骗等。当然,ARP欺骗也属于最常见的中间人攻击 手段
以上内容摘抄于书籍《Web安全深度剖析》,感兴趣的话可以自行观看~
ARP 攻击
ARP攻击并不少见,且威力巨大。有时候攻击者在入侵目标站点时,由于安全措施很到位, 并不能获取权限,恰好服务器也只放了一个网站,无法旁注,这时攻击者就可能通过C段ARP 嗅探攻击,继续入侵指定的目标网站,C段攻击也可以看作是另类的“旁注”。
所谓C段攻击,就是指同一网关下的主机ARP嗅探,在嗅探出敏感数据后,继续实施对 目标网站的渗透。比如,攻击者的目标网站为“www.secbug.org服务器地址为:192.168.1.8, 在无法直接渗透目标服务器时,攻击者就可能去入侵与192.168.1.8在同一网关下的服务器, 般是192.168.1.xxx,也就是C段IP,在得到服务器权限后,对目标主机实施ARP嗅探攻击(一 般嗅探敏感数据为FTP密码、Admin Pass等)
这里我们使用kali linux,里面包含了许多攻击工具,包括需要使用到的arpspoof,ettercap,driftnet。
ARP攻击的前提是攻击机与受害机需要在同一局域网内,但一般情况下为了使用方便,都是直接使用net模式,这种模式下虚拟机共享主机的IP地址,Vmware会在主机上创建专用的虚拟网络,用于主机和虚拟机之间进行通信,这样的话kali与物理机是不在同一局域网的,而在桥接模式下,虚拟机被当做一个完全独立的主机,占用局域网的一个IP地址,将虚拟机的网卡交接到主机的物理网卡上,通过主机的网卡访问外部的Internet。所以我们应该选择桥接模式。
那么怎样桥接使kali与物理机在同一局域网且能上网呢?(我当时也是弄了半天才连上网...),如果你已经桥接好了可以pass
1.虚拟机设置中网络适配器选择桥接模式
2 . 点击编辑,选择虚拟网络适配器设置
3.点击VMnet0,选择桥接模式,网卡选择你的物理机正在使用的网卡,我这里是Intel(R) Wireless-AC 9462
4.点击确定,......
你以为这就配好了吗,不 这样还是连不上网的
我们需要在kali中将IP设置到与物理机是同一网段
输入 vim /etc/network/interfaces
inface eth0 inet static 设置 eth0 使用默认的静态地址
address 192.168.1.15 设置 eth0 的ip 地址
gatework 192.168.1.1 配置当前主机的默认网关
netmask 255.255.255.0 设置 eth0 的子网掩码
5.输入 vim /etc/resolv.conf 文件
将物理机的DNS服务器添加进去,我这里是192.168.1.1
6.在终端下,输入:/etc/init.d/networking restart 回车,进行重启网卡
7.在终端下,输入update-rc.d networking defaults 回车,设置设置系统启动后自动启用网卡
OK! ping一下百度
说明已经有网了(但是ping物理机ping不通,物理机ping kali linux又ping得通,我认为是物理机上进行了设置禁止了外面机器ping它,而linux没进行此设置,不管这些了~~)
下面进入正题!先使用arpspoof进行断网攻击
需要先在kali中开启端口转发功能:
echo 1 >/proc/sys/net/ipv4/ip_forward
查看端口转发是否成功:cat /proc/sys/net/ipv4/ip_forward 如果显示1则表示开启成功,显示0则开启失败
使用命令arpspoof -i eth0 -t 192.168.1.14 192.168.1.1,其中,-i后面的参数是网卡名称,-t后面的参数是目的主机和网关,要截获目的主机发往网关的数据包。
这样物理机就断网了....
使用arp -a查看arp缓存发现攻击前网关192.168.1.1与攻击机192.168.1.15的物理地址是不同的
而攻击后物理机192.168.1.15的物理地址变得和网关192.168.1.1的物理地址相同了,这样就把物理机给骗了!使原本要发给网关的数据包发给了攻击机192.168.1.15
使用ettercap进行断网攻击
使用ettercap -G进入图形化界面
点击勾勾,点击右上角的三点,选择Hosts
然而并没有发现网关,再点击Scan for hosts
找到了网关192.168.1.1
点击攻击机192.168.1.15,再点击Add to Target 1
同样 点击192.168.1.1 ,再点击Add to Target 2,点击右上角的圈圈,选择ARP poisoning,点击OK
这样物理机就又断网了......
使用driftnet进行图片嗅探
在使用arpspoof,或者ettercat进行完断网攻击后随即输入 driftnet -i eth0
这时我们在物理机上打开网站,浏览图片时,就能被driftnet尽收眼底了
我们在物理机上打开7K7K小游戏
随便点开一个游戏
然后发现攻击机上已经有了我们浏览的图片,,是不是非常interesting呢
使用ettercap -Tq -i eth0进行账号密码嗅探
这时我们打开学习通,使用账号密码登陆
登录,
发现kali上已经截取了我的账号密码
不过这里进行了加密,容易看出这是使用了base64加密
使用站长工具进行解密就行了
这样账号密码就出来了.....
知道了攻击,当然还要学会防御
ARP防御
最常见的防御ARP攻击的方法一般有两种,一种是静态绑定,另一种是安装ARP防火墙。
1.静态绑定
静态绑定是指对每台主机进行IP和MAC地址静态绑定,静态绑定是防止ARP欺骗的最 根本办法。
静态绑定可以通过命令arp-s实现:"arp - s IP MAC地址",比如,对网关的静态绑定:
Arp -s 192.168.195.2 00-50-56-ee-12-6a
输入命令后,可以看到使用arp -a命令查看arp缓存表,在缓存表中可以发现网关的类型已 经为静态,如图15-25所示。
另外,也需要网关对局域网主机进行IP-MAC地址的静态绑定,这样就是双绑。
2. ARP防火墙
相对来说,使用ARP防火墙要比静态绑定ARP缓存表要简单得多,并且同样能有效地防 止ARP攻击。
ARP防火墙有很多,常见的有金山ARP防火墙、Anti ARP Sniffer (彩影防火墙)、360 ARP 防火墙等。
这类ARP软件的功能是非常多的,一般都可以査杀ARP木马,精准地追踪攻击源IP,拦 截DNS欺骗、网关欺骗、IP冲突等多种攻击。
使用ARP防火墙不需要复杂的操作,使用者只需要单击几个按钮,即可拦截ARP攻击。
感谢你仔细看完 -->_<--,
有什么不懂的或细心的你发现错误了的就在评论区留下你的看法吧~~