Especial Sysadmins, Tips con EXT

Extra para los Sysadmins y sufridos seres humanos de sistemas

¡Muy buenas a todos/as! Hoy hace un día estupendo y caluroso y os voy a dejar descansar de tanto forense y tanta técnica. La terminal esta genial, pero también debemos disfrutar de este maravilloso clima y salir a tomar el sol y unas cañas con los amigos/familia.  Os voy a comentar unos breves y fáciles tips, para que trabajéis mejor con el sistema de archivos Ext y para que el mundo sea un lugar feliz y sonriente. Espero que os sirva.

Asimismo os comento que este el el primero de una serie de tips o trucos que iremos soltando de vez en cuando, para intentar ayudaros en vuestros deberes diarios.

Como convertir un sistema de archivos ext3 existente a ext4

Para habilitar las características de ext4 en un sistema de archivos existente ext3, debes usar el siguiente comando:

# tune2fs -O extents,uninit_bg,dir_index /dev/dispositivo

CUIDADO: Aviso para navegantes, una vez ejecutado este comando, el sistema de archivos sobre el que se ejecute, ya no podrá volver a ser montado como ext3.

Después de ejecutar este comando, debes ejecutar fsck, ¿ y por qué motivo?  Para arreglar alguna de las estructuras que tune2fs ha modificado:

# e2fsck -fD /dev/dispositivo

Debes tener en cuenta que, para verificar el sistema de archivos de una partición correctamente, esta partición debe ser desmontada. Esto podría ser un problema si hablamos de la partición raíz (“/”), en este caso, es recomendable que configures el archivo /etc/fstab como te indico y luego reinicies el sistema para que la verificación se lleve a cabo automáticamente:

#               /dev/dispositivo         /           ext4   relatime         0 1

Para crear un nuevo sistema de archivos con ext4

Un sistema de archivos ext4 puede ser creado mediante el siguiente comando:

mkfs.ext4 /dev/dispositivo

Donde “dispositivo” hace las veces  del nombre del dispositivo por bloques donde se creará el sistema de archivos ext4 (sda,sdb,sdc…)

A tener en cuenta

Cuando habilites la nueva característica extent, los archivos nuevos serán creados con el formato extent, pero no se convertirán los archivos que ya existan para utilizar extent. Sin embargo los archivos que no sean extent podrán ser leídos y escritos sin ningún problema por ext4.

¿Qué soporte tiene ext4 en GRUB?

¡Buena pregunta! Si la raíz del sistema (“/”) es convertida a ext4, y se utiliza GRUB como cargador de arranque, debe actualizarse GRUB si o si a una versión que soporte ext4. Si no lo actualizas, el sistema puede llegar a iniciar correctamente la primera vez, pero cuando el kernel sea actualizado, este no volverá a iniciarse, de modo que tu mismo…

 

Por hoy ya vale, espero que lo escrito encima de esto os  pueda servir en algún momento. Pasad buenos días. ¡Nos vemos!

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!

 

Guía Hardening – Actualización del Sistema

La falta de actualización de un sistema puede ser un grave problema de seguridad, aunque en lo personal es difícil verlo y normalmente siempre lo mantenemos actualizado, en el ámbito profesional vemos en algunas ocasiones auténticos disparates.
Esa situación puede poner en riesgo datos muy sensibles y en ocasiones hasta el sistema al completo, muchas veces lo tomamos a broma, y hemos visto más de una vez alguna foto con un cajero que utiliza windows xp o cualquier otro asunto parecido, sí, puedes estar pensando que estos asuntos quedan más bien en el ámbito empresarial, y tienes razón, pero también en otras muchas ocasiones es culpa nuestra.

En la administración de sistemas te encontraras en algunas ocasiones con estos problemas, solo tienes que preguntarle a algún compañero y seguro que te podrá contar alguna “batallita” sobre sistemas que llevan sin actualizarse años.

