ARP攻击原理简析及防御措施

0x1  简介

网络欺骗攻击作为一种非常专业化的攻击手段,给网络安全管理者,带来严峻的考验。网络安全的战场已经从互联网蔓延到用户内部的网络,

特别是局域网。目前利用ARP欺骗的木马病毒在局域网中广泛传播,导致网络随机掉线甚至整体瘫痪,通讯被窃听,信息被篡改等严重后果。

0x2  ARP协议概述

ARP协议(address resolution protocol)地址解析协议

一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析协议将IP地址解

析成MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,来查询目标设备的mac地址。

在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系。ARP缓存

表的生命周期是有时限的(一般不超过20分钟)。

举个例子:假设局域网中有四台主机


主机


IP地址


MAC地址


网关


A


192.168.0.2


Mac-a


192.168.0.1


B


192.168.0.3


Mac-b


192.168.0.1


C


192.168.0.4


Mac-c


192.168.0.1


D


192.168.0.5


Mac-d


192.168.0.1

主机A想和主机B通信

主机A会先查询自己的ARP缓存表里有没有B的联系方式,有的话,就将mac-b地址封装到数据包外面,发送出去。没有的话,A会向全网络发送一个

ARP广播包,大声询问:我的IP地址是192.168.0.2,硬件地址是mac-a,我想知道IP地址是192.168.0.3的硬件地址是多少?   此时,局域网内所有

主机都收到了,B收到后会单独私密回应:我是192.168.0.3,我的硬件地址是mac-b,其他主机不会理A的

此时A知道了B的信息,同时也会动态的更新自身的缓存表

0x3 ARP协议的缺陷

ARP协议是建立在信任局域网内所有节点的基础上的,他的效率很高。但是不安全。它是无状态的协议。他不会检查自己是否发过请求包,

也不知道自己是否发过请求包。他也不管是否合法的应答,只要收到目标mac地址是自己的ARP reply或者ARP广播包(包括ARP reply和ARP request),

都会接受并缓存。

0x4 ARP攻击原理

ARP欺骗攻击建立在局域网主机间相互信任的基础上的

当A发广播询问:我想知道IP是192.168.0.3的硬件地址是多少?

此时B当然会回话:我是IP192.168.0.3我的硬件地址是mac-b,

可是此时IP地址是192.168.0.4的C也非法回了:我是IP192.168.0.3,我的硬件地址是mac-c。而且是大量的。

所以A就会误信192.168.0.3的硬件地址是mac-c,而且动态更新缓存表

这样主机C就劫持了主机A发送给主机B的数据,这就是ARP欺骗的过程。

假如C直接冒充网关,此时主机C会不停的发送ARP欺骗广播,大声说:我的IP是192.168.0.1,我的硬件地址是mac-c,

此时局域网内所有主机都被欺骗,更改自己的缓存表,此时C将会监听到整个局域网发送给互联网的数据报。

0x5  ARP病毒攻击症状

通常表现:-打开网页速度非常慢,甚至打不开

-提示IP地址冲突

-甚至导致校园网瘫痪断网

-一般会绑定木马病毒,窃取用户账号密码

0x6  ARP病毒攻击形式

  1. 从协议内部分析

-假冒ARP reply包(单波或广播),向单台主机或多台主机发送虚假的IP/MAC地址

-假冒ARP request包(单播或广播),实际上是单播或广播虚假的IP、MAC映射。

-假冒中间人,启用包转发向两端主机发送假冒的ARP reply,由于ARP缓存的老化机制,有时还需要做周期性连续性欺骗。

  2.  从影响网络连接通畅的角度看

-对路由ARP表的欺骗

ARP病毒截获网关数据,让路由器获得错误的内网MAC地址,导致路由器把数据发送给错误的mac,是内网内的主机断网

-伪造内网网关

ARP病毒通过冒充网关,是内网计算机发送的数据无法到达真正的路由器网关,导致内网计算机断网

0x7 ARP欺骗攻击监测技术

  1. 手动监测

网络管理员可以通过命令查看主机的ARP表或路由器的ARP表

也可以用Sniffer工具进行抓包,查看可疑的<IP,MAC>地址映射

  2.动态监测

- 被动监测 (ARP watch,ARP Guard)

仅监测网路中是否存在ARP欺骗,不主动向外发送ARP报文

-主动监测(ARP防火墙)

能够动态的监测局域网内针对本主机和针对网关的ARP欺骗,但如果配置错误,ARP防火墙会向局域网内发送大量的ARP报文,造成ARP报文的广播风暴,影响网络通信。

在这里推荐一款查看局域网Mac地址和主机IP匹配显示的软件:Nbtscan  很好用网上也有使用说明,对于查找攻击主机很犀利、

0x8  ARP欺骗攻击的防御

-ARP双向绑定

在pc端上 IP+mac 绑定

