本文首发于: 行者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映射表。
- 最主要是要提高用户的安全意识,养成良好的安全习惯,包括:及时安装系统补丁程序,为系统设置强壮的密码,安装防火墙,安装有效的杀毒软件并及时升级病毒库
- 不主动进行网络攻击,不随便运行不受信任的软件。
温馨提示:不要轻易在任何现实环境中进行此类攻击测试,可以自己通过组网搭建虚拟环境进行此类攻击测试。