La mía sin ir más lejos fue hace unos meses, un cliente de una pequeña oficina me llamo para “modernizar su servidor” porque últimamente tenía problemas y todo funcionaba más lento, en este caso el cliente disponía de un servidor físico que alojaba su pagina web, las cuentas de correo de los trabajadores y datos, informes, contratos, etc.. en su disco duro, ya lo podéis imaginar, compro el servidor, contrato a alguien para su instalación y puesta en marcha,  y para no tener “más gastos” no quiso contratar un mantenimiento, situación, un servidor Debian 5.0 cuyo soporte finalizo en febrero de 2012, cuentas de correo de antiguos trabajadores aun en funcionamiento, con su respectivo acceso por web a sus carpetas personales y las de sus compañeros, y la guinda del pastel, 2 cuentas de FTP que presuntamente, crearon dos antiguos empleados y estaban utilizando el servidor para almacenar sus cosas.

Como podéis ver es habitual encontrarse en estas situaciones y todo por no tener unas políticas mínimas de seguridad, y como no, por ahorrase cuatro duros que 5 años después ha tenido que pagar, y con intereses podríamos decir };-)

Y ahora continuemos con el hardening de nuestro sistema, con esta pequeña batallita quería demostrar que la falta de actualización puede suponer un gran problema, y aunque en esta entrada solo tratare los métodos para mantener nuestro sistema actualizado y efectuar la primera instalación, también queremos insistir en el echo de que la actualización de un sistema, junto a unas mínimas comprobaciones en cuanto a políticas de seguridad, nos evitara futuros problemas.

ACTUALIZANDO

En Debian tenemos a nuestra disposición varias herramientas para esta tarea (aptitude, apt-get, apt), pero hoy nos centraremos en APT (Advanced Packaging Tool). El método a seguir es bastante sencillo, tan solo debemos ejecutar como root (superusuario) en la linea de comandos:

root@debian:/# apt update

Cuando ejecutamos este comando, automáticamente comprueba los paquetes que tenemos instalados y si es necesaria su actualización, esto se hace comprobando en el repositorio si existe alguna versión nueva o alguna actualización de seguridad.
Normalmente nos indicara el numero de paquetes que es necesario actualizar, en mi caso me indica que se pueden actualizar 20 paquetes y que si quiero verlos antes de proceder a la actualización ejecute la siguiente orden:

root@debian:/# apt list –upgradable

Ahora podemos ver el nombre del paquete, la versión, la rama de Debian en la que nos encontramos (Stable, Testing, Sid) y la versión en la que se encuentra actualmente el paquete. Esta información nos puede ser de ayuda en determinadas ocasiones, como he comentado al principio no es lo mismo actualizar un sistema personal que en un entorno empresarial, en este ultimo te puedes encontrar con limitaciones a la hora de actualizar, debido a que se utilice algún tipo de software creado ex profeso para la empresa, y antes de actualizar se debe comprobar si alguna dependencia le afecta.
Como no es nuestro caso y ademas estamos actualizando un sistema mínimo, procedemos a su actualización:

root@debian:/# apt upgrade

El sistema preguntara si queremos o no proceder a la actualización, y continuara el proceso, esta operación tardara más o menos tiempo dependiendo del numero de paquetes que se debe actualizar y nuestra conexión.
Si esta leyendo esto algún usuario avanzado seguro que echa en falta más opciones, como un safe-upgrade o full-upgrade, incluso la utilización de aptitude o apt-get, calma, todo esto se vera en el siguiente capitulo de la guía, en el cual abarcamos algunas de las opciones posibles con apt, apt-get o aptitude 😉

AUTOMATIZANDO

Actualizar el sistema lo podemos hacer de varias maneras, manualmente o automáticamente, y aquí entra una de las principales reglas de la administración de sistemas “Automatizar todo lo que se pueda”

root@debian:/# apt-get install unattended-upgrades

Una vez instalado el paquete se debe editar el archivo “20auto-upgrades“, si por alguna razón no lo encontramos se puede crear manualmente o podemos ejecutar la siguiente orden:

root@debian:/# dpkg-reconfigure -plow unattended-upgrades

Esta orden hará que se muestre la siguiente pantalla, y pedirá autorización para continuar con la descarga y actualización automática del sistema.

dpkg

 

Ahora podemos ver el archivo “20auto-upgrades” y editarlo si es necesario, pero seguramente ya se encuentre configurado para permitir la actualización automática del sistema.

