Parte: 0 — Fundamentos y prerrequisitos · Fuente: Tanenbaum & Bos, Modern Operating Systems ⏱️ Duración estimada: 110 min · Nivel: Fundamentos
Comprender cómo un sistema operativo gestiona procesos, memoria y la frontera entre modo usuario y modo kernel a través de las llamadas al sistema. Este es el sustrato sobre el que ocurren la explotación de memoria, la inyección de código y la evasión, y es imprescindible para las partes de explotación y forense.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Procesos e hilos | Unidad de ejecución |
| 2 | Estados y planificación | Cómo comparten la CPU |
| 3 | Layout de memoria | Dónde vive cada cosa |
| 4 | Memoria virtual | Aislamiento y paginación |
| 5 | Modo usuario/kernel | Frontera de privilegios |
| 6 | Syscalls | Puerta de entrada al kernel |
| 7 | Herramientas de traza | strace, ltrace, procfs |
| 8 | Relevancia ofensiva | Inyección, hooking, monitoreo |
En Linux/Kali: ps, top/htop, /proc, strace, ltrace, pmap, cat /proc/<pid>/maps. Necesitas permisos para trazar procesos propios. Un programa C mínimo o cualquier binario servirá de sujeto de estudio. Trabaja en tu VM de laboratorio.
sleep 1000 & y examina:bash
ps -o pid,ppid,state,cmd -p $!
cat /proc/$!/status | head
bash
pmap $! # o: cat /proc/$!/maps
Identifica stack, heap y las bibliotecas mapeadas. 3. Trazar syscalls. Mira qué llamadas hace un comando:
bash
strace -f -e trace=open,openat,read,write ls / 2>&1 | head -30
bash
ltrace -e 'malloc+free' ./programa 2>&1 | head
strace -c ls mide cuánto tiempo pasa el proceso en syscalls vs. en espacio de usuario.execve inesperado en strace puede delatar una ejecución maliciosa; el hooking de syscalls es base de rootkits y de EDR.⚠️ Nota ética: traza únicamente procesos propios o en tu laboratorio. Interceptar procesos de otros usuarios sin autorización puede ser ilegal.
strace, identifica todas las syscalls que usa un programa para leer un archivo.strace y ltrace: ¿qué observa cada uno y para qué sirve en análisis de malware?Analiza un binario desconocido (inofensivo, de tu laboratorio) usando solo herramientas de observación de SO: describe su comportamiento a partir de sus syscalls (archivos que abre, red que usa, procesos que lanza) sin ejecutar nada peligroso fuera del entorno aislado. Entrega un informe con el "perfil de comportamiento" del programa.
Criterio de aceptación: el informe lista las syscalls relevantes observadas con strace (E/S de archivos, red, execve) y deduce a partir de ellas qué hace el programa, distinguiendo actividad benigna de indicios sospechosos. Reproducible ejecutando el mismo strace sobre el binario.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
strace: Operation not permitted |
Restricciones de ptrace o proceso ajeno. Traza procesos propios o ajusta ptrace_scope. |
ltrace no muestra nada |
Binario estático o sin símbolos. ltrace necesita enlace dinámico. |
/proc/<pid>/maps vacío o denegado |
Permisos o el proceso terminó. Usa un PID vivo y propio. |
| Confundir stack con heap | Stack = automático/LIFO; heap = dinámico (malloc). Revisa el layout. |
| strace ralentiza mucho el programa | Es normal: intercepta cada syscall. Filtra con -e trace= para reducir ruido. |
❓ ¿Por qué un pentester necesita entender syscalls? Porque la explotación de memoria, la inyección de shellcode y la evasión operan justo en esta capa. Y en defensa, EDRs y sandboxes se basan en observar syscalls.
❓ ¿Qué relación hay con los buffer overflows? Un overflow corrompe estructuras en el stack o heap para desviar el flujo de ejecución. Sin entender el layout de memoria, esos ataques (y sus mitigaciones: ASLR, DEP, canarios) no tienen sentido.
❓ ¿strace sirve para analizar malware? Sí, es una herramienta clave de análisis dinámico: revela qué archivos toca, con qué se conecta y qué procesos lanza, siempre en un entorno aislado.
❓ ¿Windows tiene equivalentes? Sí: Process Monitor, ETW y API monitors cumplen un papel análogo observando llamadas y actividad del sistema.
man 1 strace, man 5 procClase 022 — Docker y contenedores para laboratorios de seguridad
Clase 024 — Arquitectura de computadores: CPU, registros y memoria