🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónHistorial de shell y su fiabilidad
4 tareas · 35 min · Principiante
El historial de comandos de una cuenta es una de las primeras cosas que se lee en un servidor Linux comprometido, y una de las que más fácil se malinterpreta. Cuenta lo que alguien tecleó, pero solo en ciertas condiciones: no se escribe al momento, puede no tener hora, se puede desactivar y su ausencia no significa que no pasara nada. En `cds-tienda01` hay un historial con hora, otro que falta y un enlace sospechoso. Aquí lees los tres, conviertes marcas de tiempo a hora legible y aprendes qué puedes afirmar de cada uno y qué no.
Objetivo de la sala
El historial de comandos de una cuenta es una de las primeras cosas que se lee en un servidor Linux comprometido, y una de las que más fácil se malinterpreta. Cuenta lo que alguien tecleó, pero solo en ciertas condiciones: no se escribe al momento, puede no tener hora, se puede desactivar y su ausencia no significa que no pasara nada. En `cds-tienda01` hay un historial con hora, otro que falta y un enlace sospechoso. Aquí lees los tres, conviertes marcas de tiempo a hora legible y aprendes qué puedes afirmar de cada uno y qué no.La shell bash guarda los comandos de la sesión en una lista en memoria y la vuelca al archivo ~/.bash_history al cerrar la sesión, no mientras se teclea. Eso tiene consecuencias para quien investiga: los comandos de una sesión todavía abierta no están en el archivo; una sesión que se corta de golpe puede no llegar a escribirlos; y si dos sesiones de la misma cuenta se cierran, la última puede sobrescribir lo que dejó la primera.
Además, el archivo solo contiene lo que tecleó una shell interactiva de bash. Lo que ejecuta un programa por su cuenta, una tarea programada o un acceso con otra shell no queda ahí. Un historial es un testimonio útil y parcial, nunca el registro completo de lo ocurrido.
Responde para continuar
Quieres saber si el historial de una cuenta recoge todo lo que se hizo con ella. ¿Qué es cierto?
Ver pista de ayuda
Piensa en el momento en que bash escribe el archivo y en qué clase de comandos pasan por él.
Cuando el sistema define la variable HISTTIMEFORMAT, bash escribe antes de cada comando una línea que empieza por # y un número: los segundos transcurridos desde el 1 de enero de 1970 en UTC. Es el mismo reloj que usan otros muchos artefactos. Convertir ese número a hora legible es el paso que permite meter los comandos en una línea de tiempo junto a los registros del sistema.
No hace falta calcularlo a mano: el laboratorio trae la tabla de conversión ya hecha. Lo importante es cruzar la hora con las otras fuentes y no confiar en el orden de las líneas del archivo sin comprobar su marca.
Abre el historial de svc-tienda y la tabla epoca-a-utc.txt.
Responde para continuar
Busca en el historial de `svc-tienda` el comando que descarga un archivo desde una dirección externa. Escribe la hora UTC a la que se tecleó, en formato HH:MM:SS.
Ver pista de ayuda
Localiza el comando, toma el número de la línea `#` que lo precede y búscalo en la tabla de conversión.
El historial se puede desactivar de varias formas. Una de ellas es hacer que ~/.bash_history sea un enlace simbólico a /dev/null: todo lo que bash intente escribir se descarta. Se ve en un listado largo con ls -l: la línea empieza por l y muestra el destino con una flecha. Otra es vaciar la variable de historial al comenzar la sesión, y esa no deja ningún rastro en el sistema de archivos.
Un enlace a /dev/null no es, por sí solo, una prueba de ataque. Hay administradores que lo ponen por política. Lo que lo vuelve sospechoso o inocuo es cuándo se creó: la fecha del enlace, comparada con la ventana del incidente.
Abre ls-historiales.txt, el listado de los archivos de historial de cada cuenta.
Responde para continuar
Escribe el nombre de la cuenta cuyo `.bash_history` apunta a `/dev/null`.
Ver pista de ayuda
En un listado largo, una flecha después del nombre indica un enlace simbólico y su destino.
last.txt muestra dos sesiones de svc-tienda: una de las 02:07 y otra de las 02:41. El historial de esa cuenta solo contiene comandos de la primera, y la fecha de modificación del archivo coincide con el cierre de esa primera sesión. De la segunda no hay ni un comando. Hay varias explicaciones posibles: que no se tecleó nada, que el historial se desactivó al empezar esa sesión, que la shell se cerró sin escribir o que se usó otra shell.
La respuesta honesta es que la evidencia disponible no lo decide. Lo que sí puedes afirmar es que hubo una sesión y que su historial no está. Qué hizo en ella se busca en otras fuentes: procesos, archivos creados, unidades nuevas, cambios de paquetes.
Responde para continuar
De la segunda sesión de `svc-tienda` no hay comandos en su historial. ¿Qué concluyes?
Ver pista de ayuda
Enumera las causas posibles de que falten comandos y mira si la evidencia las distingue.
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.