如何处理ARP的攻击技巧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何处理ARP的攻击技巧相关的知识,希望对你有一定的参考价值。
以下是OMG小编为大家收集整理的文章,希望对大家有所帮助。从原理和应用谈解决ARP攻击的方法:
很多网吧和企业网络不稳,无故掉线,经济蒙受了很大的损失。根据情况可以看出这是一种存在于网络中的一种普遍问题。出现此类问题的主要原因就是遭受了ARP攻击。现在ARP不只是协议的简写,还成了掉线的代名词。由于其变种版本之多,传播速度之快,很多技术人员和企业对其束手无策。下面就来给大家从原理到应用谈一谈这方面的话题。希望能够帮大家解决此类问题,净化网络环境。
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址,实现局域网机器的通信。ARP协议对网络安全具有重要的意义。这是建立在相互信任的基础上。如果通过伪造IP地址和MAC地址实现ARP欺骗,将在网络中产生大量的ARP通信量使网络阻塞、掉线、重定向、嗅探攻击。
我们知道每个主机都用一个ARP高速缓存,存放最近IP地址到MAC硬件地址之间的映射记录。windows高速缓存中的每一条记录的生存时间一般为60秒,起始时间从被创建时开始算起。默认情况下,ARP从缓存中读取IP-MAC条目,缓存中的IP-MAC条目是根据ARP响应包动态变化的。因此,只要网络上有ARP响应包发送到本机,即会更新ARP高速缓存中的IP-MAC条目。如:X向Y发送一个自己伪造的ARP应答,而这个应答中的数据发送方IP地址是192.168.1.3(Z的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(Z的真实MAC地址却是CC-CC-CC-CC-CC-CC,这里被伪造了)。当Y接收到X伪造的ARP应答,就会更新本地的ARP缓存(Y可不知道被伪造了)。那么如果伪造成网关呢?
Switch上同样维护着一个动态的MAC缓存,它一般是这样,首先,交换机内部有一个对应的列表,交换机的端口对应MAC地址表Port n <-> Mac记录着每一个端口下面存在那些MAC地址,这个表开始是空的,交换机从来往数据帧中学习。因为MAC-PORT缓存表是动态更新的,那么让整个 Switch的端口表都改变,对Switch进行MAC地址欺骗的Flood,不断发送大量假MAC地址的数据包,Switch就更新MAC-PORT缓存,如果能通过这样的办法把以前正常的MAC和Port对应的关系破坏了,那么Switch就会进行泛洪发送给每一个端口,让Switch基本变成一个 HUB,向所有的端口发送数据包,要进行嗅探攻击的目的一样能够达到。也将造成Switch MAC-PORT缓存的崩溃,如下面交换机中日志所示:
Internet 192.168.1.4 0000b.cd85.a193 ARPAVlan256
Internet 192.168.1.5 0000b.cd85.a193 ARPAVlan256
Internet 192.168.1.6 0000b.cd85.a193 ARPAVlan256
Internet 192.168.1.7 0000b.cd85.a193 ARPAVlan256
Internet 192.168.1.8 0000b.cd85.a193 ARPAVlan256
Internet 192.168.1.9 0000b.cd85.a193 ARPAVlan256
ARP攻击时的主要现象
网上银行、保密数据的频繁丢失。当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。切换到病毒主机上网后,如果用户已经登陆服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录服务器,这样病毒主机就可以窃取所有机器的资料了。
网速时快时慢,极其不稳定,但单机进行光纤数据测试时一切正常。局域网内频繁性区域或整体掉线,重启计算机或网络设备后恢复正常
由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再次断线。
ARP的解决办法:
目前来看普遍的解决办法都是采用双绑,具体方法:
先找到正确的 网关 IP 网关物理地址 然后 在客户端做对网关的arp绑定。
步骤一:
查找本网段的网关地址,比如192.168.1.1,以下以此网关为例。在正常上网时,“开始→运行→cmd→确定”,输入:arp -a,点回车,查看网关对应的Physical Address。
比如:网关192.168.1.1 对应0A-0B-0C-0D-0E-0F。
步骤二:
编写一个批处理文件rarp.bat,内容如下:
@echo off
arp -d
arp -s 192.168.1.1 0A-0B-0C-0D-0E-0F
保存为:rarp.bat。
步骤三:
运行批处理文件将这个批处理文件拖到“windows→开始→程序→启动”中。
但双绑并不能彻底解决ARP问题,IP冲突以及一些ARP变种是不能应对的。
再有就是采用防ARP的硬件路由,但价格很高,并且不能保证在大量攻击出现地情况下稳定工作.那么现在就没有,有效并能够彻底的解决办法了吗?有的,那就是采用能够以底层驱动的方式工作的软件,并全网部署来防范ARP问题.
此类软件是通过系统底层核心驱动,以服务及进程并存的形式随系统启动并运行,不占用计算机系统资源。这种方式不同于双绑。因为它是对通信中的数据包进行分析与判断,只有合法的包才可以被放行。非法包就被丢弃掉了。也不用担心计算机会在重启后新建ARP缓存列表,因为是以服务与进程相结合的形式 存在于计算机中,当计算机重启后软件的防护功能也会随操作系统自动启动并工作。
目前满足这一要求的并能出色工作的软件推荐大家选用ARP卫士,此软件不仅仅解决了ARP问题,同时也拥有内网洪水防护功能与P2P限速功能。
ARP卫士在系统网络的底层安装了一个核心驱动,通过这个核心驱动过滤所有的ARP数据包,对每个ARP应答进行判断,只有符合规则的ARP包,才会被进一步处理.这样,就实现防御了计算机被欺骗. 同时,ARP卫士对每一个发送出去的ARP应答都进行检测,只有符合规则的ARP数据包才会被发送出去,这样就实现了对发送攻击的拦截...
洪水拦截:通过此项设置,可以对规则列表中出现了SYN洪水攻击、UDP洪水攻击、ICMP洪水攻击的机器进行惩罚。当局域网 内某台计算机所发送的SYN报文、UDP报文、ICMP报文超出此项设置中所规定的上限时,“ARP卫士”客户端将会按 照预设值对其进行相应惩罚。在惩罚时间内,这台计算机将不会再向网络内发送相应报文。但惩罚不会对已建立 的连接产生影响。
流量控制:通过此项设置,可以对规则列表中的所有计算机进行广域网及局域网的上传及下载流量进行限制(即所谓的网络 限速)。鼠标右键单击“排除机器列表”窗口即可对其中内容进行修改、编辑。存在于“排除机器列表”中的IP地址将不 会受到流量控制的约束。
ARP Guard(ARP卫士)的确可以从根本上彻底解 决ARP欺骗攻击所带来的所有问题。它不仅可以保护计算机不受ARP欺骗攻击的影响,而且还会对感染了ARP攻击病毒或欺骗木马的 病毒源机器进行控制,使其不能对局域网内其它计算机进行欺骗攻击。保持网络正常通讯,防止带有ARP欺骗攻击的机器对网内计 算机的监听,使浏览网页、数据传输时不受ARP欺骗者限制。
总体来看我觉得这个软件是目前市面上最好的了。同时在线客服工作也很负责。但有些时候对于网管来说还是不太方便。比如管理端换了IP。那么下面的客户端只能重新指向新的IP。再有软件不能对所有的无盘系统都支持。对LINUX操作系统也不能支持。希望这些能够尽快被软件开发商注意并及时更新。好了,说了这么多,希望能够给大家解决ARP掉线问题,提供帮助。 参考技术A 有可能是局域网内有ARP欺骗攻击。ARP攻击严重的情况下会导致网络瘫痪的。
建议采取如下方案:
1. 在DOS窗口中输入arp -a。检查各IP对应的mac地址,如果发现mac地址有重复,就可能存在ARP欺骗攻击。
2. 安装ARP防火墙,有arp攻击时一般可以提示攻击来源。
3. 安装WFilter里面的“网络健康度检测插件”,可以检测出ARP攻击的IP地址、MAC地址和MAC厂商信息。
如何处理Android中的防缓冲区溢出技术
【51CTO专稿】本文将具体介绍Android中的防缓冲区溢出技术的来龙去脉。
1、什么是ASLR?
ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化。通过添加攻击者预測目的地址的难度。防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。通常情况下。黑客会利用某个特定函数或库驻存在特定内存位置的这一事实。通过在操纵堆或其它内存错误时调用该函数来发动攻击。ASLR则可以避免这样的情况。由于它能确保系统和应用程序的代码每次被载入时不会出如今同一个存储位置。
苹果的iOS系统自iOS 4.3以后就支持ASLR技术;尽管Comex在7月份公布的“iPhone越狱”软件就已攻克这一防御措施。而Android已经在4.0中应用了ASLR技术。
据研究表明ASLR能够有效的减少缓冲区溢出攻击的成功率,现在Linux、FreeBSD、Windows等主流操作系统都已採用了该技术。
2、缓冲区溢出攻击原理
缓冲区溢出是一种很普遍、很危急的漏洞。在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,能够导致程序执行失败、系统宕机、又一次启动等后果。
更为严重的是。能够利用它执行非授权指令。甚至能够取得系统特权。进而进行各种非法操作。
缓冲区溢出(图1)是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不同意输入超过缓冲区长度的字符,可是绝大多数程序都会如果数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区 又被称为"堆栈". 在各个操作进程之间,指令会被暂时储存在"堆栈"其中,"堆栈"也会出现缓冲区溢出。
在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,当中最著名的样例是1988年利用fingerd漏洞的蠕虫。
而缓冲区溢出中,最为危急的是堆栈溢出,由于入侵者能够利用堆栈溢出。在函数返回时改变返回程序的地址。让其跳转到随意地址,带来的危害一种是程序崩溃导致拒绝服务,第二种就是跳转而且运行一段恶意代码,比方得到shell,然后为所欲为。
历史上最著名的缓冲区溢出攻击可能要算是1988年11月2日的Morris Worm所携带的攻击代码了。
这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏洞,给用户带来了非常大危害。此后,越来越多的缓冲区溢出漏洞被发现。从bind、wu-ftpd、telnetd、apache等经常使用服务程序,到Microsoft、Oracle等软件厂商提供的应用程序,都存在着似乎永远也弥补不完的缓冲区溢出漏洞。
图1 缓冲区溢出攻击示意
3、应用ASLR后的一个简单对照样例
以下使用一个比較典型的样例来显示使用ASLR前后的效果:
C源码:
- #include <stdlib.h>
- #include <unistd.h>
- main()
- {
- char *i;
- char buff[20];
- i=malloc(20);
- sleep(1000);
- free(i);
- }
- #ps -aux|grep test
- Warning: bad ps syntax, perhaps a bogus ‘-‘? See http://procps.sf.net/faq.html
- aslr_test 8731 0.0 0.0 1632 332 pts/0 S+ 18:49 0:00 ./test
- aslr_test 8766 0.0 0.0 2884 748 pts/1 R+ 18:49 0:00 grep test
- [email protected]_test-laptop:~$ cat /proc/8731/maps
- 08048000-08049000 r-xp 00000000 08:01 2256782 /home/aslr_test/Desktop/test
- 08049000-0804a000 rw-p 00000000 08:01 2256782 /home/aslr_test/Desktop/test
- 0804a000-0806b000 rw-p 0804a000 00:00 0 [heap]
- b7e60000-b7e61000 rw-p b7e60000 00:00 0
- b7e61000-b7f9c000 r-xp 00000000 08:01 12116 /lib/tls/i686/cmov/libc-2.5.so
- b7f9c000-b7f9d000 r--p 0013b000 08:01 12116 /lib/tls/i686/cmov/libc-2.5.so
- b7f9d000-b7f9f000 rw-p 0013c000 08:01 12116 /lib/tls/i686/cmov/libc-2.5.so
- b7f9f000-b7fa2000 rw-p b7f9f000 00:00 0
- b7fae000-b7fb0000 rw-p b7fae000 00:00 0
- b7fb0000-b7fc9000 r-xp 00000000 08:01 12195 /lib/ld-2.5.so
- b7fc9000-b7fcb000 rw-p 00019000 08:01 12195 /lib/ld-2.5.so
- bfe86000-bfe9c000 rw-p bfe86000 00:00 0 [stack]
- ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
- #ps -aux|grep test
- Warning: bad ps syntax, perhaps a bogus ‘-‘? See http://procps.sf.net/faq.html
- aslr_test 8781 0.0 0.0 1632 332 pts/0 S+ 18:49 0:00 ./test
- aslr_test 8785 0.0 0.0 2884 748 pts/1 R+ 18:49 0:00 grep test
- [email protected]_test-laptop:~$ cat /proc/8781/maps
- 08048000-08049000 r-xp 00000000 08:01 2256782 /home/aslr_test/Desktop/test
- 08049000-0804a000 rw-p 00000000 08:01 2256782 /home/aslr_test/Desktop/test
- 0804a000-0806b000 rw-p 0804a000 00:00 0 [heap]
- b7e1e000-b7e1f000 rw-p b7e1e000 00:00 0
- b7e1f000-b7f5a000 r-xp 00000000 08:01 12116 /lib/tls/i686/cmov/libc-2.5.so
- b7f5a000-b7f5b000 r--p 0013b000 08:01 12116 /lib/tls/i686/cmov/libc-2.5.so
- b7f5b000-b7f5d000 rw-p 0013c000 08:01 12116 /lib/tls/i686/cmov/libc-2.5.so
- b7f5d000-b7f60000 rw-p b7f5d000 00:00 0
- b7f6c000-b7f6e000 rw-p b7f6c000 00:00 0
- b7f6e000-b7f87000 r-xp 00000000 08:01 12195 /lib/ld-2.5.so
- b7f87000-b7f89000 rw-p 00019000 08:01 12195 /lib/ld-2.5.so
- bfe23000-bfe39000 rw-p bfe23000 00:00 0 [stack]
- ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
通过两次执行后对照/proc下的进程信息可以发现进程栈和共享库映射的地址空间都有了较大的变化。这使得以往通过esp值来推測shellcode地址的成功率大大减少了。Phrack59期有一篇文章介绍过使用return-into-libc的方法突破ASLR保护。只是存在着较大的条件限制。milw0rm的一篇文章也介绍了通过搜索linux-gate.so.1中的jmp %esp指令从而转向执行shellcode的方法,只是因为如今的编译器将要恢复的esp值保存在栈中,因此也不能继续使用。总的来说,ASLR技术可以非常好地保证Android代码及执行安全。
以上是关于如何处理ARP的攻击技巧的主要内容,如果未能解决你的问题,请参考以下文章