Determinar el Primer y Último Registro de Ingreso de un Usuario en Windows XP

Body

Para determinar la primera vez que un usuario registro su ingreso o hizo “Login” en el sistema, se debe visualizar la fecha de creación del directorio del usuario. La ubicación de directorio del usuario es dependiente de la versión del Sistema Operativo Windows en análisis.

Para la siguiente práctica se utilizará la imagen forense obtenida desde el disco duro de un Sistema Windows XP.

Se procede a montar la respectiva imagen forense en SIFT, para luego ejecutar el comando “stat” sobre la carpeta del usuario sujeto a investigación. El comando “stat” de GNU/Linux devuelve información sobre un archivo, de esta manera es factible obtener la fecha de creación de la carpeta del usuario.

Para determinar la última vez que un usuario registró su ingreso al sistema (login) se consulta la subllave “/SAM/Domains/Account/Users/Names” del registro de Windows para obtener información sobre los nombres de usuario en el sistema.

$ reglookup -p /SAM/Domains/Account/Users/Names /mnt/windows_mount3/WINDOWS/system32/config/SAM

En esta práctica se obtendrá la información del usuario “mario”. Su RID (Relative Identifier) o Identificador Relativo es “0x000003EB”. El RID es una porción del SID (Security Identifier) o Identificador de Seguridad que identifica un usuario o grupo en relación a la autoridad que entrega el SID.

Se consulta la subllave "/SAM/Domains/Account/Users/000003EB" con la herramienta reglookup, para extraer la información requerida.


$ reglookup -p /SAM/Domains/Account/Users/000003EB /mnt/windows_mount3/WINDOWS/system32/config/SAM

Estos valores obtenidos son tipos de datos binarios y deben ser interpretados adecuadamente para extraer toda la información requerida. Para este propósito se utiliza el script en Perl “sam_parse.pl”.

$ perl sam_parse.pl /mnt/windows_mount3/WINDOWS/system32/config/SAM

Herramientas como Access Data Registry Viewer permiten interpretar y visualizar de manera sencilla esta información sobre los usuarios y grupos.

La información expuesta no solo detalla la última vez que el usuario registró su ingreso (Last Logon Time) en el sistema, sino también el tiempo de la última escritura de la subllave (LASTWRITE), el número de veces que el usuario hizo “Login” (Logon Count), la última vez que el usuario cambió su contraseña (Last Password Change Time), entre otra información valiosa para el examinador forense.

Fuentes:

http://linux.die.net/man/2/stat
http://computer-forensics.sans.org/community/downloads
http://www.osforensics.com/tools/mount-disk-images.html
http://www.accessdata.com/support/product-downloads
http://what-when-how.com/windows-forensic-analysis/registry-analysis-wi…
http://projects.sentinelchicken.org/reglookup/

Determinar la Última vez en el cual un Sistema Windows fue Apagado

Body

El descubrir la última vez en la cual se apagó un Sistema Windows puede ser importante para una investigación forense, pues proporciona información sobre el último momento de uso de la máquina en investigación. Esto podría indicar que el sistema no está relacionado a un incidente, o que el sistema estuvo en uso durante un periodo de tiempo determinado.

Para la siguiente práctica se utilizará la imagen forense obtenida de un disco duro de un Sistema Windows XP.

Se procede a montar la imagen forense y a ejecutar la herramienta “reglookup” para consultar la llave HKLM\SYSTEM\ControlSet001\Control\Windows. Pues la información requerida se ubica en el valor de nombre “ShutdownTime“.

La opción “-p” de reglookup restringe la salida a los elementos a continuación de esta ruta.


$ reglookup -p /ControlSet001/Control/Windows /mnt/windows_mount2/WINDOWS/system32/config/system

Esta información también se puede obtener utilizando una herramienta como "RegRipper". La opción “-p” define el uso de un módulo (plugin) en particular. Para listar todos los plugins disponibles en RegRipper utilizar la opción “-l”. La opción -”-r” define el archivo de registro “hive” o colmena a interpretar.


$ sudo rip.pl -p shutdown -r /mnt/windows_mount2/WINDOWS/system32/config/system

Para la siguiente práctica se realizará el mismo procedimiento, pero aplicado a una imagen forense obtenida desde un disco duro de un Sistema Windows 7.

Se ejecuta la herramienta “reglookup” para consultar la llave de registro pertinente.

A continuación se ejecuta la herramienta RegRipper.

Anotar que se detallan los tiempos LASTWRITE de la llave y del valor "ShutdownTime", los cuales coinciden.

