viernes, mayo 29, 2020

Wake On Lan como canal de control para Botnets

A finales del año pasado, hubo un ransomware que provocó dolores de cabeza a muchas personas en nuestra península. “Ryuk”, que así se llama ese malware, afectó a grandes empresas, a pequeñas y a particulares. Antes de empezar la beca en Telefónica dentro del equipo de Ideas Locas de Chema Alonso, me documenté sobre este ransomware en concreto,  para saber un poco mas acerca de él, de la manera por la cuál se propagaba tan rápido a través de la red, que parecía pura “magia”. 

Figura 1: Wake On Lan como canal de control para Botnets

Después de ver cuál era esa “magia” que estaba utilizando, un compañero y yo nos centramos en configurar los equipos de la empresa, para minimizar los riesgos por ese vector de propagación tanto para evitar a este bicho, sino para evitar que al siguiente que le copie el truco.

La “Magia” del vector de propagación en Ryuk

Los más veteranos seguro que se lo conocen, y si has leído las aventuras de Wardog - nuestro querido BOFH - te habrás reído hasta llorar con el uso que le dan a la función de Wake On Lan (WOL), que proporcionan la gran mayoría de tarjetas de red en conjunción con la placa base de los equipos y la BIOS.

Figura 2: El libro de "Wardog y el mundo", nuestro querido BOFH
(Bastard Operator From Hell) escrito por el propio Wardog

Esta característica permite al equipo que, aun apagado, pueda recibir un “magic packet” que provoca el arranque del equipo. Esto es lo que permite a los protagonistas de Wardog hacer muchas "cosas malas" a los compañeros de aventuras. 

Cómo funciona Wake On Lan (WOL)

Para entender cómo funciona el servicio Wake On Lan, vamos a ver en primer cómo es y cómo funciona este "Magic Packet", del que debes saber que es un paquete que funciona a Nivel de Trama o Enlace de Datos, es decir, en la Capa 2 del modelo OSI y por lo tanto no es enrutable fuera de la LAN (Local Area Network). Es decir, solo se puede enviar por la red local.

Figura 3: Modelo OSI en Wikipedia

Lo que se envía en este "Magic Packet" de WOL es un paquete broadcast, por toda la red, que lleva con contenido - como dato - una dirección MAC. El paquete mágico comienza la trama con la dirección física FF-FF-FF-FF-FF-FF, seguida de 16 veces la dirección MAC del equipo que se quiere encender. En este punto es donde entra la Tabla ARP (Address Resolution Protocol), donde cada equipo tiene una tabla donde se almacena de manera temporal las direcciones IP de las cuales conoce su MAC. Si has leído el libro de Ataques en Redes de Datos IPv4&IPv6 3ª Edición de 0xWord, la conocerás bien porque es fundamental en los ataques de Man in the Middle IPv4.
IP	MAC
192.168.1.1	d1:31:54:68:1a:db
192.168.1.3	00:31:64:68:ca:dc
Como resumen de su funcionamiento, supongamos que tenemos dos equipos en nuestra red. Uno es el equipo A y otro es el equipo B. El equipo A quiere mandar una trama al equipo B. Para ello, mirará su Tabla ARP con el fin de poner en la trama la dirección MAC del equipo B. De esta manera, los equipos a los que les llegue esa trama sabrán rápidamente si es para ellos o no, o si deben dejar pasar esa trama y no procesarla.

Figura 4: Libro de Ataques en redes de datos IPv4 & IPv6 3ª Edición

Configuración del servicio Wake On Lan

Para que ese "Magic Packet" de WOL funcione y se pueda llevar a cabo el encendido remoto del equipo se tiene que comprobar unas configuraciones, ya que en función de la BIOS viene habilitado/ deshabilitado por defecto. En mi caso para la prueba de concepto, tenemos que cambiar varias configuraciones de la placa, así que debes mirar cuál es el software de la tuya buscar estas opciones.

Figura 5: Activación de servicio Wake On Lan en BIOS

También es posible, que se tenga una contraseña en la BIOS, antes del arranque del sistema operativo, en mi caso está deshabilitado, pero es importante este apartado, ya que influye en el encendido vía WOL en los sistemas. Como os podéis imaginar, por mucho que el servicio WOL procese el Magic Packet, esta contraseña implicará la interacción manual con el usuario. 

Figura 6: Configuración de arranque con password

En otras placas también es necesario configurar las opciones de Advanced Configuration and Power Interface (ACPI) en modo S1 o S3, que dejan el equipo en modo “Stand by” mientras que la memoria será alimentada con bajo consumo. Esto suele dejar algún led encendido visible en la placa.

Una vez configurada la BIOS tenemos que comprobar las propiedades de la tarjeta de red. Desde la opción del Panel de Control de Windows/ Sistema y Seguridad / Herramientas administrativas / Administración de equipos / Administrador de dispositivos, seleccionamos el adaptador de red.

Figura 7: Opciones de Configuración de Tarjeta de Red

Una vez allí, dentro de las opciones de administración de energía del adaptador de red seleccionado encontraremos algo similar a lo siguiente:

Figura 8: Opciones de Magic Packet en Ahorro de Energía

Es conveniente para hacer uso del WOL desmarcar la casilla de que el equipo apague este dispositivo, en mi caso no es necesario, ya que eso lo controla la propia BIOS.  Por otro lado también es necesario dentro de las propiedades del controlador, habilitar las siguientes opciones:

Figura 9: Opciones del Magic Packet

La primera es para que quede a al espera del Paquete Mágico WOL. La segunda es para lo mismo, pero atendiendo a unos patrones que se especifican en ese equipo, entre ellos el paquete mágico, TCPv4 SYNC, TCPv6 SYNC y el nombre de la NetBIOS