root@debian:/# vim /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists “1”;
APT::Periodic::Unattended-Upgrade “1”;

Otro archivo que debemos configrar si no lo esta es “50unattended-upgrades“, el proceso similar al anterior, con nuestro editor favorito lo editamos y buscamos el siguiente texto “Unattended-Upgrade::Origins-Pattern

root@debian:/# vim /etc/apt/apt.conf.d/50unattended-upgrades

Seguidamente se debe descomentar la siguiente linea, quitando “//”.

o=Debian,n=Jessie,l=Debian-Security

Echo todo esto ya te puedes despreocupar un poco, pero solo un poco, de las actualizaciones del sistema. Y digo poco por que aunque este proceso este automatizado, todavía queda mucho por hacer y monitorizar.

Análisis forense en Windows. Sistema de archivos NTFS

Introducción

Hasta aquí hemos iniciado labores forenses, hemos empezado a utilizar herramientas de la suite Sleuthkit y hemos trabajado sobre un sistema Windows. Antes de profundizar más, debemos entender bien cómo funciona el sistema de archivos sobre el que vamos a trabajar la gran mayoría de las veces, debemos entender que corre por debajo de las herramientas, que hacen las herramientas, en que se basa su funcionamiento y esto, os lo aseguro, en algún momento os salvará de una situación comprometida. Vamos a aprender algo del sistema de archivos NTFS que usan por defecto los sistemas modernos Windows.

Obviamente, es imposible explicar en un solo post todo sobre NTFS, por ello, lo primero que debo decir es que esto va a ser una introducción. Más adelante, según vayamos avanzando iremos profundizando más y más en cómo funciona, de momento tan solo quiero explicar cuatro cosillas breves para ayudar en esos primeros pasos tambaleantes que damos todos. AVISO: Este post va a ser más aburrido que los anteriores, pero es un paso que debemos dar si queremos llegar a ser realmente buenos. Mas tarde, llegaremos a Ext3-4, Reiser, ZFS, os lo prometo.

Pero hoy toca Windows, la vida es dura chavales.

 

Historia NTFS

Para comprender el presente, dicen los legos que hay que remitirse al pasado y desde ahí comprender el presente. Es lo que voy a hacer ahora, porque seguro que todos nos hemos  preguntado de donde viene este sistema ¿Verdad?

NTFS se basa, proviene si lo queréis decir así,  del sistema de archivos HPFS (Sistema de Archivos de Altas Prestaciones, es decir un sistema de archivos de alto rendimiento), que fue creado por Microsoft con el sistema operativo de IBM OS/2. Se caracterizaba por permitir nombres largos, metadatos e información de seguridad, así como de autocomprobación e información estructural. Además, aunque poseía tabla de archivos (como FAT), ésta se encontraba posicionada físicamente en el centro de la partición, de tal manera que redundaba en menores tiempos de acceso a la hora de leerla/escribirla.

 

Vale, esto esta genial, pero ¿Qué es NTFS?

NTFS, amigos lectores, significa  “New Technology File System” o Sistema de Archivos de Nueva Tecnología y es  el último tipo de archivos soportados por sistemas Windows. Es un sistema de archivos de alto desempeño que (en teoría) se repara a sí mismo y aporta diversas características avanzadas como seguridad a nivel de archivos, compresión, y auditoría.

Aporta seguridad para los datos, ya que tiene la capacidad de cifrar y descifrar todo tipo de datos, archivos y carpetas. Asimismo usa un conjunto de caracteres Unicode de 16 bits para los archivos y carpetas. Se supone también, que es un sistema tolerante a fallos. Este sistema puede examinar el archivo de registros (logs) y utilizarlo para restaurar el disco hacia un estado suficientemente sólido con una pérdida mínima de datos.

Los volúmenes que contienen NTFS, tienen dentro de si 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 bytes de la tabla están reservadas para los metadatos utilizados en implementar y mantener la estructura del sistema de archivos. Estos metadatos son almacenados en un conjunto de archivos del sistema.

Veamos cuáles son sus diversas partes y funciones tomando como ejemplo nuestro ya viejo conocido Windows 7 Pro de 64 bits.

