Continuando con nuestra búsqueda de información, ahora nos enfocaremos a tratar de  determinar la fecha de la última vez que el dispositivo USB estuvo conectado en el sistema. Para esto también utilizaremos el valor del “ParentIDPrefix” del dispositivo USB que estemos investigando. En primer lugar debemos navegar a la siguiente llave de registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\

Control\DeviceClasses

Dentro de esta llave debemos buscar las siguientes subllaves: {53f56307-b6bf-11d0-94f2-00a0c91efb8b} y {53f5630d-b6bf-11d0-94f2-00a0c91efb8b}.  Dichos valores corresponden a las llaves genéricas “GUID” (Globally unique ID) de clase de los dispositivos para discos y volúmenes respectivamente. Debajo de las llaves de GUID anteriores existen varias subllaves como la siguiente:

##?#STORAGE#RemovableMedia#7&2fffedd1&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}

La parte en negritas corresponde al valor de  “ParentIDPrefix” para el dispositivo USB que hemos estado analizando en este ejemplo.

Figura 6. Llave de registro “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}”.

Una vez que hemos encontrado la llave de registro correspondiente, el siguiente paso será obtener la fecha de última escritura de dicha llave y este valor, a su vez,  será nuestra fecha de la última vez que el dispositivo USB estuvo conectado al sistema. Existen varias formas de conocer la fecha de última escritura de una llave en el registro y en este artículo mencionaremos algunas de ellas.

