Recuperación de archivos borrados mediante PhotoRec en Linux

Objetivo:

Comprender la mecánica de borrado de archivos en sistemas de archivos Linux (ext4) utilizando el comando rm y aplicar técnicas de análisis forense y recuperación de datos mediante la herramienta PhotoRec a partir de un disco virtual.

Escenario:

  • Herramientas: Terminal Linux, dd, mkfs.ext4, PhotoRec (paquete testdisk).
  • Conceptos analizados: Sistema de archivos ext4, bloques de datos, inodos, punteros de archivo y función TRIM/sobrescritura.
  • Proceso clave: Creación de una unidad virtual loopback, simulación de borrado accidental con rm, desmontaje preventivo de la partición y escaneo forense del espacio no asignado.

Escenario Real: Un archivo es borrado por error

Un usuario ha eliminado por error un archivo de texto importante con información indispensable para la continuidad del proyecto. Al haberse borrado directamente desde la terminal, no se encuentra en la papelera de reciclaje. Como técnico en administración de sistemas, tu objetivo es aislar inmediatamente el dispositivo para evitar la sobrescritura de datos y utilizar una herramienta forense de recuperación para rescatar el fichero antes de que se pierda de forma definitiva.

Cuando se ejecuta rm, Linux no destruye físicamente el contenido del archivo en el almacenamiento: únicamente elimina la entrada en el directorio (el nombre) y libera la referencia del inodo, marcando los bloques de datos como "disponibles". Por eso, si desmontas la partición a tiempo antes de que nuevos datos sobrescriban esos bloques, herramientas forenses como PhotoRec pueden rescatar la información buscando firmadas de archivos (file carving).

NOTA: Si intentas hacer la práctica directamente sobre tu disco duro principal, corres el riesgo de no poder recuperar el archivo o, peor aún, sobrescribir datos del sistema operativo. Para la práctica usaremos un disco virtual para simular el comportamiento de un disco secundario sin poner en riesgo el sistema. Un archivo .img formateado en ext4 y montado con mount -o loop es técnicamente un disco duro real para Linux. Las estructuras de bloques, los inodos y las llamadas del sistema al ejecutar rm son exactamente idénticas a las de un disco físico. Por otro lado, escanear un disco de 50 MB en PhotoRec toma 2 segundos, mientras que escanear un disco real de 1 TB llevaría horas. Además, la carpeta de recuperados recup_dir podría llegar a pesar cientos de Gigabytes con basura antigua del sistema.

Instrucciones:

Fase 1: Preparación del entorno y creación del disco virtual:

  • Abrir la terminal e instalar la herramienta de recuperación en caso de no disponer de ella: sudo apt update && sudo apt install testdisk -y
  • Crear un archivo de 50 MB con ceros que actuará como disco virtual: dd if=/dev/zero of=disco_prueba.img bs=1M count=50
  • Dar formato ext4 al disco virtual creado: mkfs.ext4 disco_prueba.img
  • Crear un punto de montaje y montar la partición virtual:
    • sudo mkdir /mnt/disco_prueba
    • sudo mount -o loop disco_prueba.img /mnt/disco_prueba
  • Dar permisos de escritura total para trabajar cómodamente:
    • sudo chmod 777 /mnt/disco_prueba

Fase 2: Generación del incidente (Borrado accidental):

  • Acceder al punto de montaje: cd /mnt/disco_prueba
  • Crear un archivo de texto con información crítica: echo "PROYECTO SECRETO: La clave de acceso es 123456" > secreto.txt
  • Verificar la creación del archivo mediante ls -l y cat secreto.txt.
  • Simular el error humano eliminando el archivo con el comando: rm secreto.txt
  • Comprobar mediante ls -l que el archivo ya no figura dentro del directorio.

Fase 3: Preservación de evidencia y proceso de recuperación:

  • Paso crítico: Salir del directorio y desmontar inmediatamente la partición para prevenir que el sistema operativo sobrescriba los bloques liberados:
    • cd ~
    • sudo umount /mnt/disco_prueba
  • Ejecutar la herramienta de recuperación apuntando a la imagen del disco: photorec disco_prueba.img
  • En la interfaz interactiva de PhotoRec, seleccionar la imagen, el tipo de sistema de archivos (ext2/ext3/ext4) y la opción Free para escanear solo el espacio no asignado.
  • Indicar un directorio de destino local para almacenar los elementos recuperados y confirmar la operación.
NOTA: Recuerda la regla de oro en informática forense: desconectar o congelar el soporte de almacenamiento inmediatamente para evitar que cualquier proceso escriba en los bloques marcados como "libres".









