¿Qué es un archivo PE?
PE (Portable Executable) es el formato de los programas de Windows: .exe, .dll, controladores .sys, .scr, .cpl, .ocx y binarios EFI. Empieza con una cabecera de MS-DOS («MZ»), luego una firma PE, una cabecera de archivo COFF, una cabecera opcional con 16 directorios de datos y una tabla de secciones que describe cómo se carga en memoria.
El análisis estático lee esa estructura sin ejecutar nada: qué importa el archivo, cuándo y con qué se compiló, si está firmado, qué lleva en sus recursos y en su overlay. Es el primer paso, y el más seguro, del triaje de malware.
Qué lee esta herramienta
- Cabeceras: DOS, COFF y cabecera opcional (PE32 y PE32+), directorios de datos, tabla de secciones con tamaños en disco y virtuales, atributos y entropía por sección, checksum recalculado.
- Importaciones (ordinales de ws2_32, wsock32 y oleaut32 con nombre), importaciones diferidas y enlazadas, exportaciones y reenvíos, imphash.
- Recursos: información de versión, manifiesto, iconos, tablas de cadenas, diálogos, archivos incrustados; detección de overlay.
- Rich header traducido a versiones de Visual Studio, directorio de depuración (ruta PDB, GUID, edad), callbacks TLS, configuración de carga (CFG, SafeSEH), reubicaciones.
- Authenticode: firmante, certificados, sello de tiempo, hash del archivo frente al resumen firmado y verificación de la firma RSA. .NET: cabecera CLR, flujos de metadatos, ensamblado, referencias, P/Invoke, tipos.
- Cadenas (ASCII y UTF-16LE) con categorías, MD5 / SHA-1 / SHA-256 / TLSH, heurísticas de empaquetadores y compiladores, y una tabla de lote para detectar familias.
- Desempaquetado: los archivos empaquetados con UPX se reconstruyen con sus importaciones originales, y los ejecutables ocultos dentro de un archivo (almacenados tal cual, codificados con XOR o comprimidos con LZNT1, aPLib, zlib, gzip o LZMA) se extraen y se analizan como archivos hijos.
Por qué importa en una investigación
- Los hashes y el imphash permiten consultar inteligencia de amenazas y agrupar variantes de una misma herramienta; TLSH mide lo parecidos que son dos archivos.
- Las fechas de compilación, depuración y firma datan una herramienta, y sus discrepancias delatan manipulaciones.
- Importaciones y cadenas muestran capacidades (red, inyección, persistencia) e indicadores (URL, IP, rutas, claves de registro).
- La información de versión, las rutas PDB y el Rich header apuntan al entorno del autor; una firma dice quién respaldó el archivo.
Limitaciones
- Solo estático: UPX se desempaqueta en el navegador, pero los demás empaquetadores, protectores y el código cifrado deben desempaquetarse en otro sitio antes de que aparezcan sus importaciones y cadenas reales.
- No se validan las cadenas de certificados (sin almacén de confianza ni revocación): la herramienta comprueba integridad, no confianza.
- La detección de empaquetadores se basa en unas pocas heurísticas, no en una base de firmas como la de Detect It Easy.
- Sin desensamblado ni emulación; sin ssdeep (no existe una implementación con licencia permisiva).
Cómo obtener los archivos
- Parta de los artefactos de ejecución (Prefetch, Amcache, servicios, tareas) para obtener las rutas exactas y copie esos archivos sin ejecutarlos.
- En un sistema encendido, barra las carpetas escribibles con PowerShell o recopile los binarios en ejecución con Windows.Triage.Targets (_Live) de Velociraptor.
- Conserve la estructura de carpetas y calcule los hashes antes de analizar.
Preguntas frecuentes
¿Se sube o se ejecuta el archivo?
Ninguna de las dos cosas. El analizador está escrito en Rust, compilado a WebAssembly y se ejecuta en un Web Worker de su navegador. Solo lee bytes: sin emulación, sin sandbox, sin punto de subida.
¿Puede decirme si un archivo es malware?
Ninguna herramienta puede hacerlo solo con datos estáticos. Muestra hechos (importaciones, firma, empaquetador, fechas) e indicadores explicados que merecen un vistazo. Combínelos con el contexto, la inteligencia de amenazas y, si hace falta, un análisis dinámico en sandbox.
¿Verifica las firmas como Windows?
En parte. Recalcula el hash Authenticode y lo compara con el resumen firmado, y verifica la firma RSA del firmante con el certificado incluido. No comprueba si la cadena termina en una raíz de confianza ni si se revocó un certificado: eso requiere un almacén de confianza y datos en línea.
¿Puede desempaquetar UPX y extraer cargas ocultas?
Sí, de forma estática. Los EXE y DLL empaquetados con UPX (32 y 64 bits, todos los métodos de compresión, también con una cabecera alterada que hace fallar upx -d) se descomprimen como datos y se reconstruyen con sus importaciones originales, de modo que el imphash coincide con el build original. Los ejecutables ocultos dentro de un archivo, almacenados tal cual, codificados con XOR o comprimidos con LZNT1, aPLib, zlib, gzip o LZMA, también se extraen. Cada uno se añade como archivo hijo y puede guardarse en un ZIP protegido con la contraseña infected.
¿Cómo se calcula el imphash?
Igual que pefile: pares «dll.función» en minúsculas (sin la extensión .dll, .ocx o .sys; los ordinales de ws2_32, wsock32 y oleaut32 con nombre según las tablas de pefile y los demás como ordN), unidos por comas y con MD5. Las importaciones diferidas no se incluyen.
¿En qué se diferencia de pestudio, PE-bear o Detect It Easy?
Reúne en una sola página, sin instalación, las vistas más usadas de esas herramientas, procesa un lote de archivos a la vez (hashes, familias de imphash, rango de tiempo, comparación) y nunca obliga a llevar la muestra a una VM de análisis. Esas herramientas profundizan más en sus especialidades: desensamblado, bases de firmas, edición.