gaweł mikołajczyk. i pv6 insecurities at first hop

40
Gaweł Mikołajczyk [email protected] IPv6 insecurities at First Hop

Upload: yury-chemerkin

Post on 09-Jun-2015

163 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Gaweł mikołajczyk. i pv6 insecurities at first hop

Gaweł Mikołajczyk [email protected]

IPv6 insecurities at First Hop

Page 2: Gaweł mikołajczyk. i pv6 insecurities at first hop

SETTING THE STAGE

Page 3: Gaweł mikołajczyk. i pv6 insecurities at first hop

IPv6 Neighbor Discovery Fundamentals

RFC 4861, Neighbor Discovery for IP Version 6 (IPv6)

RFC 4862, IPv6 Stateless Address Autoconfiguration

Used for:

Router discovery

IPv6 Stateless Address Auto Configuration (SLAAC)

IPv6 address resolution (replaces ARP)

Neighbor Unreachability Detection (NUD)

Duplicate Address Detection (DAD)

Redirection

Operates above ICMPv6

Relies heavily on multicast (including L2-multicast)

Works with ICMP messages and messages “options”

Page 4: Gaweł mikołajczyk. i pv6 insecurities at first hop

DHCP server

Router

Assign addresses Announces default router Announces link parameters

IPv4 link model is DHCP-centric

„An IPv4 link”

Announces default router Announces link parameters

– Assign addresses Assign addresses

IPv6 link model is essentially distributed, with DHCP playing a minor role

„An IPv6 link”

IPv4 to IPv6 – Link model shift

DHCP server

Page 5: Gaweł mikołajczyk. i pv6 insecurities at first hop

Securing Link Operations: First Hop Trusted Device

Advantages

– central administration, central operation

– Complexity limited to first hop

– Transitioning lot easier

– Efficient for threats coming from the link

– Efficient for threats coming from outside

Disadvantages

– Applicable only to certain topologies

– Requires first-hop to learn about end-nodes

– First-hop is a bottleneck and single-point of failure

Cisco Current Roadmap IETF SAVI WG

Time server

Certificate

server

Page 6: Gaweł mikołajczyk. i pv6 insecurities at first hop

„TARGETING THE HOSTS”

Page 7: Gaweł mikołajczyk. i pv6 insecurities at first hop

A and B can now exchange packets on this link

IPv6 Address Resolution – comparing with IPv4 ARP

Creates neighbor cache entry, resolving IPv6 address into MAC address.

Messages: Neighbor Solicitation (NS), Neighbor Advertisement (NA)

A B C

NS

ICMP type = 135 (Neighbor Solicitation)

Src = A

Dst = Solicited-node multicast address of B

Data = B

Option = link-layer address of A

Query = what is B’s link-layer address?

NA

ICMP type = 136 (Neighbor Advertisement) Src = one B’s IF address Dst = A Data = B

Option = link-layer address of B

Page 8: Gaweł mikołajczyk. i pv6 insecurities at first hop

Attacking IPv6 Address Resolution

Attacker can claim victim's IPv6 address.

NS

Src = B or any C’s IF address Dst = A

Data = B Option = link-layer address of C

NA

A B C

Dst = Solicited-node multicast address of B

Query = what is B’s link-layer address? NS

Countermeasures: Static Cache Entries, Address GLEAN, SeND (CGA) on routers, Integrity Guard (Address-Watch).

Page 9: Gaweł mikołajczyk. i pv6 insecurities at first hop

Address GLEAN

H1

Binding table

NS [IP source=A1, LLA=MACH1]

DHCP-server

REQUEST [XID, SMAC = MACH2]

REPLY[XID, IPA21, IPA22]

H2 H3

data [IP source=A3, SMAC=MACH3]

DAD NS [IP source=UNSPEC, target = A3]

NA [IP source=A1, LLA=MACH3]

IPv6 MAC VLAN IF

A1 MACH1 100 P1

A21 MACH2 100 P2

A22 MACH2 100 P2

A3 MACH3 100 P3

