zoukankan      html  css  js  c++  java
  • 浅谈基于ARP协议的网络攻击

    通信协议是指双方实体完成通信或服务所必须遵循的规则和约定,从而确保网络中数据顺利地传送到确定的地方,通信协议作为一个网络通信模型,提供了一整套网络传输协议,由于协议家族中的两大核心协议: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报文分析

    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报文,根据上面的报文格式分析,选中的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缓存老化机制,有时还需要做周期性连续性欺骗。

    ARP攻击网络拓扑.png

    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映射表。

    • 最主要是要提高用户的安全意识,养成良好的安全习惯,包括:及时安装系统补丁程序,为系统设置强壮的密码,安装防火墙,安装有效的杀毒软件并及时升级病毒库

    • 不主动进行网络攻击,不随便运行不受信任的软件。

    温馨提示:不要轻易在任何现实环境中进行此类攻击测试,可以自己通过组网搭建虚拟环境进行此类攻击测试。


    PS:

    我们是行者AI,我们在“AI+游戏”中不断前行。

    如果你也对游戏感兴趣,对AI充满好奇,那就快来加入我们(hr@xingzhe.ai)。

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/xingzheai/p/14115290.html
Copyright © 2011-2022 走看看