Fase 4: Probar la práctica con un archivo de imagen:

  • Repetir el mismo proceso de recuperación pero ahora con una imagen.
  • Copiar una imagen que tengas en el Escritorio dentro del disco virtual:
    cp ~/Escritorio/foto.png /mnt/disco_prueba/
  • Entrar al disco de prueba y verificar que está ahí: 
  • cd /mnt/disco_prueba
    ls -l
  • Borrar la foto dentro del disco virtual:
  • rm foto.png
  • Salir y desmontar inmediatamente (Congela el disco virtual):
  • cd ~
    sudo umount /mnt/disco_prueba
  • Recuperar con PhotoRec apuntando al disco virtual photorec disco_prueba.img
  • Photorec detectará que el archivo borrado era una imagen (los primeros bytes de un PNG siempre con 89 50 4E 47 en hexadecimal). Le asignará un nombre aleatorio y guardará la imagen en la carpeta recup_dir.1.
  • Abre el nuevo archivo .png y podrás ver la foto intacta.

Verificación:

  • Acceder a la carpeta de salida generada por la herramienta (ej. recup_dir.1).
  • Inspeccionar el contenido del archivo recuperado mediante cat recup_dir.1/*.txt y confirmar que el texto original se mantiene intacto.

Posibles errores y resolución de problemas:

Si PhotoRec no ha encontrado el archivo de texto, puede ser debido a que el archivo era demasiado pequeño (menos de 512 bytes). PhotoRec es una herramienta de data carving que busca estructuras e indicadores de inicio/fin de archivo. Cuando creamos un archivo con un simple echo "texto corto" > secreto.txt, su tamaño es de apenas unos pocos bytes. En el sistema de archivos ext4, los archivos tan extremadamente pequeños a veces se guardan directamente dentro del inodo (inline data) en lugar de asignar un bloque de disco completo. Al borrar el inodo, la información desaparece sin dejar rastro en el espacio no asignado del disco.

  • Solución: Crea un archivo con más contenido (al menos 1 KB o un par de párrafos de texto).

Alternativa directa: Buscar el texto con grep

Si PhotoRec se resiste porque es un archivo de texto plano sin cabecera binaria, hay un "truco forense" infalible: se puede buscar la cadena de texto directamente en los bloques del disco virtual usando grep:

sudo grep -a -b -C 2 "PROYECTO SECRETO" disco_prueba.img
  • -a: Trata la imagen de disco binaria como si fuera texto.

  • -b: Muestra el byte exacto donde encontró la coincidencia.

  • -C 2: Muestra las líneas de contexto alrededor del hallazgo.

Preguntas de reflexión:

  1. ¿Qué ocurre exactamente en el sistema de archivos cuando se ejecuta el comando rm sobre un archivo?
  2. ¿El archivo recuperado conserva su nombre original (secreto.txt)? ¿Por qué ocurre esto durante un proceso de data carving?
  3. ¿Por qué es fundamental desmontar inmediatamente la partición o dejar de escribir en el disco tras un borrado accidental?
  4. ¿Qué diferencia existe entre el comportamiento de un disco duro mecánico (HDD) y una unidad de estado sólido (SSD) con tecnología TRIM respecto a la recuperación de datos?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué ocurre exactamente en el sistema de archivos cuando se ejecuta el comando rm sobre un archivo?

El comando rm elimina el enlace (puntero) del archivo en la tabla del sistema de archivos y marca los bloques de datos correspondientes como "espacio libre". Los datos físicos no se borran de inmediato, sino que permanecen en el disco hasta que sean sobrescritos por nueva información.


2. ¿El archivo recuperado conserva su nombre original (secreto.txt)? ¿Por qué ocurre esto durante un proceso de data carving?

Generalmente no conserva el nombre original. Las herramientas de data carving como PhotoRec escanean los bloques de datos buscando cabeceras y firmas de archivo conocidas, pero la asignación del nombre original solía residir en la metainformación del inodo o directorio que fue desvinculado.


3. ¿Por qué es fundamental desmontar inmediatamente la partición o dejar de escribir en el disco tras un borrado accidental?

Al estar marcados esos bloques como espacio disponible, cualquier operación de lectura/escritura del sistema operativo o aplicaciones en segundo plano puede asignar datos nuevos sobre esos mismos bloques, sobrescribiendo de forma irreversible la información antigua.


4. ¿Qué diferencia existe entre el comportamiento de un disco duro mecánico (HDD) y una unidad de estado sólido (SSD) con tecnología TRIM respecto a la recuperación de datos?

En un HDD mecánico, los datos permanecen intactos hasta ser sobrescritos. En un SSD con comando TRIM activado, la unidad limpia físicamente las celdas de memoria en segundo plano poco después del borrado para mantener el rendimiento, haciendo que la recuperación sea casi imposible tras unos minutos.