Informática Forense. Recuperación en la $MFT. Cuándo, cómo y a veces porque no se puede…

Muy buenas amigos, ya me encuentro de vuelta para seguir compartiendo mis escasos conocimientos con quien le puedan servir de algo. Lo se, tenía que haber vuelto a escribir antes pero, ¿qué queréis que os diga? Los sanfermines fueron muy duros señores…

Antes de nada, quisiera dedicar estas humildes líneas a un compañero que esta trabajando por el bien y la seguridad común de todos nosotros.Y además, creo que esta trabajando en mi tierra. Marcos, esta entrada como te prometí va por ti.

¿De que vamos a hablar hoy? De un tema que realmente siempre acaba saliendo cuando se realiza un análisis forense a Windows, los problemas que hay con la $MFT o Master File Table.

Hasta aquí se había comentado de su importancia  a la hora de realizar un dictamen pericial en entornos Windows y sin duda la tiene, pero, por poner un ejemplo, ¿qué pasa si se borra un archivo del disco duro? ¿Se puede recuperar siempre?¿Hasta dónde se puede recuperar información? ¿Se puede llegar a perder información del disco o de la $MFT? ¿Qué podemos llegar a extraer?¿Qué podemos perder?¿Qué pasaría si un presunto delincuente malintencionado, borra archivos y luego hace una restauración a un punto de, por poner un ejemplo, 2 años atrás? Por poner algunos ejemplos que os pongan en situación… Pues bien, para explicarlo va este post.

 

¿Qué es la $MFT? La $MFT, Master File Table, es el archivo más importante en un sistema de archivos NTFS. Realiza un seguimiento de todos los archivos en el volumen, su ubicación lógica en carpetas, su ubicación física en el disco, y los metadatos de los archivos, incluyendo:

  1. Fecha de Creación, de modificación, fecha de acceso, así como la última fecha de acceso al archivo, todo esto como información estandard.
  2. El tamaño y peso del archivo
  3. (Permisos de acceso de seguridad) para el archivo

Toda esta información se va almacenando como entradas dentro de la $MFT.

reading

Las entradas de la $MFT tienen un tamaño de 1024 bytes, de serie. Cada archivo y carpeta, tiene que tener una entrada en la $MFT, para ser reconocido por el ordenador, incluyendo la propia $MFT.

Las primeras 16 entradas de la $MFT están reservados para los archivos de sistema NTFS, éstos incluyen:

$MFT, $MFT Mirror(espejo) y $Bitmap (mapa de bits).

Llegado aquí, considero importante incidir en un par de puntos apara que los tengáis en cuenta de ahora en adelante:

  1. La primera entrada en la $MFT es una descripción muy completa de lo que hay dentro.
  2. La segunda entrada es el espejo (mirror) es una copia de seguridad de las primeras entradas de la $MFT por si hubiera algún problema de pérdida de datos en la primera. Quisiera insistir en este punto ya que es bastante importante y en mas de una ocasión os salvará el pellejo, si por el motivo que fuera le pasara algo a la principal.

 

Aprovecho, ya que estamos a ello, para recordar que la $MFT, contiene toda mucha información acerca de todo el sistema de archivos. Por poner un ejemplo, correos electrónicos, también son archivos, de modo que también se pueden buscar ahí.

 

Vale, todo esto está muy bien pero…

happend

La $MFT puede expandirse pero nunca contraerse (evidentemente  me estoy refiriendo a unas condiciones normales de uso).

Este punto es muy importante para la informática forense, amigos investigadores, ya que afecta tanto a la recuperación de datos, como a la identificación propiamente dicha de los archivos borrados, así como de la información  contenida (creación, accesos, modificación…etc).

Un dato que muchas personas no conocen, es que cuando se elimina un archivo del disco duro, su entrada $MFT se marca como lista para ser reutilizada. Esta entrada seguirá existiendo hasta que se sobrescriba con una nueva entrada generada por un archivo nuevo en el disco duro. Cuando un nuevo archivo es creado en el disco duro, se sobrescribe la siguiente entrada $MFT disponible, si no hay entradas disponibles para ser sobrescritas a continuación, la MFT comenzará a expandirse. Esto amigos míos, es importante tenerlo en cuenta de ello puede depender o no que podamos recuperar algo o no de información.

