Seguridad en Capa 2 – Ataques. – Contramedidas. – Buenas prácticas.
Contenidos • • • • • • •
Porqué Porq ué as aseg egur urar ar la cap capa a 2? 2? Mit ito os de la capa 2 Ataq At aque ues s bas basad ados os en MA MAC C y ARP ARP Ataques basados en VLAN Ataq At aque ues s ba basa sado dos s en ST STP P Contramedidas Buenas Prá Prác cti tic cas
Contenidos • • • • • • •
Porqué Porq ué as aseg egur urar ar la cap capa a 2? 2? Mit ito os de la capa 2 Ataq At aque ues s bas basad ados os en MA MAC C y ARP ARP Ataques basados en VLAN Ataq At aque ues s ba basa sado dos s en ST STP P Contramedidas Buenas Prá Prác cti tic cas
Porqué asegurar la capa 2? • Según Según el el FBI el 80% 80% de los los ataqu ataques es provi proviene enen n del del interior de la organización. • 99% de los los puer puertos tos (o boc bocas) as) de las las rede redes s LAN LAN corporativas están “desprotegidos”. Es decir, cualquiera puede conectarse a ellos. • La mayoría de las empresas está desplegando redes inhalámbricas (aunque no lo sepan). • Las her herram ramient ientas as dise diseña ñadas das para sim simplific plificar ar el el trabajo de los administradores de red perjudican seriamente la seguridad de la red corporativa.
Porqué asegurar la capa 2? • El mode modelo lo OSI OSI está está pen pensad sado o para para que que cada cada cap capa a opere independiente de las demás.
Porqué asegurar la capa 2? • Esto significa que una capa puede ser comprometida sin que las demás lo noten.
Mitos de la capa 2 • Las direcciones MAC no pueden ser falsificadas. • Un switch no permite hacer sniffing. • Las VLANs están completamente aisladas unas de otras.
Ataques basados en MAC y ARP • CAM Table Overflow. • ARP Spoofing • Ataques que emplean ARP Spoofing.
CAM Table Overflow • Los switchs guardan las asociaciones MACPuerto e información de VLAN a medida que las “aprenden” en un tabla llamada tabla CAM. • La tabla CAM de un switch tiene un tamaño fijo y finito. • Cuando la tabla CAM no tiene espacio para almacenar más asociaciones MAC-Puerto envía a todos los puertos las tramas que tengan una dirección MAC destino no almacenada en la tabla CAM. (Actúa como un HUB para cualquier MAC que no haya aprendido)
CAM Table Overflow • Existe un ataque teórico desde Mayo de 1999. • Se basa en el tamaño limitado de la tabla CAM. • Para realizar el ataque sólo hace falta enviar gran número de tramas con direcciones MAC distintas (usualmente generadas al azar) a cualquier puerto del switch hasta que se llene la tabla CAM. • Se desarrolló una herramienta para tal fin llamada macof en Mayo de 1999. Actualmente es parte del paquete Dsniff (GNU/Linux).
CAM Table Overflow
Antes del ataque
Luego del ataque
Captura en el puerto (no trunk) de la maquina 10.1.1.13 10.1.1.22 -> (broadcast) ARP C Who is 10.1.1.1, 10.1.1.1 ? 10.1.1.22 -> (broadcast) ARP C Who is 10.1.1.19, 10.1.1.19 ? 10.1.1.26 -> 10.1.1.25 ICMP Echo request (ID: 256 Sequence number: 7424)
OOPS!!!
Address Resolution Protocol La solicitud ARP se coloca en una trama broadcast y se envía. Todas las estaciones reciben la trama y examinan el pedido. La estación mencionada en el pedido contesta y todas las demas estaciones procesan la misma.
Solicitudes ARP Gratuitas Las solicitudes ARP gratuitas son empleadas por dispositivos para “anunciar” su dirección IP a los demás dispositivos. Los demás dispositivos de red utilizan las solicitudes ARP gratuitas para actualizar su caché ARP. Se colocan en tramas broadcast al igual que las solicitudes ARP.
Host W: “Soy 1.2.3.4 y mi MAC es 12:34:56:78:9A:BC”
ARP Spoofing ARP no proporciona seguridad o algún mecanismo para reservar direcciones IP o MAC. Qué ocurriría en este caso?
• Host W: “Soy 1.2.3.1 y mi MAC es 12:34:56:78:9A:BC” • Eperar unos segundos • Host W: “Soy 1.2.3.1 y mi MAC es 12:34:56:78:9A:BC”
ARP Spoofing El Host X y el Host Y probablemente ignoren la trama a menos que tengan una entrada para 1.2.3.1 en su caché ARP.
• Cuando uno de los hosts pida la MAC de 1.2.3.1 el router va a responder y esta MAC va a permanecer hasta que el Host W transmita otra solicitud ARP gratuita. • En algunos SO inclusive las entradas ARP estáticas son sobreescritas por las solicitudes ARP gratuitas.
Ataques que usan ARP Spoofing Switch Port Stealing (Sniffing): Utilizando ARP Spoofing el atacante consigue que todas las tramas dirigidas hacia otro puerto del switch lleguen al puerto del atacante para luego re-enviarlos hacia su destinatario y de esta manera poder ver el tráfico que viaja desde el remitente hacia el destinatario (Una especie de sniffig half-duplex). Man in the Middle (Sniffing): Utilizando ARP Spoofing el atacante logra que todas las tramas que intercambian las víctimas pasen primero por su equipo (Inclusive en ambientes switcheados).
Ataques que usan ARP Spoofing Secuestro (Hijacking): Utilizando ARP Spoofing el atacante puede lograr redirigir el flujo de tramas entre dos dispositivos hacia su equipo. Así puede lograr colocarse en cualquiera de los dos extremos de la comunicación (previa deshabilitación del correspondiente dispositivo) y secuestrar la sesión. Denial of service (DoS): Utilizando ARP Spoofing el atacante puede hacer que un equipo crítico de la red tenga una dirección MAC inexistente. Con esto se logra que las tramas dirigidas a la IP de este dispositivo se pierdan.
Ataques basados en VLAN • Dinamic Trunking protocol. • VLAN Hopping Attack. • Double Encapsulated VLAN Hopping Attack. • VLAN Trunking Protocol
Puertos Trunk
• Los puertos trunk por default tienen acceso a todas las VLANs. • Se los emplea para transmitir tráfico de múltiples VLANs a través del mismo enlace físico (generalmente empleado para conectar switches). • La encapsulación puede ser IEEE 802.1Q o ISL.
Dinamic Trunk Protocol (DTP)
• Automatiza la configuración de los trunk 802.1Q/ISL. • Sincroniza el modo de trunking en los extremos. • Hace innecesaria la intervención administrativa en ambos extremos. • El estado de DTP en un puerto trunk puede ser “Auto”, “On”, “Off”, “Desirable”, o “Non-Negotiate”. Por default en la mayoría de los switchs es “Auto”.
VLAN Hopping Attack
• Un equipo puede hacerse pasar como un switch con 802.1Q/ISL y DTP, o bien se puede emplear un switch. • El equipo se vuelve miembro de todas las VLAN. • Requiere que el puerto este configurado con trunking automático.
Double Tagged VLAN Hopping Attack
• Se envian una trama 802.1Q de la VLAN de la víctima dentro de otra trama 802.1Q de nuestra VLAN. • Los switchs realizan un solo nivel de desencapsulado. • Solo permite tráfico en una sola dirección. • Sólo funciona si la VLAN nativa del trunk es la misma a la que pertenece el atacante. • Funciona aunque el puerto del atacante tenga
Protocolos de Control Cisco • Se los emplea para negociar el estado de los puertos trunk, intercambiar información de VLAN, etc. • Cisco Discovery Protocol (CDP) y VLAN Trunking Protocol (VTP), dos protocolos de control de cisco comúnmente usados, se transmiten por la VLAN 1. Si la VLAN 1 es quitada de un puerto trunk, a pesar que no se transmite tráfico de los usuarios, el switch continúa usándola para transmitir cierta información de control.
VLAN Trunking Protocol (VTP)
• Se lo emplea para distribuir configuraciones de VLAN a través de múltiples dispositivos. • VTP se emplea únicamente en puertos trunk. • VTP puede causar muchos inconvenientes. • VTP emplea autenticación considere usar MD5. • Si un atacante logra que su puerto se convierta en trunk, puede enviar mensajes VTP como si fuera un servidor VTP sin VLANs configuradas. Cuando los demas switches reciban el mensaje eliminarán todas sus VLANs.
Ataques basados en STP
Spanning Tree Protocol
• Creado para lograr topologías libres de bucles en infrestructuras de capa 2 redundantes. • Evitar bucles asegura que el trafico broadcast no se vuelva una tormenta (broadcast storm). • Provee servicios de recuperación de rutas.
Ataques basados en STP • El atacante envía mensajes BPDU forzando recálculos STP. • El atacante envía mensajes BPDU para convertirse en root. • El atacante se convierte en root con lo cual puede ver tramas que no debería (esto permite ataques MiM, DoS, etc) • Hace falta que el atacante este conectado a dos switches simultáneamente.
Ataques basados en STP • El atacante envía mensajes BPDU anunciándose como bridge con prioridad 0. • El atacante se vuelve root. • El backbone pasa de ser GE a ser FE. • Si se lo combina con MAC flooding este ataque puede permitir capturar más tramas.
Contramedidas • Ataques MAC y ARP – Storm Control. – Protected Ports. – Port Security.
• Ataques VLAN • Ataques STP
Storm Control • Una tormenta de paquetes ocurre cuando se reciben en un puerto gran número de paquetes broadcast, unicast o multicast. Reenviar esos paquetes puede causar una reducción de la performance de la red e incluso la interrupción del servicio. • Storm Control usa umbrales para bloquear y restaurar el reenvío de paquetes broadcast, unicast o multicast. • Usa un método basado en ancho de banda. Los umbrales se expresan como un procentaje del total de ancho de banda que puede ser empleado para cada tipo de tráfico.
Storm Control (Ejemplo) • Deseamos configurar el puerto 15 del switch para que si el tráfico broadcast supere el 45% del ancho de banda disponible envíe una alerta. Switch> enable Switch# configure terminal Switch(config)# interface FastEthernet 0/15 (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# storm-control broadcast level 45 Switch(config-if)# storm-control action trap Switch(config-if)# end
●
Las opciones completas son:
(Dentro del modo configuración de interface del puerto a configurar) storm-control { broadcast | multicast | unicast} level storm-control action {shutdown | trap}
level [level-low ]
Protected Ports • Ciertas aplicaciones requieren que nos se reenvíe tráfico entre puertos en un mismo switch de manera que un equipo no ve el tráfico generado por otro (inclusive tráfico broadcast y multicast). • No se puede reenviar tráfico entre puertos protegidos a nivel de capa 2. El tráfico entre puertos protegidos debe ser reenviado a través de un dispositivo de capa 3. • El reenvio de tráfico entre puertos protegidos y no protegidos se realiza de manera normal.
Protected Ports
●
Para configurar un puerto como protegido:
(Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# switchport protected Switch(config-if)# end
Port Security • Conjunto de medidas de seguridad a nivel de puertos disponibles en la mayoría de los switchs de gama media y alta. • La funciones provistas dependen de la marca, el modelo y la versión de firmware del switch en cuestión. • Permite entre otras cosas: – Restringir el acceso a los puertos según la MAC. – Restringir el numero de MACs por puerto. – Reaccionar de diferentes maneras a violaciones de las restricciones anteriores. – Establecer la duración de las asociaciones MAC-Puerto.
Port Security (Ejemplo) • Deseamos configurar el puerto 15 del switch para que no acepte más de dos direcciones MAC. Switch> enable Switch# configure terminal Switch(config)# interface FastEthernet 0/15 (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# switchport mode access Switch(config-if)# switchport port-security Switch(config-if)# switchport port-security maximum 2
●
●
●
No se puede activar port security en puertos dynamic access o trunk. Port Security está desactivado por default. Por default port security sólo almacena una sola MAC por puerto.
Port Security (Ejemplo) • Además podemos especificar qué hacer si ese número de direcciones MAC es superado (por default deshabilitar el puerto): ●
Que deje de aprender Switch(config-if)# switchport port-security violation protect
●
Que envíe una alerta administrativa Switch(config-if)# switchport port-security violation restrict
●
Que que deshabilite el puerto Switch(config-if)# switchport port-security violation shutdown
Port Security (Ejemplo) • También permiten agregar una lista estática de direcciones MAC autorizadas a conectarse a ese puerto, para esto se usarían estos comandos: (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# switchport port-security mac-address sticky Switch(config-if)# switchport port-security mac-address mac-address 000a.5e5a.181b
●
●
●
Con la primera linea le digo que agregue las MACs que va aprendiendo a la lista de MACs seguras. Con la segunda que agregue la MAC 00:0a:5e:5a:18:1b a la lista de MACs seguras. Si no agrego una segunda MAC, la primera MAC que escuche distinta a 00:0a:5e:5a:18:1b será agregada a la lista de MACs seguras.
Port Security (Ejemplo) • Es posible además establecer el tiempo en que se va a conservar una MAC en la lista de MACs seguras: (Dentro del modo configuración de interface del puerto a configurar) switchport port-security aging {static | time
●
●
●
●
time |
type {absolute | inactivity}}
Tipo absoluto: Las direcciones MAC seguras son borradas de la lista luego de N minutos. Tipo inactivity: Las direcciones MAC seguras son borradas de la lista luego de N minutos de inactividad. Aging static: elimina o no las direcciones MAC ingresadas de manera estática al cumplirse el plazo. Aging time: define el numero de minutos.
Port Security (Ejemplo) • Hagamos que las direcciones MAC que el puerto 15 aprende de manera dinámica no duren más de 2 minutos si la estación no genera tráfico: (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# no switchport port-security aging static Switch(config-if)# switchport port-security aging time 2 Switch(config-if)# switchport port-security aging type inactivity
●
●
●
Con la primera linea le digo que no elimine las MACs agregadas de manera estática. Con la segunda establezco el tiempo en dos minutos. Por último, le digo que deben transcurrir dos minutos de inactividad antes de eliminar la dirección MAC.
Ataques VLAN • Deshabilitar auto trunking para todas las interfaces: (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# switchport mode access
• Deshabilitar VTP: (Dentro del modo configuración global) Switch(config)# vtp mode transparent
• Si es realmente necesario, usar la versión 2: (Dentro del modo configuración global) Switch(config)# vtp version 2 Switch(config)# vtp password password-value
Ataques VLAN • Siempre utilizar una VLAN dedicada para los puertos trunk. • Deshabilitar los puertos no utilizados y colocarlos en una VLAN no utilizada. • No utilizar la VLAN 1 para nada. • Colocar todos los puertos de los usuarios como non-trunking (Deshabilitar DTP): (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# switchport mode access Switch(config-if)# switchport nonegotiate
Ataques STP • No deshabilitar STP (introducir un loop puede convertirse en una forma de ataque). • Habilitar BPDU Guard: (Dentro del modo configuración global) Switch(config)# spanning-tree portfast bpduguard default (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# spanning-tree bpduguard enable o Switch(config-if)# spanning-tree portfast
• Habilitar Root Guard: (Dentro del modo configuración de interface del puerto a configurar) Switch(config-if)# spanning-tree guard root
Buenas prácticas • Administre los switches de la manera más segura posible (SSH, OOB, listas de acceso) • Siempre utilizar una VLAN dedicada para los puertos trunk. • Deshabilitar los puertos no utilizados y colocarlos en una VLAN no utilizada. • No utilizar la VLAN 1 para nada. • Deshabilitar DTP y VTP a menos que sean necesarios. • Use Port Security para los puertos de los usuarios siempre que sea posible
Buenas prácticas • Use SNMP sólo si es necesario, en caso de usarlo aplique a las contraseñas de comunidad las mismas políticas que a sus contraseñas de administrador. • Cree un plan para tratar los problemas de seguridad relacionados con ARP. • Habilite mecanismos para mitigar los ataques basados en STP (BPDU Guard, Root Guard). • Use VLANs privadas (protected ports) cuando sea apropiado para dividir redes en capa 2.