Introducción al análisis forense de bajo nivel de sistemas de ficheros ext3

Hola,

Como ya he comentado anteriormente infinidad de veces, para poder realizar un buen análisis forense es imperativo conocer bien el sistema de ficheros con el que estamos trabajando. Hoy quiero dejar unas notas sobre ext3, habida cuenta que es el sistema de ficheros más frecuente en Linux, y vamos a apoyarnos una vez más en las herramientas The Sleuth Kit de Brian Carrier que nos permitirán obtener una visión introductoria a bajo nivel del sistema de ficheros.

Para ilustrar los conceptos vamos a recurrir a un ejemplo práctico sencillo, en el que tenemos un disco de 1 GB que presenta los siguientes contenidos:

ext3 forensics

Como buenos analistas forenses nunca trabajamos directamente sobre la evidencia a no ser que no quede más remedio, con lo que obtenemos una imagen del disco que utilizaremos para el análisis. Podéis escoger el método que más os guste, mi recomendación es emplear dd en la línea de mandatos. Una vez obtenida la imagen podemos hacer algunas averiguaciones interesantes. En primera instancia averiguamos qué estructura de particionado presenta el medio:

ext3 forensics

Es posible obtener confirmación del tipo de partición a través del empleo de un editor hexadecimal, acudiendo al Master Boot Record, ya que la tabla de particiones primarias comienza en el byte 446.

ext3 forensics

Ese primer offset nos indica si el sistema de ficheros es arrancable o no (00 en nuestro caso, no lo es). Los tres siguientes offsets indican la configuración CHS (Cilinders, Heads and Sectors) y en el offset 450 aparece nuestro número preferido, el 83, que indica que la partición es nativa Linux. Este indicador lo comparten además de ext3, otros sistemas de ficheros como xiafs, ext2, o reiserfs.

Una vez obtenidos estos datos, procedemos a inspeccionar la partición nativa de Linux. De la ejecución de mmls que mostramos antes obtenemos que dicha partición comienza en el offset 2048, con lo que lanzamos fsstat teniendo en cuenta dicho offset de la partición dentro de la estructura del disco:

ext3 forensics

Esta ejecución nos confirma que la partición nativa de Linux es ext3. La ejecución del comando es mucho más larga, ya que ofrece información para los metadatos, los contenidos y los grupos de bloques, detallando en cada caso los hallazgos más significativos. Observemos estos tres grupos de información con detenimiento:

ext3 forensics

Tal y como se observa, con relación a la información de metadatos, se nos presenta información sobre algo llamado inodes. En derivados de UNIX, se denomina inode a aquella estructura de datos que contiene información sobre un objeto del sistema de ficheros (típicamente, ficheros y directorios) con la excepción de sus contenidos y su nombre. La descripción de lo que debe contener un inode viene determinada en la especificación POSIX, y abarca numerosos metadatos, como por ejemplo, el UID, GID o los timestamps del objeto.

Para averiguar qué inodes están siendo utilizados por los contenidos de mi disco ejemplo recurrimos a la ejecución de fls, sin olvidar nuestro offset de 2048 bytes que es donde da comienzo la partición que estamos analizando:

ext3 forensics

En esta ejecución comprobamos que los metadatos de nuestro fichero prueba.txt están ubicados en el inode número 12. Mediante istat, profundizamos en el estudio de dicho inode:

ext3 forensics

Esta ejecución nos muestra información relevante para el análisis forense, como por ejemplo, más allá de qe el inode está asignado como cabía esperar, los siempre útiles timestamps, el UID y GID del propietario (0,0, es decir, del root), los modos, el tamaño y el número de enlaces a dicho inode, en este caso, sólo uno.

A nadie debería sorprenderle el hecho que na vez identificado el inode de nuestro fichero, podamos desplegar los contenidos provocando que el sistema consulte dicho inode, y para ello empleamos icat:

ext3 forensics

Tampoco debería sorprenderle a nadie que al examinar el bloque 2048 encontremos exactamente los mismos contenidos. Observad la ejecución de istat, y comprobaréis que al final incluye una información muy relevante para el análisis: los bloques directos empleados por el fichero, es decir, los bloques donde están los datos propiamente dichos, que pueden ser invocados mediante blkcat:

ext3 forensics

En resumen, a través de un sencillo ejemplo hemos aprendido a identificar el particionado de un disco con detalle, y hemos relacionado tres conceptos fundamentales a la hora de realizar un análisis forense en un sistema de archivos: los metadatos, los contenidos y los bloques donde están ubicados los datos. Estas tres capas se dan siempre dentro de un sistema de ficheros ext3, y el esquema del sistema de ficheros es extrapolable a otros sistemas como por ejemplo, NTFS, donde en vez de inodes hablamos de entradas MFT, y donde en vez de bloques, hablaremos de clusters.