DHCP LEASEQUERY

DHCP LEASEQUERY_REPLY

H1 H2 H3

Gleaning means inspecting the

Page 10: Gaweł mikołajczyk. i pv6 insecurities at first hop

IPv6 Duplicate Address Detection (DAD)

Verify IPv6 address uniqueness, verify no neighbors claims the address

Required (MUST) by SLAAC, recommended (SHOULD) by DHCP

Messages: Neighbor Solicitation, Neighbor Advertisement

ICMP type = 135 (Neighbor Solicitation)

Src = UNSPEC = 0::0

Dst = Solicited-node multicast address of A

Data = A

Query = Does anybody use A already?

NS

Node A starts using the address

A B C

Page 11: Gaweł mikołajczyk. i pv6 insecurities at first hop

Attack On DAD

Attacker hacks any victim's DAD attempts.

Victim can't configure IP address and can't communicate. DoS condition.

NS

Src = any C’s IF address Dst = A

Data = A Option = link-layer address of C

NA “it’s mine !”

A C

Src = UNSPEC

Dst = Solicited-node multicast address of A

Data = A

Query = Does anybody use A already?

Page 12: Gaweł mikołajczyk. i pv6 insecurities at first hop

Device tracking

H1

Binding table

IPv6 MAC VLAN IF STATE

A1 MACH1 100 P1 STALE

A21 MACH2 100 P2 REACH

A22 MACH2 100 P2 REACH

A3 MACH3 100 P3 STALE

H2 H3

Address GLEAN

DAD NS [IP source=UNSPEC, target = A1]

DAD NS [IP source=UNSPEC, target = A3]

NA [target = A1LLA=MACH1]

IPv6 MAC VLAN IF STATE

A1 MACH1 100 P1 REACH

A21 MACH2 100 P2 REACH

A22 MACH2 100 P2 REACH

– Keep track of device state – Probe devices when becoming stale – Remove inactive devices from the binding table – Record binding creation/deletion/changes

Goal: to track active addresses (devices) on the link

Page 13: Gaweł mikołajczyk. i pv6 insecurities at first hop

IPv6 Source Guard

H1

Binding table

IPv6 MAC VLAN IF

A1 MACA1 100 P1

A21 MACA21 100 P2

A22 MACA22 100 P2

A3 MACA3 100 P3

H2 H3

Address GLEAN

– Allow traffic sourced with known IP/SMAC – Deny traffic sources with unknown IP/SMAC

P1:: data, src= A1, SMAC = MACA1

P2:: data src= A21, SMAC = MACA21

P3:: data src= A3, SMAC = MACA3

P3 ::A3, MACA3

DAD NS [IP source=UNSPEC, target = A3]

NA [target = A1LLA=MACA3]

DHCP LEASEQUERY

DHCP LEASEQUERY_REPLY

Validating the source address of IPv6 traffic sourced from the link

Page 14: Gaweł mikołajczyk. i pv6 insecurities at first hop

„TARGETING THE ROUTER”

Page 15: Gaweł mikołajczyk. i pv6 insecurities at first hop

Why should you care about router stealing?

$ ping6 -I en1 ff02::1%en1

PING6(56=40+8+8 bytes) fe80::226:bbff:fexx:xxxx%en1 --> ff02::1

16 bytes from fe80::226:bbff:fexx:xxxx%en1, icmp_seq=0 hlim=64 time=0.140 ms

. . .

16 bytes from fe80::cabc:c8ff:fec3:fdef%en1, icmp_seq=3 hlim=64 time=402.112 ms

^C

--- ff02::1%en1 ping6 statistics ---

4 packets transmitted, 4 packets received, +142 duplicates, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.140/316.721/2791.178/412.276 ms

$ ifconfig en1

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

ether 00:26:bb:xx:xx:xx

inet6 fe80::226:bbff:fexx:xxxx%en1 prefixlen 64 scopeid 0x6

inet 10.19.19.118 netmask 0xfffffe00 broadcast 10.19.19.255

