Esta es la caja de herramientas utilizadas con Kubuntu 8.04:
• Gparted,
• dd y dd_rescue,
• TSK – The SleuthKit,
• Photorec.
El primer examen lo llevamos a cabo mediante el gestor de particiones Gparted. Si no está disponible, lo instalamos tecleando lo siguiente en una consola bash:
local@local-desktop:~$ sudo apt-get
install gparted
Para iniciar gparted podemos ir al menú de aplicaciones (en Sistema) o llamarlo desde la línea de comando. En el interfaz del programa seleccionamos el dispositivo conectado -que en la configuración a la cual se acaba de hacer referencia, como slave del segundo interfaz IDE, se encuentra en /dev/sdd- , para saber si está particionado, de qué tipo de particiones se trata (FAT16, FAT32, NTFS, ext2, etc.) y si existen datos dentro del dispositivo. Si es así podremos acceder a ellos sin más que montar la partición y examinar su contenido desplazándonos entre los directorios mediante comandos de consola, un navegador de archivos o bien con ‘mc’, la versión en Linux del primitivo Comandante Norton. Cuando se trata de una partición FAT los archivos borrados se pueden listar con Sleuthkit:
local@local-desktop:~$ fls -rd /dev/
sdd1
Y para rescatar un archivo borrado, por ejemplo un documento de MS-Word:
local@local-desktop:~$ icat /
dev/sdd1 [número de inode] >
evidencia.doc
Teniendo espacio suficiente en nuestra estación es mejor realizar una imagen del soporte para trabajar sobre ella y no sobre el dispositivo físico. Las razones son obvias: no queremos modificar el contenido del disco duro ni someter a sus cabezas de lectura al esfuerzo mecánico que precisa el rastreo exhaustivo de datos. Estamos manipulando discos antiguos cuyo historial de uso se desconoce. Ignoramos cómo les fue en su vida anterior, si han recibido golpes o sacudidas a consecuencia de las cuales pudieran tener sectores defectuosos y otros daños. Más de uno se hallará al final de su vida útil y no nos interesa que muera en plena operación de búsqueda. De modo que en el dispositivo de almacenamiento -es decir, el segundo disco duro de nuestra estación de trabajo forense- creamos un directorio para las imágenes, subimos hasta él y adquirimos el soporte íntegro, con todas sus particiones, el espacio no asignado y el sector de arranque:
local@local-desktop:~/mnt/sdb1$
mkdir imagenes_forenses
local@local-desktop:~/mnt/sdb1$ cd
imagenes_forenses
local@local-desktop:~/mnt/sdb1/
imagenes_forenses$ dd if=/dev/sdd
of=imagen_disco1.dd
El comando dd dispone de opciones que nos permiten optimizar el proceso de copia en bitstream. Si esto fuera prioritario en la investigación podríamos servirnos de ellas, por ejemplo definiendo el tamaño de los bloques de datos mediante el parámetro ‘bs’. Haremos lo mismo con cada uno de los discos duros – dependiendo siempre del espacio disponible-y con las tarjetas SD. Si los soportes de datos tienen sectores defectuosos, ‘dd’ abortará sin haber completado su misión. Por fortuna disponemos de ‘dd_rescue’ y otras herramientas similares diseñadas para recuperar datos de discos defectuosos, capaces de realizar una copia en bitstream saltándose los sectores ilegibles. Perderemos los datos grabados en las partes dañadas del disco, pero a cambio tendremos acceso a los que pueden ser recuperados sin problema.
Alternativamente a ‘dd_rescue’ se puede utilizar el propio ‘dd’ con la opción “bs=512 conv=noerror,sync”, aunque no resulta recomendable debido al tiempo que consume y a los movimientos repetidos que obliga a hacer a las cabezas de lectura sobre sectores dañados. El disco podría estar en las últimas y no conviene forzarlo mecánicamente. Volviendo a dd_rescue, existe un script bash llamado dd_rhelp que maneja este útil programa -escrito en C por Kurt Garloff- de modo que las partes sanas del dwisco duro se recuperan antes de comenzar las operaciones de lectura sobre los sectores defectuosos, ahorrando tiempo al investigador y minimizando la pérdida de datos en caso de un fallo catastrófico.
Borrar archivos no significa eliminarlos por completo, pudiéndose recuperar mediante técnicas adecuadas. Aunque este hecho es conocido, mucha gente se sorprende al saber que la pérdida de datos no es definitiva ni siquiera después de haber formateado el disco duro. Una vez más nos encontramos ante una reminiscencia mítica de los primeros tiempos del PC, cuando el formateo accidental era lo peor que podía suceder. El comando “format c:” imponía respeto. Solamente los muy entendidos se atrevían a teclearlo, plantando cara a ese mensaje con signos de admiración que en todos los sistemas advierte de una pérdida total de los datos.
En realidad formatear un disco significa borrar todas las estructuras de datos del sistema de archivos creando otras nuevas encima de ellas. Los datos efectivamente se pierden, más en sentido literal que en el de eliminación física, puesto que a pesar de que la mayor parte continúan estando en el disco duro, resulta imposible llegar hasta ellos al no existir ya el sistema de archivos. No olvidemos que éste, en última instancia, no es más que una base de datos que permite gestionar y mantener los archivos de un volumen. Si la eliminamos nos resultará imposible hacerlo. Ni siquiera sabremos dónde están.
En un disco reformateado las herramientas de The Sleuth Kit no detectan ningún archivo, puesto que la FAT (File Allocation Table) o la MFT (Master File Table), si se trata de particiones Windows), o la tabla de inodes (en Linux), han sido reinicializadas. Incluso el más potente software de investigación utilizado por la policía no podrá hacer otra cosa que inventariar el disco a un nivel elemental: sectores, clusters o porciones del volumen convertidas en archivos para hacer búsquedas de caracteres. Pero ni rastro de los archivos y carpetas originales. Para llegar hasta ellos es preciso utilizar herramientas de file carving.
En un artículo publicado en esta revista (Nº. 59 – Alonso Eduardo Caballero Quezada: “Foremost y Scalpel: Herramientas de recuperación de archivos”) se exponen los principios del “file carving” (tallado de archivos) y el funcionamiento de dos herramientas imprescindibles para esta labor, con algoritmos de búsqueda que van más allá de la simple comparación de cabeceras y pies con una base de datos, extrayendo archivos en función de sus estructuras internas de datos. Aquí nos vamos a servir de una herramienta más sencilla: Photorec. Pese a que su nombre sugiere una especialización gráfica, también recupera archivos de otros tipos.
Si Photorec no está instalado en el sistema podemos obtenerlo mediante el gestor de paquetes o desde la consola:
local@local-desktop:~$ sudo apt-get
install testdisk
Photorec puede ser ejecutado contra el soporte de datos (/dev/sdd) o contra la imagen. Lo último resulta preferible no solo por razones de precaución sino también de rendimiento. Aunque se trata de un soporte antiguo, su imagen está grabada sobre un disco duro PATA con altas velocidades de transferencia y una capacidad total de 320 GB. Por lo tanto:
local@local-desktop:~/mnt/hdb1/
imagenes_forenses$ photorec imagen_
disco1.dd
Dentro de Photorec el usuario encontrará un número de opciones para experimentar. Con la configuración por defecto pueden realizarse operaciones de rescate que no tienen nada que envidiar al más sofisticado programa de recuperación de archivos en Windows. Los resultados, a diferencia de Foremost o Scalpel, se guardan sin clasificar dentro de una serie de directorios numerada ‘recup_dir.1′ a ‘recup_dir.n’, creándose un nuevo directorio cada vez que se extraen 500 archivos.
Cómo acabar con los datos antiguos de una vez por todas
¿Constituye el borrado seguro una solución? Existen programas capaces de eliminar datos sin posibilidad de recuperación sobreescribiéndolos varias veces con información aleatoria. Sin embargo, ¿cómo estar seguro de que no quedan copias del archivo en otras ubicaciones del disco duro, carpetas temporales, la partición de intercambio o el archivo de paginación? Y tratándose de Windows 2000, XP o Vista sobre un sistema de archivos NTFS, los metadatos permanecerán en la MFT. Aunque no pueda leerse el contenido, se sabrá que el archivo estuvo allí. Una manera práctica de higienizar un disco duro, laminando por completo todas sus estructuras de datos y dejándolo como recién salido de fábrica, nos la proporcionan una vez más las herramientas de código libre. ‘dd’ permite sobreescribir todo el soporte con ceros:
local@local-desktop:~$ sudo dd if=/
dev/zero of=/dev/hdd,
o si se prefiere, con caracteres aleatorios:
local@local-desktop:~$ sudo dd if=/
dev/urandom of=/dev/hdd
Tampoco esto es seguro al cien por cien, ya que existen métodos de procesamiento de señales magnéticas que permiten recuperar archivos de datos incluso después de haber sido sobreescritos varias veces. Pero en la práctica, dadas las dificultades técnicas y la densidad de datos cada vez mayor de los discos modernos, la recuperación resulta imposible o al menos prohibitiva debido a la inversión de trabajo y costes que implicaría, incluso disponiendo de un equipo avanzado.
A propósito: el usuario no debe ponerse a experimentar alegremente con ‘dd’ y privilegios de root en su estación de trabajo, a no ser que esté seguro de lo que hace.
El borrado seguro de un soporte de datos requiere tiempo, tanto más cuanto mayor sea la capacidad del soporte, hasta varias horas para los más modernos discos duros PATA o SATA con capacidades en el orden de los centenares de gigabytes. Posiblemente sea esta una de las razones que explica la negligencia de los vendedores en eBay.
Via: Revista Linux