Creación de imágenes CLONACION de sistema operativo

Creación de imágenes CLONACION de sistema operativo

Una de las tareas criticas en el análisis de una intrusión es la extracción de información para posterior análisis, dado que no es posible hacer un análisis sobre un sistema en producción se debe poder simplemente guardad una imagen exacta de un sistema que posteriormente pueda ser abierta, instalada o simplemente mantenida como referencia en el caso de una disputa legal.

En este articulo se analizara la forma de crear imágenes un disco duro a partir de la línea de comandos, es importante aclarar que este articulo NO SE LIMITA únicamente a la extracción de imágenes en LINUX, dado que la construcción de un sistema de archivo se puede acceder directamente por medio del recorrido físico del disco duro y su información no importa el sistema operativo la copia será fiel al montaje del mismo. Adicional mente la partición del disco duro se podrá extraer para dejar la información lista para análisis por medio de utilidades de línea de comando en Linux.

Existen un grupo de utilidades que permiten la extracción de la información del disco duro entre las cuales las más importantes que utilizaremos están en:

  • ·        nc
  • ·        dd
  • ·        sfdisk (opcional)
  • ·        df

Existen varios términos que se deben conocer antes de emprender la tarea de copiar una imagen de disco duro, el principal es el concepto de MBR, adicionalmente el termino partición, y sistema de archivo y partionamiento.

El primer termino esta estrechamente relacionado con el segundo, pues en la lógica de la construcción de un disco duro para su funcionamiento se debe tener en cuenta que el disco se divide en secciones denominadas particiones, en particular en el caso de Windows existen  dos formas de particionar un disco duro, una se denomina FAT y NTFS, en el caso de Linux existen la tradicional ext y Resierfs, ambas con ventajas y desventajas propias. La partición permite segmentar un disco duro de forma en que pueda ser usado por el sistema operativo, dado que el disco duro no contiene ningún sistema de ubicación de información, la partición le permite al sistema operativo colocar la información en el disco y posteriormente lograr ubicarla cuando sea solicitada por el sistema. La partición es propia del sistema operativo,  y aunque existen programas que permiten a un sistema operativo leer particiones de otros sistemas no es recomendable su uso por razones de rendimiento del mismo; debido a que al hacer la conversión se requiere tiempo de computo, en pruebas realizadas por este portal se determino que escribir una partición FAT en un sistema Linux reduce el desempeño del sistema Linux entre un 20% y 45%.

Ya que conocemos los rudimentos de las particiones y algunos de sus tipos (existen mas de 70 tipos de particiones diferentes) podemos pasa al ver que es un MBR, la sigla que en ingles es Master Boot Record, es la parte inicial del disco duro se ubica en los primeros 512  bytes  de información (el cluster 0), esta sección es vital en el arranque de todo el sistema si lo que se desea es que el sistema arranque desde la partición que estamos utilizando. Mas aun esta información es la porción mas frágil y susceptible a daños de todo el proceso que realizaremos en esta serie de artículos.

Para comprender el proceso de creación de imágenes desde la línea de comandos debemos entender como es que el sistema Linux monta (hace accesibles) los sistemas de archivos.

De forma predeterminada todos los discos duros se denominan hd en el caso de ser IDE, si son de tipo SCSI sd a ambos tipos y en general a todos los dispositivos que reconozca el sistema se puede tener acceso a través de la carpeta  /dev ubicada en la raíz del sistema (nótese que no de dijo raíz del disco duro porque puede no estar en disco duro el sistema) una vez se ha logrado acceder a esta carpeta por medio del comando:

                                                              #cd /dev

Debe hacer una lista de los dispositivos de disco duro que hay presentes este se logra por medio de:

                                                              #ls hd*

Así sabrá cuantos discos duros existen en su sistema y las particiones presentes en el mismo. Recuerde que la letra después de hd significa el disco duro y el numero la partición dentro del mismo de la siguiente forma:

#ls hd*

hda1

hda2

hda3

hda4

hdb1

Significa que existen dos discos duros presentes en el mismo a,b y adicionalmente el disco a contiene cuatro particiones.