media: autoselect

status: active

$ ndp -an

Neighbor Linklayer Address Netif Expire St Flgs Prbs

2001:xxxx:xxxx:1:3830:abff:9557:e33c 0:24:d7:5:6b:f0 en1 23h59m30s S

. . .

$ ndp -an | wc -l

64

Is there an IPv6 Network?

Are there any IPv6 peers?

Configure a tunnel, enable forwarding, transmit RA

Page 16: Gaweł mikołajczyk. i pv6 insecurities at first hop

ICMP Type = 133 (Router Solicitation)

Src = UNSPEC (or Host link-local address)

Dst = All-routers multicast address (FF02::2)

Query = please send RA

RS

ICMP Type = 134 (Router Advertisement)

Src = Router link-local address

Dst = All-nodes multicast address (FF02::1)

Data = router lifetime, retranstime, autoconfig flag

Option = Prefix, lifetime

RA

Use B as default gateway

Find default/first-hop routers

Discover on-link prefixes => which destinations are neighbors

Messages: Router Advertisements (RA), Router Solicitations (RS)

B

IPv6 Router Discovery

A

Internet

Page 17: Gaweł mikołajczyk. i pv6 insecurities at first hop

Attacking IPv6 Router Discovery

Attacker tricks victim into accepting him as default router

Based on rogue Router Advertisements

The most frequent threat by non-malicious user

Src = C’s link-local address

Dst = All-nodes

Data = router lifetime, autoconfig flag

Options = subnet prefix, slla

RA

Node A sending off-link traffic to C

B

C A

Src = B’s link-local address

Dst = All-nodes

Data = router lifetime=0

RA

Internet

Page 18: Gaweł mikołajczyk. i pv6 insecurities at first hop

IPv6 RA-Guard – Securing Router Discovery

Verification succeeded?

Forward RA

Switch selectively accepts or rejects RAs based on various criteria – ACL (configuration) based, learning-based or challenge (SeND) based. Hosts see only allowed RAs, and RAs with allowed content. More countermeasures: static routing, SeND, VLAN segmentation, PACL.

A C

“I am the default gateway” Router Advertisement Option: prefix(s)

RA

Page 19: Gaweł mikołajczyk. i pv6 insecurities at first hop

IPv6 Stateless Address Auto-Configuration (SLAAC)

Stateless, based on prefix information delivered in Router Advertisements.

Messages: Router Advertisements, Router Solicitations

ICMP Type = 133 (Router Solicitation)

Src = UNSPEC (or Host link-local address)

Dst = All-routers multicast address (FF02::2)

Query = please send RA

RS

ICMP Type = 134 (Router Advertisement)

Src = Router link-local address

Dst = All-nodes multicast address (FF02::1)

Data = router lifetime, retranstime, autoconfig flag

Options = Prefix X,Y,Z, lifetime

RA

Source traffic with X::x, Y::y, Z::z

Computes X::x, Y::y, Z::z and DADs them

NS

A B

Internet

Page 20: Gaweł mikołajczyk. i pv6 insecurities at first hop

Attacking IPv6 Stateless Address Auto-Configuration

Attacker spoofs Router Advertisement with false on-link prefix

Victim generates IP address with this prefix

Access router drops outgoing packets from victim (ingress filtering)

Incoming packets can't reach victim

B

Router B filters out BAD::A

Computes BAD::A and DAD it

RA Src = B’s link-local address

Dst = All-nodes

Options = prefix X Preferred lifetime = 0

Src = B’s link-local address

Dst = All-nodes

Options = prefix BAD, Preferred lifetime

RA Deprecates X::A

Node A sourcing off-link traffic to B with BAD::A

A C

Internet

Page 21: Gaweł mikołajczyk. i pv6 insecurities at first hop

Cryptographically Generated Addresses CGA RFC 3972 (Simplified)

Each devices has a RSA key pair (no need for cert)

Ultra light check for validity

Prevent spoofing a valid CGA address

SHA-1

RSA Keys Priv Pub

