IntermedioVirusTotalthreat huntingYARALivehuntRetrohuntimphashssdeepcampaign trackingMITRE ATT&CK

VirusTotal Hunting: Descubrir Variantes de una Campaña

Guía completa de VirusTotal Intelligence para threat hunting: Livehunt con reglas YARA, Retrohunt, Graph explorer, pivoting por imphash, ssdeep e infraestructura C2. Construir un cluster de campaña a partir de una sola muestra, con IOCs accionables.

MalwareIntel Research··10 min lectura
Serie: Casos de Uso — Parte 24

De una muestra a toda la campaña

Un analista de threat intelligence recibe una muestra de malware de un incidente reciente. El análisis en sandbox confirma que es un loader que descarga un payload de segunda etapa. El hash SHA256 es conocido por 35 de 72 motores antivirus en VirusTotal. Pero la pregunta real no es si este fichero es malicioso (eso ya lo sabemos), sino: ¿cuántas variantes más existen? ¿Desde cuándo opera esta campaña? ¿Qué infraestructura comparten las variantes? ¿Hay indicadores que permitan detectar muestras futuras?

VirusTotal Intelligence proporciona las herramientas para responder estas preguntas: búsquedas avanzadas, Livehunt, Retrohunt y Graph explorer. En este caso de uso, partimos de una sola muestra y construimos un cluster de campaña completo.

La muestra inicial

Nuestro punto de partida es un ejecutable PE:

Nombre:     update_client.exe
SHA256:     a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2
Tipo:       PE32 executable (GUI) Intel 80386
Tamaño:     247.5 KB
Detección:  35/72 (nombres variados: Trojan.GenericKD, Mal/Generic-S, Trojan.Win32.Agent)
Primera subida: 2026-05-28

Los nombres genéricos de detección ("Generic", "Agent") indican que los motores antivirus no tienen una firma específica para esta familia, lo que sugiere que podría ser una herramienta custom o poco documentada.

Paso 1: Análisis de metadatos en VT

Información del PE

VirusTotal extrae automáticamente metadatos del ejecutable:

Imphash:        f34d5e6f7a8b9c0d1e2f3a4b5c6d7e8f
SSDeep:         6144:aB3cD4eF5gH6iJ7kL8mN9oP0qR1sT2:aB3cD4eF5gH
Compilation:    2026-05-25 14:33:21 UTC
Entry Point:    0x00401000
Sections:       .text .rdata .data .rsrc
Signer:         Not signed
Resources:      RT_ICON, RT_VERSION, RT_MANIFEST
Version Info:
  CompanyName:      Microsoft Corporation
  ProductName:      Windows Update Client
  FileVersion:      10.0.19041.1
  InternalName:     wuauclt

Observaciones clave:

  • Imphash (f34d5e6f...): este hash será nuestro primer pivot para encontrar variantes
  • No firmado: un ejecutable que se hace pasar por "Windows Update Client" pero no tiene firma digital de Microsoft
  • Version Info falsa: imita un componente legítimo de Windows (wuauclt)
  • Compilación reciente: compilado 3 días antes de la primera subida

Comportamiento reportado

La pestaña "Behavior" de VT muestra resultados de sandboxes automáticos:

Network:
  DNS: update-service.evil-infra.xyz → 185.XX.XX.XX
  HTTP: GET http://185.XX.XX.XX/api/check
  HTTP: GET http://185.XX.XX.XX/api/payload?id=WK-001
  HTTPS: POST https://c2.evil-infra.xyz/beacon

Files Created:
  C:\Users\admin\AppData\Local\Temp\payload.dll
  C:\Users\admin\AppData\Roaming\Microsoft\Windows\svchost.exe

Registry:
  HKCU\Software\Microsoft\Windows\CurrentVersion\Run → "SecurityUpdate"

Paso 2: Pivoting por imphash

El imphash es nuestro primer vector de búsqueda. Ficheros con el mismo imphash importan las mismas funciones DLL en el mismo orden, lo que indica que fueron compilados con el mismo proyecto o builder.

Búsqueda en VT Intelligence

# Query de búsqueda avanzada en VT Intelligence
imphash:f34d5e6f7a8b9c0d1e2f3a4b5c6d7e8f

Resultados: 23 ficheros con el mismo imphash, subidos entre el 2026-04-15 y el 2026-06-01.

NombreSHA256Primera subidaDetección
update_client.exea1b2c3...2026-05-2835/72
windows_update.exed4e5f6...2026-05-2028/72
wupdater.exeg7h8i9...2026-05-1522/72
svc_update.exej0k1l2...2026-05-1018/72
win_service.exem3n4o5...2026-05-0112/72
updater.exep6q7r8...2026-04-258/72
setup_update.exes9t0u1...2026-04-155/72
(16 más).........

