|
楼主 |
发表于 2008-5-26 12:42:20
|
显示全部楼层
ARP欺骗攻击防护
目前,很多局域网络都遇到了ARP攻击,典型现象是交换机的日志或Console口上出现大量的地址重复信息(Duplicate address),大量的PC机不能上网,查看不能上网的PC的ARP表,发现网关IP对应的 MAC地址不正确。
这是遇到ARP攻击的典型现象,遇到这种攻击主要是因为ARP攻击的编写者将它附在P2P软件上,此外网络上有很多免费的软件如,"网络执法官"、"网络剪刀手(NetCut)" 都具有ARP攻击能力,Cisco的Catalyst 交换机的 ARP Inspection能力可以成功抑制这种攻击,并且根据Log记录攻击者的源MAC和所连接端口的信息。
1.ARP 攻击的现象
1.1 显示IP地址重复
当LAN遇到网络攻击时,典型的现象是在Console口上或在日志信息显示:
09:12:11: %IP-4-DUPADDR: Duplicate address 210.53.131.169 on Vlan300, sourced by 0000.d234.83aa
09:12:11: %SYS-5-CONFIG_I: Configured from console by console
09:12:41: %IP-4-DUPADDR: Duplicate address 210.53.131.169 on Vlan300, sourced by 0000.d234.83aa
1.2 PC都不能上网,PC ARP表网关IP对应的MAC地址不正确
Vlan 上的PC不能上网,PC ping网关地址不通。
在不能上网的机器上不断显示ARP 表,网关IP对应的MAC地址在不断的变化,偶尔是正确的MAC地址,偶尔是攻击者的MAC地址:
C:\Documents and Settings\jiangjun>arp -a
Interface: 210.53.131.161--- 0x2
Internet Address Physical Address Type
210.53.131.169 00-15-fa-87-3f-c0 dynamic
C:\Documents and Settings\jiangjun>arp -a
Interface: 210.53.131.161 --- 0x2
Internet Address Physical Address Type
210.53.131.169 00-00-d2-34-83-aa dynamic
00-00-d2-34-83-aa 是攻击者的MAC地址。
2.ARP攻击的分析
2.1 攻击过程
实际上攻击过程很简单,主要是利用Gratuitous Arp更改所有VLAN PC的ARP表,攻击者A 发送一个Gratuitous Arp, 广播给同一VLAN 300的所有PC, 告诉所有PC, 网关IP对应的MAC地址是攻击者的MAC地址,
因此所有PC接到这个Gratuitous Arp公告后, 更改它的arp表,将网关IP地址对应的mac地址改成攻击者的mac地址,因此所有流量并没有发给网关,而是发给攻击者,所有PC不能上网。
2.2 Gratuitous ARP的用途
ARP 是用来获得目标IP地址的MAC地址,有一种 ARP 叫做Gratuitous ARP,通常在网络上用来作为特殊用途:
A) 检查IP地址重复
主机A为了检查IP地址重复,会发送一个 Gratutious Arp 请求,这个请求很特殊,他会询问主机A自己的IP 地址对应的MAC地址是多少,如果有IP地址重复
,则主机A收到一个响应,则表明有地址重复。
由于攻击者A发送的Gratuitous ARP 内容中包含网关的IP地址,因此,网关收到后,发现其它PC在通告自己IP的MAC地址,因此网关(交换机)会报IP地址重复信息。
B) 更新其他主机的ARP表
如HSRP的主网关A切换到网关B后,B会发送一个Gratutious Arp,通知所有PC更换它的ARP表,因此所有PC将流量发送给新的网关B
C) 通知交换机更新交换机的CAM表,使得交换机知道mac地址对应哪个端口
如当pc移动后,插在另外一个端口时,pc主动发送gratutious Arp,使得交换机及时更新CAM表
3. Catalyst 交换机对ARP攻击的抑制
3.1 静态ARP 访问控制列表
Cisco 交换机可以对Arp包进行分析,Arp攻击的本质是篡改了IP地址和MAC地址的对应关系,因此在交换机中的Arp ACL 定义了网关IP地址和其正确MAC地址的对应关系,对于不正确的网关IP地址和MAC地址对应的ARP packet,予以丢弃。
静态ARP 访问控制列表对攻击者冒充网关的MAC地址作用较大,大多数攻击都是冒充网关的MAC地址。
对于攻击者冒充其它PC的MAC的配置工作量较大,若网络使用了DHCP, 结合DHCP Snooping则可有效避免针对任何PC的MAC地址欺骗。
4.应用实例
下图是一个ARP攻击的实例,描述了攻击前和攻击后的现象,它检验了Catalyst 成功抑制了ARP攻击。
攻击者M是一台测试仪,发出 Gratutious ARP, 告诉同一Vlan 的主机网关IP地址210.53.131.169 对应的MAC地址是主机M的MAC地址。
攻击者M的MAC地址为0000.d234.83aa,网关的MAC地址为0015.fa87.3fc0。
A)攻击前,主机A可成功的和默认网关210.53.131.169通
C:\Documents and Settings\jiangjun>ping 210.53.131.169
Pinging 210.53.131.169 with 32 bytes of data:
Reply from 210.53.131.169: bytes=32 time=2ms TTL=248
Reply from 210.53.131.169: bytes=32 time=1ms TTL=248
…
B)ARP攻击发生时 ,报IP地址重复错误
09:12:11: %IP-4-DUPADDR: Duplicate address 210.53.131.169 on Vlan300, sourced by 0000.d234.83aa
09:12:11: %SYS-5-CONFIG_I: Configured from console by console
09:12:41: %IP-4-DUPADDR: Duplicate address 210.53.131.169 on Vlan300, sourced by 0000.d234.83aa //arp attacker mac address
09:13:11: %IP-4-DUPADDR: Duplicate address 210.53.131.169 on Vlan300, sourced by 0000.d234.83aa
09:13:41: %IP-4-DUPADDR: Duplicate address 210.53.131.169 on Vlan300, sourced by 0000.d234.83aa
C)此时,主机A不能ping通网关
C:\Documents and Settings\jiangjun>ping 210.53.131.169
Pinging 210.53.131.169 with 32 bytes of data:
Request timed out.
Request timed out.
…
D)在6500上配置arp inspection, 抑制这种攻击 ,此时,将arp 攻击进入的端口disable
6500(config)#arp access-list deny-arp
//只允许正确的网关IP地址和网关MAC对应的ARP包通过
6500(config-arp-nacl)#permit ip host 210.53.131.169 mac host 0015.fa87.3fc0
6500(config-arp-nacl)#deny ip host 210.53.131.169 mac any log
6500(config-arp-nacl)#permit ip any mac any
//将此ARP ACL应用到vlan 300上
6500(config)#ip arp access-list filter deny-arp vlan 300
3750(ip arp inspection filter arp vlan 100)
此时,攻击者所连的端口Gi3/3 被自动disable.
09:49:27: %SW_DAI-4-PACKET_RATE_EXCEEDED: 16 packets received in 0 milliseconds on Gi3/3.
09:49:27: %PM-SP-4-ERR_DISABLE: arp-inspection error detected on Gi3/3, putting Gi3/3 in err-disable state
09:49:27: %PM-SP-4-ERR_DISABLE: arp-inspection error detected on Gi3/3, putting Gi3/3 in err-disable state
09:49:27: %PM-SP-4-ERR_DISABLE: arp-inspection error detected on Gi3/3, putting Gi3/3 in err-disable state
09:49:27: %PM-SP-4-ERR_DISABLE: arp-inspection error detected on Gi3/3, putting Gi3/3 in err-disable state
注:Arp Inspection缺省是超过15 pps时,将端口处于err-disable状态,超过多少转发能力的门槛值,你可以设定,除此之外,你可以指定时间,当过了这段时间后又恢复正常状态。
E)主机A 又可以和网关通信了
C:\Documents and Settings\jiangjun>ping 210.53.131.169
Pinging 210.53.131.169 with 32 bytes of data:
Reply from 210.53.131.169: bytes=32 time=2ms TTL=248
Reply from 210.53.131.169: bytes=32 time=1ms TTL=248
…
5. Gratutious ARP的数据包格式
根据RFC 826定义的ARP数据包格式如下:
Gratutious ARP的格式很特殊,Gratutious ARP分为两种类型:Request或Response, 但是这两种类型的包的Sender IP 和Target IP 的地址是一样的,由于它是Broadcast, 因此Header 的Dest MAC 和Target MAC都是ff:ff:ff:ff:ff:ff。
因此针对网关的MAC地址欺骗的Gratutious 数据包格式如下:
Ethernet II, Src: 0000.d234.83aa, Dst: ff:ff:ff:ff:ff:ff
Destination: ff:ff:ff:ff:ff:ff (Broadcast)
Source: 0000.d234.83aa (0000.d234.83aa)
Type: ARP (0x0806)
Trailer: 000000000000000000000000000000000000
Address Resolution Protocol (request/gratuitous ARP)
Hardware type: Ethernet (0x0001)
Protocol type: IP (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: request (0x0001)
Sender MAC address: 0000.d234.83aa (0000.d234.83aa)
Sender IP address: 210.53.131.169 (210.53.131.169)
Target MAC address: ff:ff:ff:ff:ff:ff (Broadcast)
Target IP address: 210.53.131.169 (210.53.131.169)
Sender MAC address和Sender IP Address宣告网关210.53.131.169对应的MAC地址为0000.d234.83aa,它为攻击者的MAC地址。
补充:
最近越来越多发生的ARP攻击,使得网络用户和交换机安全得不到保证,或运行不畅甚至停运。在Catalyst系列交换机上有丰富的ARP攻击防范的功能是其它厂家产品所不具备的,可以帮助客户在LAN基础设施上对此类攻击进行防范。
1. ARP 毒杀攻击
Cat3K以上的交换机都支持动态ARP 检测(Dynamic ARP Inspection),可在DHCP环境或静态IP地址环境中使用。DAI对ARP request和response包进行拦截、检查,凡是不符合DHCP snooping IP-MAC映射表或静态ARP ACL的ARP包被丢弃。
2. ARP 洪泛攻击
DAI也对ARP包进行限速,防止ARP DoS攻击,缺省地非信任端口上限制每秒15个ARP包。通过ARP限速防止交换机和其它主机的CPU利用率过高。需要注意的是, 当ARP包超过了所限定的速率时,交换机会将端口设为error-disable状态,直到你重新激活这个端口或是使用‘errdisable recovery’命令所定义的时间间隔过后自动恢复端口。 所以这个功能最好用于接入交换机,当交换机下联其它低端交换机不支持dai时,如果在这个端口上启用ARP限速,可能会因为一个用户的非法行为造成下联的所有用户不能通信。从好的方面讲,可以帮助我们在配线间upsell到Cat3k或更高。
3. 6500上control plane protection
在Cat6500上CoPP和CPU rate-limiter可以有效防范对交换机控制层面的DoS攻击,保证交换机CPU不至因为处理这些攻击包而利用率过高无法处理正常任务。但是对于ARP流量,不能用CoPP和CPU rate-limter, 而是用以下命令:
mls qos protocol protocol-name {pass-through | {police rate burst} | {precedence value [police rate burst]}}
例如: mls qos protocol arp police 48000 |
|