Subnet Prefix

Interface Identifier

Crypto. Generated Address

Signature

SeND Messages

Modifier

Public Key

Subnet Prefix

CGA Params

Page 22: Gaweł mikołajczyk. i pv6 insecurities at first hop

Router R host

Certificate Authority CA0 Certificate Authority Certificate C0

Router certificate request

Router certificate CR

Certificate Path Solicit (CPS): I trust CA0, who are you R?

Certificate Path Advertise (CPA): I am R, this is my certificate CR signed by CA0

1

2

3

4

5

6 Verify CR against CA0

7 Insert R as default route

ROUTER ADVERTISEMENT (SRC = R)

provision

provision

Using SeND for router authorization

A

Each node takes care of its own security Verifies router legitimacy Verifies address ownership

Subject Name contains the list of authorized IPv6 prefixes

Page 23: Gaweł mikołajczyk. i pv6 insecurities at first hop

SeND Deployment Challenges with boundaries

Nodes must be provisioned with CA certificate(s)

A chain of trust is easy to establish within the administrative boundaries, but very hard outside

Very few IPv6 stacks support SeND today

ADMINISTRATIVE BOUNDARY

CA

Router Host

CA

Router Host

CA

Page 24: Gaweł mikołajczyk. i pv6 insecurities at first hop

„EXHAUSTING THE CACHE”

Page 25: Gaweł mikołajczyk. i pv6 insecurities at first hop

Reconnaissance in IPv6? Easy with Multicast.

No need for reconnaissance anymore

3 site-local multicast addresses (not enabled by default)

FF05::2 all-routers, FF05::FB mDNSv6, FF05::1:3 all DHCP servers

Several link-local multicast addresses (enabled by default)

FF02::1 all nodes, FF02::2 all routers, FF02::F all UPnP, …

2001:db8:2::50

2001:db8:1::60

2001:db8:3::70

Attacker FF05::1:3

Source Destination Payload

DHCP Attack

http://www.iana.org/assignments/ipv6-multicast-addresses/

Page 26: Gaweł mikołajczyk. i pv6 insecurities at first hop

X scanning 2 64 addresses

(ping PFX::a, PFX::b, …PFX::z)

Gateway

PFX::/64

NS

Dst = Solicited-node multicast address of PFX::a

Query = what is PFX::a ’s link-layer address?

NS

Dst = Solicited-node multicast address of PFX::b

Query = what is PFX::b ’s link-layer address?

NS

Dst = Solicited-node multicast address of PFX::z

Query = what is PFX::z’s link-layer address?

3 seconds history

X

Remote address resolution cache exhaustion

Countermeasures: address provisioning mechanisms and filtering on routers, Destination Guard on switches

Page 27: Gaweł mikołajczyk. i pv6 insecurities at first hop

host

Forward packet

Mitigate prefix-scanning attacks and Protect ND cache Useful at last-hop router and L3 distribution switch Drops packets for destinations without a binding entry

Lookup D1

found

B

NO

L3 switch

Src=D1

Internet

Address glean Scanning

{P/64}

Src=Dn

Binding table Neighbor cache

Destination guard – mitigating cache exhaustion

Page 28: Gaweł mikołajczyk. i pv6 insecurities at first hop

Mitigating Remote Neighbor Cache Exhaustion

Built-in rate limiter but no option to tune it

Since 15.1(3)T: ipv6 nd cache interface-limit

Or IOS-XE 2.6: ipv6 nd resolution data limit

Destination-guard is coming with First Hop Security phase 3

Using a /64 on point-to-point links => a lot of addresses to scan!

Using /127 could help (RFC 6164)

Internet edge/presence: a target of choice

Ingress ACL permitting traffic to specific statically configured (virtual) IPv6 addresses only

Using infrastructure ACL prevents this scanning

iACL: edge ACL denying packets addressed to your routers

Easy with IPv6 because new addressing scheme can be done

Page 29: Gaweł mikołajczyk. i pv6 insecurities at first hop

YOUR IPS CAN HELP, PROBABLY