Para convertir el valor en hexadecimal contenido en “ShutdownTime”, utilizar la herramienta “Dcode”. Solo se debe copiar y pegar el valor hexadecimal en el campo de nombre “Value to Decode:” o Valor a Decodificar, seleccionar “Decode Format” o Formato a Decodificar en “Windows: 64 bit Hex Value – Little Endian”, para luego hacer clic en el botón Decode.

Fuentes:

http://projects.sentinelchicken.org/reglookup/
https://code.google.com/p/regripper/wiki/RegRipper
http://www.digital-detective.net/digital-forensic-software/free-tools/

Identificar la Versión de Windows

Body

En la mayoría de investigaciones forenses será necesario encontrar la versión exacta del Sistema Windows sujeto a investigación. Esto a razón de que muchas características y remanentes forenses son específicas de ciertas versiones de Windows, y por lo tanto solo pueden ser adecuadamente visualizadas conociendo la versión del Sistema Operativo. En caso no se conozca esta información se pueden llegar a conclusiones erróneas.

Para identificar la versión de Windows se requiere encontrar y analizar el archivo “system”. El cual es un archivo “hive” o colmena desde donde se puede obtener la información pertinente.

Para la siguiente práctica se utilizará la imagen forense capturada desde un disco duro de un Sistema Windows XP, y la herramienta reglookup.

RegLookup

El proyecto RegLookup está dedicado al análisis directo de los archivos de registro basados en Windows NT. RegLookup proporciona herramientas en línea de comandos, un API C, y un módulo Python para acceder a las estructuras de datos del registro. Este proyecto se enfoca en proporcionar herramientas para los examinadores digitales forenses (aunque es útil para diversos propósitos), e incluye algoritmos para capturar estructuras de datos borradas desde las colmenas del registro.

Se procede a montar el Sistema de Archivos pertinente desde la imagen forense.

Se ejecuta la herramienta reglookup. La opción “-p” especifica un filtro para la ruta. Solo las llaves y valores bajo esta ruta del registro serán mostradas. Para la presente práctica el archivo “hive” o colmena de nombre “software” se ubica en la ruta “/WINDOWS/system32/config/”.


$ reglookup -p "/Microsoft/Windows NT/CurrentVersion" /mnt/windows_mount2/WINDOWS/system32/config/software

La información sobre la versión de Windows se detalla en la llave de registro “CurrentVersion,SZ,5.1”. El valor “5.1” corresponde al Sistema Operativo Windows XP:

Para la siguiente práctica se utilizará otra imagen forense obtenida desde el disco duro de un Sistema Operativo Windows, para identificar la versión del Sistema Operativo Windows.


$ reglookup -p "/Microsoft/Windows NT/CurrentVersion" /mnt/windows_mount1/Windows/System32/config/SOFTWARE

La información expuesta en la llave de registro es “CurrentVersion,SZ,6.1”. El valor “6.1” indica que se trata de un Sistema Windows 7.

En esta llave del registro también se encuentran valores como “CurrentBuild”, “Product Name”, “Product ID”, entre otra información valiosa para un analista forense.

Fuentes:

http://projects.sentinelchicken.org/reglookup/
http://stackoverflow.com/questions/14648796/currentversion-value-in-reg…
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832%28v=vs…
http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions

Extraer Información del Registro de Windows con RegRipper

Body

RegRipper es una herramienta open source escrita en Perl para extraer e interpretar información (llaves, valores y datos) desde el registro de Windows y presentarlos para su análisis.

RegRipper está constituido de dos herramientas básicas, ambas proporcionan capacidades similares. La interfaz de RegRipper permite al analista seleccionar el “hive” o colmena a interpretar, un archivo de salida para los resultados y un perfil (lista de pluings) a ser ejecutados contra la colmena. Cuando el analista ejecuta la herramienta contra una colmena, los resultados irán al archivo que el analista designó. Si el analista selecciona interpretar la colmena “System”, podría también seleccionar enviar los resultados a “system.txt”. La interfaz de la herramienta también crea un registro de su actividad en el mismo directorio del archivo de salida, utilizando el mismo nombre de archivo pero utilizando la extensión .log (por ejemplo, si la salida es escrita a system.txt, el archivo de registro será escrito a system.log)

RegRipper también incluye una herramienta en línea de comando (CLI) llamada "rip". Rip puede ser apuntada contra cualquier colmena y puede ejecutarse contra un perfil (una lista de plugins) o un plugin individual contra una colmena, con los resultados siendo enviados a STDOUT. Rip puede ser incluida en archivos por lotes, utilizando los operadores de redirección para enviar la salida hacia un archivo. Rip no escribe un archivo de registro de su actividad.