Para comprender un sistema de ficheros en profundidad habría que desarrollar estas notas introductorias, y entrar en otros aspectos relevantes como los bloques de arranque, el journaling, o cómo el sistema de ficheros conserva la trazabilidad de los cambios, y sería interesante comprender cómo se enlazan el concepto de superbloque, las tablas de descripción de grupos de bloques, las tablas de inodes y finalmente, los inodes y bloques de datos que hemos visto. He querido simplificar el artículo lo máximo posible para centrarlo en lo que es más visible desde el punto de vista del análisis, y dejo para otra ocasión hablar de estos otros conceptos.

Un saludo,

Diez distribuciones Linux ligeras para uso en netbooks, equipos poco potentes y obsoletos (Revisión Enero 2011)

Buenas,

Hace casi 5 años (se dice pronto) publiqué una relación de 10 distribuciones Linux para usar en equipos poco potentes y obsoletos. Es uno de los artículos del blog que mas repercusión ha tenido a lo largo de estos años, y me enorgullece comprobar que todavía a día de hoy llegan enlaces de sitios que se hacen eco del texto original.

Creo que después de este tiempo merecía la pena revisar el listado, echar un vistazo al panorama actual actual y volver a escribir una versión actualizada, con la idea de traer a la palestra nuevas ideas para nuestros equipos poco potentes y/o obsoletos, así como para nuestros netbooks, que no eran excesivamente populares cuando redacté el artículo original :)

Los criterios para incluir las distros, en esta ocasión, han sido principalmente los los siguientes:

  • Que sean distribuciones especialmente dirigidas al escritorio, no entrando aquí otras distribuciones ligeras de seguridad, forenses, de recuperación y gestión de sistemas operativos que existen en la actualidad
  • Que se trate de productos que tengan pocos requisitos a la hora de ser empleadas en equipos obsoletos y poco potentes (especialmente en lo que a RAM y tamaño en disco se refiere) aunque alguna tiene requisitos más elevados de disco, siendo más aconsejables para netbooks
  • He procurado incluir distribuciones que sean recientes en el tiempo, de modo que sea mas fácil encontrar soporte
  • Dentro de lo posible, he intentado mencionar proyectos que no se recogen en el artículo original, aunque alguno sobrevive y sigue presente en este top ten actualizado

ANTES DE COMENZAR: LEER CON ATENCIÓN

Antes de instalar y usar los productos que aquí se mencionan, aseguraos que están soportados debidamente para vuestras necesidades, especialmente si vais a usarlos para conectar a Internet. Algunos de estos productos son estáticos (son imágenes ISO empaquetadas), y no siempre a la hora de descargar tendremos disponibles las últimas versiones, con lo que es probable que contengan software vulnerable. Es por tanto recomendable escoger alguno que esté soportado y que podamos actualizar periódicamente, especialmente tras la primera instalación, salvo que vayáis a ejecutar estas distribuciones en equipos totalmente aislados de cualquier tipo de red, en cuyo caso el estado de actualización no es tan acuciante (aunque siempre recomendable)

1. Tiny Core Linux

tiny core linux

  • Web: http://tinycorelinux.com
  • Tamaño del fichero ISO: 11 MB
  • Última versión: Diciembre 2010
  • Comentario: Absolutamente impresionante. Un escritorio funcional en apenas 10 MB, con kernel 2.6, Busybox, Tiny X y FLTK. Es de lo mejor que he visto. Tiene un gestor de aplicaciones con el que podremos instalar comodamente un navegador (que no viene de serie) y cualquier aplicación para usar el producto para la actividad diaria en Internet. Tremendamente rápida para cargar, consume muy pocos recursos

2. SliTaz

slitaz

  • Web: http://www.slitaz.org
  • Tamaño del fichero ISO: 30 MB
  • Última versión: Marzo 2010
  • Comentario: Funciona con kernel 2.6.30.6. Extremadamente rápida cargando y es funcional a partir de 16 MB de RAM, siendo recomendables 192 MB. Viene con el navegador Midori listo para ser usado

3. Damn Small Linux

