Análisis forense en Windows. Búsqueda selectiva de tipos de archivos en imágenes forenses, búsqueda, extracción y análisis a través de inodos

¡Muy buenas a todos! Después de los anteriores posts, voy a pasar a mostrar otras de las muchas y amplias herramientas que nos ofrece la maravillosa suite Sleuthkit.

Vamos a buscar dentro de nuestra imagen clonada de un windows 7 pro de 64 bits una serie de archivos que nuestro cliente desea encontrar. Para ello utilizaremos la herramienta fls para realizar una búsqueda de un tipo en concreto de archivos (en este caso serán archivos con extensión .doc), aunque podrían ser de cualquier otro tipo como txt, xls, docx, mp3…etc. Vamos a ello:

mmls

Una vez tenemos el offset de windows encontrado  con la estupenda herramienta mmls ( offset en la imagen marcado de azul), ahora vamos a lanzar una búsqueda sobre la  imagen:

busqueda-doc

Donde fls es la herramienta -r es búsqueda recursiva, -F le indica que buscamos un archivo,  -o 0004202496 el ya clásico offset de windows y después la ruta de la imagen. Hasta aquí nos sale una fuente de información enorme, para filtrarla lanzamos esa información contra un pipe (|) y le pasamos un grep con la extensión de archivo que queremos encontrar, en este caso un .doc.

Sigue siendo mucha información para buscar por terminal, de modo que volvemos a lanzar la orden anterior y redirigimos la salida hacia un archivo de texto, que en un alarde de originalidad, llamaremos doc.txt.

texto_redirigido

Ahora lo dejamos trabajar y cuando termina, abrimos en archivo con cualquier editor de texto, posteriormente con ese mismo editor podemos buscar con el parámetro que deseemos o, si se desea, podemos pasar ese archivo de texto por la herramienta mactime para pasarlo a formato .csv y analizarlo  usando Excel (por ofrecer otra posibilidad).

Como ejemplo, podemos buscar un documento que se llame Abreviado.doc, podemos usar el Bloc de notas, podemos usar Excel, o si somos muy pro y queremos empezar a despegarnos de las interfaces gráficas que tanto mal han hecho podemos escribir…

grep

Y ahí lo tenemos. Ya tenemos el archivo localizado, ahora lo vamos a extraer, ¿cómo? Muy sencillo de nuevo con la herramienta icat,  tenemos localizado el inodo del archivo, en este ejemplo 103679, ya tenemos toda la información que necesitamos, vamos a ello.

extración

Y ya está extraído.

Extraído

Por temas de privacidad y porque realmente el contenido en este caso es lo de menos, no se va a mostrar su contenido, pero se puede apreciar claramente que el archivo está y tiene su tamaño, pequeño es cierto, pero a efectos de prueba nos sirve perfectamente.

Localizar archivos borrados es un juego de niños con esta herramienta, tan fácil como hacerlo así:

borrados

Podemos lanzar un grep para filtrar la salida buscando el  tipo de archivo:

borrados_filtrado

Y así tendríamos todos los archivos .doc borrados, así de simple, con añadir -d nos buscaría los archivos borrados.

Y retomando el archivo extraído…

Una vez esta extraído, podemos seguir extrayendo información de  el. Podríamos usar exiftool una vez extraído, pero si nos interesara buscar información antes de extraerlo, una vez hemos focalizado el “objetivo”, lo podemos analizar antes para intentar ver si es el que  nos interesa. ¿De qué manera? Con la herramienta istat. Veamos

istat

