Bypass:Cisco:ICMPv6:Router:Advertisement:Guard

It turns out to be that the Cisco Router Advertisement Guard is not thoroughly implemented. This means it can be circumvented.

To bypass the Router Advertisement Guarding feature in the (very few)
Cisco switches (and images) that support it:

Attack:

Make the evil Router Advertisement fragmented and put the ICMPv6 into
the second fragment, eg. by putting a very large Destination extension
header before the ICMPv6 part.

So the packets look like:

Fragment 1:
IPv6 Header
Fragmentation Header
Destination Header (~1400 bytes)

Fragment 2:
IPv6 Header
Fragmentation Header
Destination Header (continued with some bytes)
ICMPv6 with RA

Workaround:

To prevent this attack, put the following IPv6 ACL on all ports:

deny ip any any undetermined-transport

This will drop all packets where the switch is not able to identify the
IPv6 transport type like in this attack. Note that this might drop some
unusual valid traffic too.

Workaround Bypass:

Craft the packets in a way so that the first fragment has an ICMPv6 echo
request and the second fragment overwrites the first fragment with the
ICMPv6 router advertisement.

Fragment 1:
IPv6 Header
Fragmentation Header
Destination Header (8 bytes)
ICMPv6 with Echo Request

Fragment 2:
IPv6 Header
Fragmentation Header with offset == 1 (equals position of 8th byte ==
start of Echo Request in first fragment)
ICMPv6 with RA

Note that the handling of overlapping fragments differs between
platforms, some take the first fragment received, others the latest, so
send the packets accordingly to your target.

Leave a Reply

Your email address will not be published. Required fields are marked *