como-se-llama-el-inspector-de-la-pantera-rosa

Os pongo un ejemplo para facilitar su comprensión:

  • Un trabajador es despedido de su puesto y su equipo se reutiliza por otro compañero por aquello de optimizar recursos (una opción muy comprensible con los tiempos que corren).
  • Mientras se inicia un proceso de negociación para evitar tener que ir a juicio, el equipo sigue funcionando con total normalidad.
  • Se presupone que ha podido borrar información de la empresa, ¿qué podría pasar a nivel de investigación forense? Muy fácil, sobre las entradas en la $MFT de esas evidencias  “presuntamente” borradas, se van sobrescribiendo las nuevas entradas. Esto nos lleva a que nos podemos enfrentar a que no encontremos ni las evidencias, ni nada de información sobre ellas. Reflexionad sobre esto y sobre como lo podríamos evitar con planificación y sentido común.

Os pongo unos ejemplos mas:

  1. Ejemplo 1:

Si hay 200 entradas de la MFT y un archivo, el archivo X, se borra y luego 1.000 archivos más están creadas inmediatamente después de la entrada MFT para el archivo X se sobrescribe. Aunque los contenidos del archivo pueden existir en el disco duro, la entrada MFT que incluye el nombre, metadatos, etc., se sobrescribe.

 

  1. Ejemplo 2:

Hay 3000 entradas en la $MFT. 100 se suprimen y 2 nuevos archivos se añaden inmediatamente a la unidad. Por lo tanto 98  de las 100 entradas deben ser recuperables. Aunque si los datos de los ficheros son recuperables o no, dependerá de si han sido sobrescritos o no.

 

¿Mas claro así verdad?

 

Nota:

Los datos en si (el archivo en cuestión), están separados de la entrada MFT. Esto da lugar a varias posibilidades tanto durante la eliminación como el posterior uso de un disco duro. Se podría borrar la entrada y los archivos podrían ser extraidos. Unos ejemplos ayudarán a mejorar la comprensión de esto:

1) El archivo se elimina pero la entrada MFT y los datos del archivo son 100% recuperables. El archivo borrado puede ser 100% recuperado.

2) El archivo se elimina y la entrada en la $MFT es recuperable, pero una parte de los datos del archivo se sobrescribe. Esto significa que el archivo sólo se puede recuperar PARCIALMENTE.

3) El archivo se elimina y la entrada $MFT es recuperable, pero los datos del archivo están sobrescritos. El archivo no es recuperable, pero si el information about ( archivo, nombre, fechas, tamaños, etc ).

4) El archivo se elimina y la entrada y archivo de datos en la $MFT es 100% recuperable. El archivo se pierde el 100%. No obstante, con una adecuada investigación forense podríamos extraer una gran cantidad de información sobre el archivo, a través de la $MFT.

5) El archivo se elimina y la $MFT 100%, pero al sobreescribirse los datos del archivo no han sido del 100% sobrescritos. El archivo restante puede ser extraído desde el espacio no asignado en el disco duro. La capacidad de extraer los datos dependerá de la fragmentación, la cantidad de datos recuperables (que podría ser 100% o un 10%) y la naturaleza en si del propio archivo.

Como podéis ver es importante, sumamente importante para una análisis en entornos windows, el tener en cuenta este tema. Espero no haber aburrido mucho a nadie con este tema. 😉

De momento ya vale por hoy, me parece  bastante interesante este tema y os animo a que lo tengáis en cuenta para futuras indagaciones que os toque realizar. ¡Un saludo!

 

Recuperando las contraseñas de las wifi a las que nos hemos conectado – NETSH

Hola a todos!

Este post es un TIP rápido que puede ser útil a muchos, ya sea a nivel forense, nivel de pentester o incluso para los pobres sysadmins, pero antes de empezar como siempre os recomiendo leer nuestra renuncia de responsabilidad.

