瑞星卡卡安全论坛

首页 » 技术交流区 » 入侵防御(HIPS) » 【原创】arp攻击,你有多神秘?
yd1227 - 2009-4-14 13:16:00
刚来论坛不久,经常听见大家谈论arp攻击,还有一些同僚深受其害,介于此,我写一篇arp攻击相关的知识,包括检测,探源,解决。因为是原创,本人理解层面有限,有讲的不正确的地方还希望大家指出

      网上已经有很多相关主题的文章了,但大都书面化,所以本篇文章以通俗、简短为主。

一.网络相关知识

1.osi7层模型

    我习惯用7层说话,也有人喜欢用4层模型。简单讲两句,为arp做铺垫。
    数据是一层一层的被封装/解封装的。
    哪七层~
应用层:顾名思义,跟应用程序相关的,协议有http,ftp,telnet等;
表示层:指 表示应用层数据的方法、形式。比如图像数据可以用jpg,bmp格式等;
会话层:顾名思义建立会话的,面向连接的通讯需要建立会话;
传输层:上层的数据传到这一层,开始被封装,添加TCP头,并计算校验值,这时的数据叫做数据报(或者数据段)。
              简单地说,在这一层,数据被指明了端口号,通过端口号就知道这是tcp的还是udp的,以及告诉上层应该用什么协议来处理这个包,比如端口80就交给http。
网络层:上层的数据到达这一层,开始封装ip头,计算校验值,这时的数据叫做数据包;在这一层,数据包有了ip地址;
数据链路层:上层的数据到达这一层,继续被封装,加入以太头部,计算校验值,这时的数据叫做数据帧;在这一层,数据帧有了MAC地址。
                    ip+mac,数据才能被发送出去。  注意,已经开始接触arp的内容了~
物理层:底层的就没什么说的了,0101010的发出去,数据流。
2.那么arp属于哪一层呢?
    至今没有一个严格的定义,有说三层,有说二层,也有说4层的(比较少了,呵呵)我通常拿二层的眼光去看待arp。
    但是有一点很肯定,它不同于三层,ip的类型为0x0800,arp的类型为0x0806。这数字具体做什么的,可以不去理会。
    一个简单的局域网或者一个vlan,都属于二层的拓扑,也就是说,arp包只可能在这种拓扑中广播,术语上这叫做广播域,它是不可能传到自己所在的广播域的外部的。
    然后,引出arp吧~
二.arp
1.到底什么是arp?
    An Ethernet Address Resolution Protocol,即地址解析协议。这个协议有什么用呀?呵呵,还是结合上一节的网络知识来说。
我们刚才提到,ip+mac,数据包才能发出去。根据ip,数据包知道自己要去的目的地在哪里,而mac,其实是告诉数据包,你下一步要去的物理设备是谁。这里我们不讨论组播包,stp等。所以,当一台主机A 1.1.1.1要发送一个报文给主机B 1.1.1.2,主机A知道了目的ip地址是1.1.1.2,但是它不知道要发送这个包的话,要发给哪台物理设备,因此它高兴的发出了一个arp request,这个包的内容为:“我是1.1.1.1,我的mac是01:02:03:04:05:06,谁能告诉我ip为1.1.1.2的mac是多少呢?”,注意,这个包是广播包,也就是说同一个广播域的设备监听到这个包,都会回复主机A,假设主机C收到了这个请求,它查看自己的arp缓存中有没有1.1.1.2对应的mac,有的话就发出一个arp response,注意,这个包是单播包,是给主机A的。主机A收到这个response,解读内容,看到了主机B的mac,建立一个对应关系:1.1.1.2——>xx:xx:xx:xx:xx。ok,主机A知道了ip和mac,它就可以发包了,而包的目的地就是拥有xx:xx:xx:xx:xx这个MAC的设备。
    通常来说,在纯二层网络内通信,目的MAC就是源主机要找的设备;而对于三层的网络,目的mac往往为网关的mac。比如一个人在局域网访问新浪,目的ip可能是新浪的真实ip,但是mac地址是自己网关的mac。
    ok,记住几点:
1.mac地址是二层的,在二层网络内使用
2.arp在二层拓扑中传播
3.数据包没有思考性,目的mac指向谁,它就被发送到哪个设备上。那么,如果目的mac是假的呢,数据包是不是就发送到假MAC的设备上了呢?没错。
2.arp攻击(arp欺骗)
    由“欺骗”二字引出了arp攻击的结果,没错,它就是要欺骗,欺骗谁?欺骗主机,欺骗网关,它想做什么,就去欺骗谁。