Típica imagen de un sistema de archivos NTFS

Captura_ftk

A continuación os voy a contar la función de cada uno de los componentes principales dentro de un sistema de archivos NTFS típico y tópico. Por orden en la imagen:

  1. $AttrDef – Lista que  contiene los atributos de los archivos.
  2. $BadClus – Esto contiene una lista de clústers o sectores que tienen errores irrecuperables.
  3. $Bitmap – Lista que muestra la disponibilidad y uso de los clústers.
  4. $Boot – Se utiliza para montar el volumen NTFS durante el proceso de “bootstrap”.
  5. $I30: – Papelera, índice de elementos borrados.
  6. $LogFile – Las transacciones previas son listadas y almacenadas para furutas posibles restauraciones.
  7. $MFT – Archivo de registro base para un volumen NTFS, muy importante para análisis forense.
  8. $MftMirr – Los primeros cuatro registros del MFT son almacenados aquí para posibles restauraciones en caso de fallo o corrupción de la MFT primaria.
  9. $Secure – Lista de control de acceso, tiene descriptores de seguridad únicas para los archivos sobre el volumen.
  10. $Volumen – Mucha información relacionada al volumen, es almacenada en esta tabla.
  11. $Upcase – Esto es utilizado para convertir todos los caracteres en mayúscula a caracteres Unicode minúscula.
  12. $ – Esta es la carpeta Raíz.
  13. $Extend – Extensiones opcionales como cuotas e identificadores de objetivos son listados aquí.

¿Y cómo funciona NTFS?

La estructura NTFS es bastante simple, aunque es más complicada que, por ejemplo, en el sistema FAT.

Cada archivo está representado en un registro en la MFT (Tabla Maestra de Archivos). Asimismo, cada entradas en la MFT se clasifica en orden alfabético, esto le permite utilizar una búsqueda binaria, lo que acelera enormemente el trabajo del sistema con ese archivo. Para optimizar aún más el gestor de memoria caché utiliza un algoritmo lazywriter al escribir los datos directamente en el disco, y se almacena en la memoria hasta que la carga en la CPU no se reduce,  después esta carga en memoria disminuye en  un proceso de fondo.

Llegados aquí, la aviesa y avispada gente de sistemas ya está gritando: “¿Y qué pasa si hay un apagón mientras los datos aún están almacenados en la memoria? Obviamente se pierden, pero no tembléis, desde esta humilde web os damos la solución, se llama SAI (Sistema de Alimentación Ininterrumpida). Problema arreglado. Bromas aparte, al trabajar si o si, con este tipo de sistemas en entornos que requieran estabilidad y seguridad de no pérdida de los datos, estos aparatos son de obligada instalación.

 

Sector de Arranque de una partición NTFS

Cuando se asigna a un volumen de almacenamiento la configuración  por defecto de  NTFS, el programa de formato asigna los primeros 16 sectores para el sector de arranque y el código “bootstrap”. Al referirme a “Bootstraping” normalmente me refiero al inicio de un proceso auto sostenible, que se supone, actúa sin ingresos externos. Cuando hablo de ordenadores 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.

Captura-boottrap