RegRipper es similar a herramientas como Nessus, pues la aplicación por si misma es sencillamente un motor que ejecuta plugins. Los plugins son scripts individuales en Perl, los cuales realizan una función específica. Los plugins pueden localizar llaves específicas, y listar todas las subllaves, como también valores y datos, o pueden localizar valores específicos. Los plugins son extremadamente valiosos en el sentido de que han sido escritos para interpretar datos de manera que sean útiles para analistas individuales.

Para la siguiente práctica se utilizará el “hive” o colmena “software” extraída desde la imagen forense de un disco duro de un sistema operativo Windows XP.

Se utiliza Autopsy 3 para extraer el archivo "software" a una carpeta destino.

Se ejecuta RegRipper con privilegios de “Administrador”.

Hacer clic en el botón de nombre “Browse” o Navegar, en el campo de nombre “Hive File” o Archivo Colmena, para seleccionar el archivo colmena a analizar.

Hacer clic en el botón de nombre “Browse” o Navegar, en el campo de nombre “Report File” o Archivo de Reporte, para seleccionar el archivo donde se generará el reporte.

En el menú desplegable de nombre “Profile” o Perfil seleccionar el perfil pertinente a la colmena seleccionada. Para el caso de la presente práctica se selecciona la opción “software”, con lo cual se ejecutará una lista de plugins de RegRipper contra esta colmena.

Hacer clic en el botón de nombre “Rip it” para iniciar la extracción de la información desde la colmena "software".

Finalizado el procedimiento, los resultados se encontrarán el archivo de nombre “software.txt”.

Fuentes:

http://regripper.wordpress.com/
https://code.google.com/p/regripper/wiki/RegRipper
http://www.sleuthkit.org/autopsy/

Forense al Archivo de Acceso Directo en Windows

Body

Un acceso directo permite al usuario encontrar un archivo o recurso localizado en un directorio o carpeta diferente del lugar donde el acceso directo está localizado. Un archivo de Acceso Directo o de enlace contiene la ruta del archivo y el tipo de almacenamiento sobre el cual existe, como un disco curo, unidad de red, DVD, etc. También contiene los tiempos MAC del archivo como también los tiempos MAC propios que muestran la fecha de creación del archivo.

Para la presente práctica se utilizará la imagen forense obtenida desde un disco duro obtenido utilizado en un Sistema Operativo Windows XP.

Se procede a montar el sistema de archivos pertinente desde la imagen forense, para luego ingresar a una de la carpetas contenedoras de archivos de acceso directo.

Los archivos de acceso directo en Windows tienen la extensión .LNK, la cual en esencia es un archivo de metadatos específico de las plataformas Windows y es interpretada por el shell de Windows. El formato del archivo indica que estos archivos contienen una firma específica, 04C (4c 00 00 00) en el “offset”o desplazamiento 0 dentro del archivo o flujo. Más adelante el GUID - Globally Unique Identifier - (CLSID) – Class Identifier (Contenido en el registro HKEY_CLASSES_ROOT\CLSID) almacenado en el desplazamiento 4 hace un buen identificador. El GUID en los COM (Component Object Model) de Microsoft es utilizado para diferenciar de manera única diferentes interfaces de componentes para software.

Se utiliza la herramienta xxd para realizar un volcado hexadecimal del archivo a analizar.

Metadatos

Contiene una instantánea de las fechas y marcas de tiempo del objetivo antes de su última apertura. El objetivo puede contener diversa información, como la lista de ítemes shell del objetivo, el tamaño del objetivo cuando fue por última vez accedido, el número de serie del volumen donde el objetivo fue almacenado; esto es útil para relacionar una unidad USB u otro medio de extraíble con un usuario o sistema particular; el nombre del volumen compartido en red, atributos del objetivo; como solo-lectura, oculto, sistema, etiqueta del volumen, cifrado, comprimido, offline entre otros. También puede contener información distribuida de rastreo del enlace; esto permite rastrear los objetivos de los enlaces, de tal manera que el acceso directo puede ser actualizado silenciosamente si el objetivo se mueve a otra unidad de almacenamiento.

En los resultados obtenidos se detallan la fecha y hora de creación, modificación y accesso para el archivo, el tamaño del archivo en bytes, las banderas de atributos para el archivo, la ruta en la red y el directorio de trabajo.

Entender el formato del archivo LNK y los metadatos contenidos en este tipo de archivos son extremadamente útiles para un analista. Dado que en el escenario donde se intente recrear el manejo de un documento por parte de un individuo, el no analizar adecuadamente los archivos LNK implicarían perder evidencia valiosa.