Probando Wake On Lan

Una vez tenemos preparada la configuración del equipo que queremos “despertar” desde otra máquina en local, en mi caso un Ubuntu, podemos utilizar el siguiente comando para arrancar el equipo de manera remota con el servicio Wake On Lan.

etherwake -i “nombre_Interfaz_red” -p “192.168.1.0/24” “MAC_Adatador_red”.

Si conocemos la dirección IP exacta podemos sustituirla por el 0/24, si no se apoyará en la Tabla ARP para encontrar dicha dirección IP asociada a ese adaptador de red. 

Esto funciona para encender equipos remotamente, dentro de una misma red, pero si lo que se pretende es encender remotamente un equipo a través de Internet usando el protocolo Wake On Wan debemos enrutar el paquete mágico desde Internet a nuestra red LAN

Configuración de WOL a través de Internet

Para hacerlo funcionar, es necesario configurar nuestro router para que cuando reciba el Magic Packet, normalmente como un Datagrama UDP al puerto 7 o 9, lo enrute hacia la dirección IP del dispositivo que queramos encender. Al estar el equipo apagado, cuando el router trata de reenviar el paquete mágico a la dirección IP del equipo destino, no hay nadie que le conteste diciendo “yo tengo esa dirección IP” en la resolución ARP, con lo cual, el router no sabrían cuál es la dirección MAC a donde debe reenviar el paquete.

Esto se soluciona añadiendo en la Tabla ARP del router una entrada manual y estática con la información del equipo al que se quiere habilitar WOL desde Internet. Cómo la Tabla ARP por defecto es dinámica, y se mantiene viva, únicamente almacena las asignaciones de conexiones más recientes. Esto quiere decir que aunque la introduzcamos a mano se borrará al cabo de un tiempo - salvo si la damos de alta como entrada estática -, o se borrará en el siguiente reinicio del router.

Figura 10: Enviar Magic Packet WOL vía Internet

Para solventar esto, será necesario configurar la entrada en el archivo de inicio del router, para que cada vez que se encienda, se cargue el comando con los parámetros anteriores nuevamente en la Tabla ARP. Es posible configurar entradas ARP estáticas, a través del modificador “arp –s”, no obstante, igualmente solo será válida hasta que se reinicie el router, por lo cual seguirá haciendo falta añadir esa línea en un archivo de inicio por lotes para dotar esta entrada en la Tabla ARP de persistencia en el router

El último problema que debemos resolver es la dirección IP de nuestro router, a la que debemos enviar el paquete mágico. Si se trata de una dirección IP fija, no hay problema, pero si nuestro proveedor de Internet, nos la cambia a menudo, se trata entonces de una dirección dinámica, que es lo habitual. 

Si esto es así, para no perder el rastro no nos queda otra que utilizar el servicio de un DNS Dinámico, como puede ser “DynDns”, que es gratuito y permite definir un dominio que apunte y mantenga constantemente la dirección IP de nuestro router, por mucho que ésta cambie. Una vez tenemos todo configurado podremos utilizar una web como depicus para despertar nuestro equipo remotamente a través de Internet

Notas Finales

Como conclusión esta función es muy útil en ciertos aspectos, si se necesitan encender todos los equipos de una red para hacer alguna gestión en ellos, o se necesita en un momento concreto tener disponibilidad del equipo para trabajar remotamente y no tenerlo encendido siempre. Y esto, para los responsables de grandes plantas de equipos y servidores físicos en  Data Centers puede ser de gran utilizad. Pero...

...pero si no tienes un uso claro de este servicio, ten en cuenta que es una característica que las Botnets de malware pueden utilizar para tener la persistencia que necesitan y realizar ataques a tu organización in que lo sepas. Cuando no haya nadie en la oficia y los equipos estén apagados arrancan el equipo que quieran, se arranca su malware en el equipo, y hacer las acciones maliciosas que necesiten en tus sistemas.

Figura 11: Libro de  Máxima Seguridad en Windows Gold Edition
escrito por Sergio de los Santos

Así que, como recomendación de seguridad, si no es estrictamente necesaria esta utilidad, es conveniente  dentro de las opciones de fortificar tus equipos Windows, verificar que por defecto está deshabilitado el “Magic Packet” en el adaptador de red, y así reducimos un vector de riesgo que pueda ser, o esté siendo, utilizado por un malware.

Autor: Víctor Rodríguez Boyero, Security Researcher en el equipo de Ideas Locas de Telefónica

1 comentario:

  1. ¡Muy buenas Víctor!

    Me he visto reflejado cuando quise mirar cómo hacerlo en su día esto del “Wake-On-WAN”. También me pelee con las configuraciones de BIOS/NIC… Las pruebas las hice en un router con firmware Gargoyle (basado en OpenWRT). Vi a alguien hacer un “truco” chulo para lanzar el broadcast desde Internet. Según lo que dice Jordi en su blog:
    https://anomenaidesa.blogspot.com/2013/08/gargoyle-wake-on-wan.html

    El tema está en utilizar una IP que no se usa (cómo 192.168.1.254 p.ej.) y asignarle la MAC de broadcast; FF:FF:FF:FF:FF:FF y en la apertura/redirección de puertos en el router, dirigirlo a la IP 192.168.1.254.
    No obstante, cómo muy bien dices, para una total seguridad mejor en modo “OFF”. Y para una seguridad intermedia, quizá con una VPN serviría (¡aunque no sea igual de cómodo!).
    Buena entrada compi ��

    Un fuerte abrazo.

    ResponderEliminar