ARP协议

TCP/IP协议栈中,最不安全的协议莫过于是“ARP协议”了。

ARP(Address Resolution Protocol 地址解析协议)用于实现从IP地址到MAC地址的映射。

ARP协议的不安全性的原因是:它是建立在局域网中所有主机完全信任的基础上的,即其前提为所有在局域网中传送的ARP数据包都是正确。那么一旦局域网中存在着恶意或者非法者,就会出现网络安全隐患。当攻击源向局域网中大量发送虚假的ARP信息后,就会造成局域网中的机器ARP缓存的崩溃或主机ARP缓存信息错误。


ARP协议工作原理

(注:图片摘于网上)

当两台主机PC1和PC2需要通信时,需要填写源IP地址(IP1)、源MAC地址(MAC1)和目的IP地址(IP2)、目的MAC地址(MAC2)。

当数据包在发送方(PC1)进行封装时,并不知道接收方(PC2)的MAC地址,只知道PC2的IP地址。此时ARP协议就开始起作用了。


发送方(PC1)会在局域网内发送ARP请求包,广播询问:我的IP地址是IP1,MAC地址是MAC1,请问谁是IP2,IP2对应的MAC地址是多少?
IP地址为IP2的主机接收到该广播包后即单播回复:我的IP地址为IP2,我的MAC地址是MAC2。并且在ARP缓存表中存储IP1—MAC1的映射关系

最后在PC1封装时,即可将MAC2填入数据包中进行传输。并且在PC1的ARP缓存表中会存储 IP2—MAC2 的映射关系,方便下次传输数据包。

注:一般情况下,只有IP地址对应的主机才会回复广播包,其余主机一般都将广播包丢弃;而ARP应答数据包是采用单播,因为在ARP请求包中带有源IP地址和源MAC地址;被询问者PC2会先生成ARP映射信息,然后才是询问者PC1。


ARP数据包解析(通过WireShark抓取)

  • ARP请求包(广播)

  • ARP回应包(单播)

ARP协议字段解读
  • Hardware type :硬件类型,标识链路层协议
  • Protocol type: 协议类型,标识网络层协议
  • Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
  • Protocol size: 协议地址大小,标识IP地址长度,这里是4个字节(32bit)
  • Opcode: 操作代码,标识ARP数据包类型,1表示请求(request),2表示回应(reply)
  • Sender MAC address :发送者MAC
  • Sender IP address :发送者IP
  • Target MAC address :目标MAC,此处全0表示在请求,尚不知道目标MAC地址
  • Target IP address: 目标IP

ARP攻击原理


PC1跟PC2通信,通过ARP请求包询问PC2的MAC地址,因为ARP请求包是采用广播形式,故交换机会将ARP请求包向各个接口转发。

正常情况下,若收到的ARP请求包中的IP地址与自己不符,会直接丢弃。但这里的PC3在监听后,发送了ARP回应包:我的IP地址是IP2,我的MAC地址是MAC3。形成了 IP2—MAC3的错误映射。

同时,PC2在收到给自己的ARP请求包时也会回应,故PC1会收到两个ARP回应包,分别是

  • 来自PC2的回应包:我是PC2,我的IP地址是IP2,我的MAC地址是MAC2
  • 来自PC3的回应包:我是PC2,我的IP地址是IP3,我的MAC地址是MAC3

ARP缓存遵循的是“后到优先原则”,即会以最后一个得到的最新的ARP回应包作为缓存内容。而攻击者(PC3)只需要不断的发送ARP欺骗包,就能覆盖PC2的回应包,从而在PC1中形成 IP2—MAC3 的错误映射。

之后当PC1要与PC2通信时,在目的MAC中填写的就是MAC3,而交换机会根据MAC缓存将数据包发送给PC3,从而形成ARP攻击。


ARP攻击实验

工具:P2P终结者、VMware虚拟机、WireShark抓包软件。

网络:Windows Server 2003(IP:192.168.229.132、MAC:00-0C-29-EF-11-33);Windows XP(IP:192.168.229.130、00-0C-29-FF-E1-B2)、网关(IP:192.168.229.2)

流程:在Windows Server 2003上运行了P2P终结者进行ARP攻击,并通过WireShark抓包窃取局域网内其他用户的信息。


1. 打开P2P终结者,选择网卡;打开WireShark,选择相应的网卡进行监听

2. 点击扫描网络,获取本局域网内的主机信息

此时可在WireShark中抓取到大量的ARP请求包

此时两主机的ARP缓存如下

  • Windows Server 2003

  • Windows XP

3. 点击启动提速,会发送大量的ARP欺骗包,欺骗他人说:我(Windows Server 2003)就是网关,即把该局域网内的所有主机ARP缓存中的网关的MAC改为攻击者的MAC,导致所有发往网关的数据报都会先流过攻击者的网卡,攻击者可用WireShark获取当中的信息

可在WireShark中抓取到大量的ARP欺骗包
即网关(192.168.229.2)的MAC地址是攻击者主机的MAC地址

此时观察Windows XP的ARP缓存表,发现网关(192.168.229.2)的MAC地址已经变为了攻击者(Windows Server 2003)的MAC地址

4. 在Windows XP中ping 114.114.114.114,Windows Server 2003(攻击者)可使用WireShark通过ICMP过滤在Windows Server 2003的网卡中获取来自Windows XP(源IP地址是192.168.229.130)的数据包

