Guía para Analizar DLLs Maliciosas en Sistemas Windows
Cómo detectar, analizar y responder a DLLs maliciosas en Windows. Técnicas de DLL hijacking, sideloading, análisis estático y dinámico, y herramientas de investigación.
Por qué importa
Las DLLs son el vector favorito de malware avanzado en Windows. APT groups, ransomware y commodity malware usan DLL hijacking, sideloading e injection como técnicas primarias de evasión. Una DLL maliciosa cargada por un proceso legítimo firmado es invisible para muchas herramientas de detección.
Técnicas de abuso de DLLs
DLL Hijacking (T1574.001)
Explota el orden de búsqueda de DLLs de Windows:
Orden de busqueda de DLLs en Windows:
1. Directorio de la aplicacion
2. Directorio del sistema (C:\Windows\System32)
3. Directorio de Windows (C:\Windows)
4. Directorio actual
5. Directorios en PATH
Si la aplicacion busca "helper.dll" sin ruta completa:
→ El atacante coloca helper.dll maliciosa en el directorio de la app
→ Windows la carga ANTES de buscar en System32
→ La aplicacion legitima ejecuta codigo malicioso
DLL Sideloading (T1574.002)
Variante específica: el atacante distribuye un ejecutable legítimo firmado junto con una DLL maliciosa que el ejecutable espera cargar:
Ejemplo clasico:
carpeta_maliciosa/
├── OneDriveUpdater.exe (legitimo, firmado por Microsoft)
└── version.dll (maliciosa, cargada por OneDriveUpdater)
OneDriveUpdater.exe carga version.dll automaticamente.
Como el EXE es legitimo y firmado, EDR confía en el proceso.
La DLL maliciosa se ejecuta dentro del contexto del proceso firmado.
DLL Injection (T1055.001)
Inyección directa de DLL en proceso remoto:
// Flujo simplificado de DLL injection:
// 1. Abrir el proceso target
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, targetPID);
// 2. Reservar memoria en el proceso remoto
LPVOID addr = VirtualAllocEx(hProc, NULL, dllPathLen, MEM_COMMIT, PAGE_READWRITE);
// 3. Escribir la ruta de la DLL maliciosa
WriteProcessMemory(hProc, addr, dllPath, dllPathLen, NULL);
// 4. Crear thread remoto que carga la DLL
CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, addr, 0, NULL);
DLL Search Order Hijacking en servicios
Servicios de Windows que cargan DLLs desde directorios con permisos débiles. Si un usuario puede escribir en el directorio donde un servicio busca una DLL, puede escalar privilegios.
Flujo de análisis de una DLL sospechosa
1. Identificar la DLL
Señales de alerta:
- DLL sin firma digital en directorio de aplicacion firmada
- DLL con nombre de sistema (kernel32.dll, version.dll) fuera de System32
- DLL con timestamp reciente en directorio de aplicacion antigua
- DLL con tamanio diferente al esperado
- DLL cargada por proceso inusual (Sysmon Event ID 7)
2. Ubicar y extraer
# Copiar la DLL a entorno de analisis seguro
# NUNCA ejecutarla en el equipo de produccion
# Verificar hash
certutil -hashfile suspicious.dll SHA256
# Comprobar firma digital
sigcheck.exe -a suspicious.dll
3. Verificar firma y propiedades
| Propiedad | Qué verificar |
|---|---|
| Firma digital | Válida, expirada, self-signed, ausente |
| Publisher | Coincide con el software esperado |
| Timestamp | Fecha de compilación coherente |
| Version info | Nombre interno, descripción, versión |
| Tamaño | Comparar con versión legítima conocida |
4. Análisis estático
Herramientas:
- PEStudio: vista rapida de imports, exports, strings, secciones
- CFF Explorer: estructura PE detallada, secciones, headers
- IDA / Ghidra: desensamblado y analisis de funciones exportadas
- FLOSS: extraccion de strings ofuscadas
- Detect It Easy: identificacion de packer/compiler
Que buscar:
- Imports sospechosos: VirtualAlloc, CreateRemoteThread, URLDownloadToFile
- Exports que replican DLL legitima + export adicional malicioso
- Strings: URLs, IPs, rutas, mutex, claves de registro
- Entropia alta en secciones (posible packing)
- Seccion .text con tamanio mucho mayor al esperado
5. Análisis dinámico
# Ejecutar DLL en sandbox con rundll32
rundll32.exe suspicious.dll,DllMain
rundll32.exe suspicious.dll,ExportedFunction
# O cargar con regsvr32
regsvr32 /s suspicious.dll
# Monitorizar con:
# - Process Monitor (ficheros, registro, red)
# - API Monitor (API calls de la DLL)
# - Wireshark (trafico de red)
# - Procmon (cambios en sistema)
6. Correlaciones
Busca el hash en:
- VirusTotal (reputación multi-vendor)
- MalwareBazaar (familia conocida)
- ANY.RUN (análisis previos públicos)
- MISP/OpenCTI (correlación con campañas)
Herramientas de detección
| Herramienta | Qué detecta |
|---|---|
| Sysmon Event 7 | Carga de DLLs con hash, firmante y proceso |
| Process Monitor | Operaciones de fichero/registro en tiempo real |
| Autoruns | DLLs en puntos de persistencia |
| Sigcheck | Verificación de firmas digitales |
| PE-sieve | DLLs inyectadas o hollowed en memoria |
| Hollows Hunter | Detección de process hollowing y DLL injection |
Reglas de detección
# Sigma: DLL sideloading comun
title: DLL Sideloading via OneDrive
logsource:
category: image_load
product: windows
detection:
selection:
ImageLoaded|endswith: '\version.dll'
Image|endswith: '\OneDriveUpdater.exe'
filter:
ImageLoaded|startswith: 'C:\Windows\'
condition: selection and not filter
level: high
IOCs asociados a DLLs maliciosas
| Tipo | Ejemplo | Qué indica |
|---|---|---|
| Nombre de archivo | version.dll en dir no-system | DLL sideloading |
| Hash (SHA256) | No coincide con versión legítima | DLL reemplazada |
| Firmante | Self-signed o sin firma | DLL no legítima |
| Export inusual | DllRegisterServer con shellcode | Backdoor |
| Import sospechoso | VirtualAllocEx, WriteProcessMemory | Injection capability |
Buenas prácticas defensivas
- Mantén lista blanca de DLLs legítimas por aplicación. Compara hashes periódicamente.
- Monitoriza Sysmon Event ID 7. Carga de DLLs es la telemetría más valiosa para detectar sideloading.
- Valida firmas digitales. DLLs de sistema y aplicaciones enterprise deben estar firmadas.
- Verifica permisos de directorios. Directorios donde residen ejecutables de servicios no deben ser escribibles por usuarios normales.
- Documenta hallazgos y comparte IOCs. Integra en tu plataforma de threat intelligence.
- Usa EDR con detección de DLL injection. CrowdStrike, SentinelOne, Microsoft Defender ATP detectan las técnicas más comunes.
Fuentes y referencias
- MITRE ATT&CK. "DLL Search Order Hijacking (T1574.001)." https://attack.mitre.org/techniques/T1574/001/
- MITRE ATT&CK. "DLL Side-Loading (T1574.002)." https://attack.mitre.org/techniques/T1574/002/
- Russinovich, M. et al. "Windows Internals Part 1." Microsoft Press, 2017.
- Sikorski, M. & Honig, A. "Practical Malware Analysis." No Starch Press, 2012.
Preguntas frecuentes
Libros recomendados
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.