CCN-CERT - ID-02-21 Conti v3 Ransomware
CCN-CERT - ID-02-21 Conti v3 Ransomware
CCN-CERT - ID-02-21 Conti v3 Ransomware
Marzo 2021
USO OFICIAL
CCN-STIC- USO OFICIAL
26 CCN-CERT ID-02/21 Código Dañino Conti v3 Ransomware
Edita:
2.5.4.13=Qualified Certificate: AAPP-
SEP-M-SW-KPSC, ou=sello electrónico,
serialNumber=S2800155J, o=CENTRO
CRIPTOLOGICO NACIONAL, c=ES
2021.03.03 15:37:07 +01'00'
© Centro Criptológico Nacional, 2019
LIMITACIÓN DE RESPONSABILIDAD
El presente documento se proporciona de acuerdo con los términos en él recogidos, rechazando
expresamente cualquier tipo de garantía implícita que se pueda encontrar relacionada. En ningún caso, el
Centro Criptológico Nacional puede ser considerado responsable del daño directo, indirecto, fortuito o
extraordinario derivado de la utilización de la información y software que se indican incluso cuando se
advierta de tal posibilidad.
AVISO LEGAL
Quedan rigurosamente prohibidas, sin la autorización escrita del Centro Criptológico Nacional, bajo las
sanciones establecidas en las leyes, la reproducción parcial o total de este documento por cualquier medio
o procedimiento, comprendidos la reprografía y el tratamiento informático, y la distribución de
ejemplares del mismo mediante alquiler o préstamo públicos.
ÍNDICE
1. SOBRE CCN-CERT, CERT GUBERNAMENTAL NACIONAL .......................................... 4
2. INFORMACIÓN DEL CÓDIGO DAÑINO .................................................................... 5
3. CARACTERÍSTICAS DEL CÓDIGO DAÑINO................................................................ 5
4. DETALLES GENERALES ............................................................................................ 6
5. CARACTERÍSTICAS TÉCNICAS .................................................................................. 6
5.1 CARGADOR ............................................................................................................ 6
5.2 TÉCNICAS ANTI-ANÁLISIS ....................................................................................... 8
5.2.1 DESACTIVACIÓN DE HOOKS .............................................................................. 8
5.2.2 CIFRADO DE CADENAS ...................................................................................... 9
5.2.3 RESOLUCIÓN DE APIS ........................................................................................ 9
5.3 PARÁMETROS DE EJECUCIÓN .............................................................................. 11
5.4 MUTEX ................................................................................................................. 12
5.5 ENUMERACIÓN DE FICHEROS .............................................................................. 12
5.6 DESBLOQUEO DE FICHEROS ................................................................................ 15
5.7 ESQUEMA DE CIFRADO ........................................................................................ 15
5.8 MENSAJE DE RESCATE ......................................................................................... 19
5.9 BORRADO SHADOW COPIES ................................................................................ 19
6. REGLAS DE DETECCIÓN ........................................................................................ 20
6.1 REGLAS YARA ....................................................................................................... 20
7. ANEXOS ............................................................................................................... 22
7.1 CLAVE PÚBLICA RSA (PEM) .................................................................................. 22
7.1.1 2DE7653D469BB2846A68775220B784153059E051 ....................................... 22
7.1.2 85C434FBAA94FB4D73D77429A32E88B184EC2F88 ....................................... 22
7.2 MENSAJE DE RESCATE ......................................................................................... 22
7.2.1 2DE7653D469BB2846A68775220B784153059E051 ....................................... 22
7.2.2 85C434FBAA94FB4D73D77429A32E88B184EC2F88 ....................................... 23
4. DETALLES GENERALES
Las muestras analizadas utilizan el formato PE EXE (Portable Executable), es decir,
se corresponde con un ejecutable para sistemas operativos Windows, concretamente
para 32 bits (por lo que puede funcionar también en sistemas de 64 bits), compiladas
con “Microsoft Visual C/C++ 2015”.
Ambas muestras reflejan en su fecha interna (TimeDateStamp) que fueron creadas
durante el mes de noviembre de 2020. No obstante, hay que tener en cuenta que esta
información puede ser fácilmente alterada.
5. CARACTERÍSTICAS TÉCNICAS
5.1 CARGADOR
Con el objetivo de dificultar su detección, uno de los componentes analizados,
emplea un cargador/packer que descifra el contenido de uno de sus recursos para
finalmente cargar en memoria Conti ransomware.
Una vez descifrado el recurso, continua su ejecución desde él, que se corresponde
con un fragmento de código (shellcode) utilizado para cargar otro fichero ejecutable (PE
DLL).
Para llevar a cabo este proceso, realiza los siguientes pasos:
• Resuelve dinámicamente las APIs necesarias.
• Reserva memoria y copia el contenido del PE DLL.
• Aplica las reubicaciones correspondientes y resuelve la tabla de
importaciones (IAT).
• Finalmente, continua su ejecución desde el punto de entrada del nuevo PE
DLL cargado.
Este fichero PE DLL tiene como objetivo cargar otro PE EXE final, que se
corresponde con ransomware Conti. El contenido de este fichero PE EXE nunca llega a
escribirse en disco, sin embargo, se ha realizado un volcado de memoria para calcular
sus firmas.
SHA1 Fecha creación
C72BD50BE0A494634FBFDEE9DF4B6C7BDFCAA504 2020/11/17 20:10:22 UTC
El código dañino mantiene cifradas todas las cadenas que utiliza. Cada cadena se
descifra en pila en tiempo de ejecución haciendo uso un algoritmo propio, que aplica
operandos o claves distintas en cada bucle de descifrado.
kernel32.dll
CancelIo GetFileAttributesW ReadFile
CloseHandle GetFileSizeEx SetEndOfFile
CreateFileMappingW GetLastError SetFileAttributesW
CreateFileW GetLogicalDriveStringsW SetFilePointer
CreateIoCompletionPort GetModuleFileNameW SetFilePointerEx
CreateMutexA GetNativeSystemInfo Sleep
CreateProcessW GetProcAddress VirtualProtect
CreateThread GetProcessId WaitForMultipleObjects
CreateTimerQueue GetQueuedCompletionStatus WaitForSingleObject
CreateTimerQueueTimer GlobalAlloc WideCharToMultiByte
CreateToolhelp32Snapshot GlobalFree Wow64DisableWow64FsRedirection
DeleteCriticalSection InitializeCriticalSection Wow64RevertWow64FsRedirection
DeleteTimerQueue LeaveCriticalSection WriteFile
EnterCriticalSection LoadLibraryA lstrcatW
ExitThread MapViewOfFile lstrcmpW
FindClose MoveFileW lstrcmpiW
FindFirstFileW PostQueuedCompletionStatus lstrcpyW
FindNextFileW Process32FirstW lstrlenA
GetCommandLineW Process32NextW lstrlenW
GetCurrentProcess
RmRegisterResources
RmShutdown
RmStartSession
bind
closesocket
gethostbyname
gethostname
getsockopt
inet_ntoa
setsockopt
shutdown
Para obtener la dirección de cada API, recorre las exportaciones del módulo dado,
calcula un hash (algoritmo Murmur) con el nombre de la función y lo compara con el
hash correspondiente al API deseado.
5.4 MUTEX
Para garantizar su ejecución exclusiva y que no existan más instancias del proceso
en ejecución, crea el siguiente mutex:
kjkbmusop9iqkamvcrewuyy777
En caso de existir otra instancia del mutex en uso, simplemente esperará a que el
mutex deje de ser usado para finalizar la ejecución del proceso.
Si el código dañino se ejecuta con el parámetro “-nomutex”, no creará ni
comprobará la existencia del mutex.
5.5 ENUMERACIÓN DE FICHEROS
El código dañino crea varios hilos de cifrado en base a los parámetros de ejecución
proporcionados. Por defecto (-m all), usará el número de procesadores que disponga la
máquina. Para cualquier otro modo de operación, usará el doble del número de
procesadores.
Para obtener las distintas unidades lógicas del sistema utiliza el API
“GetLogicalDriveStringsW”, y las almacena en una lista compartida para su posterior
procesado por los hilos de cifrado.
Del mismo modo, evitará cifrar cualquier fichero que cuyo nombre contenga
alguna de las siguientes cadenas:
.exe
.dll
.lnk
.sys
.msi
readme.txt
CONTI_LOG.txt
.PVVXT (extension cifrado)
Para enumerar recursos de red compartidos, obtiene las entradas de la tabla ARP
(Address Resolution Protocol) del sistema usando el API “GetIpNetTable”, donde
recopila únicamente aquellas que se correspondan a direcciones IP locales
comprobando si contienen alguna de las siguientes cadenas:
172.
192.168
10.
169.
Por cada IP localizada, escanea todo su rango de red (CLDR /24) en busca de
equipos con posibles recursos compartidos. Para realizar esta comprobación, intenta
establecer una conexión al puerto 445 (SMB).
En caso de encontrar máquinas con el servicio SMB activo, enumera sus recursos
compartidos mediante el API “NetShareEnum”. Los recursos compartidos encontrados
se encolan en una lista compartida para ser procesados por los hilos de cifrado, evitando
cifrar cualquier recurso con nombre “ADMIN$”.
5.6 DESBLOQUEO DE FICHEROS
Para garantizar que puede cifrar todos los ficheros del sistema, Conti hace uso del
Administrador de reinicio de Windows (Restart Manager - rstrtmgr.dll). Cuando detecta
que un fichero se encuentra bloqueado, realiza el siguiente proceso para tratar de
desbloquearlo:
• Registra el fichero bloqueado en una sesión del gestor de reinicio, usando
el API “RmRegisterResources”.
• Obtiene el listado de aplicaciones y servicios que están haciendo uso del
recurso registrado, mediante el API “RmGetList”.
• Detiene el proceso o servicio mediante el API “RmShutdown”, siempre y
cuando el identificador de proceso (PID) no se corresponda con el proceso
actual o el de “explorer.exe”.
El código hace uso tres categorías durante el cifrado, dependiendo del tamaño del
fichero o su extensión:
- Pequeño (0x24): Ficheros cuyo tamaño sea inferior a 1MB, o que posean alguna
de las siguientes extensiones. Cifrará como máximo 1MB.
1 https://www.ccn-cert.cni.es/publico/seriesCCN-STIC/series/400-Guias_Generales/401-glosario_abreviaturas/index.html?n=639.html
- Medianos (0x25): Ficheros cuyo tamaño esté entre 1MB y 5MB. Únicamente
cifrará el primer 1 MB.
- Grandes (0x26): Ficheros cuyo tamaño sea superior a 5MB. El cifrado se realiza
cada N bloques, evitando así tener que cifrar todo el contenido. También considerará
ficheros grandes aquellos que tengan alguna de las siguientes extensiones:
.vdi .qcow2
.vhd .subvol
.vmdk .bin
.pvm .vsv
.vmem .avhd
.vmsn .vmrs
.vmsd .vhdx
.nvram .avdx
.vmx .vmcx
.raw .iso
2DE7653D469BB2846A68775220B784153059E051 .PVVXT
6. REGLAS DE DETECCIÓN
rule Conti_Ransomware_Loader
{
meta:
author = "Centro Criptológico Nacional (CCN)"
date = "03/03/2021"
description = "Conti v3 ransomware (Loader)"
strings:
$1 = "LdrFindResource_U" ascii wide
$2 = "LdrAccessResource" ascii wide
$3 = "ntdll.dll" ascii wide
$4 = "C:\\Windows\\notepad.exe" ascii wide
$5 = "blanks: %10d" ascii wide
condition:
uint16(0) == 0x5A4D and
pe.machine == pe.MACHINE_I386 and
pe.number_of_sections == 6 and
pe.number_of_resources == 4 and
pe.resources[2].length > 0x30000 and
all of them
rule Conti_Ransomware
{
meta:
author = "Centro Criptológico Nacional (CCN)"
date = "03/03/2021"
description = "Conti v3 ransomware"
strings:
$1 = {98664B6792EED011AD7100C04FD8FDFF}
$2 = {11F890453A1DD011891F00AA004B2E24}
$3 =
{690A95E9D15B83C20469FF95E9D15B8BC1C1E81833C169C895E9D15B33F983EB01}
$4 = {6A3968BCCCC15CBA10000000}
$5 = {BA100000006A366877FF47A2}
$6 = {0602000000A4000052534131}
condition:
uint16(0) == 0x5A4D and
pe.machine == pe.MACHINE_I386 and
pe.number_of_sections == 6 and
all of them
}
7. ANEXOS
7.1.1 2DE7653D469BB2846A68775220B784153059E051
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwA3PZYcWPW6JDqskJKs+
54lWldTvC+wEHnqLcjkqGJ72ejn1knjOjwGeCxlAelPIKX0tMcukrhNGwPv3133z
EUgC3GlM9dnk8Q9X+3jO9iGTv1Z/SKn1m+jbwE9mTPreChrhPr9uuYreV9Dw3uzc
GiYI+0C8VCM8W85S0krTcKe8J96OQ0Fgq5AtTD1++NDM+fapvhKsdwJC3gR/Yqpc
dAq9v2gf9JGbE1d5tfFJhKQiwIUUbTQjh01b6Obucxeo7RfS0k2V6Yl19A6J+/Fi
K5LGnHp4EGR6S2pqPmGSvoa+KsauEQ/wQKflhkPBOXDQlc90j+oLZAxKZjSMLNNA
KNbV4UPndMPLnXuDVN7AQ1ZKBr5iYzLQuDCxz4cpXQ+0YiaQsYtyGP0ZnWN97Ecz
oNGaF9Us2814ERaCdBcdINko8c63CxOkobtwS6CwMXzZ/2RCMC+Qsu+cyCtoFKAZ
+OB8pcfvrK014MiisIpGd4hN2qGyR5geG9vh71HHF9p+D7odKCo4YQo806CeBkS/
xfM3we2Kj7eVPeItlyGeRV0bOSW4dpghKPw2VYo3gUuHtLQYCV9F2ZnEfJynX0cF
/NOyLG7Uouisyi9pi6W3D4iIsRbAjV2np4n1UnO2kS281ZGVTWPXhGJE8Ix7wtbB
LKPKzqja0mxi0eREzWxIVs0CAwEAAQ==
-----END PUBLIC KEY-----
7.1.2 85C434FBAA94FB4D73D77429A32E88B184EC2F88
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuqpsFmPia3HjT/nIp5Ot
pMsgCJ3ZaNr/4puHA5NynIhg65qEBjtTEJ7sDX7ifUdC26L5uyR6wpR13l9Srlp0
GZd5YZZMBWGxAuWlzNqpOES305c4V1G50QQN9X+ETjHOnW+JTBkMamR20pKow8qF
0sDPeXHkjqGiYmJJeL5mHBFW/KN12X6ldtEUU5sCwiIZQwmxVULf5ogGvnZxdQpo
v1zpetE9L10+1DCddFMsQbYhIiPtUhzHydcRii6+dBC3iErGmOwZrwnrE2wIeV2U
mlQsPgycTdq9Fwc/IQ2mZFBwtBAR4PWrODR7QVrONn+BLsdcYXE3uus9bu8u5uve
LigqOfMaGZao041/sMH8omiMRY9zOExENKoTMxcSenGJDH6OknnatCx4xHm9FFr7
IgPmwcljxUXPK6wP2oU1CpX1oat+8AyPR1lXPQzbcg7a00nAsx5U28f5hWEb/WeS
Mz2yM1QMGTBWosE7/Vi6ZCBmrlvaP8Sz4Z5UPIi6kbDL4EkBKT8FUV3H0D2QrZQ2
hzTpeVJgPIavljgwEGjsjLCq3flml/qbq3RlrPgh9/LA3OgHLfdlLqxXrsYhi1uZ
ChnUKQOWzZCqpsWUvaYSZBfp0AWJAEKb1d1A88ljQ7eeLX9u1YZswHTJXSIEwUsq
IKvnPMTF7hgZo+pesoTiOfECAwEAAQ==
-----END PUBLIC KEY-----
7.2.1 2DE7653D469BB2846A68775220B784153059E051
Аll оf уоur filеs аrе currеntlу еncrуptеd bу CОNTI strаin.
As you know (if you don't - just "google it"), all of the data that has been encrypted by our software cannot be recovered by any
means without contacting our team directly.
If you try to use any additional recovery software - the files might be damaged, so if you are willing to try - try it on the data of the
lowest value.
To make sure that we REALLY CAN get your data back - we offer you to decrypt 2 random files completely free of charge.
You can contact our team directly for further instructions through our website :
TOR VERSION :
(you should download and install TOR browser first https://torproject.org)
http://m232fdxbfmbrcehbrj5iayknxnggf6niqfj6x4iedrgtab4qupzjlaid.onion
HTTPS VERSION :
https://contirecovery.info
---BEGIN ID---
M1ziA7UitH6QiHp4KvHfYcoNsyYhQQYQTSwvPmtCZxmuPTxyy32qiZPjuyUvQiRa
---END ID---
7.2.2 85C434FBAA94FB4D73D77429A32E88B184EC2F88
Аll оf уоur files аrе currеntlу еncrуptеd bу CОNTI rаnsоmwаrе.
If you try to use any additional recovery software - the files might be damaged or lost.
To make sure that we REALLY CAN recover data - we offer you to decrypt samples.
Our website
TOR VERSION :
(you should download and install TOR browser first https://torproject.org)
http://m232fdxbfmbrcehbrj5iayknxnggf6niqfj6x4iedrgtab4qupzjlaid.onion
HTTPS VERSION :
contirecovery.info
---BEGIN ID---
TWzT94vnlRW37S4UuBmjqvcYtekqhPV7THnailsMxxOu5KT8xImd5to8Dx6fjymv
---END ID---