Seguridad en el protocolo IPv6
Lic. Fernando AlonsoCISSP, CCNA-Sec, GSEC
Comenzó siendo IPng (Next Generation) a principios de los ’90 por la IETF
Comenzó su implementación en 1995
En la actualidad IPv6 se está convirtiendo en una realidad
Introduccion a IPv6
Los software que implementan IPv6 son nuevos y todavía no han sido testeados lo suficiente para considerarlos confiables (Sobre todo en el stack). Microsoft, Juniper, Linux, Sun, BSD y Cisco han publicado vulnerabilidades en su software de IPv6
En IPv4, las identificaciones de redes y hosts (Como protocolos de enrutamiento y DNS) se hacían in-line, dando lugar a Spoofing, Session Hijacking y DoS. Hoy esto sigue ocurriendo en IPv6, no se modificó.
Ya existen Worms para IPv6, y software de Exploits, como Scapy6 y “Hackers’choice IPv6 Toolkit”
Enfoque de seguridad en IPv6
Tanto IPv4 como IPv6 mantienen el mismo concepto de arqui-tectura de redes, por los que aspectos como asegurar perímetros o amenazas internas, deben seguir tenién-dose en cuenta.
El concepto de Cisco Self Defending Network ya puede aplicarse en entornos de IPv6
Enfoque de seguridad en IPv6
Header de IPv6
Cisco incorpora filtros en las ACL para headers IPv6.
Header de IPv6
Funcionalidad: -Neighbor Discovery Protocol (NDP), Neighbor Advertisement (NA), Neighbor Solicitation (NS)
Router Advertisements (RA) and Router Solicitations(RS) Echo Reply / Request PMTU (Proper MTU size) Multicast Listener Discovery (MLD) Mulsticast Router Discovery (MRD)
ICMPv6
Node Information Query (NIQ) Secure Neighbor Discovery Mobile IPv6
IPv6 es susceptible a casi todos los mismos ataques que IPv4, y se le agregan nuevos inherentes debido a las funcionalidades de network discovery. Se deberían filtrar los protocolos de Network Discoveries en los borders gateways.
Al permitir Multicast (Como por ejemplo en DHCP), permite a un atacante obtener información de toda una red con un solo query.
Network Discovery
Network Discovery
(config)# ipv6 access-list BLOCKMULTICAST(config-ipv6-acl)# rem permit local-link(config-ipv6-acl)# permit any ff02:: /16(config-ipv6-acl)# permit ff02:: /16 any(config-ipv6-acl)# rem deny other multicast(config-ipv6-acl)# deny ipv6 any ff00::/16(config-ipv6-acl)# deny ipv6 ff00:: /16 any(config-ipv6-acl)# rem permit any other ipv6 packets(config-ipv6-acl)# permit ipv6 any any(config-ipv6-acl)# int fa0/0(config-ipv6-acl)# ipv6 traffic-filter BLOCKMULTICAST in
Extension Header
Next Header Number 43 indica los nodos que se deben visitar. Implica misma vulnerabilidad de Spoofing que “Source Routing” de IPv4.
La complejidad de interconexión de Headers en la estructura facilita el DoS al mandar “crafted headers”, generando un “crash” en la supuesta victima.
Extension Header
Esto implica que cada vez que un router recibe un paquete con este campo activado, si o si el CPU del router debe procesarlo para reaccionar ante un error.
Esto demanda exceso de consumo de ciclos de CPU, y una gran cantidad de paquetes con esta característica puede generar una baja de performance en la red y hasta inclusive un DoS.
Router Alert Ataque de “Router Alert”: El Router Alert es un campo que le indica al
router como tiene que reaccionar ante un inconveniente (Hacer un ‘discard’, generar una respuesta ICMPv6 determinada, hacer un forward a otro nodo,etc).
Una de las opciones del paquete con RH es hacer un forward a otro nodo, se puede atacar a un nodo restringido por firewall o IPS, poniendo como IP destino un router y que este, haga un relay como IP origen a un destino restringido, pasando los filtros de seguridad, ya que el IP de origen es del mismo router.
El Hop-by-Hop y el ataque RH0:
Routing header:(config)# ipv6 access-list BLOCKRH(config-ipv6-acl)# deny ipv6 any any routing
RH0(config-ipv6-acl)# deny ipv6 any any routing-type 0
Contrarrestar Router Alert y RH0
IPv6 tambien permite desfragmentación de paquetes, permitiendo como en IPv4 un DoS enviando fragmentos malformados, e inclusive evitar los IDS/IPS.
Fragmentacion
El ataque por fragmentación se puede mitigar a través de Access Lists:(config-ipv6-acl)# deny ipv6 any 2001:db8:22:: /64 fragments
Fragmentación
Hoy en día es necesario que un firewall sea adaptable a IPv6
Inclusive durante la implementación del pro-tocolo, debe haber de-tección de protocolo y filtrado IPv6 e IPv4
Firewalls IPv6
::1 Deny loopback address::/96 Deny IPv4 Compatible addresses (deprecated)::/ffff:0.0.0.0/96 Deny IPv4-Mapped addresses (obsolete)::/8 Deny IPv4-Mapped addresses (obsolete)::0.0.0.0/96 Deny automatically tunneled packets using compatible addresses::224.0.0.0/100 Deny other compatible addresses::127.0.0.0/104 Deny other compatible addresses::0.0.0.0/104 Deny other compatible addresses::255.0.0.0/104 Deny other compatible addresses2002:e000::/20 Deny false 6to4 packets2002:7f00::/24 Deny false 6to4 packets2002:0000::/24 Deny false 6to4 packets2002:ff00::/24 Deny false 6to4 packets2002:0a00::/24 Deny false 6to4 packets2002:ac10::/28 Deny false 6to4 packets2002:c0a8::/32 Deny false 6to4 packetsfe80::/10 Deny link-local addressesfec0::/10 Deny site-local addresses (deprecated)fc00::/7 Deny unique-local packetsff00::/8 Deny multicast packets (only as a source)2001:db8::/32 Deny documentation address3ffe::/16 Deny 6bone addresses (deprecated)
Direcciones IP que se deberían denegar por defecto
Si bien son más extensos en longitud, los headers IPv6 tienen menos campos por lo que la performance de chequeo es más ágil
Algunos paquetes malformados intencionalmente pueden causar un DoS en el Firewall Perimetral por lo que éste debería estar configurado para hacer un ‘Drop’ de los paquetes que no se adecúan a los estándares.
Firewalls y Headers IPv6
Durante la actual implementación, muchas interfaces encapsulan un protocolo dentro de otro para llegar a destino (Header 41). Este método favorece el ocultamiento de un paquete pernicioso enmascarado en el túnel (Similar al GRE).
Para esto los firewalls deberian examinar y filtrar los 2 headers. El real y el encapsulado.
Encapsulación IPv6-IPv4 – Tunneled Traffic Attack
Un firewall IPv6 debería también ser “Layer 2” y concatenar tráficos correctos de Neighbor Advertisement (NA), Neighbor Solicitation (NS), Router Advertisement (RA), Multicast, y otros.
Un Firewall/Router no debería devolver paquetes ICMPv6 de lo ocurrido (Destination Unrecheable por ej.). Para no entregar datos fingering del appliance y su versión, de los hops de la red, de las reglas de filtrado, etc.
Otras precauciones
Debido a la cantidad de direcciones disponibles que ofrece IPv6, NAT no es necesario de implementar desde el enfoque del diseño de red.
Sin embargo si es necesario por seguridad, debido a que oculta el armado de la red interna de reconocimientos externos.
IPv6 y NAT
La opción “Reflect” ya viene adaptada para IPv6.
router(config)#ipv6 access-list IN-OUT
router(config-ipv6-acl)#permit tcp 2001:db8:11::/64 any eq 80 reflect OUT-IN-REFLECT
Cisco IOS Firewall avanzado
CBAC en IPv6ipv6 inspect name inspection-name protocol [alert…] [audit-trail…]
[timeout…]
interface fa0/0
ipv6 inspect inspect-name {in|out}
Ejemplo, para evitar un ataque SYN-Flood
ipv6 inspect tcp synwait-time {segundos}
ipv6 inspect tcp idle-time {segundos}
ipv6 inspect udp idle-time {segundos}
ipv6 inspect tcp max-incomplete host <valor> [block-time <minutos>]
Cisco IOS Firewall avanzado
IPv6 tiene un feature llamado Stateless Address Autoconfiguration (SLAAC) que automáticamente configura los parámetros de la red local.
Este SLAAC se basa en los requests RA (Router Advertisement – ICMPv6 type 134) y RS (Router Solicitation).
Este mensaje contiene información para configurar un host/interface en la LAN (Local Link) como:◦ Local Prefix (Los 1eros 64 bits de las direcciones IPv6 de la LAN)◦ Router Link Layer address◦ Lifetime◦ Router Priority (Cuando existen mas de un router en la LAN/Local
Link, los enrutamientos elijen el de mayor prioridad)◦ MTU◦ Otros flags
LAN Security
LAN Security
LAN Security
SLAAC no utiliza ningún tipo de autenticación. El ataque puede ser para una intrusion
(Spoofing o MITM) o para causar un DoS. Esta vulnerabilidad no sólo es explotada por
intrusos, sino tambien se puede producir por configuraciones incorrectas.
Existe una herramienta llamada “fake_router6” en el paquete “van Hausers IPv6 Toolkit” (Es Open Source, se lo puede bajar en http://www.thc.org/thc-ipv6/) que produce este tipo de ataque para testear las redes.
LAN Security
Neighbor Discovery IPv6 utiliza NDP en lugar de ARP el cual
funciona sobre ICMPv6 Se envia un Neighbor Solicitation (NS – ICMPv6
135) a una dirección multicast del Local Link El peer correspondiente responde con un
Neighbor Advertisement (ICMPv6 136) con la MAC Address
NDP no autentica, por lo que tiene las mismas vulnerabilidades de DoS, Spoofing y MITM que ARP en IPv4
LAN Security
LAN Security
LAN Security
Duplicate Address Detection Se utiliza para prevenir direcciones duplicadas. Cuando un host bootea y se asigna una IP estática en
el local link, o se modifica su IP (Que no sea gobernada por un pool DHCP), este host emite un Neighbor Solicitation para esa IP.
Si no recibe respuesta usa esa IP, si la recibe emite el host una inutilización de esa dirección.
El DAD no utiliza autenticación, por lo que es suceptible a DoS
Existe una tool en el Toolkit THC-IPv6: dos-new-IPv6 que justamente chequea este DoS en la LAN. (www.thc.org/thc-ipv6/)
LAN Security
LAN Security
LAN Security
Redirection IPv6 cuenta con un protocolo de “redirection”, que le
permite a un host corregir cual es el router correcto para la salida de paquetes.
Un host tiene un Router A para un destino determinado. Envia el paquete a ese router
El Router A detecta que existe una mejor ruta (actualizada) por otro router del local-link, entonces reenvia el paquete a ese router y le envia un mensaje de “Redirection” (ICMPv6 type 137) al host para que corrija su tabla.
Nuevamente, este protocolo no tiene autenticación. Se puede atacar la red con estos mensajes, generando
nuevamente DoSs, Spoofing y MITM
LAN Security
LAN Security
SLAAC, NDP y DAD pueden protegerse: La dirección de origen debe estar dentro del
rango del local-link El Hop-limit seteado en 255: Si el mensaje
ICMPv6 es emitido por el mismo router dentro del local-link (LAN), entonces ningun router en el camino modificaría el Hop Count. Si el número es distinto a 255, el paquete debe descartarse.
LAN Security
SEND usa el par de llave pública/privada Con SEND no se puede elegir la dirección de
la interface, sino que la genera la llave pública. Para esto utiliza el prefijo de la Subnet, la llave y un “Modifier” aleatorio.
Cada host, con su llave privada puede desencriptar la dirección completa
SEND – Secure Network Discovery
SEND – Secure Network Discovery
Hoy en día cada dirección utiliza 62 bits (64 – 2). Esta combinación la hace dificil de romper por fuerza bruta, pero sin duda la evolución de los procesadores la hará vulnerable en el futuro.
Cuando un nodo A quiere descubrir la MAC de un nodo B, realiza un multicast con el NS request compuesto por los parámetros CGA del nodo B. El nodo B puede desencriptarlo, interpretar el request y responderlo.
Para prevenir un “Replay Attack” los routers le asignan un timestamp a los mensajes.
SEND – Secure Network Discovery
SEND – Secure Network Discovery
crypto key generate rsa label SEND modulus 1024ipv6 cga generate modifier rsakeypair SENDinterface fa0/0
ipv6 cga rsakeypair SENDipv6 address FE80::/64 cgaipv6 address 2001:db8::/64 cga
Los ataques de ICMPv6 se dan sobre una red local (o local-link) por lo que los sensores de este tipo de ataques deben estar distribuidos.
Una solución es la implementación de IPS con firmas que detecten este tipo de ataque.
Configurar los routers para que envíen paquetes RA con alta prioridad:
interface fa0/0ipv6 nd router-preference high
Este comando solo esta disponible en el IOS 12.4(2)T y el 12.2(33)SB
Mitigación de ataques con ICMPv6
Armar tablas estáticas dentro del local-link (Sólo conveniente para redes chicas)
ipv6 neighbor 2001:db8::215:58FF:FE28:27A3 ethernet 0 0015.5828.27a3
Utilizar tools: Rafixd. Una herramienta basada en BSD. Esta tool detecta un mensaje RA falso y automáticamente manda a la red completa el mismo paquete pero con lifetime 0 para que sea descartado por todos los nodos.
Reducir el alcance de estos ataques con VLANs
El IETF está desarrollando un algoritmo por el que los switch durante la etapa learning toman las interfaces del local link, y una vez aprendidas y armaada la tabla, los paquetes de RA los descarta
Mitigación de ataques con ICMPv6
DHCP en IPv6 funciona en forma similar al IPv4
Es suceptible a los mismos ataques que en IPv4.
◦ Starvation◦ DoS◦ Scanning◦ Misinformation (Rogue
DHCPv6)
Ataques a DHCPv6
Starvation◦ El intruso envía solicitudes como si fuera
diferentes clientes, saturando la cantidad de direcciones.
◦ Con la cantidad de direcciones en IPv6 este tema se minimiza, pero debe ser tenido en cuenta
◦ Por mas variedad de direcciones que exista, si el pool de direcciones a entregar es chico, entonces es suceptible al ataque.
◦ Debe achicarse el timestamp para que libere con mas rapidez o por idle-time
Ataques a DHCPv6
Ataque DoS◦ Se le envian una cantidad muy grande de peticiones, en forma
constante forzando al servidor a no poder soportar la carga y dejarlo fuera de servicio.
◦ Para esto, se puede configurar la red con QoS y asignarle una sección pequeña del ancho de banda al DHCP.
◦ Esto se puede realizar con los comandos CLASS-MAP
Ataques a DHCPv6
ipv6 access-list DHCPv6_REQUESTpermit udp any eq 546 any eq 547
class-map match-all DHCPv6_REQUEST_CLASSmatch protocol ipv6match access-group name DHCPv6_REQUEST
policy-map OUT-INclass DHCPv6_REQUEST_CLASSpolicy rate 8000 bps
conform-action transmitexceed-action dropviolate-action drop
interface gig0/1load interval 30ipv6 dhcp relay destination FF05::1:3service-policy input OUT-IN
Scanning◦ Cuando un DHCP server entrega direcciones
contiguas, un intruso en el local-link puede predecir direcciones válidas o ya en desuso para ingresar en la red.
◦ Para eso, existen versiones de software de DHCP servers (Ej: Cisco Network Registrar) que entregan las direcciones de un pool en forma aleatoria.
Ataques a DHCPv6
Misinformation (Rogue DHCP Server)◦ En este caso, un host se hace pasar
por un DHCP en la red, enviando información de configuración DHCP dejando a un host fuera de servicio o situarlo dentro de su propio local-link.
◦ Este tipo de ataques se utilizaban para ingresar en redes protegidas por NAP de Microsoft o NAC de Cisco.
Ataques a DHCPv6
o Una forma de mitigarlo es con autenticación. Algunos DHCP server lo ofrece y está explícito en la RFC 3315. Para esto deben existir una adecuada administración de pre-shared keys, y sus respectivos reemplazos por antiguedad.
o Otra forma de reducir el riesgo es con una minuciosa y adecuada configuración de VLANs.
¿Preguntas?
¡Muchas gracias!
Futuras consultas a:[email protected]
Recommended