En esta orden istat es la herramienta, -i raw es el tipo de imagen, -f  le indicamos que el file system es ntfs, -o …(a estas alturas explicar esto ya como que sobra ¿no crees?, le añadimos la ruta de la imagen y al final escribimos el inodo del archivo  (que aquí es 103678). Y esto es todo lo que muestra

 

istat-output

Increíble toda la información que nos muestra, cuando se ha creado, cuando se ha accedido, los inodos que lo componen, su entrada en el MFT… Una enorme cantidad de información que podemos aprovechar.

Podemos usar esta poderosa herramienta para hacer búsquedas por fechas de acceso, por fechas de creación, por fechas de modificación… Resumiendo, múltiples posibilidades que nos pueden permitir que, con las herramientas de esta maravillosa suite, un poco de imaginación y unas líneas de scripting podamos realizar poderosas investigaciones con muy poco esfuerzo.

¡Ahora a practicar!

Presentación y primer post

Con un cierto retraso por motivos de fuerza mayor y abrumado ante la responsabilidad y confianza que mi “hermano” y gran amigo Paco ha depositado en mi, comienzo este nuevo proyecto.

¿Quién soy? Mi nombre es Diego (@itzala74) en twitter y me dedico a labores de análisis forense  y auditorias de seguridad como perito informático. Compagino ambas labores como buenamente mejor puedo. Amante de las nuevas tecnologías y del mundo Unix en particular (aunque sin despreciar otras tecnologías, a fin de cuentas son herramientas). Maquero y amante de Arch Linux. Estudiante cuando el tiempo (¡ese escaso bien!) lo permite, de python y reciente descubridor de toda la potencia de Powershell (aunque donde esté mi bash…).

¿Qué voy a hacer por aquí? Pues intentar compartir mis escasos conocimientos con quien quiera leerme e intentar mejorar este mundo para todos. Iré enseñando poco a poco técnicas de investigación  forense, algo de hacking y hardering de sistemas en general, aunque de eso otro amigo que espero se pase en breve por aquí sabe mucho mas que yo… En cualquier caso, espero no aburrir demasiado y poder aportar mi granito de arena.

 

¿De que vamos a hablar hoy? Pues hoy voy a empezar con algo suave y fácil que nos dará pie a posteriores posts para ir profundizando sobre ello.

Hoy voy a hablar de la Tabla Maestra de Archivos o $MFT . ¿Qué es la MFT?

La tabla maestra de archivos es el primer archivo de un volumen de tipo NTFS (New Technology File System o sistema de archivos que viene usándose en Windows NT desde las versiones Windows 2000). Básicamente, constituye un directorio centralizado de todos los ficheros del disco y de si misma, haciendo referencia continuamente a ellos mientras el sistema localiza información, la lee y la escribe en el disco.

La tabla maestra de archivos (o $MFT) es la que contiene todos y cada uno de los archivos que componen un volumen,  es decir, cuando el sistema operativo consulta el contenido de un archivo, se dirige a la $MFT para obtener información del mismo, como por ejemplo tamaño, propiedades, atributos, localización, nombres de archivos… etc. La $MFT es, para que nos hagamos una idea mas visual,  como una base de datos que almacena todo la información que necesita a la hora de acceder a un archivo.

Captura de pantalla 2016-05-16 a las 21.13.42

Esta es una representación (muy simplificada eso si) de un típico volumen Windows. Se aprecia claramente el lugar que ocupa y como mas o menos, por la mitad del volumen hay una copia de esa tabla. Quiero indicar también que la  $MFT puede estar en diferentes zonas del disco, es interesante también  indicar que por cada archivo o carpeta crea un registro de 1kbyte, 1024 bytes. Tener esto en cuenta, es especialmente útil para cuando se ha formateado un dispositivo  o la $MFT está dañada.

Todo esto, ademas es muy interesante y práctico, ya que en caso de corrupción o daño de la primera tabla, podremos reconstruirla con la información que obtengamos de la segunda copia (o mirror, como la denomina Microsoft).

También es una fuente de información muy importante, usada para investigaciones forenses donde se usa para extraer todo tipo de evidencias. Cuando se esta realizando una investigación, uno de los pasos para encontrar pruebas digitales, es realizar búsquedas por palabras claves y revisando los resultados muchas veces se encuentran en estas áreas o carpetas recuperadas. Podemos averiguar saber fechas de encendido y apagado de equipos, creación, modificación y destrucción de archivos, instalación de programas, desinstalación… Resumiendo, un timeline muy completo de toda la vida de ese equipo desde que se instaló windows con   mucha información que como perito investigador podremos aprovechar.

Después de esta pequeña introducción, que nos servirá como base para entender lo que vendrá después así como su importancia, vamos a centrarnos en las técnicas forenses en si mismas.

Una práctica que quiero intentar inculcar  desde el principio, es la de no  usar herramientas que nos oculten el proceso al personal técnico  e intentar usar herramientas mas manuales, el motivo es muy simple, las herramientas automatizan mucho trabajo, pero corremos el riesgo de perder de vista lo que corre por debajo y eso es un lujo que como investigadores no podemos permitirnos.

En este caso, voy a mostrar como extraer y parsear la $MFT desde nuestra copia del disco clonado, usaremos para ello la suite Sleuthkit. ¿Qués es The Sleuthkit?

Es una colección de herramientas de análisis forense de volumen de sistema y archivos. Las herramientas del Sistema de Archivos  nos permiten examinar el sistema de archivos de un equipo a investigar, de una manera no intrusiva y altamente eficaz. Las herramientas de volumen de sistema permiten examinar la disposición de los discos y otros medios. The Sleuth Kit soporta particiones DOS, particiones BSD (etiquetas de disco), particiones Mac, partes Sun (índice de volumenes)y disco GPT.  Enlace a la página oficial aqui 

Captura de pantalla 2016-05-16 a las 23.01.51

PARSEADO MFT CON SLEUTHKIT

Partimos de una imagen forense de un ordenador, en esta demo una imagen de un ordenador con windows 7 pro de 64 bits. Podemos hacer las adquisición usando dd, dfcldd, dc3dd, guymager, la herramienta con la que os sintáis mas a gusto… No es la intención de este post (de momento) profundizar en ese tema, mas adelante ya lo tocaremos ya que también es importante. De momento vamos a por lo fácil

Vamos a usar una de las herramientas de esta competa suite, la utilidad fls y mmls

Se usa la utilidad mmls para averiguar entre otras cosas el offset de inicio de windows, tan fácil como esto…

Captura de pantalla 2016-05-16 a las 23.14.10

La zona marcada en azul es el offset de del disco duro.

Después se parsea el disco duro y se pasa todo a un archivo de texto con formato .txt

Captura de pantalla 2016-05-16 a las 23.07.50

fls -r -m “/” -i raw -o 0004202496 /Volumes/WD/windows7.001 > body.txt

Donde -r es para que sea búsqueda recursiva, -m “/” para que busque desde la raiz, -i raw es para indicar que el archivo a analizar es una imagen en formato raw, -o para indicarle el offset de inicio del volumen de windows  (este ya averiguado antes), a continuación indicamos la ruta de la imagen y posteriormente lo redireccionamos a un archivo de texto (en este caso body.txt)

Después tenemos un archivo de texto de un cierto tamaño…

Captura de pantalla 2016-05-16 a las 23.21.06

Para terminar usamos la utilidad mactime para convertir ese archivo de texto a un archivo con extensión .csv que podremos ver luego con Excel por ejemplo.

Captura de pantalla 2016-05-16 a las 23.23.13

 

Captura de pantalla 2016-05-16 a las 23.24.12

¡Voilá! Aquí está el resultado. Aquí tenemos un timeline de toda la vida de ese ordenador y podemos importarlo a Excel y empezar a analizarlo poco a poco.

Abrimos Excel => Importar Datos desde texto => Seleccionamos el archivo .csv y…

Captura de pantalla 2016-05-16 a las 23.28.39

Captura de pantalla 2016-05-16 a las 23.28.50
Captura de pantalla 2016-05-16 a las 23.28.58

Y como resultado final…

Captura de pantalla 2016-05-16 a las 23.36.02Aquí tenemos un timeline donde podemos buscar por fechas, archivos, podemos usar splunk   para hacer búsquedas por parámetros, resumiendo un sinfín de posibilidades.

 

De momento lo voy a dejar aquí, por hoy ya basta, en próximos posts veremos como extraer la $MFT con otra utilidad de la suite (icat)  y como parsearla con un poco de la magia  de  python  hasta convertirla en un archivo con extensión .csv para analizar.  Buscaremos archivos dentro del disco clonado, buscaremos y extraeremos archivos borrados, podemos crear scripts que nos automaticen los procesos y nos filtren y muestren los resultados… etc.  Hay todo un mundo ahí fuera sin interfaz gráfica amigos y funciona muy bien.  Poco a poco iremos entrando en este fascinante mundillo que os enganchará y a la vez, os hará mejores profesionales.

¡Hasta la próxima!