Page 30: Gaweł mikołajczyk. i pv6 insecurities at first hop

Detecting native IPv6 Traffic

Example:

ICMPv6 Traffic for Neigbor discovery / Router advertisements

Page 31: Gaweł mikołajczyk. i pv6 insecurities at first hop

Usage of Dual-Stack on all Engines Service HTTP

Page 32: Gaweł mikołajczyk. i pv6 insecurities at first hop

What your IPS should support now

Can detect IPv6 tunnels in IPv4

IPv6 in IPv4

IPv6 in MPLS tunnel

Teredo destination IP address

Teredo source port

Teredo destination port

Teredo data packet

And more?

Detect DNS request for ISATAP

Detect traffic to 6to4 anycast server

Page 33: Gaweł mikołajczyk. i pv6 insecurities at first hop

Intrusion Prevention for L2 Security

ICMPv6 Signatures for Attack mitigation and visibility, including NA, NS, RA, RS.

Page 34: Gaweł mikołajczyk. i pv6 insecurities at first hop

ERSPAN

IPS for Virtual Switching with ERSPAN

Extends the Local SPAN to send packets outside local host (VEM)

Can be used to monitor the traffic on Virtual Switch remotely

One or more source:

Type: Ethernet, Vethernet, Port-Channel, VLAN

Direction: Receive (Ingress) / Transmit (Egress) / Both

IP based destination

ERSPAN ID provides segmentation

Permit protocol type header 0x88be for ERSPAN GRE

Management Console

NAM

ERSPAN DST

ID:1 ID:2

VMkernel

NEXUS 1000v

ESXi VM VM VM VM

Page 35: Gaweł mikołajczyk. i pv6 insecurities at first hop

PUTTING IT ALL TOGETHER

Page 36: Gaweł mikołajczyk. i pv6 insecurities at first hop

Features for IPv6 First-Hop Security

Switches do/will integrate a set of monitoring, inspection and guard features for a variety of security-centric purposes:

1. RA-guard

2. Address NDP address glean/inspection (NDP+DHCP+data)

3. Integrity guard (Address watch/ownership enforcement)

4. Device Tracking

5. DHCP-guard

6. DAD/Resolution proxy

7. Source-guard (SAVI)

8. Destination-guard

9. DHCP L2 relay

Ask your vendor.for current support and serious roadmap.

cisco.com/en/US/docs/ios/ipv6/configuration/guide/ip6-roadmap.html

Page 37: Gaweł mikołajczyk. i pv6 insecurities at first hop

First Hop Security Phase I in 2010 Protecting against Rogue RA

Port ACL (see later) blocks all ICMPv6 Router Advertisements from hosts

interface FastEthernet3/13

switchport mode access

ipv6 traffic-filter ACCESS_PORT in

access-group mode prefer port

RA-guard feature in host mode (12.2(33)SXI4 &

12.2(54)SG ): also dropping all RA received on this port

interface FastEthernet3/13

switchport mode access

ipv6 nd raguard

access-group mode prefer port

RA

RA

RA

RA

RA

Page 38: Gaweł mikołajczyk. i pv6 insecurities at first hop

IPv6 Snooping Phase II and III

Phase II

DHCP Guard

Source Guard

Multi Switch operation

RA Throttler

NDP Multicast Suppress

Phase III

Destination Guard

Prefix Guard

DAD Proxy

Binding Table Recovery

SVI support

Page 39: Gaweł mikołajczyk. i pv6 insecurities at first hop

The bottom line

Look inside NetFlow records

Protocol 41: IPv6 over IPv4 or 6to4 tunnels

IPv4 address: 192.88.99.1 (6to4 anycast server)

UDP 3544, the public part of Teredo, yet another tunnel

Look into DNS server log for resolution of ISATAP

Beware of the IPv6 latent threat:

Your IPv4-only network may be vulnerable to IPv6 attacks now.

Page 40: Gaweł mikołajczyk. i pv6 insecurities at first hop

THANK YOU.