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!

Guía Hardening Instalación del Sistema

Aclaración

Antes de empezar a seguir o leer esta guía queremos dejar claro algunos conceptos y asuntos sobre ella.

Como su propio nombre indica es una GUÍA y en ella os guiaremos durante el proceso de hardening en vuestro sistema, pero en ocasiones ni pararemos a explicar detalladamente algunos contenidos, y esto es debido a que o bien ya se ha escrito sobre ello muy bien por parte de otras personas y compañeros, o el contenido sería tan amplio que sería casi interminable esta guía.

A lo largo de ella daremos alguna pequeña introducción sobre ciertos temas, que si ya conoces poco mas abra que contarte, pero además añadiremos enlaces a otros sitios o contenido propio si ya hemos escrito sobre ello en aprendiz de sysadmin.

Como ya indicamos en la introducción/presentación que hicimos, esta guía irá “sobre la marcha” y seguramente que entre capítulo y capítulo entremos en detalle en alguno de los conceptos o términos escritos para el que quiera pueda ampliar la guía o sencillamente leer sobre un asunto en concreto sin tener que buscar por toda la guía.

También quiero explicar porque decidí utilizar debian y la verdad es que lo discutimos antes de empezar la guía y por el tipo de instalación su estabilidad y posibles usos posteriores, tanto como servidor o equipo de escritorio, nos pareció la distribución más apropiada.

Sin más empecemos con nuestra guía y bienvenidos.

Introducción

Al iniciar un proceso de Hardening en nuestro sistema debemos tener en cuenta que se empieza desde el minuto -1, antes de empezar debemos saber que tipo de servidor vamos a utilizar, y si estará en una red con diferentes servidores, estarán virtualizados o utilizaremos el típico todo en uno, y todo esto aumentara o disminuirá los vectores de ataque, por lo que debemos planear y documentar todo lo que hagamos.

Otro punto importante es que ni vale cualquier tipo de imagen ISO, porque nuestro objetivo es reducir la superficie de ataque, y descargar un sistema operativo con servidor gráfico y posibles aplicaciones y herramientas innecesarias, ni será de ayuda precisamente, ni reducirá la superficie de ataque, por lo tanto necesitamos una imagen mínima o hacer una instalación por red.

De momento y sólo con esta decisión, ya hemos reducido el número de vulnerabilidades a la que estaremos expuestos, un buen comienzo.

Descarga

getdebian

En esta guía se utilizara la última versión estable de Debian: Debian 8.4 Jessie

Para obtener una imagen de Debian debemos ir a la siguiente url https://www.debian.org/distrib/netinst aquí podemos descargar dicha imagen que ocupara unos 280 megas (imagen pequeña para CD o memoria USB), como ves la diferencia en cuanto a tamaño con una imagen normal es importante.

En esta página además de la imagen iso también podemos hacernos con un manual de instalación para nuestra arquitectura, este manual nos puede ser de mucha ayuda si tenemos algún problema y en él se detallan muchos puntos sobre diferentes métodos de instalación, requisitos o el hardware soportado.

Instalación

installdebian

En nuestro caso la instalación en un principio es la misma que puedes realizar habitualmente, seleccionar idioma, teclado, nombre de la maquina, etc… pero en esta ocasión nos detendremos en 2 puntos importantes, el password superusuario y el nombre usuario y password.

Si queremos hacer bien un hardening éste es uno de los primeros pasos y más importantes, ya que no podemos confiar en un hardening en el que las contraseñas más importantes sean de bajo nivel, de esto hay mucho escrito en la red y nosotros ahora mismo no creemos que sea necesario repetir el mismo contenido, por lo que a continuación, y si no sabes como hacerlo, te recomendamos la siguiente lectura:

Aprende a gestionar tus contraseñas de la Oficina de Seguridad del Internauta (OSI).

Una vez definido el password para el superusuario y para el usuario normal, y si tenéis curiosidad por saber que tiempo se tardaría en romper por fuerza bruta dichas contraseñas, visitad la siguiente web, puede que después recapacitéis sobre la misma.
Por cierto, no olvides documentar la contraseña del superusuario y ponerla a buen recaudo.

Particionado y Cifrado

En debian podemos hacer el cifrado durante el proceso de instalación, mediante el uso de LVM y su cifrado, y aunque aquí no entraremos en detalle sobre LVM y las opciones de cifrado, si os dejare algún dato y enlace de interés.