Fuentes:

http://msdn.microsoft.com/en-us/library/dd871305.aspx
n.wikipedia.org/wiki/Globally_unique_identifier
http://www.forensicswiki.org/wiki/LNK
https://code.google.com/p/liblnk/
http://en.wikipedia.org/wiki/File_shortcut

Forense Manual al Archivo de Paginación en Windows

Body

La RAM (Random-Access Memory) o Memoria de Acceso Aleatorio es un recurso limitado, mientras que para propósitos prácticos, la memoria virtual es ilimitada. Pueden existir varios procesos, y cada proceso tener su propio espacio de 2GB en memoria virtual. Cuando la memoria que está siendo utilizada por todos los procesos existentes excede la RAM disponible, el sistema operativo mueve páginas (piezas de 4-KB) de uno o más espacios de direcciones virtuales al disco duro de la computadora. Esto libera la estructura de la RAM para otros usuarios. En los sistemas Windows, estas páginas “paginadas fuera” son almacenada en uno o más archivos de nombre “Pagefile.sys” ubicadas en la raíz de una partición (%SystemDrive%\pagefile.sys).

Debido a que las ubicaciones de almacenamiento dentro del archivo de paginación no son necesariamente secuenciales, es improbable encontrar páginas secuenciales en el. Sin embargo es posible encontrar datos en trozos más pequeños o iguales a 4KB, esto es lo máximo que es examinar puede esperar encontrar.

Uno de los métodos más productivos para realizar el análisis a los archivos de paginación es realizar una búsqueda de cadenas. Es posible extraer archivos, pero anotar que es improbable encontrar algo mayor a 4KB.

Para siguiente práctica se utilizará la imagen forense del disco duro de un Sistema Windows 7 y SIFT.

Luego de realizar correctamente el montado de la imagen forense, se lista el directorio y el archivo pagefile.sys.

Se procede a extraer las cadenas desde el archivo “pagefile.sys” utilizando el comando “strings”. La opción “-a” define no solo el escaneo a las secciones inicializadas y cargadas de archivos objeto sino todos los archivos. La opción “-td” imprime el desplazamiento dentro del archivo antes de cada linea, "d" es para decimal, "o" es para octal y "x" es para hexadecimal. La opción “-e” permite definir la codificación de caracteres de la cadena encontrada, "l" define Little Endian de 16 bits.

$ strings -a -td -el pagefile.sys > /tmp/pagefile.sys.strings

Los resultados obtenidos por el proceso de extracción de cadenas será almacenados en el archivo de nombre “pagefile.sys.strings”. Anotar que el tamaño de este archivo es de 22M, mientras que el tamaño del archivo “pagefile.sys” es de 1GB. Se visualizan las primeras lineas de este archivo.

$ ls -lh /tmp/pagefile.sys.strings
$ head /tmp/pagefile.sys.strings

El número expuesto en el lado izquierdo de cada linea corresponde al “offset” o desplazamiento. Utilizando este valioso dato es factible utilizar las herramientas “dd” y “xxd” para realizar un volcado hexadecimal, teniendo como punto de referencia este “offset” o desplazamiento.

La opción “if=” del comando "dd" define el archivo a leer o la entrada. La opción “bs=” lee y escribe un número definido de bytes a la vez. Y la opción “skip=” salta un número definido de bloques desde el inicio de la entrada. La salida resultante del comando "dd" se “entuba” como entrada para la herramienta "xxd", la cual permite realizar un volcado hexadecimal de esta entrada. Adicionalmente se utiliza el comando “less” para navegar a través del resultado.


$ dd if=pagefile.sys bs=1 skip=6476 | xxd | less

Entender el propósito del archivo “pagefile.sys” es importante, esto debido a que muchas búsquedas realizadas en este archivo pueden generar algún resultado. El ser capaz de visualizar estos resultados y comprender como podrían haber sido creados ayuda a determinar si este resultado es algo que viene del acceso a un archivo o si este archivo se ha cargado en la memoria.

Fuentes:

http://www.forensicswiki.org/wiki/Pagefile.sys
http://blog.roberthaist.com/2013/12/restoring-windows-cmd-sessions-from…
http://support.microsoft.com/kb/2160852
http://en.wikipedia.org/wiki/Random-access_memory

Forense a la Papelera de Reciclaje en Windows XP

Body

Cuando un usuario borra un archivo en el explorador de Windows o “My Computer”, el archivo aparece en la Papelera de Reciclaje. Este archivo permanece allí hasta vaciar la Papelera de Reciclaje o restaurar el archivo.

