Linux Logging for SOC
Overview — Linux Logging for SOC is an Easy TryHackMe room focused on Linux log investigation from a SOC analyst's perspective. It walks through the plain-text logs under/var/log(syslog, authentication, packages, command history) and runtime monitoring withauditd, teaching you to spot suspicious logins, user creation, malicious downloads and network scans.
| Platform | TryHackMe |
| Category | Blue Team & SOC |
| Difficulty | Easy |
| Room | Linux Logging for SOC |
Task 1 — Introduction
Linux is everywhere: traditional servers, cloud-native containers and workstations. For a SOC analyst, mastering Linux log investigation is key to detecting compromises and suspicious activity. The room targets headless servers, where logs live as plain text under /var/log.
After accessing the VM, we assume the root role so we can read every log:
sudo suResumen — Linux Logging for SOC es un room Easy de TryHackMe centrado en la investigación de logs de Linux desde la perspectiva de un analista SOC. Recorre los registros de texto plano de/var/log(syslog, autenticación, paquetes, historial de comandos) y el monitoreo en tiempo de ejecución conauditd, enseñando a detectar inicios de sesión sospechosos, creación de usuarios, descargas maliciosas y escaneos de red.
| Plataforma | TryHackMe |
| Categoría | Blue Team & SOC |
| Dificultad | Easy |
| Room | Linux Logging for SOC |
Task 1 — Introducción
Linux está en todas partes: servidores tradicionales, contenedores cloud-native y estaciones de trabajo. Para un analista SOC, dominar la investigación de logs de Linux es clave para detectar compromisos y actividad sospechosa. El room se centra en servidores sin interfaz gráfica, donde los logs viven en texto plano dentro de /var/log.
Tras acceder a la VM, asumimos el rol de root para poder leer todos los registros:
sudo suTask 2 — Working With Text Logs
Linux records system events (operations, cron jobs, time synchronization) in /var/log/syslog. We start by reviewing the first lines:
cat /var/log/syslog | headWe can filter for specific events, for example cron jobs:
cat /var/log/syslog | grep CRONAnd search recursively by keyword across all of /var/log to locate authentication-related records:
grep -R -E "auth|login|session" /var/logTip: many examples usecat file | grep pattern, butgrep pattern filedoes the same without the extra process. Thecat |pattern is convenient when chaining filters, though not required.
Questions & answers:
Q: Which time server domain did the VM contact to sync its time?
A: ntp.ubuntu.com
Q: What is the kernel message from Yama in /var/log/syslog?
A: Becoming mindful.
Task 3 — Authentication Logs
/var/log/auth.log captures user logins, sudo commands, SSH events and user management. It is one of the most valuable sources for the SOC.
General knowledge (beyond this room):/var/log/auth.logis the Debian/Ubuntu name for this log. RHEL, CentOS, Fedora and other systems built on rsyslog's traditional config log the same events to/var/log/secureinstead — when triaging an unfamiliar Linux host, check both paths before assuming authentication logging is missing.
We list all opened and closed user sessions:
cat /var/log/auth.log | grep -E 'session opened|session closed'We filter SSH login attempts, both accepted and failed:
cat /var/log/auth.log | grep "sshd" | grep -E 'Accepted|Failed'And we locate user-management events (additions, deletions, modifications):
cat /var/log/auth.log | grep -E '(passwd|useradd|usermod|userdel)\['Why it matters: a burst ofFailed passwordentries from a single IP signals a brute-force or password-spraying attack; auseraddline followed by addition to thesudogroup may be an attacker establishing persistence.
Questions & answers:
Q: Which IP address failed to log in on multiple users via SSH?
A: 10.14.94.82
Q: Which user was created and added to the "sudo" group?
A: xerxes
Task 4 — Common Linux Logs
Beyond syslog and auth.log, other useful sources exist:
/var/log/kern.log→ kernel messages./var/log/dpkg.log→ Debian/Ubuntu package installations.- Per-user
.bash_historyfiles → command history.
For example, to check which version of unzip was installed:
grep unzip /var/log/dpkg.logAnd to search for a flag across the users' command histories:
grep -r "flag" /home/*Or read the history files directly:
cat /home/ubuntu/.bash_history
cat /root/.bash_historyQuestions & answers:
Q: Which version of unzip was installed on the system?
A: 6.0-28ubuntu4.1
Q: What is the flag you see in one of the users' bash history?
A: THM{****_**_remember}
Task 5 — Runtime Monitoring
File-based logs tell part of the story, but to understand what the system actually runs you have to look at system calls (syscalls). Every program execution goes through the kernel via a syscall like execve; opening a file or creating a process also requires syscalls. That makes the kernel an ideal vantage point for monitoring.
Knowledge questions:
Q: Which Linux system call is commonly used to execute a program?
A: execve
Q: Can a typical program open a file or create a process bypassing system calls?
A: Nay (no)
Task 6 — Using Auditd
auditd is the Linux audit subsystem: it records runtime events such as process execution and file access, according to rules that tag each matching event with a key. You query it with ausearch, and the -i flag interprets numeric values (UID, syscalls, timestamps) into human-readable form.
General knowledge (beyond this room):ausearchcan only return events for actions an audit rule was already watching for. Rules are added withauditctl -w <path> -p rwxa -k <key>(file/directory watches) or-a always,exit -F arch=b64 -S execve -k <key>(syscall rules), and persisted in/etc/audit/rules.d/*.rules. Theproc_wgetandfile_thmsecretkeys used below were pre-configured on this VM; on a system you administer,auditdonly sees what you told it to watch.
We search for the wget download event by its key:
ausearch -i -k proc_wgetWe locate when secret.thm was first opened:
ausearch -i -k file_thmsecretThe scanned network range has no dedicated key, so we filter for scanning tools:
ausearch -i | grep -E "nmap|masscan|scan"Or extract IP addresses/ranges directly with a regex:
ausearch -i | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2})?"SOC takeaway:auditdrecords execution even if the attacker wipes their.bash_history. That makes it a more reliable source than shell history for reconstructing an incident timeline.
Questions & answers:
Q: When was the secret.thm file opened for the first time?
A: 08/13/25 18:36:54
Q: What is the original file name downloaded from GitHub via wget?
A: naabu_2.3.5_linux_amd64.zip
Q: Which network range was scanned using the downloaded tool?
A: 192.168.50.0/24
Task 7 — Conclusion
The room reconstructs a small intrusion timeline from the logs: SSH brute-force attempts, creation of a privileged user, download of a scanning tool (naabu) and an internal network scan. Points to remember:
- Linux logging may seem chaotic but provides critical insight into the system.
- Logs live in
/var/log/and are mostly plain text. - Top sources for the SOC:
auth.log, application-specific logs and runtime logs viaauditd. .bash_historyis unreliable for investigations (it can be cleared or disabled); preferauditdor alternative tooling.
Key takeaways
/var/log/syslogconcentrates general system events (cron, time sync, kernel messages)./var/log/auth.logis the primary source for logins,sudo, SSH and user management: ideal for hunting brute-force and persistence.dpkg.logandkern.logadd context on installed packages and kernel events.auditd+ausearch -ilet you monitor syscalls (execve), file access and executions, surviving history wiping.- Bash history is a useful lead but not a trustworthy forensic source.
- General knowledge, beyond this room: on systemd-based distributions the same events are also collected by the journal and queryable with
journalctl(e.g.journalctl -u ssh,journalctl -kfor kernel messages,journalctl --since "1 hour ago") — a useful fallback when a distro doesn't keep a plain-text copy of a given source under/var/log.
Task 2 — Trabajar con logs de texto
Linux registra eventos del sistema (operaciones, cron jobs, sincronización horaria) en /var/log/syslog. Empezamos revisando las primeras líneas:
cat /var/log/syslog | headPodemos filtrar eventos concretos, por ejemplo los cron jobs:
cat /var/log/syslog | grep CRONY buscar de forma recursiva por palabras clave en todo /var/log para localizar registros relacionados con autenticación:
grep -R -E "auth|login|session" /var/logConsejo: muchos ejemplos usancat archivo | grep patrón, perogrep patrón archivohace lo mismo sin el proceso extra. El patróncat |es cómodo al encadenar filtros, aunque no es obligatorio.
Preguntas y respuestas:
P: ¿Con qué dominio de servidor de tiempo contactó la VM para sincronizar su hora?
R: ntp.ubuntu.com
P: ¿Cuál es el mensaje de kernel de Yama en /var/log/syslog?
R: Becoming mindful.
Task 3 — Logs de autenticación
El fichero /var/log/auth.log captura inicios de sesión de usuarios, comandos sudo, eventos SSH y gestión de usuarios. Es una de las fuentes más valiosas para el SOC.
Conocimiento general (más allá de este room):/var/log/auth.loges el nombre propio de Debian/Ubuntu. RHEL, CentOS, Fedora y otros sistemas con la configuración tradicional de rsyslog registran los mismos eventos en/var/log/secure. Al triar un host Linux desconocido, conviene comprobar ambas rutas antes de asumir que no hay logging de autenticación.
Listamos todas las sesiones de usuario abiertas y cerradas:
cat /var/log/auth.log | grep -E 'session opened|session closed'Filtramos los intentos de login SSH, tanto aceptados como fallidos:
cat /var/log/auth.log | grep "sshd" | grep -E 'Accepted|Failed'Y localizamos eventos de gestión de usuarios (altas, bajas, modificaciones):
cat /var/log/auth.log | grep -E '(passwd|useradd|usermod|userdel)\['Por qué importa: una ráfaga de entradasFailed passworddesde una misma IP delata un ataque de fuerza bruta o password spraying; una líneauseraddseguida de la adición al gruposudopuede ser un atacante estableciendo persistencia.
Preguntas y respuestas:
P: ¿Qué dirección IP falló al iniciar sesión en múltiples usuarios vía SSH?
R: 10.14.94.82
P: ¿Qué usuario fue creado y añadido al grupo «sudo»?
R: xerxes
Task 4 — Otros logs comunes de Linux
Además de syslog y auth.log, hay otras fuentes útiles:
/var/log/kern.log→ mensajes del kernel./var/log/dpkg.log→ instalaciones de paquetes Debian/Ubuntu.- Ficheros
.bash_historypor usuario → historial de comandos.
Por ejemplo, para comprobar qué versión de unzip se instaló:
grep unzip /var/log/dpkg.logY para buscar una flag entre los historiales de comandos de los usuarios:
grep -r "flag" /home/*O leer directamente los ficheros de historial:
cat /home/ubuntu/.bash_history
cat /root/.bash_historyPreguntas y respuestas:
P: ¿Qué versión de unzip se instaló en el sistema?
R: 6.0-28ubuntu4.1
P: ¿Cuál es la flag que aparece en el historial de bash de uno de los usuarios?
R: THM{****_**_remember}
Task 5 — Monitoreo en tiempo de ejecución
Los logs de fichero cuentan parte de la historia, pero para entender qué ejecuta realmente el sistema hay que mirar las llamadas al sistema (syscalls). Toda ejecución de un programa pasa por el kernel a través de una syscall como execve; abrir un fichero o crear un proceso también requiere syscalls. Esto convierte al kernel en un punto de observación ideal para el monitoreo.
Preguntas de conocimiento:
P: ¿Qué llamada al sistema de Linux se usa habitualmente para ejecutar un programa?
R: execve
P: ¿Puede un programa típico abrir un fichero o crear un proceso sin pasar por las llamadas al sistema?
R: Nay (no)
Task 6 — Uso de Auditd
auditd es el subsistema de auditoría de Linux: registra eventos en tiempo de ejecución como ejecución de procesos y acceso a ficheros, según reglas que etiquetan cada coincidencia con una key. Se consulta con ausearch, y la flag -i interpreta los valores numéricos (UID, syscalls, timestamps) a formato legible.
Conocimiento general (más allá de este room):ausearchsolo puede devolver eventos de acciones que una regla de auditoría ya estuviera vigilando. Las reglas se añaden conauditctl -w <ruta> -p rwxa -k <key>(vigilancia de fichero/directorio) o-a always,exit -F arch=b64 -S execve -k <key>(reglas de syscall), y se persisten en/etc/audit/rules.d/*.rules. Las keysproc_wgetyfile_thmsecretusadas aquí ya estaban preconfiguradas en esta VM; en un sistema propio,auditdsolo ve lo que le hayas dicho que vigile.
Buscamos el evento de descarga con wget por su key:
ausearch -i -k proc_wgetLocalizamos cuándo se abrió por primera vez secret.thm:
ausearch -i -k file_thmsecretPara el rango de red escaneado no hay una key dedicada, así que filtramos por herramientas de escaneo:
ausearch -i | grep -E "nmap|masscan|scan"O extraemos directamente las direcciones/rangos IP con una expresión regular:
ausearch -i | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2})?"Clave del SOC:auditdregistra la ejecución aunque el atacante borre su.bash_history. Por eso es una fuente más fiable que el historial de shell para reconstruir la línea temporal de un incidente.
Preguntas y respuestas:
P: ¿Cuándo se abrió por primera vez el fichero secret.thm?
R: 08/13/25 18:36:54
P: ¿Cuál es el nombre original del fichero descargado desde GitHub con wget?
R: naabu_2.3.5_linux_amd64.zip
P: ¿Qué rango de red se escaneó con la herramienta descargada?
R: 192.168.50.0/24
Task 7 — Conclusión
El room reconstruye una pequeña línea temporal de intrusión a partir de los logs: intentos de fuerza bruta SSH, creación de un usuario con privilegios, descarga de una herramienta de escaneo (naabu) y un escaneo de red interno. Los puntos a recordar:
- El logging de Linux parece caótico pero aporta una visión crítica del sistema.
- Los logs viven en
/var/log/y son mayormente texto plano. - Fuentes top para el SOC:
auth.log, logs específicos de aplicación y logs de runtime víaauditd. - El
.bash_historyno es fiable para investigaciones (se puede borrar o desactivar); prefiereauditdu otras herramientas.
Puntos clave
/var/log/syslogconcentra eventos generales del sistema (cron, sincronización horaria, mensajes del kernel)./var/log/auth.loges la fuente principal para logins,sudo, SSH y gestión de usuarios: ideal para cazar fuerza bruta y persistencia.dpkg.logykern.logaportan contexto de paquetes instalados y eventos del kernel.auditd+ausearch -ipermiten monitorear syscalls (execve), accesos a ficheros y ejecuciones, sobreviviendo al borrado del historial.- El historial de bash es un indicio útil pero no una fuente forense de confianza.
- Conocimiento general, más allá de este room: en distribuciones basadas en systemd, los mismos eventos también quedan recogidos en el journal y son consultables con
journalctl(p. ej.journalctl -u ssh,journalctl -kpara mensajes del kernel,journalctl --since "1 hour ago") — una alternativa útil cuando una distro no guarda copia en texto plano de alguna fuente bajo/var/log.