Estructura Interna de Ejecutables ELF (Linux) y PE (Windows): Tablas PLT/GOT, Imports y Entropía de Shannon (50 min)
Estructura Interna de Ejecutables ELF (Linux) y PE (Windows): Tablas PLT/GOT, Imports y Entropía de Shannon
1. Disección Forense de Secciones y Segmentos en un Binario
Todo ejecutable nativo en Linux (ELF - Executable and Linkable Format) o Windows (PE - Portable Executable) separa código, datos y tablas de enlace dinámico:
- .text: Instrucciones de máquina ejecutables (r-x).
- .rodata / .data / .bss: Constantes de solo lectura, variables globales inicializadas y no inicializadas (rw-).
- PLT (Procedure Linkage Table) & GOT (Global Offset Table) / IAT (Import Address Table): Mecanismo de resolución de funciones externas de libc o kernel32.dll. Auditar la tabla de importaciones revela de inmediato las capacidades de un binario sospechoso (ej. VirtualAllocEx, WriteProcessMemory, CreateRemoteThread indican inyección de procesos; memfd_create indica ejecución fileless en memoria).
2. Detección Matemática de Binarios Empaquetados o Cifrados (Packed Malware) vía Entropía de Shannon
Calculamos la entropía de información de Shannon $H(X) \in [0, 8]$ bits por byte sobre cada sección del binario:
$H(X) = -\sum_{i=0}^{255} P(b_i) \log_2 P(b_i)$
- Código nativo compilado normal (.text): $H \in [5.2, 6.4]$.
- Sección comprimida (UPX) o payload cifrado AES/XOR: Distribución casi uniforme de bytes con $H > 7.20$ y ausencia casi total de funciones en la tabla de importación (excepto LoadLibraryA y GetProcAddress para reconstruir la IAT en memoria).'