Glosario
utmp
El archivo /run/utmp, que enumera las sesiones abiertas en este momento con el mismo formato struct utmp que wtmp; se vacía en cada arranque.
/run/utmp (también accesible como /var/run/utmp) enumera las sesiones abiertas en este momento. Lo leen who, w y users, y lo escriben login, sshd y otros programas a través de PAM o de las funciones utmp de la biblioteca C. Contiene un registro por cada sesión de terminal activa, además de los registros del arranque actual y del nivel de ejecución.
utmp es también el nombre de la estructura de registro, struct utmp, compartida con wtmp y btmp: tipo (ut_type), PID, terminal (ut_line), usuario, host remoto, hora y dirección remota. El registro ocupa 384 bytes en x86_64 y 400 bytes en aarch64. Un inicio de sesión es un registro USER_PROCESS (tipo 7); al terminar la sesión, la ranura se reutiliza como DEAD_PROCESS (tipo 8).
Por qué importa en una investigación
Como /run es un tmpfs, utmp solo existe en un sistema en ejecución: se vacía en cada arranque y no está en la imagen de disco de una máquina apagada. Recopilado en vivo, responde a una pregunta que las demás fuentes solo contestan de forma indirecta: quién tiene sesión abierta ahora mismo, en qué terminal y desde qué dirección. Es útil cuando un intruso puede seguir conectado y para detectar sesiones que nunca se registraron en wtmp. Recuerda que el SSH no interactivo (un comando remoto, scp, sftp) no asigna terminal y normalmente no tiene registro en utmp, y que root puede editar este archivo como cualquier otro.
Ejemplo
En un host en ejecución, como root:
who -a # hora de arranque, nivel de ejecución, sesiones actuales
utmpdump /run/utmp # todos los registros, incluidas las ranuras DEAD_PROCESS
cp -p /run/utmp /media/evidence/utmp
Copia el propio archivo y no solo la salida de los comandos, y anota la arquitectura del host: un utmp de aarch64 leído con las herramientas de una estación x86_64 se interpretará mal.
Términos relacionados
- wtmp y btmp: el historial de inicios de sesión, con el mismo formato.
- lastlog: el último inicio de sesión de cada UID.
- UAC: recopila
/run/utmpen su perfil de triaje.
Linux Log Parser lee utmp en los dos tamaños de registro. Más detalles en el análisis forense de wtmp, btmp y lastlog.