En este episodio veremos cómo eliminar de forma segura un archivo. Es decir, cómo eliminarlo ocultando su contenido previo, sin que sea posible recuperarlo desde el disco. Así sea utilizando costosas herramientas de hardware forense de análisis de discos (herramientas de hardware que analizan los valores magnéticos de los sectores de disco y logran recuperar los datos alojados previamente).

Hace ya algunos años demostré cómo recuperar imágenes desde una tarjeta de memoria utilizando photorec. Esta herramienta, que se incluye en el paquete testdisk, está diseñada para recuperar datos de videos, documentos y archivos perdidos desde discos rígidos y CDROM; y fotos perdidas (Photo Recovery) desde tarjetas de memoria. PhotoRec ignora el filesystem y accede directamente a los datos crudos, por lo tanto funciona incluso si el sistema de archivos ha sido severamente dañado o formateado.

La cuestión es que a veces, por cuestiones de seguridad y/o privacidad, es necesario eliminar completamente los datos de un archivo sin dejar rastro alguno. Es decir, borrar uno o varios archivos sin que sea posible recuperarlos utilizando tanto herramientas de software como de hardware.



A través de un pequeño experimento con photorec es posible demostrar lo fácil que es recuperar un archivo borrado (siempre que sus bloques no hayan sido reutilizados por otros archivos). Esto se debe a que al borrar un archivo no se "limpian" sus bloques (es decir se rellenen con ceros o datos aleatorios) sino que simplemente se marcan como disponibles sin ser modificado su contenido (esto se hace para ahorrar tiempo, energía, y mejorar la eficiencia y rendimiento). Más allá de los bloques, lo que pasa con el inodo depende del formato de sistema de archivos y su driver (versión de kernel Linux). Con versiones actuales del kernel Linux el inodo se limpia (se eliminan todos los punteros a bloques, tanto directos como indirectos) ya sea un sistema de archivos ext2, ext3 o ext4. Es tarea de la herramienta de recuperación la habilidad de recomponer un archivo a partir del contenido de los bloques en disco. Sin embargo, programas como photorec son capaces de hacerlo, como veremos.

Antes de empezar es necesario contar con esta herramienta. Basta con instalar el paquete testdisk:

# apt-get install testdisk

Borrando con rm

Partiendo de un sistema de archivos ext4 en el dispositivo /dev/sdb1 y montado en /data, se procede a eliminar el archivo /data/1200px-Tux.svg.png:

Se observa que se trata de un sistema de archivos ext4 con el modo data=ordered. Esto significa que sólo se mantienen metadatos en el journal (log de cambios en disco).

Luego de eliminado, se ejecuta photorec sobre el dispositivo:

# photorec /dev/sdb1

Se siguen los pasos según indica el artículo ¿Dude dónde están mis fotos? hasta finalizar la recuperación de archivos:

Al finalizar, se observa que se ha recuperado exitosamente 1 archivo (precisamente el archivo que habíamos borrado anteriormente) y queda guardado en la ruta /root/recup_dir.1:

Efectivamente se trata de la imagen que habíamos borrado y correspondía con el archivo /data/1200px-Tux.svg.png:

Borrando con shred

La herramienta shred ("hacer trizas" en español), provista por el paquete coreutils, permite sobrescribir un archivo para ocultar y eliminar todo su contenido, sin dejar rastro alguno. A fin de que sea imposible de recuperar para herramientas de hardware que hacen análisis magnético de sectores, shred sobrescribe repetidamente el contenido con valores aleatorios, haciendo un uso intensivo de disco. A su vez permite eliminar el archivo al finalizar.

Es importante aclarar que esta herramienta se basa en la asunción importante de que el sistema de archivos sobrescribe los datos en le lugar. Generalmente es así, pero muchos sistemas de archivos modernos no lo respetan. Por ejemplo los sistemas de archivos con journal o estructurados en log (por ejemplo ext4); sistemas de archivos que escriben datos redundantes como los esquemas RAID; sistemas de archivos que soportan snapshots (LVM o ZFS); sistemas de archivos que hacen un uso intensivo de cache en locaciones temporales (NFS); sistemas de archivos comprimidos; etc.

En tales casos shred no es efectivo, o no se garantiza que lo sea.

Para el caso de los sistemas de archivos ext3 y ext4 esta advertencia aplica sólo si el journal está habilitado tanto para los datos como metadatos (modo data=journal). En los modos data=ordered (por defecto) y data=writeback, shred funciona correctamente.

Por supuesto no hace falta aclarar que nada se puede hacer con las copias de seguridad remotas y en cinta, mirrors, etc.

Partiendo del mismo sistema de archivos ext4 con modo data=ordered (configuración por defecto que no mantiene datos en el journal, sólo metadatos). Se procede a borrar el archivo con shred:

# shred -n 5 -u -v -z /data/1200px-Tux.svg.png

Las opciones utilizadas son las siguientes:

  • -n 5: 5 iteraciones de sobrescritura.
  • -u: borrar el archivo al finalizar.
  • -v: modo verboso.
  • -z: rellenar con ceros al final para ocultar el propio shredding.

Se observa que en cada pasada se alterna entre rellenado con ceros, con datos aleatorios y con unos (ffffff). Esto se hace para maximizar la efectividad del borrado o shredding, de forma que todos los bits resulten modificados al menos una vez. Finalmente se renombra y se borra. Esto ocurre para hacer el shredding del propio nombre del archivo en la entrada de directorio.

Con el archivo borrado de forma segura, se procede a correr nuevamente photorec:

Al finalizar, no se pudo recuperar ningún archivo:

Incluso tampoco se pudo recuperar la versión previa del archivo:

root@devuan:~# mv recup_dir.1/f0017410.png /data/1200px-Tux.svg.png

Lo cual significa que al ser movido para correr el segundo experimento (tal como se observa), los bloques fueron reutilizados (sobrescritos por mv). Recordar que photorec no escribe el dispositivo examinado y recupera los archivos en un sistema de archivos aparte.

Existen muchas herramientas para recuperar todo tipo de archivos. En este artículo utilicé photorec a modo de ejemplo para realizar el experimento, sin embargo es posible recuperar cualquier archivo borrado desde disco.

Referencias


Tal vez pueda interesarte


Compartí este artículo