Español | English
rss facebook linkedin Twitter

Ataques sobre el nivel 2 del modelo OSI (IV): Cisco Discovery Protocol

Cisco Discovery Protocol (CDP) es un protocolo propietario de Cisco, el cual permite comunicarse entre sí a diferentes dispositivos de red. Sin embargo, otros fabricantes pueden utilizar CDP si compran la tecnología (por ejemplo Hewlett-Packard). La manera más sencilla de identificar un paquete CDP es mirando las siguientes características: un paquete IEEE 802.3 con una cabecera 802.2 SNAP y la MAC destino de multicast 01:00:0C:CC:CC:CC.

Un paquete CDP siempre contiene información interesante sobre las propiedades del dispositivo que envía el paquete. Esta información puede contener por ejemplo:
  • nombre del dispositivo
  • modelo
  • versión de IOS
  • dirección IP (puede contener más de una)
  • dominio VTP
  • características (switch, router, bridge etc)
Estos datos, enviados periódicamente por cada dispositivo Cisco, pueden ofrecer información útil para otros ataques. Por defecto, CDP se encuentra activado en los dispositivos Cisco y se envían paquetes cada 180 segundos (tres minutos).

No se utiliza autenticación al enviar o recibir paquetes CDP. Los datos se envían en texto plano. Esto hace que realizar ataques sea muy sencillo. Además, el formato de los paquetes CDP se encuentra explicado en el website de Cisco. Un paquete CDP se compone de los siguientes campos:
  • Version (1 byte): indica la versión de CDP, normalmente es uno o dos
  • TTL (1 byte) – Time To Live: Tiempo de vigencia del paquete CDP
  • Checksum (2 bytes): verifica si el paquete está correcto
  • TLV (variable length) – Series Type, Length, Value. Este es el campo que contiene los datos, éstos se encuentran representados por una lista de grupos TLV, cada TLV con el siguiente formato: Type (2 bytes) – tipo de datos (por ejemplo Device ID, Address, Port ID), Length (2 bytes) – longitud del TLV y Value (longitud variable) – el valor
Una vez conocido el formato, podemos suplantar un dispositivo de red enviando un paquete CDP generado. Merece la pena saber que en versiones antiguas de IOS de Cisco existe una vulnerabilidad de DoS descubierta por FX de Phenoelit. Si se envían montones de paquetes CDP con diferentes ID (intentando parecer distintos dispositivos de red), la memoria del dispositivo se agota. Esto, además, hace que el dispositivo falle y tenga que ser reiniciado para funcionar correctamente. Un ataque de este estilo puede desconectar un segmento de red o, si se dirige a un router, dejar sin acceso a Internet hasta que el dispositivo sea reiniciado.

Si estamos conectados a una red que contiene dispositivos con CDP, el GUI mostrará los modos CDP de los dichos dispositivos. El primer ataque CDP se basa en la vulnerabilidad mencionada anteriormente. Para ello no se necesita información adicional. En el GUI de Yersinia, en modo CDP, teclea [x] y elige el ataque flooding CDP table.
Resultado del ataque DoS a CDP
# show cdp neighbours
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID Local Intrfce Holdtme Capability Platform Port ID
2EEEWWW Gig 0/1 253 yersinia Eth 0
ZCCCUU9 Gig 0/1 250 T S I r yersinia Eth 0
J222FFX Gig 0/1 249 R T yersinia Eth 0
WAAASS6 Gig 0/1 240 R B I r yersinia Eth 0
2IIWWWE Gig 0/1 249 T B H I yersinia Eth 0
K333FFX Gig 0/1 234 R T yersinia Eth 0
TBBBOO7 Gig 0/1 252 B H r yersinia Eth 0
3KKYKYY Gig 0/1 250 R B H yersinia Eth 0
TBBBPP7 Gig 0/1 252 S H I r yersinia Eth 0

Resultado del ataque DoS a CDP – log del switch
00:06:08: %SYS-2-MALLOCFAIL: Memory allocation of 224 bytes failed from 0x800118D0, alignment 0
Pool: Processor Free: 0 Cause: Not enough free memory
Alternate Pool: I/O Free: 32 Cause: Not enough free memory
-Process= "CDP Protocol", ipl= 0, pid= 26
-Traceback= 801DFC30 801E1DD8 800118D8 80011218 801D932C 801D9318
00:06:08: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:09: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:10: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:11: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:12: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:13: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:14: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:15: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:16: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:17: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:18: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:19: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:20: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:21: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:22: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:23: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:38: %SYS-2-MALLOCFAIL: Memory allocation of 140 bytes failed from 0x801E28BC, alignment 0
Pool: Processor Free: 0 Cause: Not enough free memory
Alternate Pool: I/O Free: 32 Cause: Not enough free memory
Yersinia también incorpora otro ataque que consiste en crear un dispositivo virtual Cisco. Cuando el administrador de red chequee los dispositivos vecinos a un dispositivo Cisco real verá en la consola todos los dispositivos virtuales creados. Este ataque no tiene consecuencias negativas salvo la molestia para el administrador de la red (quien probablemente intentará encontrar cuál es el nuevo dispositivo conectado a su red).

La única contramedida válida contra los ataques CDP es desactivarlo con el comando: no cdp run. El propio protócolo no ha sido mejorado desde el punto de vista de la seguridad.

Alfredo Andrés
David Barroso
S21sec e-crime

(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login