LVM es un gestor de volúmenes lógicos con varias características importantes, como es poder redimensionar tanto los grupos como los volúmenes lógicos o moverlos entre otras muchas opciones, en el enlace que dejo a continuación tienes una descripción más detallada sobre LVM, y seguramente más adelante en otras entradas, trataremos como gestionar LVM en profundidad.

https://es.wikipedia.org/wiki/Logical_Volume_Manager

A la hora de realizar el particionado se nos ofrecerán varias opciones, tres son guiadas y una manual, dependiendo del uso que le vayamos a dar a la maquina podremos optar por una de las guiadas.

particionado

El siguiente paso será crear el LVM cifrado, si es la primera vez que lo haces recomiendo utilizar el modo guiado, de esta manera será mas fácil y además puedes ver como queda configurado para en otras ocasiones hacerlo manualmente, por la tanto toma nota para otra vez.

partilvm

El proceso es fácil, seleccionamos guiado – utilizar todo el disco y configurar LVM cifrado, para continuar y elegir el modo de particionar,  aquí también tendrás varias opciones nosotros elegimos la ultima, separar la partición /home, /var y /tmp pero dependiendo de tu nivel puedes elegir utilizar todo el disco, o solo el /home, ahora queda continuar y guardar el esquema de particionado , para después crear otra contraseña fuerte para el cifrado.

finallvm

El resultado como puedes ver en la imagen nos ha creado un particionado y cifrado de todo menos del /boot, y éste es un punto importante, si se hubiera cifrado el boot no arrancaría el sistema y por eso si nunca antes hiciste algo parecido, siempre es bueno hacerlo en modo guiado y ahorrarnos problema y disgustos.

Por otra parte comentar que al elegir este tipo de instalación guiada no podemos cambiar las opciones de cifrado, por lo cual el cifrado toma la opción por defecto que es un cifrado AES de 256bits, ahora queda continuar la instalación como haríamos habitualmente y reiniciar nuestra maquina.

Conclusiones

primerlogin

Aunque este tipo de instalación es muy sencillo, como puedes comprobar no podemos hacer mucho más en cuanto a opciones, pero para comenzar y empezar un hardening básico nos servirá, más adelante detallaremos en otras entradas más tipos de configuración avanzada, para que puedas subir el nivel de hardening hasta donde te atrevas o lleguen tus conocimientos.

En esta primera parte ya hemos tratado varios puntos importantes, como son documentar todo hagas para su posterior revisión, y tener controlado datos importantes,  para en un futuro poder utilizarlos entre otras muchas cuestiones, y por otra parte la importancia de las contraseñas, en esta instalación hemos utilizado tres y no tienen nada que ver una con la otra, una para el superusuario, otra para el usuario normal y una última para el cifrado, recordad e insistimos hasta la saciedad, ni pongas las mismas contraseñas en todos los sitios, y tenerlas a buen recaudo y protegidas, con este sencillo paso pero a la vez tan importante ya estamos poniendo el asunto más difíciles ante un intento de intrusión, un robo, o pérdida de un equipo que puede pasar hasta en los sitios que menos te imagines 😉

Resumiendo por puntos:

  • Instalación mínima OK
  • Contraseñas complejas y diferentes OK
  • Particionado y cifrado OK
  • Documentar todo OK

Análisis forense de sistemas Windows. Obtención de $MFT de manera alternativa

¡Muy buenas a todos!

Este post  (que va a ser muy breve ya os lo adelanto) va a enlazar con el anterior, en el cual os hablaba de la importancia de la $MFT (Master File Table o tabla maestra de archivos)  y como trabajar hasta obtener un timeline de un equipo con sistema operativo windows 7 Pro,  que poder usar para investigaciones forenses, entre otras cosas.

Os hablaba también de trabajar con la suite de análisis forense The Sleuthkit, pues bien, hoy os voy a mostrar una manera muy sencilla de extraer la $MFT de una imagen clonada y posteriormente parsearla a formato .csv para analizarla desde Excel, Splunk, Calc de Libreoffice… etc.

Primero debemos averiguar la posición del offset de inicio de Windows, para ello, usaremos la herramienta mmls.

mmls
Uso de mmls para detectar offset

 En la línea número 06, en la tercera columna  tenemos el offset (0004202496), una vez localizado, vamos a extraer la $MFT.