Tabla Maestra de Archivos (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 la MFT.

La información relacionada a los atributos como tamaño, tiempo, fecha, además de permisos,  son guardados o bien, 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 aumenta también. También, cuando un archivo es borrado desde un volumen NTFS, los valores en el MFT son marcados como libres y este espacio puede ser reutilizado de nuevo. Inciso breve para los amigos forenses y aspirantes a forenses (Este tabla es MUY IMPORTANTE para nosotros, permite entre otras muchas cosas, extraer timelines muy completos de la vida de ese equipo). Por favor repasad algún post anterior del que ha escrito esto aquí. Continuemos…

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, manteniendo así de manera eficaz su desenpeño.

hd-ntfs

Por último y no por ello menos importante aquí se aprecia la copia de los 16 primeros records de la MFT, también llamada MFT Mirror,  en caso de análisis forense no debemos olvidarnos nunca de esto, en un fallo que todos hemos cometido y que yo os recuerdo para que no os pase a vosotros.

 

Ventajas y desventajas NTFS

Ventajas:

  • NTFS es la mejor opción para volúmenes de unos 400 MB o más. El motivo es que el rendimiento no se degrada en NTFS, como ocurre en FAT, con tamaños de volumen mayores.
  • La posibilidad de recuperación está diseñada en NTFS de manera que un usuario nunca tenga que ejecutar ningún tipo de utilidad de reparación de disco en una partición NTFS.
  • Compatibilidad mejorada para discos duros más grandes.
  • Mejor seguridad porque puede utilizar permisos y cifrado para restringir el acceso a archivos específicos para usuarios aprobados.

Desventajas:

  • No se recomienda utilizar NTFS en un volumen de menos de unos 400 MB, debido a la sobrecarga de espacio que implica.
  • No es posible formatear un disco con el sistema de archivos NTFS; Windows NT formatea todos los discos con el sistema de archivos FAT porque la sobrecarga de espacio que implica NTFS no cabe en un disco.

 

De momento con esto ya vale por hoy, en próximas entregas hablaremos sobre permisos NTFS, las reglas ACL, privilegios y permisos, para ir abriendo boca jugaremos un poco con una opción muy poco conocida como son los ADS (o Alternate Data Stream). Iremos poco a poco adentrándonos en este sistema de archivos con el que, os lo aseguro, os va a tocar pegaros muuuuuchas veces, ya que para bien o para mal, a nivel escritorio es el más utilizado y en servers también tiene una buena cuota.

 

¡Hasta la próxima!

 

Análisis Forense en Windows. Montado, navegación y búsqueda a través de una imagen clonada

¡Muy buenos días a todos! Poco a poco estamos comenzando a tener una serie de conocimientos sobre análisis forense de entornos Windows. Esto nos va a permitir empezar a movernos con cierta soltura por estas movedizas y no suficientemente conocidas tierras del análisis forense. En este post voy a explicar de un modo muy sencillo como:

  1. Montar una imagen forense en el punto que deseemos de nuestro equipo de trabajo.
  2. Una vez montado, nos va a permitir movernos por todo/as las capetas y directorios de nuestra imagen forense, tan fácilmente como si lo hiciéramos por nuestro sistema de ficheros propio.
  3. Podremos movernos como deseemos, tanto por linea de comandos, como a través de nuestro explorador (si gustamos de apreciar la interfaz gráfica) .
  4. ¿Para que hacerlo? Bueno, podemos buscar ciertos registros o datos de un modo muy visual,  esto luego nos puede ayudar para explicar los pasos realizados a personas menos preparadas de una manera mas sencilla de asimilar.

Quisiera dejar claro un par de aclaraciones antes de continuar:

  1. Hay herramientas “automágicas” que hacen esto de manera automática y totalmente transparente para el usuario, funcionan muy bien y son totalmente recomendables y absolutamente fiables (este punto debe quedar claro). Por poner un ejemplo y para su uso en entornos Windows me viene a la cabeza la herramienta FTK Imager Lite.
  2. ¿Por qué hacerlo de esta manera? Muy sencillo, porque una vez que se explica no es tan complicado (lo vas a poder ver en breve) y porque la herramientas “automágicas” están muy bien, pero se puede llegar a perder de vista lo que ocurre por debajo si se usan de continuo. Al realizarlo como se va a explicar, somos conscientes en todo momento de lo que está pasando, sabemos donde estamos, que hacemos y porque lo hacemos. Una vez se llega a este punto con total normalidad, podremos empezar a trabajar con la tranquilidad que da el conocer el terreno que estamos pisando y esto, amigos lectores, no hará mejores y mas fiables profesionales.
  3. Cualquier herramienta que se utilice, en cualquier entorno que se utilice, puede llegar a ser perfectamente válida, tan solo debemos pensar antes de utilizarla que queremos, si esta herramienta nos lo puede dar y si entendemos lo que esta haciendo. Si la respuesta a estas tres presuntas es si, adelante. Nosotros somos personal técnico, los programas y sistemas que utilicemos para trabajar son eso, herramientas de trabajo,nada mas. En mi caso me desenvuelvo muy bien  en entornos Unix, me gusta mucho Unix, pero si tengo que trabajar en entornos Windows, no me supone mayor problema.

En el siguiente ejemplo, vamos a montar nuestra ya familiar imagen de Windows 7 pro de 64 Bits y a continuación navegaremos por su interior, tanto por consola como por interfaz gráfica (usando nuestro explorador de archivos).

Como máquina de trabajo, usaremos una distro Ubuntu (versión 16.04) a la que tan solo le hemos instalado unos iconos mas a mi gusto, un tema mas claro y nuestra ya conocida suite sleuthkit.

version

Comenzamos…

Abrimos una terminal y nos movemos al directorio Escritorio (podría ser perfectamente cualquier otro, /tmp por ejemplo, en este caso, por ser mas visual se creará en el Escritorio).

Creación Punto de montaje
Creación Punto de montaje

Este será nuestro punto de montaje de la imagen.

El segundo paso es tan sencillo como localizar el offset de inicio de Windows, para ello usamos la herramienta mmls

mmlsUna vez localizado el offset de Windows en el disco duro, se debe calcular el sector donde se inicia la partición por la cantidad de bytes asignada a cada sector (que en este caso son 512), por tanto…

calc

Una vez calculada la cifra, usaremos el comando mount

Con el comando mount realizaremos el montado de la imagen en la carpeta creada anteriormente en el Escritorio como punto de montaje (monta).

mount

sudo mount -o loop,offset=2151677952,ro,noexec,show_sys_files,streams_interface=windows ‘/media/itzala/WD/FORENSE/windows7.001’ /home/itzala/Desktop/monta/

Ahora se pasa a desglosar cada una de las opciones selecionadas de este comando:

Con la  opción -o utilizan  las siguientes opciones separadas por comas unas de  otras:

  1. Opción ro para realizar el montado en modo de solo lectura,no se podrá efectuar ningún cambio sobre la imagen (fundamental para un análisis forense)
  2. Con la opción noexec no se  permite la ejecución de binarios ejecutables en el sistema de archivos montado
  3. Opción loop para realizar el montado sobre el dispositivo
  4. Con la opción show_sys_files se muestran los archivos meta del volumen (ntfs en este caso)
  5. Se usa streams_interface=windows para utilizar flujos de datos alternos (ADS)
  6. Con offset=2151677952 le indicamos el inicio de la partición que nos interesa (en el caso de tratarse de  una unidad física) para realizar el montado a partir del byte ahí indicado.
  7. Indicamos el path de ma imagen a montar (en este caso /media/itzala/WD/FORENSE/windows7.001)
  8. Por último le indicamos el punto de montaje (/home/itzala/Desktop/monta)
  9. ¡Y ya está montado en donde le indicamos! ¿No ha sido tan difícil verdad?

interior-monta

Ya lo tenemos montado y lo podemos ver tanto desde nuestro explorador de archivos como en el caso de la imagen anterior (podemos incluso ver la copia de la $MFT que hablábamos en posts anteriores)…

terminal1

Nos colocamos con el terminal en en punto donde hemos montado la imagen y nos podemos mover sin ningún problema por todo el sistema de ficheros vía terminal…

interior_

Como se aprecia en las dos imágenes anteriores nos podemos mover sin modificar nada de la evidencia tanto por interfaz gráfica como vía terminal.

Resumiendo, de un modo muy sencillo hemos montado y accedido con total seguridad a una imagen forense y nos hemos movido con total libertad por su estructura de ficheros.  No es nada difícil y una vez se controla esto, podemos usar cualquier herramienta ya que, al conocer lo que va por debajo, no tenemos ninguna limitación. Podremos automatizar procesos con scripts con una velocidad pasmosa y llegar hasta donde nosotros deseemos.

Recuerda amigo lector, en nuestro mundo el límite es nuestra imaginación y nuestra capacidad de renovación.

¡Hasta la próxima!

 

P.D: Para que se vea que en este mundo hay opciones para todo y para mostrar las posibilidades de Linux, aquí esta una imagen de FTK Imager Lite corriendo en Ubuntu gracias a la magia de Wine.

Desktop