El primer método que describiremos no requiere la utilización de ninguna herramienta adicional, simplemente se deben seguir los siguientes pasos:

  1. Inicio > Ejecutar > Regedit.exe
  2. Navegar a la llave de la que necesitamos conocer la última fecha de escritura (en este caso “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\##?#STORAGE#RemovableMedia#7&2fffedd1&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}”)
  3. Archivo > Exportar
  4. Guardar como > Seleccionar como archivo de texto (*.txt)
  5. Abrir el archivo que se creó utilizando un editor de textos como “notepad” y buscar la fecha de última escritura dentro del contenido del archivo:

Figura 7. Contenido de la llave exportada en formato texto, se aprecia que la fecha de última escritura es “05/03/2009 – 1:01 p.m.”

Para conocer la fecha de última escritura de las llaves, también es posible utilizar herramientas como “Regscanner” de Nirsoft (http://www.nirsoft.net/utils/regscanner.html)

Figura 8. Utilizando la herramienta “RegScanner” para obtener la fecha de última escritura “Key Modified Time” de la llave de registro correspondiente a la última vez que estuvo conectado un dispositivo USB al sistema.

Durante la investigación forense de un dispositivo USB, las fechas de última escritura “LastWrite” de las llaves de registro relacionadas al dispositivo USB, pueden ser utilizadas para compararlas contra la línea de tiempo del resto de las actividades del usuario en el sistema.

La comunidad de investigadores forenses ya se ha preocupado por desarrollar herramientas que de forma automática obtengan los datos del registro relativos a la información de los dispositivos USB que hayan estado conectados en el sistema. Con estas herramientas se facilita un poco la vida de los Watsons (investigadores forenses computacionales) y se ahorra un poco de tiempo.  No obstante, siempre es mejor conocer la forma de realizar el proceso de forma manual y tener bien claro de dónde sale toda esta información.

Como ejemplo de estas herramientas automatizadas podemos mencionar a “USBDeview” (http://www.nirsoft.net/utils/usb_devices_view.html) que nos proporciona información sobre los dispositivos USB que hayan estado conectados al equipo, incluyendo la información de la fecha en que fue conectado/desconectado el dispositivo removible por última vez.  La herramienta “USBDeview” automatiza la vista del historial de un dispositivo USB en sistemas Windows y permite recuperar el nombre del dispositivo, fecha y hora de última conexión y el número de serie.

Figura 9. Utilizando la herramienta “USBDeview” para obtener información de los dispositivos USB que han estado conectados al sistema.

Otra herramienta útil para este tipo de análisis es “usbHistory.exe” (http://nabiy.sdf1.org/index.php?work=usbHistory) que lee las llaves de registro relacionadas y proporciona la información de la última vez que se conectó un dispositivo de almacenamiento externo o MP3 así como la letra del drive que le fue asignado.

Figura 10. Resultados de la herramienta “usbHistory.exe”, muestra datos de los dispositivos USB que hayan estado conectados al sistema.

 

Dispositivos de almacenamiento externo USB de tipo U3

Mención especial merecen los dispositivos USB de tipo U3 que, además de su capacidad para almacenar información, también pueden ser utilizados como un escritorio portátil. En esencia, el dispositivo incluye un conjunto de aplicaciones (navegador, antivirus, firewall personal etc.) que han sido configurados para correr desde el dispositivo. Estas aplicaciones son guardadas dentro de una partición de tipo CDFS (CD File System) y aparecen con un “Device Class ID” (dentro de la llave de registro “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\”) similar a la siguiente:

CdRom&Ven_SanDisk&Prod_U3_Cruzer_Micro&Rev_3.27

Por su naturaleza, los dispositivos USB de tipo U3 corren programas y crean registros al ser conectados a un sistema. Lo anterior implica que al realizar el análisis de línea de tiempo de la imagen de un sistema podremos observar los tiempos de creación/modificación de múltiples archivos relacionados con el dispositivo USB tipo U3. Además, cuando el dispositivo es removido también se corren rutinas de limpieza (no importa si esto se hace por comando o solo se quita el dispositivo del puerto) que afectan los tiempos MAC de varios archivos.

Es posible corroborar esta información con otra evidencia que se tenga, del registro por ejemplo, relativa a la inserción de una unidad en particular. También se pueden encontrar archivos o restos de archivos que proporcionen mayor información sobre el dispositivo USB que fue insertado. Para comprender lo que sucede durante el proceso de inserción (qué archivos son creados o modificados en el sistema), se puede utilizar la herramienta “Filemon” (http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx) y grabar la actividad que ocurre mientras el dispositivo es insertado.

Nota: La herramienta “Filemon”  evolucionó en la herramienta “Process Monitor” (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) que combinó la funcionalidad de “filemon” y otra herramienta denominada “Regmon”.

Figura 11. Muestra de archivos que son creados o modificados durante el proceso de inserción de un dispositivo USB de tipo U3

Analizando la información desplegada por “filemon” encontramos que existe un archivo de nombre U3Launcher.log creado bajo el directorio del usuario en “Local Settings\Temp” que es actualizado regularmente. Este archivo permanecerá en el directorio temporal hasta que sea borrado de forma manual.  Para nuestra investigación forense este archivo es importante ya que contiene información relativa a fechas, números de serie y otra información relevante del dispositivo USB.

 

Figura 12. Fragmento del contenido del archivo “USBLauncher.log” con información relativa a dispositivos USB de tipo U3

En conclusión, los dispositivos de tipo U3 dejan un rastro fácilmente identificable de su actividad en el sistema.  Si el investigador forense sabe qué tipo de dispositivo USB está investigando en un caso, puede experimentar con este tipo de dispositivo y la herramienta de “Filemon”  para averiguar cómo se comporta este dispositivo y posteriormente comparar esta información con la línea de tiempo del equipo bajo investigación.

 

Registros de tipo  “ShellBags”

El registro de Windows conserva los datos del “tamaño de display” de una carpeta de Windows entre diferentes sesiones. Esta información se almacena en el registro y no se limpia cuando las carpetas asociadas son borradas y, aún mejor, ¡también mantiene los valores para carpetas que residen en dispositivos de almacenamiento externo! Esto es útil para conocer la estructura de carpetas en algún USB que haya estado conectado a una máquina sospechosa y con el que ya no contemos físicamente. Esto es, mediante la información almacenada en ciertas llaves de registro, podríamos saber los nombres de las carpetas que hayan existido en un USB que fue conectado en algún momento al equipo.

La  información de “tamaño de display” se almacena en las siguientes llaves de registro:

  • HKCU\Software\Microsoft\Windows\Shell\BagMRU
  • HKCU\Software\Microsoft\Windows\Shell\Bags
  • HKCU\Software\Microsoft\Windows\ShellNoRoam\BagMRU
  • HKCU\Software\Microsoft\Windows\ShellNoRoam\Bags

Otras llaves donde se encuentra información similar a la de “Shellbags” son:

  • HKCU\Software\Microsoft\Windows\Currentversion\Explorer\StreamMRU
  • HKCU\Software\Microsoft\Windows\Currentversion\Explorer\Streams

La herramienta Windows Registry Analyzer (WRA) permitía decodificar las llaves de ShellBag para obtener en formato legible la información. Esta herramienta fue adquirida por la compañía Paraben y ahora se llama Registry Analyzer v1.0 que se encuentra incluida dentro del kit de P2 commander”, mismo que puede ser adquirido por la módica cantidad de  1,100 dólares.  Otra herramienta similar es Registry Viewer de Access Data (http://www.accessdata.com/forensictoolkit.html).

 

Fig. Figura 13. Contenido de la llave “Software\Microsoft\Windows\Currentversion\Explorer\Streams\0” en dicho registro se aprecian nombres de archivos como: “relación de profesores y escuelas atendidas.doc”, “taller de herramientas intelectuales.doc”

 

Figura 14. Contenido de la llave “HKCU\Software\Microsoft\Windows\Shell\Bags\1\Shell” en donde se aprecian nombres de carpetas como “Curso SANS forense”.

Otro aspecto interesante es que las copias históricas del archivo de sistema “NTUSER.DAT” (dentro de este archivo se encuentran los registros de las llaves de tipo shellbags)  pueden contener información del nombre de carpetas o archivos de dispositivos USB que hayan sido insertados en el equipo hace mucho tiempo. Por defecto solo se conservan entradas de 28 StreamMRUs,  200 bags de carpetas locales y 200 bags de carpetas de red.  Por lo que los diferentes puntos de restauración del sistema pueden contener diferente información.

 

¿Cómo ligar un dispositivo USB  que fue conectado a un sistema Windows utilizando archivos de tipo “shortcut” (*.lnk) si sólo contamos con la imagen de ambos dispositivos (esto es, no tenemos el dispositivo USB físicamente)?

De lo que hemos visto hasta el momento, sabemos que podemos extraer información de dispositivos USB que han sido conectados a un sistema utilizando el registro de Windows: información de los dispositivos, letras de drive a las que hayan estado mapeados, y la fecha de la última conexión al sistema. En algunas ocasiones los investigadores forenses computacionales sólo contamos con archivos de tipo “shortcut” que apuntan a archivos, imágenes o documentos específicos, sobre los que estemos investigando. La letra del drive que los contenía puede ser F:\,G:\ o algo que no es parte del sistema (ya sea discos lógicos o físicos). La pregunta es, ¿cómo realizamos la relación entre el archivo de tipo “shortcut” al dispositivo USB específico que contenía estos archivos?

Lo primero sería ir a la llave de “MountDevices” y observar cuáles dispositivos fueron montados con las letras de drive específicas. Sabemos que la información para una entrada “DosDevice” contendrá una referencia como la siguiente: «\??\STORAGE\RemovableMedia», seguida por el “ParentIDPrefix” del dispositivo. Si tenemos un archivo “shortcut” que apunta a la ruta “F:\malware.exe” y sabemos que el dispositivo denominado “\DosDevices\F:” apunta a un dispositivo de almacenamiento externo, podemos utilizar el valor del ParentIDPrefix para relacionar el drive al dispositivo USB en la llave “Enum\USBStor”.

Pero,  ¿qué sucede si encontramos múltiples dispositivos USB que han estado conectados al sistema y a los que se les ha asignado la misma letra de drive F:\? ¿Cómo se puede determinar cuál de estos dispositivos era el que estaba conectado cuando se creó el archivo “shortcut”?

El número de serie del volumen o VSN es un valor que es calculado tomando en consideración la fecha actual, cuando fue formateada la partición, y agregada al “boot sector”, para formar un valor único y específico al o para el dispositivo.  En el archivo de tipo shortcut encontramos el valor de la letra del drive y el número de serie del volumen del dispositivo; sin embargo en las entradas del registro NO se almacena en ninguna parte  el valor del número de serie del volumen. Por lo que si no contamos físicamente con el dispositivo USB para poder comparar ese número de serie del volumen contra el que aparece en el archivo shortcut, no parece haber forma de establecer dicha relación.

Una alternativa puede ser relacionar la información de estampas de tiempo del archivo de tipo shortcut, con la información de última escritura de las llaves que indican la última vez que los dispositivos USB estuvieron conectados al sistema.

 

Conclusiones

En general Windows no mantiene un registro de los archivos que son copiados; no existe un registro en sistemas Windows que muestre: “en la fecha X, el usuario Z copió el archivo de la ruta G a la ruta H”. Si el investigador cuenta con imágenes tanto del disco duro del equipo investigado como del dispositivo de almacenamiento externo, es posible tener una idea de la dirección de la copia si esta ocurrió. El investigador puede llegar a  encontrar un archivo de tipo “shortcut” (.lnk) en la imagen del disco duro, y una referencia en el registro de que el dispositivo USB fue conectado en dicho equipo. Pero, ¿eso qué nos dice?, puede indicar que el usuario accedió al documento en el dispositivo USB, pero no necesariamente prueba que existió una operación de copia.

Los números de identificación únicos y persistentes de los dispositivos USB nos permiten obtener información para determinar qué dispositivos fueron instalados en un sistema. Si se encuentran documentos con el mismo nombre tanto en el disco duro de un equipo como en el dispositivo USB, será necesario comparar los tiempos MAC de ambos documentos, el tamaño, la metadata y la suma de MD5 o hash para establecer si estos documentos tienen relación entre sí.

Existen soluciones de software de control y auditoría que permiten llevar un control estricto de qué archivos están copiando los usuarios y hacia qué destinos. Como ejemplos podemos mencionar:

  • Check Point Endpoint Security Media Encryption™ (basado en la tecnología de Pointsec), combate los riesgos de copiado de información confidencial a dispositivos de almacenamiento externos utilizando una combinación de administración de puertos, filtrado de contenido, auditoría centralizada, administración de los dispositivos de almacenamiento y cifrado de la información.
  • Symantec Data Loss Prevention Endpoint Prevent (basado en la tecnología de Vontu): previene que los empleados copien información confidencial a dispositivos removibles (USB, CD/DVD, Firewire) o la copien por red (email, IM, HTTP/HTTPS, ftp), hagan copy/paste de documentos sensibles, la impriman o la manden por fax.
  • Identity View de ArcSight: Proporciona una visión general de la actividad de los usuarios en la red, que información están viendo y qué acciones están realizando sobre dicha información (copiado, borrado, etc.).

 Espero que toda esta información le sea de utilidad a mis queridos Watsons para obtener piezas que nos permitan armar el rompecabezas y resolver los casos que estemos investigando. Nos vemos en la siguiente aventura para encontrar la verdad.

[email protected]

Referencias:

http://www.forensicswiki.org/index.php?title=USB_History_Viewing

http://www.answers.com/topic/autorun

http://sansforensics.wordpress.com/2008/10/31/shellbags-registry-forensics/

http://nabiy.sdf1.org/index.php?work=usbHistory

http://windowsir.blogspot.com/2008/07/copying-files.html

http://windowsir.blogspot.com/2007/04/from-lab-mapping-usb-devices-via-lnk.html