Lo primero es lo primero y el mérito en este caso corresponde a Mitchell Machor, autor del primer análisis en su documento "The Forensic Analysis of the Microsoft Windows Vista Recycle Bin". Yo sólo comento en castellano y propongo una herramienta.
Todos sabemos que cuando eliminamos una carpeta o archivo, y siempre que no mantengamos pulsado el botón de las mayúsculas, ésta o éste se almacenará temporalmente en la Papelera de reciclaje. Lo de temporalmente en ocasiones no es más que un eufemismo ya que la mayoría de las costumbres reales solemos transferirlas voluntaria o involuntariamente al mundo digital, y no son pocas aquellas que amenazan con desbordarse. ¿Pero cómo se organiza internamente este elemento tan particular?
En las últimas versiones de Windows, entiéndase Vista/7, existe un directorio oculto en cada unidad con nombre $Recycle.Bin. Sin embargo me temo que al final todos ellos apuntan al mismo lugar siendo éste su homónimo en la unidad del sistema:
%SystemDrive%\$Recycle.Bin
utilizando las variables de entorno. Si además tenemos en cuenta que Windows es un sistema multiusuario no será fácil deducir que existirá una Papelera por usuario. Veamos un ejemplo de como se gestiona esta característica en un sistema Windows 7 con dos usuarios:
C:\>dir /A:H C:\$Recycle.Bin El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: 9C87-DB2F Directorio de C:\$Recycle.Bin 15/02/2010 20:07. 15/02/2010 20:07 .. 15/02/2010 20:02 S-1-5-21-1730169009-2451939862-3791123446-1001 15/02/2010 20:14 S-1-5-21-1730169009-2451939862-3791123446-1003 0 archivos 0 bytes 4 dirs 14.153.822.208 bytes libres
Simple y elegante, se crea un subdirectorio utilizando para ello el SID de la cuenta correspondiente y ya se encarga el Explorador de Windows de enlazarlo adecuadamente desde la sesión del usuario. Por si hay algún despistado, más sobre SIDs en Microsoft, la Wikipedia y como no, Wadalbertia.
El valor de tiempo asociado al subdirectorio puede servir para acotar la fecha y hora de la primera sesión del usuario en el sistema, siempre que éste haya eliminado algún elemento desde dicha sesión y no haya manipulado este valor. Como suele pasar con la mayor parte de las cosas, nada es del todo seguro.
Identificado el mecanismo interno de gestión utilizado por Windows para las papeleras de los usuarios resta saber como se aclara con los diferentes elementos que almacena. Ahora, para un sistema Vista, veamos el contenido de la papelera del usuario:
C:\>dir C:\$Recycle.Bin\S-1-5-21-1435829524-487146864-2118318027-1000 El volumen de la unidad C es SYSTEM El número de serie del volumen es: B00D-25C9 Directorio de C:\$Recycle.Bin\S-1-5-21-1435829524-487146864-2118318027-1000 21/02/2010 22:28 544 $I3UT5T8 21/02/2010 22:28 544 $IN3DQ7V.exe 21/02/2010 22:27 544 $ISW6AHM 21/02/2010 22:27$R3UT5T8 24/06/2009 22:18 454.656 $RN3DQ7V.exe 21/02/2010 22:27 $RSW6AHM 4 archivos 456.288 bytes 2 dirs 19.253.620.736 bytes libres
Del listado anterior podemos obtener parejas de elementos con nombres similares si obviamos los 2 primeros carácteres. Así tendríamos:
$I3UT5T8 $IN3DQ7V.exe $ISW6AHM $R3UT5T8 $RN3DQ7V.exe $RSW6AHM
que el Explorador de Windows interpretará como:
Pues resulta que los ficheros encargados de almacenar la información asociada a cada uno de los elementos eliminados son aquellos que empiezan por $I, y los elementos eliminados serían los que empiezan por $R. El formato interno de los ficheros de información:
- 8 bytes para la cabecera de fichero que siempre es 01 00 00 00 00 00 00 00.
- 8 bytes para el tamaño del fichero/carpeta asociado, en formato litle endian.
- 8 bytes para la fecha y hora de eliminación del fichero/carpeta, en formato litle endian y que se corresponde con el número de segundos transcurridos desde la medianoche del 1 de Enero de 1601 (windows filetime).
- El resto de bytes, 520 hasta completar los 544 que ocupa cada fichero/carpeta, se utiliza para almacenar la ruta que ocupaba originalmente el elemento antes de ser eliminado. Los carácteres que forman la ruta aparecen separados por un byte nulo (00) que también se utiliza para completar el espacio asignado.
C:\>dir C:\$Recycle.Bin\S-1-5-21-1435829524-487146864-2118318027-1000\$R3UT5T8 El volumen de la unidad C es SYSTEM El número de serie del volumen es: B00D-25C9 Directorio de C:\$Recycle.Bin\S-1-5-21-1435829524-487146864-2118318027-1000\$R3UT5T8 21/02/2010 22:27. 21/02/2010 22:27 .. 21/02/2010 22:27 wadalbertia 21/02/2010 22:27 web 0 archivos 0 bytes 4 dirs 19.251.822.592 bytes libres
Ahora sabiendo todo lo anterior, y como sigo aprendiendo python, vamos a ver como funciona el script:
C:\>intrash.py -h Usage: intrash.py [options] path Script that gets information about the contents of a recycle bin from a Windows Vista/7 system Options: --version show program's version number and exit -h, --help show this help message and exit -f OUTFORMAT, --format=OUTFORMAT format of the output: normal or csv [defaults: normal] -o OUTFILE, --output=OUTFILE write output to OUTFILE instead of stdout -e OUTENCODING, --output-encoding=OUTENCODING define output encoding [defaults: utf-8]
Tal como indica la ayuda del comando por defecto la salida se vuelca en la consola utilizando utf8, por lo que los carácteres especiales como la ñ y las vocales con acentos aparecerán como caracteres extraños. Para evitar este problema primero obtendremos el encoding utilizado por defecto y posteriormente lo indicaremos en la invocación del comando:
C:\>chcp Página de códigos activa: 850 C:\>intrash.py -e cp850 C:\$Recycle.Bin S-1-5-21-1435829524-487146864-2118318027-1000 Trash file: $R3UT5T8 Path: C:\Users\javi\Desktop\diseñoweb Size: 1278246 bytes Deleted at: Sun Feb 21 21:28:01 2010 UTC Trash file: $RN3DQ7V.exe Path: C:\Users\javi\Desktop\putty.exe Size: 454656 bytes Deleted at: Sun Feb 21 21:28:21 2010 UTC Trash file: $RSW6AHM Path: C:\Users\javi\Desktop\Nueva carpeta Size: 0 bytes Deleted at: Sun Feb 21 21:27:43 2010 UTC
Ahora si queremos almacenar la salida en un fichero determinado y en formato csv de forma que podamos analizarla facilmente por ejemplo con excel:
C:\>intrash.py -e iso-8859-1 -f csv -o recyclebin.csv C:\$Recycle.Bin C:\>dir recyclebin.csv El volumen de la unidad C es SYSTEM El número de serie del volumen es: B00D-25C9 Directorio de C:\ 21/02/2010 23:24 458 recyclebin.csv 1 archivos 458 bytes 0 dirs 19.251.257.344 bytes libres
Para facilitar el uso de la herramienta sin tener que obligar a nadie a instalar un intérprete de python he generado los binarios adecuados mediante py2exe. Para utilizar el programa bastará con desempaquetar el fichero zip y almacenar todo su contenido en un mismo directorio, invocándolo desde allí. En el caso de que se muestre un error relacionado con la librería MSVCR90.dll deberá instalarse el paquete "Microsoft Visual C++ 2008 Redistributable Package".
El script está desarrollado de forma que también pueda utilizarse sin problemas desde linux, y como no, he tirado de la inestimable ayuda de mi profesor particular, mi amigo y compañero hilario.
Código, scripts y ejecutable: intrash.zip
En breve más, y mejor, espero.
Muy buen post de neofito.
FUENTE:
http://neosysforensics.blogspot.com/2010/02/la-papelera-de-reciclaje-en-windows.html
No hay comentarios:
Publicar un comentario