Patrón identificado: la detección aumenta con el tiempo (de 5/72 en abril a 35/72 en mayo), lo que indica que los motores AV van añadiendo firmas progresivamente. Los ficheros más antiguos tienen menos detecciones porque los motores no los reconocían cuando fueron subidos.

Paso 3: Pivoting por ssdeep (similitud fuzzy)

SSDeep calcula un hash de similitud contextual que permite encontrar ficheros con contenido similar (no idéntico):

# Búsqueda por similitud ssdeep en VT
similar-to:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2

Esta búsqueda devuelve 31 ficheros con similitud superior al 60%, incluyendo los 23 del imphash más 8 adicionales que tienen un imphash diferente (probablemente una versión actualizada del builder que importa funciones adicionales).

Paso 4: Pivoting por infraestructura

Dominios contactados

# Buscar ficheros que contactan el mismo dominio C2
behaviour_network:evil-infra.xyz

Resultados: 45 ficheros contactan dominios bajo evil-infra.xyz, incluyendo los 31 del paso anterior más 14 adicionales que son payloads de segunda etapa (DLLs) con estructura completamente diferente.

IPs del servidor C2

# Buscar ficheros que contactan la misma IP
behaviour_network:185.XX.XX.XX

Resultados: 52 ficheros. La IP del C2 se comparte con samples que contactan otros dominios, revelando que el atacante usa múltiples dominios apuntando a la misma infraestructura.

Dominios adicionales descubiertos

Al examinar los 52 ficheros, encontramos dominios C2 adicionales que no conocíamos:

DominioIPPrimera apariciónSamples
update-service.evil-infra.xyz185.XX.XX.XX2026-04-1523
c2.evil-infra.xyz185.XX.XX.XX2026-04-1545
cdn-update.evil-infra.xyz185.XX.XX.XX2026-05-0112
service-api.another-domain.xyz91.XX.XX.XX2026-05-158
api-gateway.third-domain.xyz91.XX.XX.XX2026-05-205

El atacante migró parte de la infraestructura a una nueva IP (91.XX.XX.XX) a mediados de mayo, probablemente porque la primera fue reportada.

Paso 5: Livehunt (detección proactiva)

Livehunt permite crear reglas YARA que se ejecutan contra cada nuevo fichero subido a VirusTotal, generando alertas en tiempo real:

Regla YARA para Livehunt

rule Campaign_EvilInfra_Loader {
    meta:
        description = "Detects loader variants from evil-infra campaign"
        author = "MalwareIntel Research"
        date = "2026-06-06"
        campaign = "evil-infra"
    strings:
        // Strings comunes en todas las variantes
        $s1 = "/api/check" ascii wide
        $s2 = "/api/payload" ascii wide
        $s3 = "/beacon" ascii wide
        
        // Dominios C2 conocidos
        $c2_1 = "evil-infra.xyz" ascii wide
        $c2_2 = "another-domain.xyz" ascii wide
        $c2_3 = "third-domain.xyz" ascii wide
        
        // Version info falsa de Windows Update
        $vi1 = "Windows Update Client" ascii wide
        $vi2 = "wuauclt" ascii wide
        
        // Patrón de código del builder
        $code1 = { 8B 45 ?? 83 C0 ?? 50 FF 15 ?? ?? ?? ?? 85 C0 74 ?? }
        $code2 = { 68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 89 45 ?? 83 7D ?? 00 }
        
    condition:
        uint16(0) == 0x5A4D and
        filesize > 100KB and filesize < 500KB and
        (
            any of ($c2_*) or
            (2 of ($s*) and any of ($vi*)) or
            (all of ($code*) and any of ($s*))
        )
}

Configuración de la notificación

Livehunt Rule: Campaign_EvilInfra_Loader
Notification: Email + Webhook
Webhook URL: https://our-siem.internal/api/vt-alerts
Email: [email protected]

A partir del momento en que esta regla está activa, cualquier nueva variante subida a VirusTotal generará una alerta, permitiendo detección proactiva antes de que afecte a la organización.

Paso 6: Retrohunt (búsqueda histórica)

Retrohunt aplica la misma regla YARA al corpus histórico completo de VirusTotal (cientos de millones de ficheros almacenados a lo largo de los años):

Retrohunt Results:
  Rule:     Campaign_EvilInfra_Loader
  Duration: 4 hours
  Scanned:  ~800M files
  Matches:  67 files
  
  Earliest match: 2026-03-01 (3 meses antes de nuestro incidente)
  Latest match:   2026-06-04 (ayer)
  
  New findings (not in previous pivots): 15 files

Retrohunt reveló 15 muestras adicionales que no encontramos con los pivots anteriores, incluyendo variantes tempranas de marzo que usaban un dominio C2 diferente (proto-evil-infra.xyz) que ya no está activo. Esto extiende la timeline de la campaña de 2 meses a 3 meses.

Paso 7: Graph explorer (visualización)

VT Graph permite visualizar las relaciones entre todos los artefactos descubiertos:

