De cómo saltar a la VLAN de voz con Windows y dos "pedrás"

En telefonía IP normalmente se tiende a separar las redes de voz (teléfonos IPs y resto de componentes de la plataforma) de las de datos (PCs, servidores, impresoras, etc.).

El puesto de usuario más característico en estos entornos es un puesto de trabajo conectado a un teléfono IP, y a su vez ese teléfono IP conectado a un único punto de red/switch. De esta manera se usa un único interfaz de un switch por puesto (teléfono + PC) y se ahorra en cableado estructurado.



Ésto es posible porque un puerto de acceso puede manejar dos VLANs: la VLAN de acceso (datos) y la VLAN de voz (auxiliar). Además los switches pueden proporcionar alimentación a los teléfonos vía ethernet (power inline, PoE), priorizar el tráfico de voz con marcado de CoS y, en definitiva, separar lógicamente ambos mundos. 


Un ejemplo de configuración de un puerto específico en un modelo Catalyst sería el siguiente:
interface GigabitEthernet1/0/5
 switchport access vlan 30
 switchport mode access
 switchport voice vlan 21
 authentication control-direction in
 authentication event fail retry 3 action authorize vlan 40
 authentication event server dead action authorize
 authentication event no-response action authorize vlan 40
 authentication event server alive action reinitialize
 authentication host-mode multi-host
 authentication order dot1x mab
 authentication port-control auto
 authentication violation protect
 mab
 dot1x pae authenticator
 dot1x timeout tx-period 10
 dot1x timeout supp-timeout 10
 dot1x max-req 1
 dot1x max-reauth-req 1
 spanning-tree portfast
 spanning-tree bpduguard enable
 spanning-tree guard root

Con esta configuración cuando un PC se conecte a la red a través del teléfono accederá a la VLAN de datos principal (30) o de invitados (40) dependiendo del resultado de la autenticación 802.1x.

Si por el contrario es un teléfono IP de Cisco el que se conecta a la red, el terminal enviará un paquete CDP (Cisco Discovery Protocol) a la dirección multicast 01:00:0c:cc:cc:cc (0x0802) para unirse a la VLAN de voz, incluso sin necesidad de autenticación 802.1x ya que Cisco autoriza directamente al teléfono si no dispone de suplicante }:-)

Ahora bien, existen numerosas razones por las que alguien puede querer llegar a ganar acceso no autorizado desde su PC a la VLAN de voz, y seguramente ninguna de ellas buena...



La técnica más común para este VLAN hopping es capturar los paquetes CDP del teléfono IP y reenviarlos a través de un interfaz con el id de la VLAN adecuada (802.1q tagging). Es decir, imitar el comportamiento de un teléfono IP. 

Si dispones de un sistema Linux puedes utilizar tcpdump y tcprelay o, mejor aún, la herramienta VoIP Hopper que automatiza todo el trabajo. Si es así sigue alguno de estos enlaces y olvida esta entrada [...].

[...] ahora bien, si sigues leyendo seguramente es porque en tu PC de trabajo
sólo dispones de Windows y no tienes un live-cd a mano con la distro apropiada, o porque eres un amante de Micro$oft (sobre gustos colores) o porque eres curioso.. yo que sé... ;)

Verás que no es complicado realizarlo. De hecho me sorprende que no haya ya un tutorial en Internet para hacerlo enteramente bajo Windows (o no haya sabido encontrarlo), así que vamos a ello:

- Lo primero que haremos es conectar nuestro PC a la red sin pasar por el teléfono VoIP y realizar una captura de paquetes para inspeccionar los anuncios CDP. Si el puerto del switch está configurado con una VLAN de voz, se anuncia el identificador de la VLAN configurada. Como podéis observar abajo, el switch dice que estamos conectados al puerto GigabitEthernet 1/0/14 y el número de VLAN de voz es el 21:


- Ahora volvemos a conectar el teléfono al punto de red y esperamos que vuelva a estar en línea. Después conectamos el portátil de nuevo al puerto de datos del teléfono y abrimos de nuevo Wireshark para capturar los únicos paquetes CDP que veremos ahora que estamos conectados al teléfono, los enviados por el propio teléfono:


Como veis estos paquetes CDP son cuidadosamente construidos con todos los valores apropiados para la VLAN de voz. 

- A continuación exportamos un paquete a formato libpcap y modificamos en el fichero .cap con nuestro editor hexadecimal favorito los valores de la MAC y el device ID, sin olvidarnos de ajustar el checksum:


- El siguiente paso es preparar nuestro interfaz de red desactivando todos los protocolos que no usaremos y asignándolo a la VLAN correspondiente:


También es posible crear y utilizar adaptadores virtuales adicionales con soporte VLAN tagging mediante un controlador multiplexor (MUX) NDIS IM o un controlador de protocolo NDIS. Si bien previamente necesitarás compilar el driver según la arquitectura del sistema y la versión de sistema operativo y luego firmarlos... una ardua pelea con el Windows Driver Kit (WDK) que nos daría de sobra para otra extensa entrada del blog... ;)

- Volviendo al turrón, como ya habíamos configurado nuestra conexión local con el identificador correcto de la VLAN de voz sólo nos queda reenviar el paquete .cap. Además tendremos que hacerlo cada 60 segundos para simular el comportamiento normal de un teléfono IP de Cisco, tarea fácil con la herramienta gratuita Colasoft Packet Player:



- Finalmente conectamos nuestro portátil directamente a la red y, después de unos segundos de incertidumbre, comprobamos que el DHCP de VLAN de voz nos ha asignado una IP: 

Adaptador de Ethernet Conexión de área local:

   Sufijo DNS específico para la conexión. . :
   Dirección IPv4. . . . . . . . . . . . . . : 10.x.x.177
   Máscara de subred . . . . . . . . . . . . : 255.255.x.0
   Puerta de enlace predeterminada . . . . . : 10.x.0.1

Y que podemos alcanzar otros teléfonos:



¡Estamos dentro! Desde la perspectiva de los switches nuestro portátil será como un teléfono IP normal conectado a un puerto, con su modelo y número de serie correspondiente. Y ojo que si los administradores tienen habilitado auto-registro nuestro equipo hará su aparición estelar en el Call Manager consumiendo licencias (DLUs)...

- Próxima parada: explorar la red de voz, buscar dispositivos IP vulnerables, modificar configuraciones atacando el servidor TFTP, modificar GARP, hacer ARP spoofing y capturar llamadas, etc.


¡Hasta la próxima!

5 comentarios :

  1. Muy bueno Vicente, esperando el siguiente artículo de la SAGA XD

    ResponderEliminar
  2. Hola,

    Pero si hay telefonos de Cisco que soportan 802.1x ...

    http://www.cisco.com/en/US/docs/solutions/Enterprise/Security/TrustSec_1.99/IP_Tele/IP_Telephony_DIG.html

    Evidentemente si la red no esta securizada se entra hasta la cocina.

    Saludos

    ResponderEliminar
  3. Eso siempre, contra más medidas de seguridad se añadan más difícil será entrar. Por lo tanto, si tienes teléfonos que soportan 802.1X es recomendable activarlo, y si no usar MAB (MAC Authentication Bypass). Además de añadir otras medidas adicionales dynamic ARP Inspection, DHCP snooping, IP source guard, port security...

    Otra cosa es que se suelan implementar todas estas medidas en entornos empresariales, que va ser que no... pero bueno, si no de que viviríamos los que se dedican a romper cosas XD

    ResponderEliminar
  4. que bueno que sigan haciendo post de pirateria

    ResponderEliminar