🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEjecutables de Linux, cabeceras y segmentos
4 tareas · 40 min · Principiante
En Linux el formato de los ejecutables se llama ELF, y se lee con la misma disciplina que el de Windows: una cabecera que declara, una vista del cargador (segmentos) y una vista del enlazador (secciones). En el servidor de reportes de Molino Ceibal apareció un archivo ejecutable llamado «cron-reporte» en una carpeta de datos. El equipo dejó las salidas de un analizador de ELF: cabecera, segmentos, bibliotecas que declara necesitar y el inventario de lo que el servidor tiene aprobado. Aprendes a leerlas, a notar lo que no encaja y a no sacar de ellas más de lo que dicen.
Objetivo de la sala
En Linux el formato de los ejecutables se llama ELF, y se lee con la misma disciplina que el de Windows: una cabecera que declara, una vista del cargador (segmentos) y una vista del enlazador (secciones). En el servidor de reportes de Molino Ceibal apareció un archivo ejecutable llamado «cron-reporte» en una carpeta de datos. El equipo dejó las salidas de un analizador de ELF: cabecera, segmentos, bibliotecas que declara necesitar y el inventario de lo que el servidor tiene aprobado. Aprendes a leerlas, a notar lo que no encaja y a no sacar de ellas más de lo que dicen.Un ELF tiene dos tablas que describen el mismo contenido para dos lectores distintos. Los segmentos (program headers) son la vista del cargador: qué trozos del archivo se copian a memoria, en qué dirección y con qué permisos. Las secciones (section headers) son la vista del enlazador y de las herramientas: .text, .data, la tabla de símbolos, etc.
La diferencia importa porque para ejecutarse solo hacen falta los segmentos. Alguien puede quitar la tabla de secciones y el programa funciona igual; lo único que pierde es información para quien lo lee. Un ELF sin secciones y sin símbolos (el término habitual es «stripped») no es sospechoso por sí solo —muchos programas se distribuyen así para pesar menos—, pero deja al analista con menos pistas.
Responde para continuar
¿Cuál de las dos tablas de un ELF necesita el sistema para cargar y ejecutar el programa?
Ver pista de ayuda
Quien quita las secciones para ocultar información no impide que el programa se ejecute.
Un ELF enlazado dinámicamente lista en su sección dinámica las bibliotecas compartidas que necesita (NEEDED). Es de las partes más legibles de un binario: dice con qué depende de qué. Un binario de reportes que necesita la biblioteca estándar y la matemática es normal; una biblioteca que no es del sistema ni de un paquete aprobado merece una pregunta: ¿quién la instaló y dónde está?
El método es el de siempre: la lista del binario contra la lista del inventario del servidor. Lo que está en la primera y no en la segunda es el candidato a mirar. No es culpable por existir; es el dato sin explicar.
Responde para continuar
Escribe el nombre de la biblioteca que `cron-reporte` declara necesitar y que no está en el inventario del servidor.
Ver pista de ayuda
Cruza `dinamico.txt` con `inventario-del-servidor.txt`; solo una entrada no aparece en el inventario.
Cada segmento de tipo LOAD lleva banderas de permisos: R (lectura), W (escritura), E (ejecución). Lo habitual son dos: uno de lectura y ejecución para el código, y otro de lectura y escritura para los datos. Un segmento que se puede escribir y ejecutar a la vez es poco habitual en los programas corrientes (aunque algunos herramientas antiguas o especiales lo producen), y por eso se anota como rareza a explicar.
También se lee la dirección virtual (VirtAddr) de cada segmento: dónde quedará en memoria. Es el dato con el que otra persona puede localizar exactamente el mismo segmento en otra salida del mismo archivo.
Responde para continuar
Escribe la dirección virtual (VirtAddr) del segmento LOAD con permisos de lectura, escritura y ejecución.
Ver pista de ayuda
Busca en `segmentos.txt` la fila LOAD cuya columna Flg sea la única con tres letras.
La cabecera del ELF de cron-reporte trae una nota: sin tabla de secciones y sin símbolos. Eso limita la lectura: no hay nombres de funciones que mirar, y las secciones no están para comparar tamaños. Quedan los segmentos, las bibliotecas, el punto de entrada y los permisos.
Con lo que queda se pueden hacer afirmaciones modestas y comprobables: «el archivo es un ELF de 64 bits para x86-64, enlazado dinámicamente, con una biblioteca ajena al inventario y un segmento escribible y ejecutable». Lo que no se puede afirmar es qué hace, ni que sea malicioso, ni que lo sea más o menos por estar sin símbolos.
Responde para continuar
Que `cron-reporte` esté sin símbolos y sin secciones, ¿qué permite concluir?
Ver pista de ayuda
Lo que falta limita al analista; no acusa ni disculpa al archivo.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.