¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Archivos y procesos sospechosos

Después de esta lección: Puedo encontrar un archivo o un proceso sospechoso.

Lección de 65 min5 comandosLaboratorio de respuesta a incidentes y forense: investiga un servidor comprometido

Cómo reconocer un archivo o un proceso sospechoso

Un proceso sospechoso es un programa en ejecución que nadie esperaba. Un archivo sospechoso es uno cuyo contenido no es lo que dice su nombre.

Aprenderás a mirar una lista de procesos y los primeros bytes de un archivo. Con eso decides qué merece un análisis más a fondo.

Al final de esta lección

Nota

Puedo encontrar un archivo o un proceso sospechoso.

Palabras clave

PalabraQué significaEjemplo
Procesoun programa mientras se ejecuta
Extensiónlas letras tras el último punto del nombre.pdf
Firma de archivolos primeros bytes que identifican un formato
Hexadecimaluna forma de escribir bytes con dos cifras7f
Carvingrecuperar archivos buscando sus firmas en datos en bruto

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un proceso sospechoso no encaja con el equipo

Cada programa en marcha es un proceso. La orden ps aux lista los procesos con su usuario, su consumo y el programa que ejecutan.

No hay procesos malos por su nombre. Hay procesos que no encajan con el equipo: un usuario que no debería ejecutar nada, una ruta rara o un consumo alto sin motivo.

Ejemplo: una lista de procesos inventada

Código: bash
# Esto es un ejemplo escrito a mano, no la salida de una máquina real.
USER      PID  %CPU  COMMAND
root        1   0.0  /sbin/init
www-data  640   0.1  nginx: worker process
lucia     912   0.2  /usr/bin/python3 app.py
lucia    1377  94.8  /tmp/.cache/update

Qué hace sospechoso a un proceso

SeñalEn el ejemplo anterior
Un programa en una carpeta temporalEl proceso 1377 está en /tmp
Un nombre que empieza por punto, para ocultarse.cache/update
Un consumo de CPU muy alto sin motivo94,8 por ciento
Un usuario que no lo suele ejecutarlucia ejecuta un programa de la carpeta temporal

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El nombre del primer proceso de la máquina

Comando
ps -p 1 -o comm=

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

La firma está en los primeros bytes

La extensión es solo parte del nombre y cualquiera puede cambiarla. Lo que de verdad identifica un formato son sus primeros bytes, la firma.

Un PDF empieza siempre por las letras %PDF. Un ejecutable de Linux empieza por el byte 7f y las letras ELF. Algunos formatos, como docx, son zip por dentro, y una herramienta real lo sabe.

Ejemplo: firmas de formatos habituales

FormatoPrimeros bytes en hexadecimal
Imagen PNG89 50 4e 47
Documento PDF25 50 44 46
Archivo zip50 4b 03 04
Ejecutable de Linux7f 45 4c 46
Imagen JPEGff d8 ff

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Los primeros bytes de una imagen PNG

Comando
printf '\211PNG\r\n\032\n' | od -An -tx1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Los primeros bytes de un PDF

Comando
printf '%%PDF-1.7' | od -An -tx1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Los primeros bytes de un zip

Comando
printf 'PK\003\004' | od -An -tx1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Los primeros bytes de un ejecutable de Linux

Comando
printf '\177ELF' | od -An -tx1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que la extensión dice qué es un archivo. La extensión es solo parte del nombre y se cambia en un segundo. Si un archivo llamado notas.txt empieza por 7f 45 4c 46, es un ejecutable y no un texto.

El carving recupera archivos sin su nombre

Cuando se borra un archivo, a menudo sus bytes siguen en el disco. El carving busca en los datos en bruto una firma de inicio y, si el formato la tiene, otra de final.

Todo lo que hay entre las dos es un archivo posible. No recupera el nombre, porque el nombre estaba en otro sitio.

Busca una firma en datos en bruto

Código: python
# Los datos en bruto, escritos en hexadecimal.
datos = "00ff00" + "25504446" + "2d312e37" + "0000"
firma_pdf = "25504446"
posicion = datos.find(firma_pdf)
# Cada byte ocupa dos cifras, así que dividimos entre dos.
print("La firma empieza en el byte", posicion // 2)
# Cambia la firma por la de un zip, "504b0304", y mira qué imprime.

Ejemplo: dónde empieza cada archivo posible

Posición del byteFirma encontradaFormato posible
089 50 4e 47PNG
409625 50 44 46PDF
9216ff d8 ffJPEG

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sobre este laboratorio y su código: Laboratorio de respuesta a incidentes y forense: investiga un servidor comprometido

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.