Para ello usamos la herramienta icat con la siguiente orden:

sudo icat -i raw -f ntfs -o 0004202496 /Volumes/WD/FORENSE/windows7.001 0 > /Users/DiegoADMIN/Desktop/extraida.mft

 

icat

Donde con sudo nos hacemos root, con  -i raw indicamos el tipo de imagen que es (en este caso raw), con -f ntfs se le indica que es u sistema de archivos NTFS, con -o 0004202496 le decimos el offset de inicio de windows, a continuación ponemos la ruta donde se guarda la imagen, el 0 del final es donde le indicamos que comience a coger desde el offset 0, es decir el inicio. Posteriormente lo redireccionamos a la ubicación donde queramos guardar el archivo resultante y listo (En este caso el Escritorio, con nombre extraída.mft), solo queda esperar…

 

du -h

Ya la tenemos en donde queremos. Ahora podemos parsearla y pasarla a un archivo .csv. En este punto hay muchísimas herramientas que lo pueden hacer con interfaz gráfica, MFTParser por ejemplo, o  por linea de comandos. De estas a mi me gusta mucho un script en python que se llama analyzeMFT.

Lo podemos instalar con el sufrido e injustamente no reconocido pip:

pip install analyzeMFT

O te bajas el ejecutable de github y lo usas desde su carpeta descomprimido…

analyzemft

Donde -f es la ubicación de la MFT extraída anteriormente -c es para escribir el formato de tiempo en .csv  -e es para poner el tiempo del timeline  en formato excel y -o es la salida del archivo en formato .csv (en este caso en el Escritorio con nombre timeline.csv.

Luego se importa desde Excel como dato y …

Excel

Como se aprecia es un archivo .csv potente, de modo que le llevará rato cargar. Paciencia…

Tamaño timeline

Y esto es todo por hoy, un breve tip que nos muestra que en nuestro trabajo, SIEMPRE hay alternativas y que debemos estar SIEMPRE en un eterno aprendizaje, quizá por eso sea tan apasionante.

¡Hasta la próxima!

Presentacion Hardening en sistemas Linux

Hoy queremos presentaros una guía que comenzaremos en breve sobre hardening en sistemas linux.
Actualmente el numero de amenazas o incidentes al que nos enfrentamos es alto y en constante evolución por lo que esta guía se presenta como una base para su mitigacion, pero no nos queremos quedar en dar solo unas recomendaciones y profundizaremos en algunos temas y en otras ocasiones con la ayuda de Diego (@itzala74) y Francisco (@fpalenzuela) nos pondremos en el “otro lado” para ver como funcionan estos ataques, con el fin de auditar y conocer mejor nuestros sistemas y debilidades.

sec

Pero antes de nada ¿que es el hardening?

El hardening es un proceso que seguiremos para asegurar un sistema ante posibles amenazas o ataques teniendo en cuenta, que la seguridad total no existe, y debido al constante descubrimiento de vulnerabilidades o tipos de ataque estaremos siempre pendientes de actualizar y mejorar nuestro sistema y así reducir la superficie de ataque y el numero de incidentes o amenazas.
Durante este proceso nos aseguramos de la reducción de estos vectores de ataque (internos y externos) con eliminación de servicios redundantes, políticas de contraseñas, y su posterior análisis o auditoria para mejorar si es posible nuestra seguridad, entro otras muchas medidas.

Esta guía se podrá poner en practica tanto en servidores físicos, como vps o nuestro equipo de sobremesa.
Algunos temas, conceptos y utilidades se ampliaran mucho mas de lo necesario con el fin de auditar y conocer mejor nuestros sistemas y debilidades, por lo que con herramientas como Wireshark, NMAP, sistemas de mantenimiento y monitorizacion, logging y auditorias, seguramente que se ampliaran en diferentes post a parte, todos esto lo iremos viendo sobre la marcha y seguro que al final habrá modificaciones, pero el resultado final os puedo decir que merecerá la pena.

Estos son algunos de los temas y herramientas que se abarcaran en esta guía de Hardening, al final la acompañaremos con un checklist mas básico para que puedas auditar el cumplimento y nivel de Hardening en tus sistemas.

Espero que nos acompañes durante este proceso y si quieres colabores con comentarios o dudas que puedan surgir, yo de momento me poco manos a la obra que queda mucho que hacer y descubrir 😉

 

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!