5. 在Windows XP上输入telnet route-server.ip.att.net 登录国外的一台公共服务器,输入账号:rviews;密码:rviews。


在Windows Server 2003上过滤telnet,并使用“follow tcp stream”功能可窃取到Windows XP用户输入的账号密码

基于P2P终结者的ARP欺骗攻击实验相关推荐

  1. winpcap实现ARP欺骗攻击

    使用winpcap实现ARP欺骗代码 实验过程见 winpcap实现ARP欺骗攻击实验过程 #define _WINSOCK_DEPRECATED_NO_WARNINGS #define _CRT_S ...

  2. 网络安全实验之《ARP欺骗攻击》实验报告

    一.实验目的 (1)课上实验(ARP欺骗攻击工具实验):运行WinArpAttacker或Ettercap(二选一),通过WireShark等抓包工具,捕获ARP欺骗攻击的数据包,分析ARP攻击的原理 ...

  3. 基于arpspoof的ARP欺骗实战实验

    0X01 Attack 准备好两台虚拟机,分别为: 攻击方:kali 被攻击方:windowsXP 首先,查找kali攻击方的ip.网关.mac地址: 攻击方ip:192.168.209.129 攻击 ...

  4. 模拟ARP欺骗攻击与防护

    为保证网络环境的安全,模拟ARP欺骗在eNSP模拟器+VMware虚拟机上构建网络环境. 一:ARP欺骗攻击 1.准备环境:华为eNSP模拟器+VMware虚拟机上创建kali服务器 2.在虚拟机上打 ...

  5. ARP欺骗攻击的检测和防御

    以太网构建由 1500 个字节的块组成的数据帧.每个以太网数据帧头包括源 MAC 地址和 目的 MAC 地址.建造以太网数据帧,必须从 IP 数据包中开始.但在构建过程中,以太网并 不知道目标机器的M ...

  6. 如何发动一次ARP欺骗攻击

    免责协议:本文整个实验过程都在虚拟机中进行,且本材料仅供交流学习使用,严禁用于违法犯罪. 1.环境部署:服务器 windows2008 客户机  windows10 攻击机  kali 都在同一网络环 ...

  7. 3-wireshark网络安全分析——ARP欺骗攻击

    目录 1. 中间人攻击 2. ARP欺骗 3. ARP欺骗过程分析 4. Wireshark专家系统分析 5. 如何防御ARP欺骗 ARP协议可参考:https://blog.csdn.net/qq_ ...

  8. 防火墙 | ARP欺骗攻击

    防火墙 | ARP欺骗攻击 每天一个入狱小技巧!!! ARP欺骗攻击利用的原理 主机接收到一个应答包之后,并不会验证自己是否发送过对应的arp请求包,也不会验证这个arp请求包是否可信,而是直接用应答 ...

  9. 无线网络安全之ARP欺骗攻击

    0x00 相关背景知识 一.中间人攻击 通过各种技术手段将攻击者控制的一台计算机虚拟放置于网络连接中的两台通信计算机之间,从而达到信息窃听,会话劫持,断网等攻击目标. 二.ARP欺骗 针对ARP协议漏 ...

  10. ARP欺骗攻击原理及其防御

    一.概述 1.ARP协议 地址解析协议,将IP地址转换为对应的mac地址,属链路层协议 数据包分为: 请求包(广播):本机IP地址.mac地址+目标主机IP地址 应答包(单播):本机IP地址.mac地 ...

最新文章

  1. Mysql常用数据类型详细说明及实例说明(学习笔记一)
  2. 从C语言的角度重构数据结构系列(八)-数据结构堆知识超级丑数
  3. 深入理解Webpack核心模块Tapable钩子[异步版]
  4. Centos7 Java8的安装
  5. 读写分离的适用场景(转载)
  6. C#将Json字符串反序列化成List对象类集合
  7. 在电脑上显示未知发布者怎么办_电脑开机后显示器黑屏只有鼠标能动,怎么办呢?...
  8. Spark Scala当中reduceByKey的用法
  9. 小甲鱼 c语言 17课
  10. 关于matlab影像处理imhist直方图均衡化问题
  11. Matlab并行编程
  12. 多线程开发之AsyncTask
  13. Mac 查看本机端口占用
  14. java equals方法重写_Java重写equals方法
  15. layui搭建管理后台系统
  16. 全球最火的程序员学习路线!
  17. 剪辑技巧!如何利用背景图片给多段视频画面四周添加黑色边框
  18. matlab 共振解调,Matlab.m 共振解调法诊断轴承损伤类故障的原理概述如下:当轴承某一元件表 联合开发网 - pudn.com...
  19. 使用AnalyticDB轻松实现以图搜图和人脸检索
  20. 七星配资市场剧烈震荡

热门文章

  1. 基于springboot实现OA办公管理系统
  2. 【Android】OKHTTP使用
  3. java swing登录界面_JAVA SWing实现登陆界面
  4. Spring源码系列(十一)——Spring源码总结
  5. 详细安装sqlmap详细教程
  6. List map转json
  7. 70个python毕设项目_这10个Python项目很有趣!
  8. AndroidTV开发12——大屏TV电视及盒子Apk远程安装说明文档
  9. Python爬虫请求头、请求代理以及cookie操作
  10. MP3转换器下载 - 通用mp3转换器