一、ARP病毒
二、ARP病毒发作时的现象
网络掉线, 但网络连接正常, 内网的部分PC机不能上网, 或者所有电脑不能上网, 无法打开网页或打开网页慢, 局域网时断时续并且网速较慢等。
三、ARP病毒原理 3.1 网络模型简介
众所周知, 按照OSI (Open Systems Interconnection Reference Model 开放系统互联参考模型) 的观点, 可将网络系统划分为7层结构, 每一个层次上运行着不同的协议和服务, 并且上下层之间互相配合, 完成网络数据交换的功能, 如图1:
然而, OSI的模型仅仅是一个参考模型, 并不是实际网络中应用的模型。 实际上应用最广泛的商用网络模型即TCP/IP体系模型, 将网络划分为四层, 每一个层次上也运行着不同的协议和服务, 如图2:
上图中, 蓝色字体表示该层的名称, 绿色字表示运行在该层上的协议。 由图2可见, 我们即将要讨论的ARP协议, 就是工作在网际层上的协议。
3.2 ARP协议简介
我们大家都知道, 在局域网中, 一台主机要和另一台主机进行通信, 必须要知道目标主机的IP地址, 但是最终负责在局域网中传送数据的网卡等物理设备是不识别IP地址的, 只能识别其硬件地址即MAC地址。 MAC地址是48位的, 通常表示为12个16进制数, 每2个16进制数之间用“-”或者冒号隔开, 如:00-0B-2F-13-1A-11就是一个MAC地址。 每一块网卡都有其全球唯一的MAC地址, 网卡之间发送数据, 只能根据对方网卡的MAC地址进行发送, 这时就需要一个将高层数据包中的IP地址转换成低层MAC地址的协议, 而这个重要的任务将由ARP协议完成。
ARP全称为Address Resolution Protocol, 地址解析协议。 所谓“地址解析”就是主机在发送数据包前将目标主机IP地址转换成目标主机MAC地址的过程。 ARP协议的基本功能就是通过目标设备的IP地址, 查询目标设备的MAC地址, 以保证通信的顺利进行。 这时就涉及到一个问题, 一个局域网中的电脑少则几台, 多则上百台, 这么多的电脑之间, 如何能准确的记住对方电脑网卡的MAC地址, 以便数据的发送呢?这就涉及到了另外一个概念, ARP缓存表。 在局域网的任何一台主机中, 都有一个ARP缓存表, 该表中保存这网络中各个电脑的IP地址和MAC地址的对照关系。 当这台主机向同局域网中另外的主机发送数据的时候, 会根据ARP缓存表里的对应关系进行发送。
下面, 我们用一个模拟的局域网环境, 来说明ARP欺骗的过程。
3.3 ARP欺骗过程
假设一个只有三台电脑组成的局域网, 该局域网由交换机(Switch)连接。 其中一个电脑名叫A, 代表攻击方;一台电脑叫S, 代表源主机, 即发送数据的电脑;令一台电脑名叫D, 代表目的主机, 即接收数据的电脑。 这三台电脑的IP地址分别为192.168.0.2, 192.168.0.3, 192.168.0.4。 MAC地址分别为
现在, S电脑要给D电脑发送数据了, 在S电脑内部, 上层的TCP和UDP的数据包已经传送到了最底层的网络接口层, 数据包即将要发送出去, 但这时还不知道目的主机D电脑的MAC地址MAC_D。 这时候, S电脑要先查询自身的ARP缓存表, 查看里面是否有192.168.0.4这台电脑的MAC地址, 如果有, 那很好办, 就将MAC_D封装在数据包的外面。 直接发送出去即可。 如果没有, 这时S电脑要向全网络发送一个ARP广播包, 大声询问:“我的IP是192.168.0.3, 硬件地址是MAC_S, 我想知道IP地址为192.168.0.4的主机的硬件地址是多少?” 这时, 全网络的电脑都收到该ARP广播包了, 包括A电脑和D电脑。 A电脑一看其要查询的IP地址不是自己的, 就将该数据包丢弃不予理会。 而D电脑一看IP地址是自己的, 则回答S电脑:“我的IP地址是192.168.0.4, 我的硬件地址是MAC_S”需要注意的是, 这条信息是单独回答的, 即D电脑单独向S电脑发送的, 并非刚才的广播。 现在S电脑已经知道目的电脑D的MAC地址了, 它可以将要发送的数据包上贴上目的地址MAC_D, 发送出去了。 同时它还会动态更新自身的ARP缓存表, 将192.168.0.4-MAC_D这一条记录添加进去, 这样, 等S电脑下次再给D电脑发送数据的时候, 就不用大声询问发送ARP广播包了。 这就是正常情况下的数据包发送过程。
这样的机制看上去很完美, 似乎整个局域网也天下太平, 相安无事。 但是, 上述数据发送机制有一个致命的缺陷, 即它是建立在对局域网中电脑全部信任的基础上的, 也就是说它的假设前提是:无论局域网中那台电脑, 其发送的ARP数据包都是正确的。 那么这样就很危险了!因为局域网中并非所有的电脑都安分守己, 往往有非法者的存在。 比如在上述数据发送中, 当S电脑向全网询问“我想知道IP地址为192.168.0.4的主机的硬件地址是多少?”后, D电脑也回应了自己的正确MAC地址。 但是当此时, 一向沉默寡言的A电脑也回话了:“我的IP地址是192.168.0.4, 我的硬件地址是MAC_A” , 注意, 此时它竟然冒充自己是D电脑的IP地址, 而MAC地址竟然写成自己的!由于A电脑不停地发送这样的应答数据包, 本来S电脑的ARP缓存表中已经保存了正确的记录:192.168.0.4-MAC_D, 但是由于A电脑的不停应答, 这时S电脑并不知道A电脑发送的数据包是伪造的, 导致S电脑又重新动态更新自身的ARP缓存表, 这回记录成:192.168.0.4-MAC_A, 很显然, 这是一个错误的记录(这步也叫ARP缓存表中毒), 这样就导致以后凡是S电脑要发送给D电脑, 也就是IP地址为192.168.0.4这台主机的数据, 都将会发送给MAC地址为MAC_A的主机, 这样, 在光天化日之下, A电脑竟然劫持了由S电脑发送给D电脑的数据!这就是ARP欺骗的过程。
如果A这台电脑再做的“过分”一些, 它不冒充D电脑, 而是冒充网关, 那后果会怎么样呢?我们大家都知道, 如果一个局域网中的电脑要连接外网, 也就是登陆互联网的时候, 都要经过局域网中的网关转发一下, 所有收发的数据都要先经过网关, 再由网关发向互联网。 在局域网中, 网关的IP地址一般为192.168.0.1。 如果A这台电脑向全网不停的发送ARP欺骗广播, 大声说:“我的IP地址是192.168.0.1, 我的硬件地址是MAC_A”这时局域网中的其它电脑并没有察觉到什么, 因为局域网通信的前提条件是信任任何电脑发送的ARP广播包。 这样局域网中的其它电脑都会更新自身的ARP缓存表, 记录下192.168.0.1-MAC_A这样的记录, 这样, 当它们发送给网关, 也就是IP地址为192.168.0.1这台电脑的数据, 结果都会发送到MAC_A这台电脑中!这样, A电脑就将会监听整个局域网发送给互联网的数据包!
实际上, 这种病毒早就出现过, 这就是ARP地址欺骗类病毒。 一些传奇木马(Trojan/PSW.LMir)具有这样的特性, 该木马一般通过传奇外挂、网页木马等方式使局域网中的某台电脑中毒, 这样中毒电脑便可嗅探到整个局域网发送的所有数据包, 该木马破解了《传奇》游戏的数据包加密算法, 通过截获局域网中的数据包, 分析数据包中的用户隐私信息, 盗取用户的游戏帐号和密码。 在解析这些封包之后, 再将它们发送到真正的网关。 这样的病毒有一个令网吧游戏玩家闻之色变的名字:“传奇网吧杀手” !
四、ARP病毒新的表现形式
HTTP是应用层的协议, 主要是用于WEB网页访问。 还是以上面的局域网环境举例, 如果局域网中一台电脑S要请求某个网站页面, 如想请求www.sina.com.cn这个网页, 这台电脑会先向网关发送HTTP请求, 说:“我想登陆www.sina.com.cn网页, 请你将这个网页下载下来, 并发送给我。 ”这样, 网关就会将www.sina.com.cn页面下载下来, 并发送给S电脑。 这时, 如果A这台电脑通过向全网发送伪造的ARP欺骗广播, 自身伪装成网关, 成为一台ARP中毒电脑的话, 这样当S电脑请求WEB网页时, A电脑先是“好心好意”地将这个页面下载下来, 然后发送给S电脑, 但是它在返回给S电脑时, 会向其中插入恶意网址连接!该恶意网址连接会利用MS06-014和MS07-017等多种系统漏洞, 向S电脑种植木马病毒!同样, 如果D电脑也是请求WEB页面访问, A电脑同样也会给D电脑返回带毒的网页, 这样, 如果一个局域网中存在这样的ARP病毒电脑的话, 顷刻间, 整个网段的电脑将会全部中毒!沦为黑客手中的僵尸电脑!
案例:
某企业用户反映, 其内部局域网用户无论访问那个网站, 在经过对该局域网分析之后, 发现该局域网中有ARP病毒电脑导致其它电脑访问网页时, 返回的网页带毒, 并且该带毒网页通过MS06-014和MS07-017漏洞给电脑植入一个木马下载器, 而该木马下载器又会下载10多个恶性网游木马, 可以盗取包括魔兽世界, 传奇世界, 征途, 梦幻西游, 边锋游戏在内的多款网络游戏的帐号和密码, 对网络游戏玩家的游戏装备造成了极大的损失。 被ARP病毒电脑篡改的网页如图4:
图4 被ARP病毒插入的恶意网址连接
从图4中可以看出, 局域网中存在这样的ARP病毒电脑之后, 其它客户机无论访问什么网页, 当返回该网页时, 都会被插入一条恶意网址连接, 如果用户没有打过相应的系统补丁, 就会感染木马病毒。
……