浅谈基于 ARP 协议的网络攻击
本文首发于:行者AI
通信协议是指双方实体完成通信或服务所必须遵循的规则和约定,从而确保网络中数据顺利地传送到确定的地方,通信协议作为一个网络通信模型,提供了一整套网络传输协议,由于协议家族中的两大核心协议:TCP(传输控制协议)和 IP(网际协议)为该家族中最早通过的标准,所以通常将通信协议家族称为 TCP/IP 协议族。
由于在网络中通信协议采用分层结构,当多个层次的协议同时工作时,规则类似与计算机中的栈空间,所以也被称为 TCP/IP 协议栈。
1. 如何进行通信交互?
1.1 计算机网络体系结构分层:OSI 七层模型、TCP/IP 概念层模型
1.2 网络传输流程概览
2. 什么是 ARP 协议
ARP(Address Resolution Protocol)协议是地址解析协议,作用与以太网环境,在以太网中,数据传输寻址是通过 MAC 地址而不是 IP 地址,从而依赖 ARP 协议将已知 IP 地址转换为 MAC 地址供寻址使用。
ARP 协议工作在数据链路层,与硬件接口通信,同时为上层协议提供服务。 例:某 IP 数据包通过以太网进行传输过程中,以太网设备是不能识别 32 位 IP 地址的,而是以 48 位以太网地址(MAC 地址)传输数据包的。此时则需要通过 ARP 协议对 IP 地址解析为对应的 MAC 地址。
2.1 ARP 缓存表
每台主机都有一张 ARP 缓存表,它记录着以太网中近期交互的主机 IP 地址和 MAC 地址的对应关系。
windows/linux 下可以通过命令行输入“arp -a”查看本机 ARP 缓存表
2.2 ARP 动态映射
动态映射时,每次只要机器知道另一台需要通信主机的局域网 IP 地址,就可以使用协议找出物理地址。实现动态映射协议为 ARP 和 RARP 两种。
ARP 把 IP 地址映射为物理地址
RARP 把物理地址映射为 IP 地址 由此便可以完成自己 ARP 缓存表的动态映射动作。
2.3 ARP 请求与响应过程
① PC1 想发送数据给 PC2 时,PC1 首先会在本地的 ARP 缓存表中查看 PC2 的 MAC 地址。因为局域网内通信时,需要明确自己的目标,获取目标的 IP 地址及 MAC 地址。
② 如果 PC1 在缓存表中没有找到 PC2 对应的 MAC 地址,便会将 ARP 请求帧广播到以太网中所有的主机。该帧中包括 PC1 的 IP 地址和 MAC 地址和目标主机 PC2 的 IP 地址。
③ 以太网中所有的主机都会接收到广播的 ARP 请求并会检查是否自己的 IP 与是否是 PC2 的 IP。如果发现不匹配,则会忽略这个 ARP 请求。
④ PC2 发现请求 IP 与自己匹配,则将 PC1 的 IP 地址和 MAC 地址添加至自己本地的 ARP 缓存表中。
⑤ PC2 将包含其 MAC 地址的 ARP 回复包以单播的形式发送给 PC1。
⑥ PC1 接收到 PC2 的 ARP 回复包,将主机 PC2 的 IP 地址和 MAC 地址添加到自己的本地 ARP 缓存表,便可以正常的与 P2 进行消息交互了。
本地 ARP 缓存是有生存周期的,默认 ARP 生存周期为 120s
2.4 ARP 报文分析
硬件类型:表示硬件地址的类型(1 表示以太网地址,还可能表示令牌环地址)
协议类型:表示要映射的协议地址类型(0x0800 表示 IP 地址)
硬件地址长度:指出该报文中硬件地址的长度(ARP 报文中,该值为 6)
协议地址长度:该报文中协议地址的长度(ARP 报文中,该值为 4)
op:操作字段,共 4 种(1.ARP 请求,2.ARP 应答,3.RARP 请求,4.RARP 应答)
发送者硬件地址:发送方设备的硬件地址
发送者 IP 地址:发送方设备 IP 地址
目的硬件地址:接收方设备硬件地址
目的 IP 地址:接收方设备 IP 地址
2.5 ARP 报文抓取
开启混杂模式下监听所在以太网中的 ARP 报文,根据上面的报文格式分析,选中的 ARP 报文是 MAC 地址为 04:e6:76:68:59:ea 的主机发出的 ARP 广播报,目的是为了获取 IP 地址为 192.168.1.248 的主机的 MAC 地址。
3. 基于 ARP 协议攻击
3.1 ARP 协议缺陷
ARP 协议是建立在信任局域网内所有节点的基础上,它很高效,但是并不安全。它是无状态的协议,不会检查自己是否发过请求包,也无法判断是否是合法的应答,只要收到目标 MAC 是自己的 ARPreply 包或 arp 广播包,都会接收并缓存。这就为 ARP 欺骗提供了可能,恶意节点可以发布虚假的 ARP 报文从而影响网内节点的通信,甚至可以做“中间人”,发起中间人攻击。
3.2 常见的 ARP 攻击
① ARP 断网攻击:伪造 ARP 报文并频繁发送至局域网中,强制篡改被攻击者的 ARP 缓存表,导致被攻击者所有流量发送至攻击者或未知地址,无法发出网络请求至公网。
② ARP 中间人攻击:与断网攻击类似,区别是打开流量转发,被攻击者的流量便会流经攻击者才转发至公网,攻击者便可以分析抓取的流量内信息,甚至篡改。
3.3 ARP 攻击原理分析
① 假冒 ARPreply 包(单播或广播),向单体主机或多台主机发送虚假的 IP/MAC 地址。
② 假冒 ARPrequest 包(单播或广播),实际上是单播或广播虚假的 IP,MAC 映射。
③ 假冒中间人,启用包转发向两端主机发送假冒的 ARPreply,由于 ARP 缓存老化机制,有时还需要做周期性连续性欺骗。
3.4 攻击流程
使用 kali 系统或 centos 系统,kali 系统天然自带很多攻击工具,所以实现比较简单,centos 需要额外安装一些工具* >Kali 是一个基于 Debian 的 Linux 发行版。目标旨在尽可能多的包含渗透和审计工具,所以大多数做安全测试的开源工具都被囊括在其中。 Kali 是一个安全工具,有着像 NMap 和 Wireskark 这样的经典信息采集工具、也有像 Hydra、Crunch、Hashcat、以及 John the Ripper 这样的密码破解工具。
重要的是,Kali 并不是一个平时可以随意使用的系统,使用不当会造成很多实质性的危害。所以若使用 Kali,请合理合法的发挥他的优势,否则在给别人带来危害时,同时给自己也会带来无法弥补的麻烦。
① 发起局域网内攻击时,需要明确自己的目标,获取目标的 IP 地址及网关的 IP 地址。
>查看同一局域网内在线的主机情况: >fping -asg 192.168.xxx.0/24 >
如何甄别谁的 ip 才是你要攻击的 ip,也可以根据 ARP 缓存表中的 MAC 地址进行厂牌分析,还可以进行传说中的社会工程学~
② 找到需要攻击的在线主机后,便可以开始非常简单的一行命令攻击。
>arpspoof -i eth0 -t 192.168.135.131 192.168.135.2 >
eth0:网卡
第一个 IP:被攻击者 IP
第二个 IP:在他 ARP 缓存表中伪造的身份(比如这里写网关 ip,他会认为你才是网关)
发起命令后,将会进行持续的 ARP 轰炸,不断的告诉被攻击者,你要找的网关是我,你把包都发给我。在没有打开流量转发的时候,被攻击者目前应该已经处于断网状态了,大功告成。
3.5 防御方法
在客户端使用 arp 命令绑定网关的真实 MAC 地址命令如下:arp-d*(先清除错误的 ARP 表)arp-s192.168.xxx.xxx xx-xx-xx-xx-xx-xx(静态指定网关的 MAC 地址)
在交换机上做端口与 MAC 地址的静态帮定。
在路由器上做 IP 地址与 MAC 地址的静态绑定。
使用”ARPSERVER”按一定时间间隔广播网段内所有主机的正确 IP-MAC 映射表。
最主要是要提高用户的安全意识,养成良好的安全习惯,包括:及时安装系统补丁程序,为系统设置强壮的密码,安装防火墙,安装有效的杀毒软件并及时升级病毒库
不主动进行网络攻击,不随便运行不受信任的软件。
温馨提示:不要轻易在任何现实环境中进行此类攻击测试,可以自己通过组网搭建虚拟环境进行此类攻击测试。
版权声明: 本文为 InfoQ 作者【行者AI】的原创文章。
原文链接:【http://xie.infoq.cn/article/898cd621e443ce0cd4088be92】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论