Esta amenaza apareció en 2016, pero hasta ahora ha salido a la luz pública.
VPNFilter es un sofisticado sistema de malware modular, el cual está siendo investigado por socios de seguridad e inteligencia del sector público y privado, como el FBI y Cisco. Y que tal parece ha sido financiado por el gobierno ruso.
Advertencia: El contenido de este POST es sumamente técnico pero cualquier duda, déjalo en los comentarios.
Este malware parece tener relación y similitud con el virus «BlackEnergy», que fue responsable de múltiples ataques a gran escala dirigidos a dispositivos en Ucrania (dispositivos críticos como plantas de energía).
Si bien lo anterior no es definitivo, si se ha observado que VPNFilter es un virus potencialmente destructivo, que infecta activamente a dispositivos en Ucrania a un ritmo alarmante, utilizando una infraestructura de comando y control (C2) de forma dedicada. Tanto la escala, como su capacidad de propagación son preocupantes.
Se estiman que al menos 500,000 dispositivos en al menos 54 países han sido infectados. Los dispositivos conocidos más afectados por VPNFilter son los equipos de las marcas: Linksys, MikroTik, NETGEAR y TP-Link así como algunos dispositivos de almacenamiento conectado a la red (NAS) de QNAP.
El comportamiento de este malware en los equipos de red es alarmante, ya que los componentes del malware VPNFilter permiten el robo de credenciales y el Sniffing de protocolos Modbus SCADA (software que permite controlar y supervisar procesos industriales a distancia). Por último, el malware tiene una capacidad destructiva que puede inutilizar al dispositivo infectado, también puede activarse de forma individual dentro de la red o en masa y tiene el potencial de bloquear el acceso a Internet para cientos de miles de víctimas en todo el mundo; recordemos que si tu router es usado por una red de 500 computadoras, entonces habrá posiblemente 500 infectados.
Este tipo de ataques no es común y también es difícil de defender ya que con gran frecuencia los dispositivos se encuentran en el perímetro de la red, sin un sistema de protección contra intrusos (IDS).
¿Como lo hace?
VPNFilter funciona de forma modular con etapas múltiples, cada una con capacidades versátiles para aplicar operaciones de recopilación e inteligencia o ataques cibernéticos destructivos.
Etapa 1
En la etapa 1 VPNFilter persistirá incluso si existe un reinicio, lo que lo diferencia de la mayoría de los otros programas maliciosos que son dirigidos a los IOT (Internet of Things), ya que generalmente los malwares no sobreviven a un reinicio del dispositivo. El objetivo principal de esta etapa es obtener una base de apoyo constante y permitir a VPNFilter el despliegue de la etapa 2.
Durante el ataque, se utilizan múltiples mecanismos redundantes de comando y control (C2) para descubrir la dirección IP del servidor de los hackers y que es necesario para la etapa 2, lo que hace que VPNFilter sea extremadamente robusto y capaz de lidiar con cambios impredecibles en su infraestructura de C2.
Metodología
VPNFilter infecta sobre todo a dispositivos que tienen firmwares basados en Busybox y Linux pero está compilado para varias arquitecturas de CPU. Una vez que logra la infección es capaz de modificar valores de configuración en la memoria no volátil (NVRAM) y se agrega como una tarea programada en crontab para lograr la persistencia, lo que lo hace diferente al virus Mirai.
La comunicación con el comando y control (C2) y las descargas de malware adicionales se realizan a través de conexiones encriptadas con la red TOR y con canales SSL. Los archivos binarios de VPNFilter ofuscan cadenas con RC4 y XOR, estas son desencriptadas en tiempo de ejecución (Runtime).
Cuando VPNFilter completa su inicialización, comienza a descargar páginas de las URL precargadas, en su mayoría todos hacen referencia a Photobucket.com, un servicio de hosting de imágenes.
Ahí almacenaban imágenes los cuales contenían las direcciones de IP de los servidores de control; estas direcciones estaban ofuscadas en los metadados EXIF (Exchangeable image file format) correspondiente a las valores enteros grabados en forma de coordenadas GPS.
Si VPNFilter falla al intentar conectarse a Photobucket o en obtener las direcciones IP, entonces recurrirá a un dominio backup: toknowall.com y luego intentará el mismo proceso.
Si falla la conexión a Photobucket y también falla la conexión a toknowall.com, entonces VPNFilter creará un listener (a modo de troyano) y que cuando este se genere, el virus obtendrá cual es su propia IP pública a través de api.ipify.org y lo almacena para futuras comparaciones.
Luego creará un trigger de tal manera que cuando llegue un paquete a cualquier puerto, VPNFilter realiza una serie de comprobaciones para identificar si el paquete cumple con un conjunto de criterios predefinidos y si fuera así, extraerá la dirección IP del paquete y se procederá al inicio de la etapa 2.
Las funciones del listener son:
- Inspeccionar todos los paquetes TCP/IPv4 con SYN flag.
- Comprueba que la IP de destino del paquete coincida con la IP que de almacenó con ayuda de api.ipify.org (Si previamente VPNFilter no pudo extraer la IP desde ipify, entonces se omite este paso).
- Se asegura de que el paquete tenga ocho o más bytes.
- Escanea los datos para los bytes \x0c\x15\x22\x2b.
- VPNFilter hace un split de los bytes tomado 4 bytes como una IP así que \x01\x02\x03\x04 se convierte en -> 1.2.3.4
- VPNFilter se conecta a la IP recién extraida.
- Entonces confirma que la etapa 2 tenga al menos 1,001 bytes, en caso de no ser así invocará métodos de actualización.
Etapa 2
Aún y cuando VPNFilter no logre la persistencia tras un reinicio, los hackers tendrán capacidades de robo de archivos, ejecución de comandos remotos, filtración de datos de red, la administración del dispositivo IOT infectado y por último la capacidad de autodestrucción ya que VPNFilter es capaz de sobrescribir una parte crítica del firmware del dispositivo por lo que después de reiniciarlo lo dejará inutilizable.
Metodología
VPNFilter configura el entorno de trabajo creando una carpeta de módulos (/var/run/vpnfilterm) y un directorio de trabajo (/var/run/vpnfilterw). Después, se ejecutará en un bucle, donde primero se comunica con un servidor de comando y control (C2) y luego ejecutará los comandos recibidos del C2. Los nombres de los comandos están crifrados con la misma función RC4 de la etapa 1.
Un error cometido por los hackers que crearon VPNFilter, permitieron obtener todos estos detalles sobre los pasos que realizaba, ya que una muestra del virus para arquitectura x86 analizada por Cisco, tenía el modo debug habilitado y por tanto el virus «imprimía» todos los eventos. Las versiones actuales de la etapa 2 de x86 ya no contienen las impresiones de depuración.
Las funciones descubiertas en esta etapa son:
- kill: Sobrescribe los primeros 5,000 bytes de /dev/mtdblock0 con ceros, y reinicia el dispositivo (esto lo dejará inutilizable).
- exec: Ejecuta un comando enviado por medio de la consola shell o por un plugin.
- tor: Establece la configuración para las conexiones a redes TOR (bandera en 0 o 1).
- copy: Copia un archivo del cliente al servidor.
- seturl: Establece la URL del panel de configuración actual.
- proxy: Establece la URL proxy actual.
- port: Establece el puerto para el proxy.
- delay: Establece un retraso entre las ejecuciones en el ciclo.
- reboot: Reinicia el dispositivo.
- download: Funciona como WGET almacenando una URL a un archivo.
- stop: Detiene VPNFilter.
- relay: Equivalente a delay para arquitecturas x86.
Hasta que se instale el módulo de TOR, la etapa 2 usará una o más IPs almacenadas en su configuración como Proxys SOCKS5 e intentará comunicarse con un servidor C2. Al igual que en la etapa 1, la comunicación entre el VPNFilter y el proxy se conectará a través de una conexión SSL.
When the Tor module is installed, it will connect to .onion domains through the local SOCKS5 proxy provided by the module over plain HTTP instead.
Cuando el módulo TOR se instala, se conectará a los dominios .onion con HTML simple a través de un proxy SOCKS5. Ejemplo de un request al servidor:
{
«uq»:»px(01:02:03:04:05:06)»,
«pv»:»pPRXi686QNAPX86″,
«ad»:»10.0.0.1″,
«bv»:»0.11.1a/0.3.9qa»,
«nn»:»YnVpbGRyb290″,
«tn»:»»,
«on»:»1″
}
Variables:
uq: ID único del dispositivo infectado (la dirección MAC de la interfaz de red).
pv: La versión de VPNFilter
ad: La dirección IP pública del dispositivo
bv: Versión del loader de la etapa 1 (0.3.9qa) y el binario de la etapa 2 (0.11.1a)
nn: Nombre del nodo
tn: La bandera de la configuración de TOR
on: La bandera de la configuración de los sitios onion
VPNFilter codifica la solicitud dentro de un objeto JSON, que luego se codifica en base64 y se envía a la ruta /bin32/update.php en la variable POST «me». También simula un navegador ya que sobrescribe la cabecera user-agent por «Mozilla / 6.1 (compatible; MSIE 9.0; Windows NT 5.3; Trident / 5.0)», Sin embargo la versión «Windows NT 5.3» no existe y nunca ha existido.
La respuesta del servidor:
{
«tr»:3060,
«pxs»:[«217.12.202.40″,»94.242.222.68″,»91.121.109.209»],
«tor»:»tor 1″,
«mds»:[]
}
Variables:
tr: Establece la demora para el ciclo principal.
pxs: Enlista los servidores C2.
tor: Establece el nombre y la versión del módulo Tor.
mds: una lista de módulos a buscar. Cada entrada tiene el formato «
Etapa 3
Esta etapa despliega módulos complementarios para la etapa 2, es decir VPNFilter tiene capacidad de actualizar su propio código. Estos complementos proporcionan a la etapa 2 más vectores de ataque.
Hasta ahora en esta etapa se han descubierto y desplegado dos módulos: El primer módulo es un Sniffer para recopilar el tráfico que pasa por el dispositivo (MITM), incluidas credenciales de múltiples sitios web así como el sniffing de los protocolos SCADA Modbus RTU/TCP, el cual es usado para procesos industriales y sistemas de misión crítica.
El segundo módulo es para comunicaciones y permite que la etapa 2 se pueda comunique a través de redes TOR.
Conclusiones
VPNFilter es una amenaza expansiva, robusta, y peligrosa que apunta a dispositivos que son difíciles de defender ya que estos dispositivos tienen que estar públicamente conectados para poder proveernos de Internet. Sus capacidades modulares permiten cambios rápidos en la infraestructura operativa. Las capacidades de «autodestrucción» nos demuestra que los hackers están dispuestos a destruir los dispositivos con tal de no dejar pistas.
Si el comando Kill se ejecutara a gran escala, podría inutilizar cientos de miles de dispositivos, inhabilitar el acceso a Internet para cientos de miles de víctimas en todo el mundo o en una región específica elegida por los hackers.
Esquema de operación completa:
Servidores de la Fase 1
photobucket.com/user/nikkireed11/library
photobucket.com/user/kmila302/library
photobucket.com/user/lisabraun87/library
photobucket.com/user/eva_green1/library
photobucket.com/user/monicabelci4/library
photobucket.com/user/katyperry45/library
photobucket.com/user/saragray1/library
photobucket.com/user/millerfred/library
photobucket.com/user/jeniferaniston1/library
photobucket.com/user/amandaseyfried1/library
photobucket.com/user/suwe8/library
photobucket.com/user/bob7301/library
toknowall.com
Servidores C2 identificados:
91.121.109.209
217.12.202.40
94.242.222.68
82.118.242.124
46.151.209.33
217.79.179.14
91.214.203.144
95.211.198.231
195.154.180.60
5.149.250.54
91.200.13.76
94.185.80.82
62.210.180.229
zuh3vcyskd4gipkm.onion/bin32/update.php