Bastionado, seguridad en sistemas: Usar ShellBags para análisis forense en Win pre { background:#eeeeee; border:1px solid #A6B0BF; font-size:120%; line-height:100%; overflow:auto; padding:10px; color:#000000 } pre:hover { border:1px solid #efefef; } code { font-size:120%; text-align:left; margin:0;padding:0; color: #000000;} .clear { clear:both; overflow:hidden; }

Bienvenido al blog

Bienvenidos al blog de seguridad en sistemas

domingo, 3 de julio de 2011

Usar ShellBags para análisis forense en Win

Durante las primeras fases del análisis forense de un sistema de ficheros es importante crear una línea de tiempo donde se identifiquen cuando los ficheros y directorios han sido modificaron, accedidos y eliminados para crear una trazabilidad de las acciones realizadas en el sistema.

Para crear esta linea de tiempo se suelen emplear herramientas que analizan el sistema de ficheros ordenando cronológicamente las operaciones indicadas con anterioridad, siempre y cuando, el sistema de ficheros lo permita.

Dicha linea de tiempo es cruzada con otros datos a los que llamaremos "añadidos" o "artifacts" cuyo objetivo es crear la super linea de tiempo, gracias a que permiten obtener información adicional sobre las operaciones realizadas sobre el sistema de ficheros, así mismo, permiten detectar desviaciones que identifiquen modificaciones temporales anti forenses.

Esos artifacts, en entornos Windows, suelen ser los metadatos del sistema de ficheros NTFS, el registro y los logs de las aplicaciones. Dentro del registro disponemos de multitud de entradas que aportan gran valor a un análisis forense. Para ésta entrada trataremos las Shellbags del registro Windows.

Las Shellbags son unas entradas o llaves en el registro que informan de los ficheros y directorios que han sido accedidos recientemente por un usuario desde el explorador de Windows, entendiendo accedido como leído, creado, eliminado y copiado. Permitiendo validad algunas trazas de la la linea de tiempo del sistema de ficheros y disponiendo de un orden de acciones efectuadas por cada usuario.

Como se ha descrito anteriormente, el Shellbags se encuentran en el registro de Windows, y en concreto en los fichero NTUSER.DAT (Win XP) o USRCLASS.DAT (Vista/7) de cada usuario. Lo recomendado es copiarlos desde la imagen RAW del sistema de ficheros, por supuesto de la copia y no del original, y analizarlo desde un editor de registro como regview.py (gratuito y creado con 200 lineas de python XD).

Las Shellbags se encuentran en el fichero NTUSER.DAT o USRCLASS.DAT en la llave "Shell -> BagMRU":

Vista o Win 7:
Local Settings -> Software -> Microsoft -> Windows -> Shell -> BagMRU
Desde Win XP:
Software -> Microsoft -> Windows -> Shell -> BagMRU


PD: si accedemos desde un regedit de un Win en ejecución se debe acceder primeramente a Classes:
HKEY_USERS ->  UID Usuario -> Software  -> Classes


Una vez accedido se mostrara un arbol de carpetas y registros con una estructura numérica, donde se identifica cada número con un directorio del explorar de Windows. Esta estructura cambia de Win XP a Vista y 7. Un ejemplo en Win7 sería que "BagMRU" identifica a "Desktop", la hoja hija "0" del árbol es "Mi PC", si desplegamos veremos que el "0" hijo identifica la unidad C y así con todo. Cada nodo tiene una serie de registros asociados que contiene la información que nos interesa, lógicamente encodeada (acaba de morir un gatito). Tenéis más información sobre el funcionamiento de las shellbags en este paper.



Como habreis podido comprobar el problema radica en la dificultad de entender el arbol. Para ello existe herramientas que nos traducen el arbol y nos lo muestran en formato sencillo. MiTeC Windows Registry Analyzer, permitía volcar todos los datos del ShellBag, por desgracia solo soportaba WinXp y no Vista/Win7.

La única herramienta que he encontrado gratuita para ShellBags en Vista/Win7 es sbag de TZWorks. Para probar la herramienta primeramente he arrancado con un live de Linux y he copiado de una imagen raw de Windows el fichero c:\Users\miusuario\USRCLASS.DAT para luego tratarlo con sbag con la siguiente orden:

C:\Users\miusuario\Desktop> sbag64.exe USRCLASS.DAT > resultado

Obteniendo como resultado lo siguiente:

NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU\
 bag |  Regkey modtime [UTC] |      folder name          | createdate |   ctime  | modifydate |   mtime  | accessdate |   atime  |  full path
   1 | 07/02/11 10:20:45.305 | Desktop                   |            |          |            |          |            |          | Desktop\
     | 07/02/11 10:20:45.305 | {CLSID_Network}           |            |          |            |          |            |          | Desktop\{CLSID_Network}\
   2 | 07/02/11 10:20:46.815 | \\XXXXXX\public\Folder Share |            |          |            |          |            |          | Desktop\{CLSID_Network}\\XXXXXX\public\
  23 | 07/02/11 10:08:24.966 | Vídeos                    | 02/02/2011 | 09:28:52 | 02/02/2011 | 09:28:52 | 05/26/2011 | 20:10:34 | Desktop\{CLSID_Network}\\XXXXXX\public\Vídeos\
  33 | 06/25/11 20:56:45.406 | HDTV                      | 04/03/2011 | 14:15:08 | 04/03/2011 | 14:15:08 | 05/29/2011 | 14:29:40 | Desktop\{CLSID_Network}\\XXXXXX\public\Vídeos\HDTV\

...

Al ejecutarlo parece ser que no se ha mostrado todos los datos que contiene el Shellbag, de hecho se aprecian los saltos en el identificador de bag, y creo que es debido a que empleo la versión limitada y gratuita de sbag.  Así que volví a la carga buscando alternativas.

Encontré otro programa que recomendaban y que te puedes descargar gratuitamente, aunque en modo demo, es "Registry Viewer" de AccessData (un clasico en forense). Cuando intente explorar el registro en la zona del BagMRU peto el programa... sin comentarios xD.



Buscando un poquito más encontré que RegRipper tiene dos plugins (bagtest y bagtest2) que son capaces de tratar las Shellbags de un Win7, en concreto y la que me funciono es la bagtest.

C:\Users\xxxxx\Desktop\Nueva carpeta>rip -p bagtest -r USRCLASS.DAT
Launching bagtest v.20090828
Software\Microsoft\Windows\Shell\BagMRU

\0\0
\0\0\0                     \\XXXXXXXX\public (Microsoft Network,Folder Share)
\0\0\1                     \\XXXXXX\admin (Microsoft Network)
\0\0\2                     \\XXXXXXXX\backup (Microsoft Network,Folder Share)
\0\0\0\0                   Imagenes
\0\0\0\1                   V+¡deos
\0\0\0\2                   Software
\0\0\0\3                   ISO
\0\0\0\4                   M+¦sica
\0\0\0\0\0                 Fondos
\0\0\0\0\0\0               Anime
\0\0\0\0\0\1               Fantasia
\0\0\0\0\0\2               Animales
\0\0\0\0\0\3               Paisaje
\0\0\0\0\0\4               Peliculas
\0\0\0\1\0                 HD
\0\0\0\1\1                 HDTV
\0\0\0\2\0                 Windows
\0\0\0\4\0                 Platero.y.tu
\0\0\0\4\1                 Extremoduro
\0\0\1\0                   Documentacion

...

Comparando los resultados con "sbag" vemos que el regripper parece mostrar algunas entradas más, peeero no muestra los metadatos temporales que existen en cada entrada del arbol y que es justamente la parte que más nos interesa para el análisis forense.

Por tanto, y a día de hoy, si no tenemos presupuesto recomiendo usar sbag para obtener casi la totalidad de la estructura y sus metadatos temporales. Adicionalmente emplearía RegRipper por si sbag no mostrara todo el árbol, para tener en cuenta que ese directorio o fichero fue accedido desde el explorar de Windows recientemente por el usuario correspondiente. 

Hasta la próxima entrada... y tened en cuenta que son las 3:00 de un sábado, no seáis crueles con las faltas de ortografía y la redacción... 

No hay comentarios:

Publicar un comentario