Escenario: Tenemos acceso físico a un equipo windows y necesitamos por cualquier motivo recuperar a que WIFIs se ha conectado el equipo, obteniendo el SSID, configuración de seguridad de la mismo el tipo de red, contraseña de acceso, etc.

Bueno, llegados a este punto y de forma muy rápida os comento que con un triste comando obtendremos toda esta información, cosa que para algunos nos va genial 🙂 y para otros puede ser un marrón….

netshwlanshowprofiles

Evidentemente, he ocultado un poco la información para proteger dichas redes, pero os podéis hacer una idea con el resultado, con el comando anterior veremos todos los perfiles de conexión realizados con la wifi del equipo en cuestión.

Genial @fpalenzuela pero no veo la información que me has prometido.

Efectivamente, seguimos …..

netshwlanprofiles2

El parámetro name=”*” es para que nos muestre TODOS los perfiles y el parámetro key=clear es autoexplicativo.

Bueno, ya tenemos todos los datos de todas las redes wifi , ya que con el comando ejecutado nos aparecerá en pantalla todas las redes, con todas las configuraciones y contraseñas, para facilitar la lectura de todos los resultados podemos redirigir la salida de todos los datos a un archivo con el siguiente comando.

c:\>netsh wlan show profiles name=”*” key=clear > salidawlans.txt

 

BONUS…

Hay otro comando que os dejo aquí tambien, que os dará otra info… incluyendo las conexiones realizadas, abrid una “cmd” en modo administrador y …..

wlanreport

El parámetro duration=”64″ equivale a que nos muestre la información de los últimos 64 días….

Echad un vistazo a la info que os genera este comando…..     conocer las herramientas que disponemos en nuestros sistemas, puede ser una grata sorpresa….  os invito a investigar todo lo que se puede hacer con este comando… NETSH una pequeña navaja suiza disponible en windows… y olvidada por muchos…

Espero que os sea de utilidad.       🙂

— Como siempre los comentarios son siempre bien recibidos… nos gusta tener feedback… —

 

Análisis forense en Linux. Sistema de archivos EXT (I)

¡Muy buenas a todos!

Como no siempre toca sufrir en la vida, hoy vamos a disfrutar un poco. Hoy vamos a empezar a hablar de un sistema de archivos de verdad, de los que usan las personas mayores. Vamos a hablar del sistema de archivos Ext, pasando desde Ext2 hasta Ext4.

Como siempre antes de ir mas adelante, quiero avisar que esto es una intro, para que aprendáis los básicos de cada sistema de archivos y luego podáis seguir otras explicaciones posteriores. Ext es un sistema de archivos relativamente fácil de entender si se aprende despacio, pero es enorme no os engañéis. Por tanto, lo que me interesa con este post, es  que adquiráis unos conocimientos básicos sobre el, que luego os vendrán genial para seguirme más fácilmente en otros conceptos mas complicados. Iremos profundizando poco a poco en este sistema, no os preocupéis. ¿Me acompañáis en este viaje en el tiempo?

Pero… ¿Qué es Ext?

Historia

El sistema de archivos extendido (extended file system o ext), fue el primer sistema de archivos creado en concreto para Linux. Fue diseñado por Rémy Card para vencer las limitaciones de MINIX (que recuerdos…). Al principio hubo competencia tanto por Ext2, como por parte de Xiafs (se podría llamar un pequeño pique), sin embargo finalmente ganó ext2, ya que era mas viable a largo plazo.

Esta basado en UFS (Unix File System).

Sistema de Archivos EXT (Estructura y conceptos generales)

El fichero está representado con estructura de i-nodo (índice-nodo, para mayor claridad)

Básicamente consiste en una serie de ficheros con una serie de entradas donde se almacenan los números de i-nodos. Así pues, cada i-nodo “apunta” la dirección, path, tamaño…etc de cada archivo.

Es brillantemente funcional. Concretemos.

Sistema de archivos Ext2

En el principio de los tiempos…

