Entonces, ¿te encontraste respondiendo a una alerta sobre uno de tus empleados que descargó una versión maliciosa de Advanced IP Scanner? Esto se ha vuelto bastante común, ya que los administradores de sistemas y técnicos de TI quieren descargar la herramienta para usarla de forma legítima en su entorno. Pero los actores de amenazas han estado alojando versiones maliciosas muy convincentes que se descubren a través de malvertising (por ejemplo, "publicidad maliciosa" como Google Ads). Ahora, supongamos que quieres profundizar y obtener el archivo tú mismo, pero te encuentras lidiando con algunos problemas, a saber:
- El empleado eliminó el archivo descargado
- La URL en la que hizo clic redirige al sitio web real de Advanced IP Scanner
- Intentar que el anuncio aparezca en las búsquedas de Google simplemente no está funcionando
Hace poco estaba lidiando con este escenario exacto, y el método que elegí usar fue engañar al sitio para que pensara que yo venía de un clic en un anuncio de Google. Elegí este método principalmente porque parecía ser mi única forma de obtener el archivo inicial en ese momento. El archivo original ya no estaba en el equipo del usuario, pero aun así quería analizarlo. Sin embargo, cuando navegué a la URL maliciosa, descubrí que el sitio web me redirigía al sitio real de Advanced IP Scanner, ¡así que decidí engañarlo! (Más adelante te mostraré que esto ni siquiera era necesario, y pensé demasiado en ello.)
El sitio con el que estamos lidiando en este escenario es hxxps://advanced[.]ip-scanner[.]co (por favor, no visites este enlace en particular).
Como mencioné, quiero obtener el archivo original para poder analizarlo. Mi objetivo al analizar este archivo es simplemente ver qué hace. ¿Se conecta a un C2 (servidor de comando y control)? ¿Instala persistencia en el endpoint para que los actores de amenazas puedan conectarse al sistema? ¿O para que se ejecute código más malicioso después de que se haya eliminado el archivo? ¿Intenta robar las credenciales del usuario desde el endpoint? Estas son algunas preguntas básicas que quiero responder en mi análisis, pero para hacerlo, necesito el archivo.
Así que vamos a obtenerlo. Déjame mostrarte qué pasa si vamos al sitio. En mi caso, me redirige al sitio web legítimo de Advanced IP Scanner en lugar del malicioso:
Bien, ¿y si intento buscarlo en Google? ¿Tal vez pueda lograr que aparezca el anuncio?
No, en este caso obtengo el sitio legítimo. (Ten en cuenta que campañas anteriores de malvertising pudieron falsificar la URL que se mostraba en el anuncio, pero confirmé esta visitando el sitio.)
Todavía quiero engañar a este sitio web para que piense que vengo de un clic en un anuncio de Google, de modo que sirva el sitio web malicioso en lugar del legítimo. Necesito obtener la descarga maliciosa, pero ¿cómo puedo hacerlo? Bueno, mi primer pensamiento fue ver qué pasa cuando hago clic en un anuncio hacia otro sitio legítimo. ¿Qué tipo de cookies o datos de encabezado se aplican para indicarle al sitio web que vengo de un clic en un anuncio de Google?
En este caso, abrí el panel de desarrollador del navegador con F12, hice clic en la pestaña network, y volví al sitio legítimo advanced-ip-scanner.com a través del clic en el anuncio.
Después de un poco de exploración, descubrí que el primer resultado es el que queremos explorar más a fondo. Así que hagamos clic en este resultado y veamos qué obtenemos.
Si nos desplazamos hacia abajo hasta Request Headers podemos ver esta línea:
Bien, vamos a Postman y probemos. Por si no lo conoces, Postman permite a los desarrolladores ejecutar solicitudes HTTP y probar respuestas de la API. De esta forma puedo editar libremente cualquier encabezado o proporcionar datos de cookies y ver qué tipo de respuesta obtengo del sitio web. En Postman quiero crear una nueva solicitud GET, y quiero agregar un encabezado Referer con el valor https://www.google.com/
Veamos si esto funciona. Hagamos clic en Send.
¡Ahí está! Verás algunas referencias en la captura de pantalla a advanced-ip-scanner.com, pero eso es porque los actores de amenazas simplemente clonaron el sitio. Si nos conectamos con y sin el referente, hay ligeras diferencias en las páginas resultantes.
Así que en este punto quiero encontrar la descarga. Voy a usar Ctrl+F con la palabra download.
¡Y miren nada más! Intentemos visitar ese directorio en advanced-ip-scanner[.]com/download/.
Eso también existe. Ahora bien, antes de investigar un poco, ¿recuerdan cuando dije antes: "más adelante explicaré cómo esto ni siquiera era necesario, y que le dediqué demasiado esfuerzo a pensarlo"?
Pues resulta que solo la página principal advanced[.]ip-scanner[.]co redirige si tienes el referer incorrecto. Todo lo que tenía que hacer era agregar /download y eso me permitiría ver el directorio abierto, con o sin el encabezado de referer. Pero bueno, todo se ve más claro en retrospectiva.
Vamos a husmear un poco. Encuentro que ipscanner.txt es interesante, principalmente por la convención de nombres. dl.php y dwnl.php probablemente estén relacionados con la lógica de descarga, y no estoy seguro sobre apps2co.php por el momento, así que primero voy a revisar ipscanner.txt. Así que vamos a revisarlo.
Puede que no sea obvio de inmediato, pero esto es sumamente interesante porque se parece a una codificación Base64. Vamos a decodificarlo. ¡A CyberChef! Para quienes no lo conozcan, CyberChef es una herramienta web fantástica para el análisis de datos. Nos puede ayudar a descomprimir, decodificar y descifrar datos, y es una maravillosa "navaja suiza" para los profesionales de la ciberseguridad.
Eso sí que es interesante. En la imagen de arriba vemos la salida original de ipscanner.txt en la parte superior derecha, con mi método de decodificación mostrado a la izquierda, resaltado en verde. Simplemente estoy aplicando "From Base64" para decodificar el texto. En la parte inferior derecha, podemos ver el resultado. Eso es un ejecutable.
Una forma rápida y sencilla de saber que esto es un ejecutable es que podemos ver "This program cannot be run in DOS mode." cerca de la parte superior de la salida. Esa es una señal reveladora de un .exe. Podríamos descargar esto de varias formas distintas. Podríamos hacer clic en el botón "save output" (el pequeño ícono de disquete sobre la salida) en CyberChef y guardarlo como un .exe, y así tendríamos nuestro ejecutable malicioso. Pero quiero mostrarles otra forma.
Voy a descargar el Base64 sin procesar a mi VM (máquina virtual) como un archivo .txt y usar certutil para decodificarlo con el comando certutil -decode source dest.
En la captura de pantalla de arriba, simplemente estoy ejecutando certutil -decode raw.txt decoded.exe contra el archivo raw.txt, que contiene el Base64 original, y generando como salida decoded.exe. Los actores de amenazas suelen usar certutil exactamente así para crear un .exe a partir de datos codificados en un sistema objetivo, por lo que esto generalmente activará una alerta en la mayoría de los productos EDR.
¡Obtuvimos el archivo! También usé Get-FileHash para obtener el hash SHA256 y compararlo con el hash originalmente mencionado en la alerta que desencadenó todo esto, y es el mismo, lo que confirma que tengo el archivo malicioso.
Bien, pero ¿qué pasa con los otros enlaces que se muestran en el directorio /download? Pues resulta que, una vez más, nos estamos esforzando de más.
Si hacemos clic en el enlace apps2co.php en esta página, se entrega el .exe decodificado. Y si comparo ese hash con el hash original de la alerta y el hash de mi .exe decodificado, obtenemos el mismo hash.
(En este punto, no vamos a seguir más allá porque entonces esto se convertiría en un blog sobre análisis de malware estático y dinámico. Pero espero que hayan disfrutado leer esto tanto como yo disfruté investigarlo).
La teoría de investigación nos dice que debemos formular preguntas contextuales y respondibles al investigar una alerta. La pregunta que me hice y que me llevó por este camino fue: "¿Qué hace este archivo?". Para responder esta pregunta, mi intención inicial era descargar el archivo malicioso original para poder analizar su comportamiento. Esto me ayudaría no solo a entender qué está haciendo el archivo, sino también a profundizar más y asegurarme de que el endpoint esté limpio.
Espero que este blog haya sido ameno e informativo al mostrar cómo un analista de seguridad podría abordar la obtención de un archivo original cuando el sitio web malicioso está configurado para redirigir como método para ocultarse de los profesionales de seguridad.
Me gustaría agradecer a mi colega Jai Minton por investigar esto conmigo. Para conocer sus perspectivas, puedes revisar su blog aquí.
Una versión de este artículo apareció originalmente en Medium.