举两个例子:
    主机A本来保存着主机B的ip、mac对应关系:1.1.1.2——>xx:xx:xx:xx:xx,某一时刻,arp攻击开始了,不停的arp的response发过来,主机A收到了一查看,哦,内容是1.1.1.2的mac是yy:yy:yy:yy:yy:yy,那我就更新吧,这时主机A保存的对应关系变为了1.1.1.2——>yy:yy:yy:yy:yy:yy。那yy:yy:yy:yy:yy:yy这台设备到底是谁呢?我不知道,如果是主机B本身,那就ok了,没问题,如果是黑客主机C,那么主机A要发给主机B的数据都转发到主机c上,如果这个mac地址是本广播域内不存在的,那这个包该发给谁呢?
同样,如果欺骗的是网关mac,那你就上不去外网了,因为你访问外网的数据包全部没有到达网关上呀~所以,arp攻击后果可大可小,可以导致断网,可以协助黑客窃取信息
3.arp攻击的特点
    数量多,协议mac地址固定。如果网络内充斥着arp包,那就太不正常了。正常的网络里,arp是很有规律的,而且不会大量泛洪。
    中毒机器/攻击源 在局域网中发送假的APR应答包进行APR欺骗, 造成其他客户机无法获得网关和其他客户机的网卡真实MAC地址,导致无法上网和正常的局域网通信.
三.检测、防御和解决
1.检测
    还是根据arp攻击的特点吧,导致网络频繁中断并且访问不了外网,抓包一看大量的arp包,那就很明显是arp攻击了。
2.arp攻击手段
    1)arp病毒,这个好啊,全自动的,一发作,它就自动欺骗包,强一点的再拉拢(感染)几个同伙;
    2)人工。著名的工具有winarpattack。为什么提到这个工具呢,因为它很灵活,可以很好的隐藏攻击源。在设置上发现,它不仅可以设置arp协议内容里的ip和mac,还可以修改封装包时的源ip和mac,
    如果是以前,抓几个包,看看数据包的源ip和mac就知道凶手是谁了,现在不行,数据包的源ip和mac都是假的,所以你想只根据源ip+mac判断攻击源是不保险的。
3.查找攻击源
    1)虽然说查找ip+mac不保险,第一步也要先检查一下,如果判断出源ip和mac是假的,再用别的方法
    2)其实,对于源ip不固定的攻击,想确定攻击源都是很难的,像网络上的ddos,cc,攻击完了不也就完了吗,有几个案例把攻击者抓到的。但是正因为arp攻击有它的局限性--只发生在广播域之内,特点是arp包非常多,所以可以使用sniffer+NBTSCAN来定位,sniffer可以监听整个广播域的情况,你可以看见哪几个ip发包的数量异常多,NBTSCAN可以扫描本网段哪些网卡处于混杂模式,因为arp攻击的网卡通常是混杂模式。
4.防御和解决
    1)对于普通用户,还是以简单易用为主,所以他们大多选择主机防火墙,彩影啊,风云啊,瑞星等都推出了arp防火墙,具体功能怎么样,我不想评论,八仙过海各显神通,用过才知道。
    2)遇到arp攻击,请手动绑定arp。arp -d,先清空本机的arp缓存,然后arp -s ip MAC 绑定一下。因为静态绑定比动态学习的优先级高,主机会使用手工绑定的。如果你绑定正确的网关ip+mac,上网就没什么问题了、至于网速可能会有影响,因为外环境不好呀,而且你的网卡总收到arp的攻击包,它不停的要去处理,也耗费cpu和内存。赶紧从攻击源解决问题才是根本。

    ok,一口气写完了。效果不知道怎么样,但该讲的都提到了。有不理解的咱们再聊吧

用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727)
piao2008 - 2009-4-14 13:18:00
已学习,楼主辛苦
yd1227 - 2009-4-14 13:22:00


引用:
原帖由 piao2008 于 2009-4-14 13:18:00 发表
已学习,楼主辛苦

:default15: 为人民服务 哈哈
soaika - 2009-4-14 14:05:00
谢谢楼主  威望送上:default6:
yd1227 - 2009-4-14 14:37:00
谢谢!:default15:
网络尖兵 - 2009-4-15 11:57:00
谢谢,学习了。
希望楼主以后能出更精辟的帖子,有益学习
zoxmes - 2009-4-15 12:31:00
:default6: :default6: 不错哈,支持一个:)
呵呵~
快乐的幸运 - 2009-4-17 13:29:00
该用户帖子内容已被屏蔽
1
查看完整版本: 【原创】arp攻击,你有多神秘?