Ext empezó como quien dice  con Ext2, su estructura de funcionamiento es relativamente fácil de entender y extremadamente lógica.

Consta de:

  1. Un Superbloque de 1024 bytes al principio del sistema de archivos, que contiene información, metadatos del propio sistema de ficheros (el tamaño del bloque, el número total de bloques…etc).
  2. Grupos de bloques :Tienen un Backup de Superbloque, un Block Group Descriptor Table (o tabla de estructura para cada grupo de bloques, dirección de los bitmaps de bloques de i-nodos), un bitmap de bloques del grupo y un bitmap de i-nodos (del grupo).
  3. El sistema de ficheros tiene una tabla donde se almacenan los i-nodos. Un i-nodo guarda información de un archivo (ruta o path, tamaño, ubicación física…etc). En cuanto a la ubicación, es una referencia a un sector del disco donde están todas y cada una de las referencias a los bloques del archivo fragmentado. Asimismo, estos bloques son de tamaño especificable cuando se crea el sistema de archivos, desde los 512 bytes  hasta los 4 KiB, asegurando esto un buen aprovechamiento del espacio libre con archivos pequeños.

¿Complicado? Bueno, poco a poco. Con esta imagen lo vais a ver mas cómodamente…

Captura

 

¿Veis? Tenemos un Superbloque, tenemos la Tabla de Descriptor de Bloque  y se aprecia claramente que apunta a cada uno de los grupos de bloque y las tablas de i-nodos. Es la típica estructura de árbol.

Ahora podría hablar de la estructura de los i-nodos, pero de momento creo que ya es mas que de sobra. No quiero complicarlo mas, de momento. Si lográis asimilar todo lo expuesto hasta aquí estaré mas que contento. Irá avanzando mas, pero todo a su debido momento. De momento os dejo un anticipo por si queréis investigar vosotros…

Captura de pantalla 2016-06-16 a las 19.23.26

Una vez puestos en la estructura y como es la estructura de de ext2 hay que saber que este sistema tenía-tiene un problema, bueno, tenía varios a decir verdad, pero uno importante, era que no disponía de soporte para transacciones, lo que significa, así en plan sencillo de asimilar, que las comprobaciones rutinarias (entre otras muchas cosas) al arrancar, podían llegar a tardar bastante tiempo, pero bastante de verdad. A día de hoy, hay muchas opciones alternativas, sistemas de ficheros de nueva generación con soporte para transacciones cuya integridad puede ser verificada con mayor rapidez, pero por aquel entonces no. Los sistemas transaccionales previenen retrasos durante el reinicio del equipo, incluso cuando el sistema de ficheros está en un estado inconsistente. Por este y otros motivos apareció EXT3 como una evolución lógica y necesaria  de Ext2.

Sistema de archivos Ext3

Características:

Es igual que ext2 pero con journaling, ahora te preguntarás: ¿Qué es el journal? Muy fácil, el journal guarda registros de las actualizaciones de los ficheros, una especie de bitácora, ANTES de que sucedan esos cambios en los ficheros. ¿Veis las implicaciones que esto puede legar a tener verdad? ¿No? Esto aporta mucha consistencia al sistema de ficheros. Un ejemplo rápido y fácil, supongamos que antes de que se escriba algo en un archivo, hay un problema, se va la corriente eléctrica de repente y los cambios no quedan guardados en los archivos correspondientes.

En este caso, como los cambios se guardan en esa especie de bitácora que es el journal, se pueden recuperar de un modo relativamente fácil. Además de que, cuando el disco se vuelve a montar correctamente, el journal advierte que hay unos cambios guardados y no efectuados y antes de nada, lleva a cabo esos cambios, con lo que se minimiza bastante la pérdida de archivos. Una maravilla como se puede apreciar, una maravilla que aporta mucha consistencia al sistema.