Los archivos antiguos también son eliminados de la Papelera de Reciclaje cuando se borran archivos más nuevos, y la Papelera de Reciclaje excede el tamaño máximo asignado en las propiedades de esta.

Para la siguiente práctica se utilizará la imagen forense obtenida desde un disco duro en un Sistema Windows XP.

Se obtiene la disposición de las particiones de la imagen forense, para luego proceder con el montaje del sistema de archivos.

$ mmls SCHARDT.dd
$ sudo mount -o ro,loop,show_sys_files,streams_interface=windows,offset=32256 SCHARDT.dd /mnt/windows_mount2

Cada disco duro contiene una carpeta oculta de nombre “RECYCLER”. Esta carpeta contiene los archivos borrados en el Explorador de Windows, o “My Computer” o en programas basados en Windows.

Cuando se borra un archivo, la ruta completa y el nombre del archivo es almacenada en un archivo oculto de nombre “INFO2”. En esta carpeta el archivo borrado es renombrado, utilizando la siguiente sintaxis.

D[Letra de la Unidad Original del Archivo][#].[Extensión Original]

Se ingresa al directorio “RECLYLER\%SID%” de la imagen forense montada.

Al listar el directorio se encuentran cuatro archivo con extensión “.exe”. Con esta información se infiere el borrado de cuatro archivos almacenados en la unidad “C:”.

Ahora se procede a realizar el análisis al archivo “INFO2”. Este análisis se puede realizar con un editor hexadecimal conocimiento la estructura del archivo “INFO2”.

Los bytes 13 y 14 corresponden al tamaño del registro del archivo 2030h, pero como está en formato "Little Endian" se lee 0320h, lo cual equivale a 800 en decimal.

Desde el byte 17 hasta el 816 inicia el primer registro. El registro inicia con 4 Bytes a la izquierda de la información sobre la unidad, ruta, y nombre del archivo: C:\Documents and Settings\Mr. Evil\Desktop\lalsetup250.exe. Cada Registro es formateado en representaciones ASCII y UNICODE para la información original de la ubicación del archivo o carpeta borrada dentro de cada registro.

Los bytes desde el 265 al 268: 01000000h o 00000001h representa el número del registro, que en decimal es el número 1. Desde aquí en adelante las ubicaciones se calculan desde el inicio del registro, no desde el inicio del archivo INFO2.

Los bytes desde el 269 al 272: 02000000h o 00000002h representa la Unidad, 02 = C, 03 = D, 04 = E, etc. Para este caso, el valor 02h indica la unidad “C:”.

Los bytes desde el 273 al 280: 5008E525BF8AC401h o 01C48ABF25E50850h representa el tiempo de borrado del archivo en formato FILETIME. El cual es Wed Aug 25 16:18:25 2004.

Los bytes desde el 281 al 284: 00F62000h o 0020F600h representa el tamaño físico del archivo borrado, en decimal es 2160128.

Para corroborar los resultados obtenidos de manera manual se utilizará la herramienta Rifiuti. Rifiuti permite examinar el contenido del archivo INFO2 en una Papelera de Reciclaje. Esta información será interpretada y el resultado presentado en forma de campos delimitados, para poder ser visualizados con un programa gestor de hojas de calculo.

Utilizando Wine se procede a ejecutar Rifiuti dentro de la máquina virtual SIFT

$ wine rifiuti.exe INFO2

Fuentes:

http://support.microsoft.com/kb/136517
http://www.csisite.net/INFO2.htm
http://www.csisite.net/downloads/INFO2.pdf
http://www.mcafee.com/us/downloads/free-tools/rifiuti.aspx
http://www.winehq.org/

Recuperar Archivos Manualmente con The Sleuth Kit - TSK

Body

The Sleuth Kit o TSK es una librería y una colección de herramientas en línea de comandos, las cuales permiten investigar imágenes de discos. La funcionalidad vital de TSK permite analizar volúmenes y datos desde sistemas de archivos.

Para la siguiente práctica se utilizará SIFT y una unidad USB (Memory Stick) con un sistema de archivos NTFS, desde el cual se extraerá o recuperará un archivo borrado.

Se utiliza el la herramienta "mmls" para mostrar la disposición de las particiones, lo cual incluye tablas de particiones y etiquetas del disco. El sector donde inicia la partición donde reside el sistema de archivos a utilizar en la presente práctica, es el 8064.

$ sudo mmls /dev/sdc

fls

fls lista los nombres de archivos y directorios en una imagen. Además puede mostrar los nombres de los archivos recientemente borrados para un directorio con un inodo definido. Si no se proporciona el argumento del inodo, se utilizará el valor del inodo para el directorio raíz.

La opción “-f” define el tipo del sistema de archivos. Para visualizar la lista completa de los tipos de sistemas de archivos soportados utilizar “-f list”. La opción “-o” define el “offset” o el desplazamiento hasta el sector donde inicia el sistema de archivos en la imagen. Y la opción “-d” muestra únicamente las entradas borradas.


$ sudo fls -f ntfs -o 8064 /dev/sdc
$ sudo fls -f ntfs -d -o 8064 /dev/sdc

Identificado el archivo a recuperar se utilizará la herramienta “istat”.

istat
istat muestra el uid (User ID), gid (Group ID), modo, tamaño, número de enlace, tiempos de modificación, creación y cambio, además de todas las unidades del disco que una estructura tiene asignada.


$ sudo istat -f ntfs -o 8064 /dev/sdc 35-128-1

A continuación se expone más información sobre el valor "35-128-1" definido al final del comando istat.

NTFS es diferente en diseño a sistemas de archivos Unix y las estructuras de datos son referenciadas de manera diferente. Estas tienen típicamente la forma de A-B-C. Para la presente práctica el archivo borrado tiene asignado el valor “35-128-1”. El valor “35” es la dirección del archivo en la MFT (Master File Table). El valor “128” es el tipo de atributo. En la mayoría de casos, el atributo de dato tiene el tipo 128, así es que esto es encontrado comúnmente. Pero si se desea visualizar el atributo de nombre de archivo, se especificará este tipo y se visualizará el contenido requerido. El valor final “1” es el ID. Cada atributo tiene un valor ID, así de existir varios atributos con el mismo tipo, un investigador puede especificar el ID.

icat

icat abre la imagen requerida y copia el archivo con un número de inodo definido a la salida estándar. De esta manera es factible realizar este procedimiento de “extracción” para recuperar un archivo borrado.

sudo icat -f ntfs -o 8064 /dev/sdc 35-128-1 > /tmp/CV_Alonso_Caballero.pdf

Realizada la recuperación del archivo borrado, se debe utilizar el programa pertinente para su visualización. Para el caso de la presente práctica se ha recuperado un archivo en formato PDF.

La utilización de las herramientas en línea de comandos que constituyen “The Sleuth Kit” – TSK, ayudan al investigador a tener un mayor control sobre los procedimientos requeridos para su análisis forense.

Fuentes:

http://www.sleuthkit.org/sleuthkit/
http://wiki.sleuthkit.org/index.php?title=NTFS_Implementation_Notes
http://www.sleuthkit.org/informer/sleuthkit-informer-14.txt
http://www.reydes.com/d/?q=Recuperar_Archivos_Manualmente_con_Autopsy_2

Recuperar Archivos Manualmente con Autopsy 2

Body

Una de las tareas más comunes a realizar durante una investigación forense implica encontrar y recuperar archivos que han sido borrados o eliminados del sistema. Realizar el proceso de recuperación de archivos con herramientas automáticas no es una tarea complicada, dependiendo de factores como el momento de borrado del archivo, y el lapso de tiempo transcurrido hasta el inicio de la recuperación.

Cuando un archivo es “borrado” o eliminado en un sistema Windows, estos son marcados como borrados o inactivos por el sistema de archivos y ya no pueden ser accedidos por el usuario o el sistema operativo, pero estos siguen siendo referenciados mediante la FAT o MFT.

Cada sistema de archivos marca el archivo borrado de diferente manera. Para el caso de sistemas de archivos FAT , el primer caracter del nombre del archivo listado en un directorio es marcado con el caracter especial en hexadecimal “E5”. Estos caracteres le indican al sistema operativo la inactividad de uso del archivo y que los clusters ocupados están disponibles para ser reutilizados. En el caso del sistema de archivos NTFS, el sistema operativo modifica una entrada en la MFT para reflejar el borrado. Específicamente, cuando se borra un archivo, el sistema operativo limpia la bandera IN_USE para la entrada del archivo en el MFT.

Para la siguiente práctica se utilizará Autopsy 2 en SIFT, y un sistema de archivos NTFS.

Creado el nuevo caso en Autopsy 2 hacer clic en la pestaña de nombre “File Analysis” o Análisis de Archivos.

Es bastante sencillo reconocer los archivos eliminados, dado que en la columna izquierda de nombre “Del” existe un “check”. También resalta el color rojo de los datos expuestos en todas las columnas de esta vista.

En Autopsy 2 se utilizan dos diferentes colores para los archivos borrados. La diferencia se basa en el estado de las estructuras de datos en el archivo. Una entrada en rojo brillante significa que la estructura de dato para el nombre del archivo no está asignada y la estructura de meta datos a la que esta apunta también está sin asignar. Esto es lo que se puede esperar de un archivo borrado recientemente. Esto significa que se puede confiar en los datos visualizados, siempre y cuando lo estructura de meta datos no haya sido asignada y desasignada desde su borrado. Si esta es un color rojo obscuro, entonces la estructura de meta datos ha sido reasignada y es muy probable que los datos no sean precisos.

Para visualizar los metadatos del archivo, hacer clic en el número respectivo ubicado en la columna de nombre “Meta”. Las estructuras para los nombres de archivos contienen un puntero a una estructura de metadatos que describe el archivo. Esta columna contiene las direcciones de estas estructuras. Para el caso de esta práctica el valor es “35-128-1”. Aquí se presenta información como el hash MD5 y SHA-1 del contenido, Valores de la Cabecera de Entrada en MFT, Valores de Atributos $STANDART_INFORMATION, Valores de Atributos $FILE_NAME, y los Clusters donde residen los datos del archivo.

Dado que en la presente práctica se realizará la recuperación manual de un archivo borrado. Se requiere identificar los clusters donde se almacenan los datos para este archivo. Cual es el número de Cluster de inicio y cuantos Clusters a partir de este constituyen el archivo a recuperar. Con estos datos se procede a hacer clic en el pestaña de nombre “Data Unit” o Unidad de Dato para luego ingresar estos valores en los campos ubicados en el panel izquierdo. En el campo “Cluster Number" o Número de Cluster, el cluster de inicio, y en el campo “Number of Clusters” o Número de Clusters, el número de Clusters a extraer.

Luego hacer clic en el botón de nombre “View” o Visualizar. En la parte intermedia se presenta el contenido del archivo borrado.

Para extraer todos los datos contenidos en el rango de clusters definidos, hacer clic en el botón de nombre “Export Contents” o Exportar Contenido, para luego hacer clic en el botón “Save File” o Guardar Archivo, en la nueva ventana presentada.

Se cambia el nombre asignado por Autopsy 2 para el archivo borrado, con el nombre obtenido desde la vista “File Analysis” o Análisis de Archivos.

El archivo borrado ha sido recuperado correctamente y puede ser visualizado con el programa adecuado. Para el caso de esta práctica se ha utilizado un archivo en formato PDF.

Cuando se habla de realizar la recuperación de archivos borrados, esto se refiere a tomar un archivo que fue marcado como borrado o inactivo en el sistema de archivos, para luego exportar los datos hacia otra ubicación y proceder con un análisis posterior.

Fuentes:

http://www.forensicswiki.org/wiki/File_Carving
http://technet.microsoft.com/en-us/library/cc781134%28WS.10%29.aspx
http://www.sleuthkit.org/autopsy/
http://www.reydes.com/d/?q=Entendiendo_NTFS
http://www.reydes.com/d/?q=node/2

Entendiendo NTFS

Body

NTFS, el cual es un acrónimo para "New Technology File System" o Sistema de Archivos de Nueva Tecnología, es uno de los más recientes sistemas de archivos soportados por sistemas Windows. Es un sistema de archivos de alto desempeño que se repara a si mismo. Soporta diversas características avanzadas como seguridad a nivel de archivos, compresión, y auditoría.

NTFS proporciona seguridad de datos, pues tiene la capacidad de cifrar y descifrar datos, archivos y carpetas. NTFS utiliza un conjunto de caracteres Unicode de 16 bits para los archivos y carpetas. Es un sistema tolerante a fallos. NTFS puede examinar el archivo de registros (logs) y utilizarlo para restaurar el disco hacia un estado consistente con una mínima perdida de datos.

Los volúmenes NTFS también contienen una “Master File Table” (MFT) o Tabla Maestra de Archivos. La cual contiene un registro para cada archivo y carpeta sobre el volumen. Los primeros 16 bytes de la tabla están reservadas para los metadatos utilizados en implementar y mantener la estructura del sistema de archivos. Este metadato es almacenado en un conjunto de archivos del sistema.

A continuación se detalla la descripción para cada uno de los archivo mostrados.

  • $MFT – Este es el archivo de registro base para un volumen NTFS
  • $MftMirr – Los primeros cuatro registros del MFT son almacenados aquí para propósitos de restauración.
  • $LogFile – Las transacciones previas son listadas y almacenadas para propósitos de restauración.
  • $Volumen – Información relacionada al volumen es almacenada en esta tabla.
  • $AttrDef – Esta lista contiene los atributos de los archivos.
  • $ - Esta es la carpeta Raíz.
  • $Bitmap – Esta es una lista que muestra la disponibilidad y uso de los clusters.
  • $Boot – Esto es utilizado para montar el volumen NTFS durante el proceso de “bootstrap”.
  • $BadClus – Esto contiene una lista de clusters que tienen errores irrecuperables.
  • $Secure – Esta lista de control de acceso tiene descriptores de seguridad únicas para los archivos sobre el volumen.
  • $Upcase – Esto es utilizado para convertir todos los caracteres en mayúscula a caracteres Unicode minúscula.
  • $Extend – Extensiones opcionales como cuotas e identificadores de objetivos son listados aquí.

Sector de Arranque de una partición NTFS

Cuando se formatea un volumen con NTFS, el programa de formato asigna los primeros 16 sectores para el sector de arranque y el código “bootstrap”. “Bootstraping” usualmente se refiere al inicio de un proceso auto sostenible que se supone proceda sin ingresos externos. En computadoras el término se refiere al proceso de cargar el software básico en la memoria de la computadora después de la puesta en funcionamiento o reinicio, especialmente el sistema operativo el cual luego puede cargar otro software necesario.

Tabla de Archivo Maestro (MFT) NTFS

El sistema de archivos NTFS contiene un único archivo llamado Tabla Maestra de Archivos, o (MFT). Los volúmenes NTFS tienen al menos una entrada almacenada en el MFT.

La información relacionada a los atributos como tamaño, marcas de tiempo y fecha, además de permisos son guardados ya sea dentro de entradas MFT o en memoria asignada fuera del MFT que es descrita por entradas MFT. Cuando el número de archivos sobre el volumen NTFS se incrementa, el tamaño del MFT se incrementa. Cuando un archivo es borrado desde un volumen NTFS, los valores en el MFT son marcados como libres y este espacio puede ser reutilizado.

Las utilidades que desfragmentan volúmenes NTFS sobre sistemas Windows no pueden mover entradas MFT, y como la desfragmentación innecesaria del MFT descompone el desempeño del sistema de archivos, NTFS reserva espacio para que el MFT mantenga su desempeño conforme se expanda.

Atributos NTFS

Los atributos de los archivos almacenados dentro del registro MFT son llamados atributos residentes, y aquellos que quedan fuera del MFT son atributos no residentes. Si los atributos de los datos son pequeños en tamaño, entonces pueden ser almacenados dentro del MFT sin necesidad de espacio de almacenamiento adicional sobre el volumen NTFS. Pero si los atributos no entran en el MFT, serán movidos fuera del registro MFT como atributos no residentes.

La siguiente información detalla los tipos de atributos de archivos.

  • Standard information (Información Estándar) – Esta lista la información relacionada al dato de marca de tiempo e información de cuenta de enlace.
  • Attribute list (Lista de Atributos) – Esta es una lista de atributos que están en el MFT. También tiene un lista de atributos no residentes.
  • File name (Nombre de archivo) – El nombre de archivo es almacenado aquí y puede ser un nombre corto o largo. Almacena hasta 255 bytes.
  • Security descriptor (Descriptor de Seguridad) – Permisos de acceso y propietario para un archivo son listados aquí.
  • Data (Dato) – Los datos de archivo son almacenados aquí, y varios atributos de datos son permitidos para cada archivo.
  • Object ID (Identificador de Objeto) – El identificador único que identifica el volumen es listado aquí.
  • Logged tool stream (Herramienta de flujo de registros) Este atributo es utilizado por el servicio del sistema de archivos cifrado que es utilizado en Windows 2000 y Windows XP.
  • Reparse point (Punto de reinterpretación) – Esta lista los puntos de montaje del volumen para filtros de unidades de sistemas de archivos instalables.
  • Index root (Indice Raíz) – Esto es para el uso de carpetas y archivos.
  • Index allocation (Indice de Asignación) – Esto es para el uso de carpetas y archivos.
  • Bitmap (Mapa de Bits) – Esto es para el uso de carpetas y archivos.
  • Volume information (Información del volumen) – Esto es donde el número de versión del volumen es listado.
  • Volume name (Nombre del volume) – La etiqueta del volumen es listada aquí.

NTFS también incluye conceptos como Flujos de Datos NTFS (NTFS Data Streams), Archivos Comprimidos NTFS, y Sistema de Archivos NTFS Cifrados.

Fuentes:

http://technet.microsoft.com/en-us/library/cc781134%28WS.10%29.aspx
http://en.wikipedia.org/wiki/Bootstrapping
http://www.forensicswiki.org/wiki/New_Technology_File_System_%28NTFS%29