damn small linux

  • Web: http://www.damnsmalllinux.org
  • Tamaño del fichero ISO: 50 MB
  • Última versión: Noviembre 2008
  • Comentario: Otra de las distribuciones ligeras clásicas, en este caso, basada en Knoppix. Concebida como una distribución para ser grabada en CDs de formato tarjeta, es plenamente funcional en un equipo 486DX con 16MB de RAM. Viene con Dillo, Firefox y Netrik como navegadores, así como con otras aplicaciones de productividad. Rápida en la carga y generosa con los recursos

4. Austrumi

austrumi

  • Web: http://cyti.latgola.lv/ruuni/
  • Tamaño del fichero ISO: 121 MB
  • Última versión: Enero 2011
  • Comentario: Dicen de Austrumi que es la distribución más rápida con soporte 3D NVIDIA y tarjetas Intel. Originalmente orientada la comunidad de Letonia, aunque soporta idioma inglés, usa fvwm como gestor de ventanas, tras haber pasado por Enlightenment y Metacity. Empieza a ser funcional en un equipo Pentium II con 128 MB de RAM

5. xPUD

xpud

  • Web: http://xpud.org
  • Tamaño del fichero ISO: 64 MB
  • Última versión: Enero 2010
  • Comentario: Básicamente, es un Firefox OS acompañado de un editor de texto, un reproductor de vídeo y música, un cliente BitTorrent y un editor de imágenes. Está pensada para netbooks, aunque es posible usarla en equipos más obsoletos. Un interfaz sencillo, muy amigable y que puede ser actualizado con el gestor de aplicaciones opt-get. Extremadamente rápida en la carga. Se conforma con 256 MB de RAM y 64 MB de espacio en disco

6. Puppy Linux

puppy linux

  • Web: http://www.puppylinux.com
  • Tamaño del fichero ISO: 126 MB
  • Última versión: Enero 2011
  • Comentario: Cuenta con JWM como gestor de ventanas, y puede ser usada para netbooks y equipos más obsoletos. Viene con bastantes aplicaciones instaladas, entre las que destaca SeaMonkey como navegador. Empieza a ser funcional en un Pentium 166MMX con 128 MB de RAM

7. Slax

slax

  • Web: http://www.slax.org
  • Tamaño del fichero ISO: 200 MB
  • Última versión: Junio 2009
  • Comentario: Una de las clásicas. Esta basada en Slackware, y ofrece un rendimiento excepcional. Emplea Linux 2.6.24 y gestor de ventanas X.org + KDE 4.1. Dispone de varios sabores distintos y una amplia lista de módulos para personalizar la distribución. A partir de 144 MB y arquitectura i486 o superior, Slax funciona sin problemas

8. Elive

elive

  • Web: http://www.elivecd.org
  • Tamaño del fichero ISO: 690 MB
  • Última versión: Marzo 2010
  • Comentario: Es una de mis distribuciones favoritas, ya que combina la solidez de Debian con un escritorio Enlightenment 17 realmente agradable de utilizar. Opera a partir de 128 MB de RAM y con un mínimo de 100 MHz de CPU. Habida cuenta que requiere en torno a 3 GB en disco, quizás es más recomendable para netbooks que para equipos obsoletos. Viene con una buen número de aplicaciones, y está lista para ser usada en Internet

9. Xubuntu

xubuntu

  • Web: http://www.xubuntu.org
  • Tamaño del fichero ISO: 632 MB
  • Última versión: Octubre 2010
  • Comentario: Basada en Ubuntu, con las ventajas que ello conlleva a la hora de soportarla. Utiliza Xfce como escritorio, en tremendamente sencilla de utilizar y se conforma con 333 MHz de procesador, 128 MB de RAM y 2 GB de disco. Firefox, Pidgin … está lista para ser usada en red

10. NimbleX

nimblex

  • Web: http://www.nimblex.net
  • Tamaño del fichero ISO: 99 MB
  • Última versión: Julio 2008
  • Comentario: NimbleX tiene dos versiones ligeras: una edición SUB100MB, que ocupa apenas 99 MB, y una versión reducida de esta, que ocupa 69 MB y que no soporta multimedia ni GTK, pero conserva el escritorio KDE. Kernel 2.6.33 con squashfs y aufs2. Repleta de aplicaciones: Gimp, VirtualBox, Firefox, Transmission, GParted en un agradable escritorio KDE 4

Espero que la recopilación os sea de utilidad. Existen muchas más distribuciones de este tipo, y más que irán apareciendo habida cuenta de la proliferación de equipos poco potentes, como los netbooks. Si queréis dejar un comentario hablando de alguna otra distribución ligera que utilicéis o conozcáis, o para corregir alguna errata en el texto, no dudéis en hacerlo :)

Un saludo,