ARP攻击技术与防护完全手册

2008/10/12 来源:www.arpun.com 作者:小白

一、ARP概念

咱们谈ARP之前, 还是先要知道ARP的概念和工作原理, 理解了原理知识, 才能更好去面对和分析处理问题。

1.1ARP概念知识

ARP, 全称Address Resolution Protocol, 中文名为地址解析协议, 它工作在数据链路层, 在本层和硬件接口联系, 同时对上层提供服务。

IP数据包常通过以太网发送, 以太网设备并不识别32位IP地址, 它们是以48位以太网地址传输以太网数据包。 因此, 必须把IP目的地址转换成以太网目的地址。 在以太网中, 一个主机要和另一个主机进行直接通信, 必须要知道目标主机的MAC地址。 但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。 ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址), 以保证通信的顺利进行。

1.2ARP工作原理

首先, 每台主机都会在自己的ARP缓冲区中建立一个 ARP列表, 以表示IP地址和MAC地址的对应关系。 当源主机需要将一个数据包要发送到目的主机时, 会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址, 如果有﹐就直接将数据包发送到这个MAC地址;如果没有, 就向本地网段发起一个ARP请求的广播包, 查询此目的主机对应的MAC地址。 此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。 网络中所有的主机收到这个ARP请求后, 会检查数据包中的目的IP是否和自己的IP地址一致。 如果不相同就忽略此数据包;如果相同, 该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中, 如果ARP表中已经存在该IP的信息, 则将其覆盖, 然后给源主机发送一个 ARP响应数据包, 告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后, 将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中, 并利用此信息开始数据的传输。 如果源主机一直没有收到ARP响应数据包, 表示ARP查询失败。

例如:

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

根据上面的所讲的原理, 我们简单说明这个过程:A要和B通讯, A就需要知道B的以太网地址, 于是A发送一个ARP请求广播(谁是192.168.10.2 , 请告诉192.168.10.1), 当B收到该广播, 就检查自己, 结果发现和自己的一致, 然后就向A发送一个ARP单播应答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。

1.3ARP通讯模式

通讯模式(Pattern Analysis):在网络分析中, 通讯模式的分析是很重要的, 不同的协议和不同的应用都会有不同的通讯模式。 更有些时候, 相同的协议在不同的企业应用中也会出现不同的通讯模式。 ARP在正常情况下的通讯模式应该是:请求 -> 应答 -> 请求 -> 应答, 也就是应该一问一答。  

二、常见ARP攻击类型

个人认为常见的ARP攻击为两种类型:ARP扫描和ARP欺骗。

2.1ARP扫描(ARP请求风暴)

通讯模式(可能):

请求 -> 请求 -> 请求 -> 请求 -> 请求 -> 请求 -> 应答 -> 请求 -> 请求 -> 请求...

描述:

网络中出现大量ARP请求广播包, 几乎都是对网段内的所有主机进行扫描。 大量的ARP请求广播可能会占用网络带宽资源;ARP扫描一般为ARP攻击的前奏。

出现原因(可能):

病毒程序, 侦听程序, 扫描程序。

如果网络分析软件部署正确, 可能是我们只镜像了交换机上的部分端口, 所以大量ARP请求是来自与非镜像口连接的其它主机发出的。

如果部署不正确, 这些ARP请求广播包是来自和交换机相连的其它主机。

2.2ARP欺骗

ARP协议并不只在发送了ARP请求才接收ARP应答。 当计算机接收到ARP应答数据包的时候, 就会对本地的ARP缓存进行更新, 将应答中的IP和MAC地址存储在ARP缓存中。 所以在网络中, 有人发送一个自己伪造的ARP应答, 网络可能就会出现问题。 这可能就是协议设计者当初没考虑到的!

2.2.1欺骗原理

假设一个网络环境中, 网内有三台主机, 分别为主机A、B、C。 主机详细信息如下描述:

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

正常情况下A和C之间进行通讯, 但是此时B向A发送一个自己伪造的ARP应答, 而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址), MAC地址是BB-BB-BB-BB-BB-BB(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC, 这里被伪造了)。 当A接收到B伪造的ARP应答, 就会更新本地的ARP缓存(A被欺骗了), 这时B就伪装成C了。 同时, B同样向C发送一个ARP应答, 应答包中发送方IP地址四192.168.10.1(A的IP地址), MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA), 当C收到B伪造的ARP应答, 也会更新本地ARP缓存(C也被欺骗了), 这时B就伪装成了A。 这样主机A和C都被主机B欺骗, A和C之间通讯的数据都经过了B。 主机B完全可以知道他们之间说的什么:)。 这就是典型的ARP欺骗过程。