Además en el caso de que se borren archivos, se pone a cero el valor del tamaño del fichero y direcciones de bloque en el i-nodo, esto nos aporta mucha mas seguridad en la eliminación de archivos ya que nos aporta una certeza casi absoluta de que nadie va a poder extraer nada que nosotros eliminemos. A nivel forense, debemos tener en cuenta que se resetea el journal cada vez que se monta, es por ello que,  en temas de investigación forense, es muy recomendable “tirar del cable” para apagar el equipo a analizar,  ya que, de no hacerlo, si se apaga normalmente se perdería el journal, con toda la pérdida de información que ello implicaría. Esto ya comienza a ser mas interesante, ¿verdad?

Pregunta rápida: Una vez visto esto, la sensación que queda es que entonces el espacio ocupado por el journal debe ser enorme ¿no?

¡Pues no! Porque una vez que los datos se escriben correctamente, el journal desaparece.

Ventajas Ext3

1.     Disponibilidad

2.     Integridad

3.     Velocidad

4.     Fácil migración

5.     Versión transaccional de ext2

6.     Indexación basada en árboles que proporciona un alto rendimiento en casi todas las situaciones.

Desventajas

1.     Menor funcionalidad

2.     Fragmentación

3.     Da problemas de compresión

4.     No hay comprobación del journal

 Limitaciones Ext3

Limites ext3

Sistema de archivos Ext4

ext4-file-system

Ext4 (fourth extended filesystem), es un sistema de archivos con bitácora (Journaling) que fue diseñada como una mejora compatible de ext3. Ext4 se hizo público como estable el 25 de diciembre de 2008 con la versión 2.6.28 del núcleo Linux y desde entonces se encuentra disponible para usarlo en sistemas en producción.

Mejoras con respecto a ext3 y ext2

Mucha gente opina que la auténtica mejora, el auténtico salto se produjo de ext2 a ext3, personalmente, aún reconociendo la notable diferencia entre ext2 y ext3 y por supuesto, con el mayor de los respetos hacia las opiniones ajenas, opino que el sistema de archivos ext4 tiene bastante mejora sobre ext3, en comparación bastante mas que ext3 sobre ext2. La mayor mejora del sistema de archivos ext3 sobre ext2 fue añadir el soporte de jornaling (NOTA ACLARATORIA: el journaling consiste en que guarda los cambios en el sistema de archivos ANTES de que se produzcan (journal, ordered y writeback)), que no es poco y mas para nosotros, sufridos forenses. Sin embargo ext4 modifica importantes estructuras de datos del sistema de archivos, tales como aquellas destinadas a almacenar los archivos de datos. Como resultado, tenemos un sistema de archivos, con un diseño mejorado, mejores características y con mucho mas rendimiento y confiabilidad que los anteriores.

Características principales

1.     Soporte de volúmenes de hasta 1 exabyte (260 bytes) y archivos con tamaño hasta 16 terabytes.

2.     Capacidad de reservar un área contigua para un archivo denominada “extent”, que puede reducir y hasta eliminar completamente la fragmentación de archivos.

3.     Menor uso del CPU.

4.     Mejoras sustanciales en la velocidad de lectura y escritura.

  1. Direccionamiento 48bits :

▫ Tamaño sistema de archivos 1EiB

▫ Tamaño de archivos 16 TiB

▫ 64000 subdirectorios

  1. Asignador multibloque que asigna varios bloques en una sola llamada
  2. Obviamente es totalmente compatible con Ext3
  3. I-nodos mucho mas grandes
  4. Preasignación de espacio
  5. Comprobación del journaling con todo lo que redunda en fiabilidad
  6. Tiene una serie de barreras activadas por defecto, con ello mejora mucho la integridad aunque reduce un poco la eficiencia, en mi opinión esto nos compensa.
  7. Tiene un fsck muy rápido, es decir actualiza muy rápido la lista de i-nodos después de cada grupo.

 

Bueno, por hoy ya vale, lo dejamos aquí. Espero no haber aburrido demasiado a los que hayan tenido la paciencia de seguir hasta aquí abajo. Pero debéis entender que esto es necesario para poder entender otros conceptos que vendrán después. Gatear=> Andar=> Correr. Esa es la idea.

¡Hasta la próxima!