Para poder extraer la información del disco que deseamos debemos saber cual es la partición que deseamos clonar, debemos conocer el tamaño de dicha partición esto es relativamente simple usando la utilidad df  la que nos permite saber el numero de bloques ocupados, y bloques totales de la partición dato esta que nos es muy útil para saber cuanto queramos iniciar el proceso de clonación. Debemos recordar que para que el reporte sea exitosos debemos previamente haber montado la partición en el sistema, esto se logra por medio del comando mount una ves montado el sistema de archivos es relativamente simple el uso de df, ya que solo es escribir el comando en la linea asi

#mkdir /mnt/disco_c

#mount –t vfat /dev/hda1 /mnt/disco_c

#df

Una vez se determina las particiones a copiar por su tamaño o su ubicación procedemos a hacer la copia, existen varios métodos de copia en este primer articulo nos ocuparemos de copia de disco a disco, es decir copia de un disco duro a otro instalado en la misma maquina, sin embargo en la segunda parte de este articulo veremos como hacerlo atreves de la red de una maquina a otra.

El primer paso es extraer el MBR proceso que se logra por medio del comando dd asi:

#dd if=/dev/hda of=/mnt/floppy bs=512 count=1

El comando anterior se lee de la siguiente forma: de la unidad de disco duro a extraiga en paquetes de 512bytes el primer paquete y copuelo en la unidad floppy, previamente debimos haber montado en el sistema la unidad floppy, aunque no importa si esta o no montado el disco duro.

El siguiente paso consiste en hacer la copia en el disco duro b de la información del disco a lo cual se puede hacer por medio del comando:

 #dd if=/dev/hda1 of=/dev/hdb1 bs=1024k

El comando anterior toma como origen la información del disco duro a en la partición 1 y la coloca en el disco duro b en la partición 1 en paquetes de 1024k, recuerde que el disco de destino debe tener al menos la misma capacidad de la partición de origen, no es importante que los discos duros sea  sin embargo del mismo tamaño; este sistema le permite hacer copias fieles de la partición inicial de un disco, si desea puede almacenar toda la partición en un archivo dentro del otro disco para su posterior restauración en otra maquina. Debe previamente haber creado una partición del mismo tamaño del origen (a) en el destino (b) no importa que sistema de archivo utilice puesto que se rescribirá al hacer la copia sin embargo es recomendable que sean del mismo tipo.

Para crear un archivo que almacene la información en el disco duro de destino recuerde que la partición de destino debe ser de lectura escritura (rw) el comando anterior se cambia de la siguiente forma:

#dd if=/dev/hda1 of=/dev/hdb1/archivodestino.bck bs=1024k

El archivo de destino en el caso anterior será archivodestino.bck el nombre y la extensión es poco relevante para el programa, pueden ser cualquiera que elija el administrador.

Si se desea llevar un paso mas adelante la copia se pueden guardar las diferentes particiones del disco duro en una serie de archivos pero recuerde que adicionalmente debe guardar la información de reconstrucción de las particiones extendidas en otro archivo esta tarea puede ser realizada de la siguiente manera.

#sfdisk –d /dev/hda >/mnt/floppy/partición.tbl

el comando anterior toma toda la información de particon del disco duro y la vuelca en un archivo de la unidad floppy. Recuerde hacer copias de seguridad tanto del MBR como de este ultimo archivo puesto que en caso de perder la información de este par de archivos no podrá reconstruir el sistema y no podrá tener un sistema completamente funcional, sin embargo podrá montarlo y leerlo en maquinas Linux si es de tipo NTFS, FAT, FAT32, VFAT u otro en Windows.

Si ha seguido los pasos anteriores no debe tener ninguna dificultad para hacer sus propias imágenes pero recuerde que este proceso puede tomar mucho tiempo dado que una partición típica de un sistema puede medir mas de 4Gb, adicionalmente recuerde que en kernel anteriores a 2.4 el tamaño máximo de archivos es de 2Gb por lo que es recomendable que utilice un sistema con kernel 2.4 o superior.

Dependiendo de sus necesidades es recomendable que descargue una distribución de Linux que no requiera instalación en el sistema, algunas de estas se ejecutan en floppy y otras en CD-ROM, requieren una mínima cantidad de memoria y toda la información se ubica en discos virtuales en memoria. Una lista de las distribuciones disponibles la puede encontrar aquí.

Si desea hacer un sistema a escala nuestro portal y su servicio de consultoría puede ayudarle en la creación e implementación del mismo. Cualquier duda puede ser enviada a angelo337@creangel.com