|
近来与Arp相关恶意软件越来越猖獗,受害者的也不少,国内的各大杀毒厂商也纷纷推出Arp防火墙。但大部分防火墙虚有其表,原因下面会具体介绍。 这篇文章不是科普,主要是思路,更想起到抛砖引玉的作用。让世界清静一点。此外,从从未接触到熟悉Arp协议到写出Arp欺骗和反欺骗的test code,前前后后也不过一个星期多一点的时间。经验有限,疏漏之处,再所难免,各位见谅。
Arp协议和Arp欺骗这里就不做介绍了。网络这方面的文章比比皆是。
为了便于理解,下面构造一些名词:
假如局域网内,有网关,发起欺骗的主机(以下简称欺骗主机),受骗主机
双向欺骗:欺骗主机使得网关认为欺骗主机是受骗主机同时让受骗主机认为欺骗主机是网关;
单向欺骗网关:欺骗主机只使网关认为欺骗主机是受骗主机;
单向欺骗目标主机:欺骗主机只使受骗主机认为它是网关;
Arp除了能sniffer之外,现在比较流行的做法就是利用Arp进行HTTP挂马的情况了。所以下面考虑的影响基本以这个角度的方面来衡量。
由于环境不同,继续往下分,一个机房被Arp欺骗的情,机房一般以服务器为主,对外发的数据多以http应答包为主,此时单向欺骗目标主机的危害比 较大。另外一个普通的公司,家庭,及网吧之类的局域网环境,对外发的数据多以http请求为主,接收的数据多以http应答包为主,此时单向欺骗网关危害 比较大。
还有的就是和网关有关了,网关简单的先分两种:
1、支持IP和mac绑定的;
2、不支持IP和mac绑定。
支持IP和mac绑定的网关都好办,所以这里就不讨论这种情况了,主要讨论不支持IP和mac绑定的情况:
下面举的例子都是Arp双向欺骗已经存在的情况,装上Arp FW后FW将处理情况。
第一种情况——普通公司,家庭,及网吧之类局域网环境下,网关不支持IP和mac绑定:
先说欺骗策略,说到这里不得不提Arpspoof(以下简称as),最近流行这个工具,并且开源,好分析,也确实写的不错。我手头拿到的3.1版本 的源代码。若不修改as代码,在当前情况下,并处在双向欺骗时,只要把配置文件稍微改改,就能够实现利用ARP挂马。但如果受骗主机绑定了正确网关的 mac,就不灵了。但如果有人修改了as代码,使其能支持gzip解码,并且把本应发给受害主机的包,重组并解码然后再发给受害主机。就又能欺骗了。
然后再回来看看现在国内的Arp FW。比较弱的,FW一进去,连正确的网关mac都检测不出来,需要手动填。好点的能自动检测正确的网关的mac。一般步骤是:
1. 获取当前网关mac(如利用sendARP函数等等);
2. 利用网关IP发一个广播包,获取网关的mac;
3. 抓包对比,如果第一步和第二步获得网关的mac相同,则认为网关mac不是伪造的。如过第二步获得两个Arp reply,则把这两个包与第一步的mac对比,相同的说明是伪造的。如果第二步只获得一个Arp reply,以第二步获得mac为准。
检测到正确网关mac后,就静态的绑定网关IP和mac,防止别人伪造网关。
基本上都这么搞,这个思路是有缺陷的。没错,是可以防的住现在的as。因为as发Arp欺骗包间隔是3s,如果不改源代码的话。在这个的时间间隔 下,这三步是有能力获得正确的网关,但是如果把间隔设短,甚至没有间隔发Arp欺骗包的话。现在国内市面上的Arp FW几乎全都倒下。碍于面子这里就不详细说明那些厂商。
先说为什么间隔3s的话,能检测到正确网关mac,在执行第二步时,在发广播包之前必须先发一个Arp reply给网关,告诉网关自己正确的mac,然后网关才能把它本身的mac发给受骗主机。这个过程必须在3s内完成。因此如果as的spoof不设间隔 的话。那么网关在接收了你的ip和mac之后。发起欺骗的主机马上就去网关那把它改回来。这样受骗主机虽然发了广播包,但是网关根据mac,会把它本身的 mac发给欺骗主机而不是发给受骗主机,这样受骗主机依然得不到正确网关的mac。另外,哪怕受骗主机得到了正确的网关mac,也只能保证自己对外发包不 受欺骗,但是收到的包还是会被欺骗的。当然FW可以和as玩拉锯,二者都争先恐后的去网关那边刷自己的mac。但是这样导致是容易丢包。
|