Estructura del grafo

                    [185.XX.XX.XX]
                    /      |       \
    [evil-infra.xyz]  [cdn-update...]  [update-service...]
          |                |                |
     [45 samples]     [12 samples]     [23 samples]
          |
    [payload_1.dll] ──── [payload_2.dll] ──── [payload_3.dll]
          |
    [91.XX.XX.XX]
     /         \
[another-domain.xyz]  [third-domain.xyz]
     |                      |
[8 samples]           [5 samples]

Información del grafo

El grafo revela la estructura de la campaña:

  • 2 IPs de C2: 185.XX.XX.XX (primaria, desde marzo) y 91.XX.XX.XX (backup, desde mayo)
  • 5 dominios: todos registrados en el mismo registrar con datos WHOIS similares
  • 67 loaders: compilados con el mismo builder, variando solo en los nombres
  • 3 payloads DLL: las etapas finales, actualizadas periódicamente
  • 1 operador probable: la infraestructura, timing y tooling sugieren un solo actor o grupo pequeño

Resumen del cluster de campaña

Partiendo de una sola muestra, hemos construido un cluster completo:

MétricaValor
Muestra inicial1
Variantes encontradas (loaders)67
Payloads de segunda etapa3
IPs de C22
Dominios C25
Primer sample conocido2026-03-01
Último sample conocido2026-06-04
Duración de la campaña3+ meses
Detección media (primer día)8/72
Detección media (actual)32/72

IOCs completos de la campaña

Infraestructura

TipoValorPrimera aparición
IPv4185.XX.XX.XX2026-03-01
IPv491.XX.XX.XX2026-05-15
Dominioevil-infra.xyz2026-03-01
Dominioupdate-service.evil-infra.xyz2026-04-15
Dominioc2.evil-infra.xyz2026-04-15
Dominiocdn-update.evil-infra.xyz2026-05-01
Dominioservice-api.another-domain.xyz2026-05-15
Dominioapi-gateway.third-domain.xyz2026-05-20
Dominioproto-evil-infra.xyz2026-03-01 (inactivo)

Hashes representativos (loaders)

SHA256NombreCompilación
a1b2c3d4...update_client.exe2026-05-25
d4e5f6a7...windows_update.exe2026-05-18
s9t0u1v2...setup_update.exe2026-04-12

Indicadores de builder

IndicadorValor
Imphash (v1)f34d5e6f7a8b9c0d1e2f3a4b5c6d7e8f
Imphash (v2)a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4
Version Info"Windows Update Client" / "wuauclt"
No firmadoSiempre sin firma digital
Tamaño200-300 KB (rango consistente)

Mapeo MITRE ATT&CK

TácticaTécnicaIDDetalle
Resource DevelopmentAcquire Infrastructure: DomainsT1583.0015 dominios C2 registrados
Resource DevelopmentAcquire Infrastructure: ServerT1583.0042 VPS para C2
Initial AccessPhishing: Spearphishing AttachmentT1566.001Distribución via email
ExecutionUser Execution: Malicious FileT1204.002Ejecución del loader
PersistenceBoot or Logon Autostart: Registry Run KeysT1547.001Run key "SecurityUpdate"
Defense EvasionMasquerading: Match Legitimate Name or LocationT1036.005Imitación de Windows Update
Command and ControlApplication Layer Protocol: Web ProtocolsT1071.001HTTPS beacon
Command and ControlIngress Tool TransferT1105Descarga de payload DLL

Lecciones aprendidas

1. Un solo sample puede revelar toda una campaña. El pivoting sistemático (imphash, ssdeep, infraestructura, comportamiento) convierte un indicador puntual en inteligencia de campaña accionable.

2. El imphash es el pivot más efectivo para builders comunes. Cuando un atacante usa un builder o toolkit que genera variantes, el imphash se mantiene constante mientras que los hashes del fichero cambian con cada compilación.

3. Livehunt convierte la inteligencia en detección proactiva. Una regla YARA bien construida detecta variantes futuras automáticamente, antes de que lleguen a la organización.

4. Retrohunt revela la historia que no conocías. Las campañas suelen ser más antiguas y extensas de lo que el primer incidente sugiere. Retrohunt puede revelar meses de actividad previa.

5. La infraestructura se reutiliza más que el malware. Los atacantes cambian los hashes de sus samples constantemente, pero reutilizan IPs, dominios y certificados TLS. El pivoting por infraestructura a menudo revela más variantes que el pivoting por fichero.

6. El grafo es la representación final. VT Graph permite visualizar relaciones que no son obvias en listas de IOCs: dominios que comparten IP, samples que comparten infraestructura, y cadenas de distribución entre loaders y payloads.


Los datos de esta guía son ficticios con fines educativos. Las técnicas de búsqueda y pivoting son aplicables a investigaciones reales en VirusTotal Intelligence. Todos los indicadores se proporcionan con contexto defensivo.

Preguntas frecuentes

Artículos relacionados

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.