{"id":2532,"date":"2018-05-30T21:48:27","date_gmt":"2018-05-31T02:48:27","guid":{"rendered":"https:\/\/www.puchunguis.com\/blog\/?p=2532"},"modified":"2019-11-27T20:51:32","modified_gmt":"2019-11-28T02:51:32","slug":"vpnfilter-ataque-que-ha-infectado-mas-de-500000-routers-en-54-paises","status":"publish","type":"post","link":"https:\/\/www.jorgealdana.pro\/blog\/seguridad\/vpnfilter-ataque-que-ha-infectado-mas-de-500000-routers-en-54-paises\/","title":{"rendered":"VPNFilter, ataque que ha infectado m\u00e1s de 500,000 routers en 54 pa\u00edses"},"content":{"rendered":"<p>Esta amenaza apareci\u00f3 en 2016, pero hasta ahora ha salido a la luz p\u00fablica.<\/p>\n<p>VPNFilter es un sofisticado sistema de malware modular, el cual est\u00e1 siendo investigado por socios de seguridad e inteligencia del sector p\u00fablico y privado, como el FBI y Cisco. Y que tal parece ha sido financiado por el gobierno ruso.<\/p>\n<p>Advertencia: El contenido de este POST es sumamente t\u00e9cnico pero cualquier duda, d\u00e9jalo en los comentarios.<\/p>\n<p><\/p>\n<p>Este malware parece tener relaci\u00f3n y similitud con el virus \u00abBlackEnergy\u00bb, que fue responsable de m\u00faltiples ataques a gran escala dirigidos a dispositivos en Ucrania (dispositivos cr\u00edticos como plantas de energ\u00eda).<\/p>\n<p>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\u00f3n son preocupantes.<\/p>\n<p>Se estiman que al menos 500,000 dispositivos en al menos 54 pa\u00edses han sido infectados. Los dispositivos conocidos m\u00e1s afectados por VPNFilter son los equipos de las marcas: Linksys, MikroTik, NETGEAR y TP-Link as\u00ed como algunos dispositivos de almacenamiento conectado a la red (NAS) de QNAP.<\/p>\n<p>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 \u00faltimo, el malware tiene una capacidad destructiva que puede inutilizar al dispositivo infectado, tambi\u00e9n 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\u00edctimas en todo el mundo; recordemos que si tu router es usado por una red de 500 computadoras, entonces habr\u00e1 posiblemente 500 infectados.<\/p>\n<p>Este tipo de ataques no es com\u00fan y tambi\u00e9n es dif\u00edcil de defender ya que con gran frecuencia los dispositivos se encuentran en el per\u00edmetro de la red, sin un sistema de protecci\u00f3n contra intrusos (IDS).<\/p>\n<h2>\u00bfComo lo hace?<\/h2>\n<p>VPNFilter funciona de forma modular con etapas m\u00faltiples, cada una con capacidades vers\u00e1tiles para aplicar operaciones de recopilaci\u00f3n e inteligencia o ataques cibern\u00e9ticos destructivos.<\/p>\n<h3>Etapa 1<\/h3>\n<p>En la etapa 1 VPNFilter persistir\u00e1 incluso si existe un reinicio, lo que lo diferencia de la mayor\u00eda 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.<\/p>\n<p>Durante el ataque, se utilizan m\u00faltiples mecanismos redundantes de comando y control (C2) para descubrir la direcci\u00f3n 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.<\/p>\n<p><b>Metodolog\u00eda<\/b><\/p>\n<p>VPNFilter infecta sobre todo a dispositivos que tienen firmwares basados en Busybox y Linux pero est\u00e1 compilado para varias arquitecturas de CPU. Una vez que logra la infecci\u00f3n es capaz de modificar valores de configuraci\u00f3n en la memoria no vol\u00e1til (NVRAM) y se agrega como una tarea programada en crontab para lograr la persistencia, lo que lo hace diferente al virus Mirai.<\/p>\n<p>La comunicaci\u00f3n con el comando y control (C2) y las descargas de malware adicionales se realizan a trav\u00e9s 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\u00f3n (Runtime).<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-2536 size-full\" src=\"https:\/\/484c2a6d15c399b70beb-b1e2a15a3df201703b71bb9b31acda05.ssl.cf5.rackcdn.com\/2018\/05\/VPNFilter-RC4.png\" alt=\"\" width=\"543\" height=\"579\"><\/p>\n<p>Cuando VPNFilter completa su inicializaci\u00f3n, comienza a descargar p\u00e1ginas de las URL precargadas, en su mayor\u00eda todos hacen referencia a Photobucket.com, un servicio de hosting de im\u00e1genes.<\/p>\n<p>Ah\u00ed almacenaban im\u00e1genes los cuales conten\u00edan 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.<\/p>\n<p>Si VPNFilter falla al intentar conectarse a Photobucket o en obtener las direcciones IP, entonces recurrir\u00e1 a un dominio backup: toknowall.com y luego intentar\u00e1 el mismo proceso.<\/p>\n<p>Si falla la conexi\u00f3n a Photobucket y tambi\u00e9n falla la conexi\u00f3n a toknowall.com, entonces VPNFilter crear\u00e1 un listener (a modo de troyano) y que cuando este se genere, el virus obtendr\u00e1 cual es su propia IP p\u00fablica a trav\u00e9s de api.ipify.org y lo almacena para futuras comparaciones.<\/p>\n<p>Luego crear\u00e1 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\u00ed, extraer\u00e1 la direcci\u00f3n IP del paquete y se proceder\u00e1 al inicio de la etapa 2.<\/p>\n<p>Las funciones del listener son:<\/p>\n<ul>\n<li>Inspeccionar todos los paquetes TCP\/IPv4 con SYN flag.<\/li>\n<li>Comprueba que la IP de destino del paquete coincida con la IP que de almacen\u00f3 con ayuda de api.ipify.org (Si previamente VPNFilter no pudo extraer la IP desde ipify, entonces se omite este paso).<\/li>\n<li>Se asegura de que el paquete tenga ocho o m\u00e1s bytes.<\/li>\n<li>Escanea los datos para los bytes \\x0c\\x15\\x22\\x2b.<\/li>\n<li>VPNFilter hace un split de los bytes tomado 4 bytes como una IP as\u00ed que \\x01\\x02\\x03\\x04 se convierte en -&gt; 1.2.3.4<\/li>\n<li>VPNFilter se conecta a la IP reci\u00e9n extraida.<\/li>\n<li>Entonces confirma que la etapa 2 tenga al menos 1,001 bytes, en caso de no ser as\u00ed invocar\u00e1 m\u00e9todos de actualizaci\u00f3n.<\/li>\n<\/ul>\n<h3>Etapa 2<\/h3>\n<p>A\u00fan y cuando VPNFilter no logre la persistencia tras un reinicio, los hackers tendr\u00e1n capacidades de robo de archivos, ejecuci\u00f3n de comandos remotos, filtraci\u00f3n de datos de red, la administraci\u00f3n del dispositivo IOT infectado y por \u00faltimo la capacidad de autodestrucci\u00f3n ya que VPNFilter es capaz de sobrescribir una parte cr\u00edtica del firmware del dispositivo por lo que despu\u00e9s de reiniciarlo lo dejar\u00e1 inutilizable.<\/p>\n<p><b>Metodolog\u00eda<\/b><\/p>\n<p>VPNFilter configura el entorno de trabajo creando una carpeta de m\u00f3dulos (\/var\/run\/vpnfilterm) y un directorio de trabajo (\/var\/run\/vpnfilterw). Despu\u00e9s, se ejecutar\u00e1 en un bucle, donde primero se comunica con un servidor de comando y control (C2) y luego ejecutar\u00e1 los comandos recibidos del C2. Los nombres de los comandos est\u00e1n crifrados con la misma funci\u00f3n RC4 de la etapa 1.<\/p>\n<p>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\u00eda el modo debug habilitado y por tanto el virus \u00abimprim\u00eda\u00bb todos los eventos. Las versiones actuales de la etapa 2 de x86 ya no contienen las impresiones de depuraci\u00f3n.<\/p>\n<p>Las funciones descubiertas en esta etapa son:<\/p>\n<ul>\n<li>kill: Sobrescribe los primeros 5,000 bytes de \/dev\/mtdblock0 con ceros, y reinicia el dispositivo (esto lo dejar\u00e1 inutilizable).<\/li>\n<li>exec: Ejecuta un comando enviado por medio de la consola shell o por un plugin.<\/li>\n<li>tor: Establece la configuraci\u00f3n para las conexiones a redes TOR (bandera en 0 o 1).<\/li>\n<li>copy: Copia un archivo del cliente al servidor.<\/li>\n<li>seturl: Establece la URL del panel de configuraci\u00f3n actual.<\/li>\n<li>proxy: Establece la URL proxy actual.<\/li>\n<li>port: Establece el puerto para el proxy.<\/li>\n<li>delay: Establece un retraso entre las ejecuciones en el ciclo.<\/li>\n<li>reboot: Reinicia el dispositivo.<\/li>\n<li>download: Funciona como WGET almacenando una URL a un archivo.<\/li>\n<li>stop: Detiene VPNFilter.<\/li>\n<li>relay: Equivalente a delay para arquitecturas x86.<\/li>\n<\/ul>\n<p>Hasta que se instale el m\u00f3dulo de TOR, la etapa 2 usar\u00e1 una o m\u00e1s IPs almacenadas en su configuraci\u00f3n como Proxys SOCKS5 e intentar\u00e1 comunicarse con un servidor C2. Al igual que en la etapa 1, la comunicaci\u00f3n entre el VPNFilter y el proxy se conectar\u00e1 a trav\u00e9s de una conexi\u00f3n SSL.<\/p>\n<p>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.<\/p>\n<p>Cuando el m\u00f3dulo TOR se instala, se conectar\u00e1 a los dominios .onion con HTML simple a trav\u00e9s de un proxy SOCKS5. Ejemplo de un request al servidor:<\/p>\n<p>{<br \/>\n\u00abuq\u00bb:\u00bbpx(01:02:03:04:05:06)\u00bb,<br \/>\n\u00abpv\u00bb:\u00bbpPRXi686QNAPX86&#8243;,<br \/>\n\u00abad\u00bb:\u00bb10.0.0.1&#8243;,<br \/>\n\u00abbv\u00bb:\u00bb0.11.1a\/0.3.9qa\u00bb,<br \/>\n\u00abnn\u00bb:\u00bbYnVpbGRyb290&#8243;,<br \/>\n\u00abtn\u00bb:\u00bb\u00bb,<br \/>\n\u00abon\u00bb:\u00bb1&#8243;<br \/>\n}<\/p>\n<p>Variables:<br \/>\nuq: ID \u00fanico del dispositivo infectado (la direcci\u00f3n MAC de la interfaz de red).<br \/>\npv: La versi\u00f3n de VPNFilter<br \/>\nad: La direcci\u00f3n IP p\u00fablica del dispositivo<br \/>\nbv: Versi\u00f3n del loader de la etapa 1 (0.3.9qa) y el binario de la etapa 2 (0.11.1a)<br \/>\nnn: Nombre del nodo<br \/>\ntn: La bandera de la configuraci\u00f3n de TOR<br \/>\non: La bandera de la configuraci\u00f3n de los sitios onion<\/p>\n<p>VPNFilter codifica la solicitud dentro de un objeto JSON, que luego se codifica en base64 y se env\u00eda a la ruta \/bin32\/update.php en la variable POST \u00abme\u00bb. Tambi\u00e9n simula un navegador ya que sobrescribe la cabecera user-agent por \u00abMozilla \/ 6.1 (compatible; MSIE 9.0; Windows NT 5.3; Trident \/ 5.0)\u00bb, Sin embargo la versi\u00f3n \u00abWindows NT 5.3\u00bb no existe y nunca ha existido.<\/p>\n<p>La respuesta del servidor:<\/p>\n<p>{<br \/>\n\u00abtr\u00bb:3060,<br \/>\n\u00abpxs\u00bb:[\u00ab217.12.202.40&#8243;,\u00bb94.242.222.68&#8243;,\u00bb91.121.109.209\u00bb],<br \/>\n\u00abtor\u00bb:\u00bbtor 1&#8243;,<br \/>\n\u00abmds\u00bb:[]<br \/>\n}<\/p>\n<p>Variables:<br \/>\ntr: Establece la demora para el ciclo principal.<br \/>\npxs: Enlista los servidores C2.<br \/>\ntor: Establece el nombre y la versi\u00f3n del m\u00f3dulo Tor.<br \/>\nmds: una lista de m\u00f3dulos a buscar. Cada entrada tiene el formato \u00ab<id_comando> <id_m\u00f3dulo> <nombre_m\u00f3dulo> <fecha_m\u00f3dulo (codificado=\"\" en=\"\" base64)=\"\">\u00ab. VPNFilter descargar\u00e1 el m\u00f3dulo desde \/bin32\/update.php estableciendo el par\u00e1metro de la variable POST con el nombre del m\u00f3dulo y la arquitectura adjunta, por ejemplo: tor_i686 para el m\u00f3dulo TOR.<\/fecha_m\u00f3dulo><\/nombre_m\u00f3dulo><\/id_m\u00f3dulo><\/id_comando><\/p>\n<h3>Etapa 3<\/h3>\n<p>Esta etapa despliega m\u00f3dulos complementarios para la etapa 2, es decir VPNFilter tiene capacidad de actualizar su propio c\u00f3digo. Estos complementos proporcionan a la etapa 2 m\u00e1s vectores de ataque.<\/p>\n<p>Hasta ahora en esta etapa se han descubierto y desplegado dos m\u00f3dulos: El primer m\u00f3dulo es un Sniffer para recopilar el tr\u00e1fico que pasa por el dispositivo (MITM), incluidas credenciales de m\u00faltiples sitios web as\u00ed como el sniffing de los protocolos SCADA Modbus RTU\/TCP, el cual es usado para procesos industriales y sistemas de misi\u00f3n cr\u00edtica.<\/p>\n<p>El segundo m\u00f3dulo es para comunicaciones y permite que la etapa 2 se pueda comunique a trav\u00e9s de redes TOR.<\/p>\n<h3>Conclusiones<\/h3>\n<p>VPNFilter es una amenaza expansiva, robusta, y peligrosa que apunta a dispositivos que son dif\u00edciles de defender ya que estos dispositivos tienen que estar p\u00fablicamente conectados para poder proveernos de Internet. Sus capacidades modulares permiten cambios r\u00e1pidos en la infraestructura operativa. Las capacidades de \u00abautodestrucci\u00f3n\u00bb nos demuestra que los hackers est\u00e1n dispuestos a destruir los dispositivos con tal de no dejar pistas.<\/p>\n<p>Si el comando Kill se ejecutara a gran escala, podr\u00eda inutilizar cientos de miles de dispositivos, inhabilitar el acceso a Internet para cientos de miles de v\u00edctimas en todo el mundo o en una regi\u00f3n espec\u00edfica elegida por los hackers.<\/p>\n<p>Esquema de operaci\u00f3n completa:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2533 size-full\" src=\"https:\/\/484c2a6d15c399b70beb-b1e2a15a3df201703b71bb9b31acda05.ssl.cf5.rackcdn.com\/2018\/05\/esquema-VPNFilter.jpg\" alt=\"\" width=\"1459\" height=\"1067\"><\/p>\n<p>Servidores de la Fase 1<br \/>\nphotobucket.com\/user\/nikkireed11\/library<br \/>\nphotobucket.com\/user\/kmila302\/library<br \/>\nphotobucket.com\/user\/lisabraun87\/library<br \/>\nphotobucket.com\/user\/eva_green1\/library<br \/>\nphotobucket.com\/user\/monicabelci4\/library<br \/>\nphotobucket.com\/user\/katyperry45\/library<br \/>\nphotobucket.com\/user\/saragray1\/library<br \/>\nphotobucket.com\/user\/millerfred\/library<br \/>\nphotobucket.com\/user\/jeniferaniston1\/library<br \/>\nphotobucket.com\/user\/amandaseyfried1\/library<br \/>\nphotobucket.com\/user\/suwe8\/library<br \/>\nphotobucket.com\/user\/bob7301\/library<br \/>\ntoknowall.com<\/p>\n<p>Servidores C2 identificados:<br \/>\n91.121.109.209<br \/>\n217.12.202.40<br \/>\n94.242.222.68<br \/>\n82.118.242.124<br \/>\n46.151.209.33<br \/>\n217.79.179.14<br \/>\n91.214.203.144<br \/>\n95.211.198.231<br \/>\n195.154.180.60<br \/>\n5.149.250.54<br \/>\n91.200.13.76<br \/>\n94.185.80.82<br \/>\n62.210.180.229<br \/>\nzuh3vcyskd4gipkm.onion\/bin32\/update.php<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta amenaza apareci\u00f3 en 2016, pero hasta ahora ha salido a la luz p\u00fablica. VPNFilter es un sofisticado sistema de malware modular, el cual est\u00e1 siendo investigado por socios de seguridad e inteligencia del sector p\u00fablico 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\u00e9cnico pero cualquier duda, d\u00e9jalo en los comentarios.<\/p>\n","protected":false},"author":1,"featured_media":2545,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"image","meta":{"footnotes":""},"categories":[2820,14],"tags":[2762,3026,16,52,2897,3025,3024],"class_list":["post-2532","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-ciberguerra-2","category-seguridad","tag-ciberguerra","tag-fbi","tag-hacker","tag-hacking","tag-malware","tag-tor","tag-vpnfilter","post_format-post-format-image","has_thumb"],"_links":{"self":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts\/2532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/comments?post=2532"}],"version-history":[{"count":12,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts\/2532\/revisions"}],"predecessor-version":[{"id":2895,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts\/2532\/revisions\/2895"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/media\/2545"}],"wp:attachment":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/media?parent=2532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/categories?post=2532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/tags?post=2532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}