在网络设备(交换路由)上 采用ip+mac+端口绑定

网关也进行IP和mac的静态绑定

-采用支持ARP过滤的防火墙

-建立DHCP服务器

ARP攻击一般先攻击网关,将DHCP服务器建立在网关上

-划分安全区域

ARP广播包是不能跨子网或网段传播的,网段可以隔离广播包。VLAN就是一个逻辑广播域,通过VLAN技术可以在局域网中创建多个子网,就在局域网中隔离了广播。。缩小感染范围。  但是,安全域划分太细会使局域网的管理和资源共享不方便。

前几天体育课认识的一基友,遭ARP攻击了,问我怎么防,直接给我问懵了,就看了看,对于个人来说,在局域网内遭ARP攻击,还能咋办,除了装ARP防火墙,用代理,我也没辙。

  不过最好的办法就是用arp  –a命令查看一下arp缓存表,看谁在攻击你,打电话给网管,让网管灭了它。

  

时间: 2024-11-05 13:31:51

ARP攻击原理简析及防御措施的相关文章

图解ARP协议(二)ARP攻击原理与实践

一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么,账号是否可以被窃取?有哪些常见的ARP渗透(攻击)工具可以用来练手?ARP扫描和攻击有什么区别,底层数据包特征是怎样的? 接下来,我们通过图解的方式来深入了解ARP攻击是如何实现的. 二.ARP攻击原理 但凡局域网存在ARP攻击,都说明网络存在"中间人",我们可以用下图来解释. 在这个局

Java Annotation 及几个常用开源项目注解原理简析

PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 3 @Override public void onCreate(Bundle savedInstanceState); Retrofit Annotation Java 1 2 3 @GET("/users/{username}&quo

[转载] Thrift原理简析(JAVA)

转载自http://shift-alt-ctrl.iteye.com/blog/1987416 Apache Thrift是一个跨语言的服务框架,本质上为RPC,同时具有序列化.发序列化机制:当我们开发的service需要开放出去的时候,就会遇到跨语言调用的问题,JAVA语言开发了一个UserService用来提供获取用户信息的服务,如果服务消费端有PHP/Python/C++等,我们不可能为所有的语言都适配出相应的调用方式,有时候我们会很无奈的使用Http来作为访问协议;但是如果服务消费端不能

cgroup原理简析:进程调度

本篇来探究下cgroup对cpu的限制机制,前文提到过cgroup也是通过进程调度子系统来达到限制cpu的目的,因此需要了解下进程调度子系统. 因为是介绍cgroup的文章,因此只介绍进程调度中与cgroup密切关联的部分,详细完成的进程调度实现可参考进程调度的相关资料. 本文分为三个部分,首先介绍进程调度中的调度算法,在该基础上引入组调度,最后结合前面文章(cgroup原理简析:vfs文件系统)来说明上层通过echo pid >> tasks, echo n > cpu.shares等

Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义.解析,并对几个 Android 开源库 Annotation 原理进行简析.PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 完整版原文见:Java Android 注解(Ann

SIFT特征原理简析(HELU版)

SIFT(Scale-Invariant Feature Transform)是一种具有尺度不变性和光照不变性的特征描述子,也同时是一套特征提取的理论,首次由D. G. Lowe于2004年以<Distinctive Image Features from Scale-Invariant Keypoints[J]>发表于IJCV中.开源算法库OpenCV中进行了实现.扩展和使用. 本文主要依据原始论文和网络上相关专业分析,对SIFT特征提取的算法流程进行简单分析.由于涉及到的知识概念较多,本人

【超精简JS模版库/前端模板库】原理简析 和 XSS防范

使用jsp.php.asp或者后来的struts等等的朋友,不一定知道什么是模版,但一定很清楚这样的开发方式: <div class="m-carousel"> <div class="m-carousel-wrap" id="bannerContainer"> </div> </div> <ul class="catelist onepx" onepxset="

iOS Block原理简析

Block的语法 Block是iOS闭包的实现方式,能够获取局部变量的匿名函数. Block的OC声明 返回值类型 (^Block变量名字)(参数列表) = (参数列表){}; 例子 int (^add)(int a,int b) = ^(int a, int b) { return a + b; }; int sum = add(1,4); NSLog(@"sum = %d",sum); NSString* (^getFullName)(NSString *first,NSStrin

mongodb和redis设计原理简析

转自:http://blog.csdn.net/yangbutao/article/details/8309539 redis: 1.NIO通信 因都在内存操作,所以逻辑的操作非常快,减少了CPU的切换开销,所以为单线程的模式(逻辑处理线程和主线程是一个). reactor模式,实现自己的多路复用NIO机制(epoll,select,kqueue等) 单线程处理多任务 2.数据结构 hash+bucket结构,当链表的长度过长时,会采取迁移的措施(扩展原来两倍的hash表,把数据迁移过去,exp