VLAN es el acrónimo de “Virtual Local Area Network” o red LAN virtual, se utilizan para segmentar una red LAN en varias subredes a nivel lógico con independencia del nivel físico. Con esto se permite conseguir aislar el tráfico de red agrupando distintos grupos de host, por ejemplo, una VLAN por departamento.

Las ventajas que se consiguen con el uso de VLAN son varias, por un lado, se consigue limitar el tráfico de broadcast ya que se utilizan múltiples subredes distintas, por otro, se consigue aumentar en cierta medida la seguridad al segmentar lógicamente unos dispositivos de otros ya que, aunque las VLAN funcionan a nivel dos en la capa OSI, requieren de un dispositivo de nivel tres para poder enrutar entre VLANS puesto que, por norma general, cada VLAN está asociada a una subred distinta.
Para realizar la distinción entre una VLAN y otra, se utiliza, por norma general, el protocolo 802.1Q de etiquetado con la finalidad de indicar que es una trama etiquetada y la VLAN a la que pertenece.



Formato trama 802.1Q


Ahora bien, los switches se han de configurar para indicarle el/las VLAN que se permiten en un puerto físico del mismo, así como ciertas características con respecto a si a dicho puerto físico del switch se conectará un dispositivo final, otro switch por el que fluirán múltiples VLAN, lo que se denomina como un puerto “trunk”, etc.


Los switches de Cisco incorporan un protocolo propietario denominado DTP (Dynamic Trunking Protocol) que se encarga de detectar otro switch Cisco interconectado para establecer automáticamente los puertos de tipo “trunk”.
Esto que puede parecer una gran comodidad puede ser un arma de doble filo ya que, por defecto, los puertos del switch tienen DTP activado en modo “auto”, lo que quiere decir que, si el otro extremo de la conexión lo solicita, se negociará un puerto de tipo “trunk”.


Para que un atacante pueda saltar de VLAN en un escenario así no tiene más que solicitar negociar el enlace “trunk” para poder comunicarse con cualquier otra VLAN, para ello existen diversas maneras, quizá la más sencilla sea usar Yersinia. Aquí un apunte, los que uséis Debian o distros que recurran a sus repositorios comentar que la versión disponible de Yersinia no funciona bien en modo interfaz interactiva (tipo ncurses) por lo que, o compilamos desde fuentes, o utilizamos alguno de los otros métodos de uso de Yersinia.


En este caso, muestro cómo hacer el ataque de negociación de DTP trunk de manera directa:


Yersinia negociando un puerto trunk


Si capturamos el tráfico con Wireshark y esperamos a que se negocie el puerto, veremos lo siguiente:



Puerto trunk negociado y primer tráfico broadcast


Como podemos observar, una vez que se ha negociado el puerto trunk, recibimos tráfico ARP de la subred 10.10.10.1 perteneciente a la VLAN 123:


802.1Q VLAN Tag


Ahora sólo tenemos que configurar una subinterfaz en la máquina atacante para indicarle que pertenece a una VLAN y los datos de la misma:



Configuración VLAN mediante vconfig


Ya podemos acceder a dicha VLAN, para probarlo, basta con un simple ping:



Salto de VLAN realizado


Con esto ya habríamos conseguido saltar de VLAN y podríamos intentar seguir comprometiendo la red en la que nos encontremos haciendo el pentest.


Existen varias defensas frente a este ataque, la primera de ellas es desactivar DTP, tal y como nos cuenta Jeremy Stretch en su fabuloso blog, la segunda, y si estamos utilizando el protocolo VTP (Virtual Trunking Protocol), es utilizar la característica de “vtp pruning” para evitar que se envíe tráfico de broadcast a switches que no tengan puertos registrados en la VLAN a la que corresponde dicho tráfico de broadcast. La opción más correcta es la primera, puesto que es la única que realmente desactiva la posibilidad de negociar un puerto trunk.


Hasta la próxima!

Fuente: Navegando entre colisiones: Saltando de VLAN mediante DTP