
Aprendizaje automático para la ciberseguridad
Aprendizaje automático para la ciberseguridad
Examinando el encabezado PE
El formato Portable Executable (PE) es la estructura estándar utilizada en los sistemas operativos Windows para la ejecución de programas. Este formato es empleado en archivos ejecutables (.exe), bibliotecas de enlace dinámico (.dll), controladores del sistema (.sys), entre otros. Su diseño permite al sistema operativo cargar y ejecutar de forma eficiente los programas en memoria.
Características principales de los archivos PE:
1. Encabezado PE: Contiene metadatos esenciales, como el tipo de archivo, direcciones de carga en memoria y el punto de entrada del programa.
2. Secciones: La información del programa se organiza en secciones como .text (código ejecutable), .data (datos globales), y .rsrc (recursos como iconos o cadenas).
3. Tablas de importación y exportación: Permiten definir qué funciones externas se utilizan (importaciones) y cuáles se exponen (exportaciones).
4. Ubicación en memoria: El sistema operativo utiliza la estructura PE para mapear el archivo correctamente en el espacio de direcciones del proceso.
​
Estructura del encabezado PE
El encabezado PE es fundamental para que Windows determine cómo debe cargarse y ejecutarse un archivo. Proporciona información clave como el punto de entrada, las secciones presentes, y las dependencias dinámicas.
​
1. DOS Header (Encabezado DOS)
• Se mantiene por razones de compatibilidad con MS-DOS.
• Comienza con la firma "MZ", que identifica al archivo como ejecutable.
• Incluye una dirección de desplazamiento (offset) hacia el verdadero inicio del encabezado PE.
​
2. File Header
Contiene metainformación sobre el archivo. Los campos más relevantes son:
• Machine: Indica la arquitectura objetivo (por ejemplo, 0x8664 para sistemas x64).
• Number of Sections: Número total de secciones en el archivo.
• Time Date Stamp: Fecha y hora de compilación.
• Size of Optional Header: Tamaño del encabezado opcional.
​
3. Optional Header
Pese a su nombre, este encabezado es obligatorio en los archivos PE ejecutables. Incluye información necesaria para la carga del programa en memoria:
• Magic Number: Indica si el archivo es de 32 bits (0x10B) o 64 bits (0x20B).
• Address of Entry Point: Dirección donde comienza la ejecución.
• Image Base: Dirección base preferida para cargar el archivo en memoria.
• Section Alignment: Alineación de las secciones en memoria.
• Size of Image: Tamaño total en memoria una vez cargado.
• Subsystem: Define el entorno de ejecución (interfaz gráfica o consola).
​
4. Data Directories
Contiene punteros a estructuras adicionales necesarias para el funcionamiento del ejecutable:
• Import Table: Bibliotecas y funciones externas requeridas.
• Export Table: Funciones disponibles para otros módulos (en archivos .dll).
• Resource Table: Recursos embebidos como iconos, imágenes o menús.
• Exception Table: Información para el manejo de excepciones.
• Relocation Table: Información para ajustar direcciones en tiempo de carga.
5. Section Table
Describe cada sección del archivo, incluyendo su nombre, tamaño y ubicación en memoria y en disco.
Algunas secciones comunes son:
• .text: Código ejecutable del programa.
• .data: Datos globales o estáticos modificables.
• .rdata: Datos de solo lectura (por ejemplo, tablas de importación).
• .rsrc: Recursos embebidos como iconos o cadenas de texto.
​
Aplicaciones del análisis del encabezado PE
• Análisis de malware: Herramientas de seguridad utilizan la información del encabezado PE para identificar comportamiento sospechoso y características de archivos maliciosos.
• Depuración y análisis forense: Facilita la identificación de información útil como fechas de compilación, dependencias o estructuras de memoria.
• Carga manual de archivos PE: Los cargadores personalizados utilizan la información del encabezado PE para mapear correctamente el archivo en memoria y transferir el control al punto de entrada.