Skip to content

MZ.exe · .dll · .sys

PE Parser

Cabeceras, secciones, importaciones, recursos, Rich header, Authenticode, metadatos .NET, cadenas y hashes de ejecutables de Windows, con indicadores explicados en lenguaje claro. Análisis estático en su navegador con WebAssembly: el archivo nunca se sube ni se ejecuta.

FIG. 0esperando espécimen

Suelte aquí archivos .exe, .dll o .sys

Un archivo o todo un lote: las carpetas y colecciones ZIP (Velociraptor, una carpeta comprimida) funcionan tal cual. Los archivos se reconocen por su cabecera MZ, así que también aparecen las cargas renombradas. Nada se ejecuta: solo se leen los bytes.

Cinco archivos PE inofensivos de una intrusión ficticia: cuatro construidos a mano cuyo código es un simple `ret`, y wupd.exe, un build real empaquetado con UPX de un programa que solo muestra un saludo. Consejo: compare las dos compilaciones de m64.exe, abra la DLL firmada y luego abra wupd.exe para verlo desempaquetado.

100 % local y estático: los archivos se analizan con WebAssembly en su navegador, nunca se suben ni se ejecutan.

Cómo obtener los archivos

Guía completa de recopilación

Saque los binarios sospechosos de la máquina sin ejecutarlos, conservando su carpeta para que cada uno quede atribuido, y suelte aquí los archivos, la carpeta o un ZIP. No hay que instalar nada.

  1. Copie los binarios (nunca los ejecute)
  2. Suelte los archivos, la carpeta o el ZIP aquí
  3. Analizado en su navegador, nunca se sube

¿Ya tiene el archivo? Arrástrelo directamente a esta página: se lee, no se ejecuta.

Para barrer una máquina encendida, pegue esto en Windows PowerShell ejecutado como administrador. Copia los ejecutables (.exe, .dll, .sys, .scr, .cpl, .ocx) escritos en los últimos 14 días bajo ProgramData, Users y Windows\Temp, conservando sus rutas. Ajuste las carpetas y los días a su caso.

PowerShell · Admin
$dst = 'C:\triage\pe'
$roots = 'C:\ProgramData', 'C:\Users', 'C:\Windows\Temp'
Get-ChildItem -Path $roots -Recurse -Force -File -Include *.exe, *.dll, *.sys, *.scr, *.cpl, *.ocx -ErrorAction SilentlyContinue |
  Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) -and $_.Length -lt 200MB } |
  ForEach-Object {
    $to = Join-Path $dst $_.FullName.Substring(3)
    New-Item -ItemType Directory -Force -Path (Split-Path $to) | Out-Null
    Copy-Item -LiteralPath $_.FullName -Destination $to -Force
  }

Resultado: C:\triage\pe\ProgramData\…, C:\triage\pe\Users\<usuario>\… Suelte la carpeta C:\triage\pe aquí (arrástrela o use Elegir una carpeta).

¿Analiza en otra máquina? Empaquételo en un ZIP con el tar.exe integrado en Windows 10 1803 y posteriores. El antivirus puede poner archivos en cuarentena durante la copia: añada una exclusión para C:\triage o recopile desde una imagen.

PowerShell / cmd
tar -a -c -f C:\triage\pe.zip -C C:\triage pe

Trampas

  • El antivirus puede borrar o poner en cuarentena muestras durante la recopilación. Excluya la carpeta de destino o trabaje sobre una imagen.
  • Los ZIP protegidos con contraseña (los típicos archivos «infected») no se abren en el navegador: extráigalos primero y suelte la carpeta.
  • Los archivos de más de 512 MB se omiten: el navegador lee cada archivo entero en memoria.

¿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.

Triaje estático paso a paso de ejecutables de Windows con PE Parser, gratuito: cargue archivos o un ZIP, lea los indicadores, compare y exporte.
Localice y copie archivos EXE, DLL y SYS sospechosos de un equipo Windows o de una imagen sin ejecutarlos: PowerShell, Velociraptor, imágenes y trampas.
Indicios estáticos de un EXE Windows empaquetado o protegido: nombres de sección, entropía, secciones W+X, punto de entrada, importaciones, overlay y trampas.