Algunas descripciones de que queda en el disco después de eliminar un fichero, cómo puede descubrirse y cómo tal descubrimiento puede ser prevenido, són proporcionadas en Eliminado Seguro de Datos en Memorias Magnéticas y de Estado Sólido de Peter Gutmann. El autor recomienda sobreescribir los ficheros varias veces con patrones especiales. Contra adversarios ocasionales, simplemente sobreescribiendo el fichero con ceros bastará.
Linux no posee flujos de datos alternativos, pero los ficheros eliminados
usando /bin/rm todavía permanecen en el disco. Muchos sistemas
Linux usan el sistema de ficheros ext2 (o su versión más actual, la ext3 de
Red Hat). Echando un vistazo al diseño del sistema de ficheros ext2
muestra diversos lugares donde los datos pueden esconderse.
Vamos a empezar con el método clásico para esconder material en los sistemas
de ficheros UNIX (no específicamente en ext2). Ejecute un proceso que mantenga
el fichero abierto y entonces lo elimine. Los contenidos del fichero todavía
están en el disco y el espacio no puede ser reclamado por otros programas.
Vale la pena notar que si un ejecutable se elimina él mismo, sus contenidos
pueden recuperarse desde la imagen de memoria en /proc: el
comando "cp /proc/$PID/exe /tmp/file" crea una copia del fichero
en /tmp.
Si el fichero se elimina con /bin/rm, sus contenidos permanecen
en disco, hasta que sean sobreescritos por otros ficheros. Diversas utilidades
de recuperación ante borrado de Linux, incluyendo
e2undel y
recover,
intentan recuperar ficheros de forma automática. Se basan en el Linux Ext2fs Undeletion
mini-HOWTO que proporciona una buena guia para recuperar ficheros de particiones
Linux. La recuperación también puede llevarse a cabo utilizando manualmente la
utilidad para Linux debugfs (como se describe en el anterior HOWTO).
En general, si la recuperación se lleva a cabo poco después de la eliminación del fichero y la partición es puntualmente desmontada, las posibilidades de completar la recuperación són altas. Si el sitema se ha usado mucho, las probabilidades de recuperarlo satisfactoriamente decrecen de forma significativa. Sin embargo, si vamos a ver el problema desde el punto de vista forense, la posibilidad de recuperar algo (como una pequeña parte de una imagen ilegal) es bastante alta. Se ha encontrado que a veces partes de ficheros de algunos años atrás han sido encontradas por examinadores forenses.
Así los ficheros pueden esconderse en el espacio libre. Si muchas copias de un mismo fichero són guardadas y eliminadas, aumenta la posibilidad de recuperar los contenidos usando los métodos anteriores. Sin embargo, debido a las peculiaridades del sistema de ficheros ext2, el proceso sólo puede ser automatizado de forma fiable para ficheros pequeños.
Un examen más detallado al interior del ext2 revela la existencia de espacio de poca actividad. El sistema de ficheros usa partes direccionables del disco llamadas bloques, que tienen el mismo tamaño. El sistema de ficheros ext2 usa habitualmente bloques de 1.2 o 4 Kb. Si un fichero es más pequeño que el tamaño de bloque, el espacio restante se desperdicia. A esto se le llama espacio de poca actividad (espacio vago). Este problema hace mucho que afecta a los usuarios de Windows 9x con sistema de ficheros FAT16, el cual usa tamaños de bloque de hasta 32Kb, desperdiciando así gran cantidad de espacio al guardar ficheros pequeños.
En una partición Linux de 4Gb, el tamaño de bloque es normalmente de 4Kb
(elegido de forma automática cuando se ejecuta la utilidad make2fs
para crear un sistema de ficheros). Así uno puede ocultar hasta 4Kb de datos por
fichero si usa un fichero pequeño. Los datos serán invulnerables al uso del
disco, invisibles al sistema de ficheros, y lo que es más excitante para alguna
gente, indetectable por los comprobadores de integridad de ficheros que usan
algoritmos de sumas de comprobación y tiempos MAC. Un disquete ext2 (con un
tamaño de bloque de 1Kb) permite ocultar datos de la misma forma, aunque
en pedazos más pequeños.
La herramienta de ocultación bmap existe para embutir datos en espacio "vago", recuperarlos y además limpiar el espacio vago, si se requiere. Algunos ejemplos:
# echo "evil data is here" | bmap --mode putslack /etc/passwdpone los datos en el espacio vago producido por el fichero
/etc/passwd
# bmap --mode slack /etc/passwd getting from block 887048 file size was: 9428 slack size: 2860 block size: 4096 evil data is heremuestra los datos.
# bmap --mode wipeslack /etc/passwdLimpia el espacio vago.
Ocultar datos en el espacio vago puede usarse para guardar secretos, colocar pruebas (el software forense lo encontrará, pero el sospechoso probablemente no lo hará) y puede que para ocultar herramientas de los comprobadores de integridad (si automáticamente dividen los ficheros largos en pedazos de tamaño vago. N del T: es decir, si el comprobador de integridad solo tiene en cuenta el espacio que ocupa el archivo y no todo el bloque).
Ahora vamos a descubrir que hay en las enormes extensiones del disco. Si buscamos
cadenas de texto, un simple strings /dev/hdaX | grep 'cadena que necesitamos'
nos confirmará la presencia de la cadena en la partición (el proceso
*necesitará* bastante tiempo). Usando un editor hexadecimal en la partición en
bruto puede a veces aclarar los contenidos del disco, pero el proceso es
extremadamente complicado. Así el análisis nos lleva firmemente al campo del
análisis forense de computadoras. La mejor herramienta para husmear los
contenidos del disco es The Coroner's Toolkit
de Dan Farmer y Wietse Venema y su conjunto de herramientas tctutils.
El software proporciona funcionalidades para la recolección de datos forenses,
recuperación de ficheros, análisis de los contenidos de la unidad en busca de
cambios (usando marcas de tiempo en los ficheros), localización de contenidos
en el disco (usando números de i-nodo y de bloque) y para otras divertidas
tareas forenses. Una descripción detallada de las herramientas va más allá del
alcance de este texto.
Revisemos brevemente cómo prevenir que los adversarios encuentren datos privados.
Existen diversas utilidades de limpieza de ficheros para Linux. Todas excepto una
pueden usarse sólo para borrar/limpiar ficheros, mejor que espacio de disco vacio.
GNU shred (de Colin Plumb), srm (de Todd Burgess),
wipe (de Tom Vier) y srm del kit thc (del grupo THC, véase
http://packetstorm.linuxsecurity.com/groups/thc/). Algunas usan múltiples
pasadas aleatorias como se recomienda en el texto mencionado antes y algunas
simplemente sobreescriben el fichero con ceros una vez. Algunas no funcionan
bajo ciertas circunstancias o para sistemas de ficheros específicos. Como
se refleja en el manual de shred "shred confía en una suposición muy importante:
que el sistema de ficheros sobreescribe los datos en su lugar". Si esta condición
no se cumple, no se llevará a cabo ningún borrado seguro (¡sin mensajes de
error!).
Para eliminar las trazas de ficheros ya eliminados, uno puede querer limpiar el espacio libre. Este simple método consiste en usar una utilidad estándar de Linux como "dd". Para limpiar el espacio libre en la partición /home debe usar:
/tmp puede provocar que algunas aplicaciones
se cuelguen, así que hay que tener cuidado. La utilidad sfill del
paquete secure_delete de THC (disponible en
http://packetstorm.linuxsecurity.com/groups/thc/) puede sobreescribir el
espacio libre con un algoritmo más fuerte.Debe tener en cuenta que el espacio de intercambio (swap) también puede contener partes de datos privados y debe ser limpiada si se desea seguridad adicional. Otro programa (sswap) de las herramientas de THC puede usarse para este propósito.
El hecho importante a tener en cuenta es que cuando el espacio libre es limpiado, el espacio vago de todos los ficheros permanece intacto. Si un fichero es borrado (al menos usando la versión actual del GNU shred), el espacio vago asociado NO se borra con él!.
El atículo trata brevemente sobre ocultar, encontrar y destruir datos en sistemas de ficheros Linux. Debería quedar claro que el area de los análisis forenses en computadoras, apuntada a recuperar pruebas de unidades de disco capturadas, conlleva muchos retos, requiriendo el conocimineto del hardware, sistemas operativos y aplicaciones software.