Apéndice B - Sistema de Ficheros Loopback de Linux

El kernel de Linux tiene soporte vara múltiples sistemas de fichero (ver "manmount") tales como: adfs, affs, autofs, coda, coherent, devpts, efs, ext, ext2, hfs, hpfs, iso9660, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, romfs, smbfs, sysv, udf, ufs, umsdos, vfat, xenix, xiafs.

Los sistemas de ficheros coherent, sysv y xenix son idénticos y en el futuro no se mencionarán los tres sino, se limitará a utilizar el nombre sysv.

El soporte de una variedad de sistemas de ficheros por el kernel de GNU/Linux nos ofrece una buena plataforma de análisis ya que no tendremos que cambiar ni de máquina ni de sistema operativo para estudiar un sistema comprometido que no sea GNU/Linux.

Linux también tiene soporte para dispositivos "loopback", que permiten montar un sistema de ficheros dentro del fichero. Este método se utiliza dentro de los discosarrancables, CD-ROMs auto-ejecutables, sistemas de fichero cifrados para laptops, etc. Para más información podemos leer siguiente documentación de losetup(8), mount(8) [30].

Los dispositivos "loop" en las versiones anteriores de GNU/Linux eran 8 por defecto y se utilizaban de forma indirecta por el comando "mount", mientras que actualmente son 16. Estos dispositivos se encuentran en el directorio /dev junto con el resto de dispositivos.

[[email protected] dev]$ ls -l /dev/loop*

brw-rw---- 1 root root 7,0 Apr 11 16:25 /dev/loop0
brw-rw---- 1 root root 7,1 Apr 11 16:25 /dev/loop1
brw-rw---- 1 root root 7, 10 Apr 11 16:25 /dev/loop10
brw-rw---- 1 root root 7, 11 Apr 11 16:25 /dev/loop11
brw-rw---- 1 root root 7, 12 Apr 11 16:25 /dev/loop12
brw-rw---- 1 root root 7, 13 Apr 11 16:25 /dev/loop13
brw-rw---- 1 root root 7, 14 Apr 11 16:25 /dev/loop14
brw-rw---- 1 root root 7, 15 Apr 11 16:25 /dev/loop15
brw-rw---- 1 root root 7,2 Apr 11 16:25 /dev/loop2
brw-rw---- 1 root root 7,3 Apr 11 16:25 /dev/loop3
brw-rw---- 1 root root 7,4 Apr 11 16:25 /dev/loop4
brw-rw---- 1 root root 7,5 Apr 11 16:25 /dev/loop5
brw-rw---- 1 root root 7,6 Apr 11 16:25 /dev/loop6
brw-rw---- 1 root root 7,7 Apr 11 16:25 /dev/loop7
brw-rw---- 1 root root 7,8 Apr 11 16:25 /dev/loop8
brw-rw---- 1 root root 7,9 Apr 11 16:25 /dev/loop9

Combinar dos utilidades como dd y mount es más fácil de lo que puede pensar. Puede hacer una prueba copiando imágenes de cada partición con dd del sistema de ficheros de la víctima, los copia a su sistema y les monta utilizando dispositivos "loopback". Para nuestro ejemplo, las particiones fueron obtenidos de un disco duro interno de una Sun SPARC ejecutando Solaris 2.5:

# ls -l c0t3d0*
-rw-r--r--1 root root 189399040 Sep 14 12:44 c0t3d0s0.dd
-rw-r--r--1 root root 171991040 Sep 14 13:15 c0t3d0s1.dd
-rw-r--r--1 root root 220733440 Sep 14 12:57 c0t3d0s3.dd
-rw-r--r--1 root root 269475840 Sep 14 12:51 c0t3d0s6.dd
-rw-r--r--1 root root 515973120 Sep 14 13:48 c0t3d0s7.dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo "sun" y que deseamos utilizar un dispositivo loopback de siguiente manera:

mount -o ro,loop,ufstype=sun -t ufs c0t3d0s0.dd /t

Desde aquí podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema de víctima /etc/vfstab (montado en este ejemplo bajo /t):

grep c0t3d0 /t/etc/vfstab

/dev/dsk/c0t3d0s1 - - swap - no -

/dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 no -

/dev/dsk/c0t3d0s3 /dev/rdsk/c0t3d0s3 /var ufs 1 no /dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /export/home ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera:

mount -o ro,loop,ufstype=sun -tufs c0t3d0s3.dd /t/var

mount -o ro,loop,ufstype=sun -t ufs c0t3d0s6.dd /t/usr

mount -o ro,loop,ufstype=sun -t ufs c0t3d0s7.dd /t/export/home

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo "graverobber".

# df
Filesystem 1k-blocks Used Available Use% Mounted on
/x/c0t3d0s0.dd 173791 6872587696 44% /t
/x/c0t3d0s3.dd 202423 26148156035 14% /t/usr
/x/c0t3d0s6.dd 246743 19759224481 89% /t/var
/x/c0t3d0s7.dd 473031 111506314225 26% /t/export/home

mount

. . .

/x/c0t3d0s0.dd on /t type ufs (ro,loop=/dev/loop0,ufstype=sun)

/x/c0t3d0s3.dd on /t/usr type ufs (ro,loop=/dev/loop1,ufstype=sun)

/x/c0t3d0s6.dd on /t/var type ufs (ro,loop=/dev/loop2,ufstype=sun)

/x/c0t3d0s7.dd on /t/export/home type ufs (ro,loop=/dev/loop3,ufstype=sun)

results matching ""

    No results matching ""