注意:一般情况下, ARP欺骗的某一方应该是网关。

2.2.2两种情况

ARP欺骗存在两种情况:一种是欺骗主机作为“中间人”, 被欺骗主机的数据都经过它中转一次, 这样欺骗主机可以窃取到被它欺骗的主机之间的通讯数据;另一种让被欺骗主机直接断网。

◆第一种:窃取数据(嗅探)

通讯模式:

应答 -> 应答 -> 应答 -> 应答 -> 应答 -> 请求 -> 应答 -> 应答 ->请求->应答...

描述:

这种情况就属于我们上面所说的典型的ARP欺骗, 欺骗主机向被欺骗主机发送大量伪造的ARP应答包进行欺骗, 当通讯双方被欺骗成功后, 自己作为了一个“中间人“的身份。 此时被欺骗的主机双方还能正常通讯, 只不过在通讯过程中被欺骗者“窃听”了。

出现原因(可能):

木马病毒

嗅探

人为欺骗

◆第二种:导致断网

通讯模式:

应答 -> 应答 -> 应答 -> 应答 -> 应答 -> 应答 -> 请求…

描述:

这类情况就是在ARP欺骗过程中, 欺骗者只欺骗了其中一方, 如B欺骗了A, 但是同时B没有对C进行欺骗, 这样A实质上是在和B通讯, 所以A就不能和C通讯了, 另外一种情况还可能就是欺骗者伪造一个不存在地址进行欺骗。

对于伪造地址进行的欺骗, 在排查上比较有难度, 这里最好是借用TAP设备(呵呵, 这个东东好像有点贵勒), 分别捕获单向数据流进行分析!

出现原因(可能):

木马病毒

人为破坏

一些网管软件的控制功能

三、常用的防护方法

搜索网上, 目前对于ARP攻击防护问题出现最多是绑定IP和MAC和使用ARP防护软件, 也出现了具有ARP防护功能的路由器。 呵呵, 我们来了解下这三种方法。

3.1静态绑定 

最常用的方法就是做IP和MAC静态绑定, 在网内把主机和网关都做IP和MAC绑定。  

欺骗是通过ARP的动态实时的规则欺骗内网机器, 所以我们把ARP全部设置为静态可以解决对内网PC的欺骗, 同时在网关也要进行IP和MAC的静态绑定, 这样双向绑定才比较保险。

方法:

对每台主机进行IP和MAC地址静态绑定。

通过命令, arp -s可以实现 “arp –s IP MAC地址 ”。

例如:“arp –s192.168.10.1 AA-AA-AA-AA-AA-AA”。

如果设置成功会在PC上面通过执行arp -a 可以看到相关的提示: Internet Address Physical Address Type 

192.168.10.1AA-AA-AA-AA-AA-AA static(静态) 

一般不绑定,在动态的情况下: 

Internet AddressPhysical AddressType 

192.168.10.1 AA-AA-AA-AA-AA-AA dynamic(动态)

说明:对于网络中有很多主机, 500台, 1000台..., 如果我们这样每一台都去做静态绑定, 工作量是非常大的。 。 。 。 , 这种静态绑定, 在电脑每次重起后, 都必须重新在绑定, 虽然也可以做一个批处理文件, 但是还是比较麻烦的!

3.2使用ARP防护软件

目前关于ARP类的防护软件出的比较多了, 大家使用比较常用的ARP工具主要是欣向ARP工具, Antiarp等。 它们除了本身来检测出ARP攻击外, 防护的工作原理是一定频率向网络广播正确的ARP信息。 我们还是来简单说下这两个小工具。

3.2.1欣向ARP工具

俺使用了该工具, 它有5个功能:

A. IP/MAC清单 

选择网卡。 如果是单网卡不需要设置。 如果是多网卡需要设置连接内网的那块网卡。

IP/MAC扫描。 这里会扫描目前网络中所有的机器的IP与MAC地址。 请在内网运行正常时扫描, 因为这个表格将作为对之后ARP的参照。

之后的功能都需要这个表格的支持, 如果出现提示无法获取IP或MAC时, 就说明这里的表格里面没有相应的数据。

B.ARP欺骗检测 

这个功能会一直检测内网是否有PC冒充表格内的IP。 你可以把主要的IP设到检测表格里面, 例如, 路由器, 电影服务器, 等需要内网机器访问的机器IP。

(补充)“ARP欺骗记录”表如何理解:

“Time”:发现问题时的时间;

“sender”:发送欺骗信息的IP或MAC;

“Repeat”:欺诈信息发送的次数;

“ARP info”:是指发送欺骗信息的具体内容.如下面例子:

timesenderRepeatARP info 22:22:22192.168.1.22 1433192.168.1.1 is at 00:0e:03:22:02:e8 

这条信息的意思是:在22:22:22的时间,检测到由192.168.1.22发出的欺骗信息, 已经发送了1433次, 他发送的欺骗信息的内容是:192.168.1.1的MAC地址是00:0e:03:22:02:e8。

打开检测功能, 如果出现针对表内IP的欺骗, 会出现提示。 可以按照提示查到内网的ARP欺骗的根源。 提示一句, 任何机器都可以冒充其他机器发送IP与MAC, 所以即使提示出某个IP或MAC在发送欺骗信息, 也未必是100%的准确。 所有请不要以暴力解决某些问题。  

C.主动维护

这个功能可以直接解决ARP欺骗的掉线问题, 但是并不是理想方法。 他的原理就在网络内不停的广播制定的IP的正确的MAC地址。

“制定维护对象”的表格里面就是设置需要保护的IP。 发包频率就是每秒发送多少个正确的包给网络内所有机器。 强烈建议尽量少的广播IP, 尽量少的广播频率。 一般设置1次就可以, 如果没有绑定IP的情况下, 出现ARP欺骗, 可以设置到50-100次, 如果还有掉线可以设置更高, 即可以实现快速解决ARP欺骗的问题。 但是想真正解决ARP问题, 还是请参照上面绑定方法。

D. 欣向路由器日志

收集欣向路由器的系统日志, 等功能。

E.抓包

类似于网络分析软件的抓包, 保存格式是.cap。

3.2.1Antiarp

这个软件界面比较简单, 以下为我收集该软件的使用方法。

A.填入网关IP地址, 点击[获取网关地址]将会显示出网关的MAC地址。 点击[自动防护]即可保护当前网卡与该网关的通信不会被第三方监听。 注意:如出现ARP欺骗提示, 这说明攻击者发送了ARP欺骗数据包来获取网卡的数据包, 如果您想追踪攻击来源请记住攻击者的MAC地址, 利用MAC地址扫描器可以找出IP 对应的MAC地址.

B.IP地址冲突

如频繁的出现IP地址冲突, 这说明攻击者频繁发送ARP欺骗数据包, 才会出现IP冲突的警告, 利用Anti ARP Sniffer可以防止此类攻击。

C.您需要知道冲突的MAC地址, Windows会记录这些错误。 查看具体方法如下:

右击[我的电脑]--[管理]--点击[事件查看器]--点击[系统]--查看来源为[TcpIP]---双击事件可以看到显示地址发生冲突, 并记录了该MAC地址, 请复制该MAC地址并填入Anti ARP Sniffer的本地MAC地址输入框中(请注意将:转换为-), 输入完成之后点击[防护地址冲突], 为了使MAC地址生效请禁用本地网卡然后再启用网卡, 在CMD命令行中输入Ipconfig /all, 查看当前MAC地址是否与本地MAC地址输入框中的MAC地址相符, 如果更改失败请与我联系。 如果成功将不再会显示地址冲突。

注意:如果您想恢复默认MAC地址,请点击[恢复默认],为了使MAC地址生效请禁用本地网卡然后再启用网卡。

3.3具有ARP防护功能的路由器

这类路由器以前听说的很少, 对于这类路由器中提到的ARP防护功能, 其实它的原理就是定期的发送自己正确的ARP信息。 但是路由器的这种功能对于真正意义上的攻击, 是不能解决的。

ARP的最常见的特征就是掉线, 一般情况下不需要处理一定时间内可以回复正常上网, 因为ARP欺骗是有老化时间的, 过了老化时间就会自动的回复正常。 现在大多数路由器都会在很短时间内不停广播自己的正确ARP信息, 使受骗的主机回复正常。 但是如果出现攻击性ARP欺骗(其实就是时间很短的量很大的欺骗ARP, 1秒有个几百上千的), 它是不断的发起ARP欺骗包来阻止内网机器上网, 即使路由器不断广播正确的包也会被他大量的错误信息给淹没。

可能你会有疑问:我们也可以发送比欺骗者更多更快正确的ARP信息啊?如果攻击者每秒发送1000个ARP欺骗包, 那我们就每秒发送1500个正确的ARP信息!

面对上面的疑问, 我们仔细想想, 如果网络拓扑很大, 网络中接了很多网络设备和主机, 大量的设备都去处理这些广播信息, 那网络使用起来好不爽, 再说了会影响到我们工作和学习。 ARP广播会造成网络资源的浪费和占用。 如果该网络出了问题, 我们抓包分析, 数据包中也会出现很多这类ARP广播包, 对分析也会造成一定的影响。

 

网友评论
评论(...
全部评论