Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Kali-Linux, su opción de autodestrucción y 10 pasos para una alternativa...

Esaú A.
  • Escrito por Esaú A. el 25 de Abril de 2014
  • 4 min de lectura | Linux
Kali-Linux, su opción de autodestrucción y 10 pasos para una alternativa...

Tengamos en mente por un momento toda la información personal que albergamos en nuestro equipo (contraseñas, correos electrónicos, documentación personal, fotografías...). Ahora imaginemos que esa información cae en manos de cualquier desaprensivo o maleante que se ha hecho de alguna forma con el acceso a nuestro ordenador particular. Yo personalmente no estoy tranquilo ahora mismo, ni aun con el cifrado de datos activo en el arranque.

Puede sonar paranoico, incluso puede que lo sea, pero hay personas que esto les preocupa y mucho bien porque manejen información muy delicada o bien porque sean muy cautelosos con su propia información (yo no perdonaría a aquel/aquella que se hiciese con mi equipo y hurgase en mi colección de wallpapers de Transformers ¬¬).

Pero para estas personas tenemos a los desarrolladores de la distribución Kali-Linux (sucesora oficial de Backtrack), que en su última versión ( 1.0.6 ) han introducido un módulo que mediante una contraseña maestra elimina todo dato existente en nuestro disco duro. Por lo que si alguien da con dicha contraseña e intenta acceder para ver el contenido de nuestro disco, se encontrará con una flamante unidad inaccesible.

Este módulo llamado "Emergency Self-Destruction of LUKS" lo encontramos dentro del programa cryptsetup , aplicación que usamos para encriptar nuestro disco y establecer una contraseña de desencriptación al encender el equipo. Nos ofrece la posibilidad de establecer una segunda contraseña (la primera sería la que definimos para desencriptar los datos) o una contraseña maestra con la que deshacernos de los datos de nuestro equipo para evitar miradas ajenas.

Sin duda es una opción muy interesante pero más allá de poder destruir los datos, hay una opción que veo más práctica, aunque si es para evitar que nadie vea nada del contenido de nuestro disco, eliminar los datos es sin duda la mejor alternativa.

"Para muestra un botón" como se suele decir, vamos a ver un caso práctico de cómo encriptar, "brickear" nuestro disco, y luego recuperar los datos. Comencemos:

1. Descargamos e instalamos la última versión de Kali-Linux ( 1.0.6 ) con Full Disk Encryption.

2. Procedemos a comprobar la información del disco que nos interesa encriptar abriendo una terminal y escribiendo:

cryptsetup luksDump /dev/sdb1

Y deberemos obtener algo como esto:

LUKS header information for /dev/sdb1

Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d

Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

3. Como podemos ver, el único slot habilitado es el 0, por lo que pasaremos a añadir nuestra clave tecleando el siguiente comando en nuestra terminal:

cryptsetup luksAddNuke /dev/sdb1

Enter any existing passphrase:
Enter new passphrase for key slot:

4. De nuevo mostraremos la cabecera de nuestro LUKS para comprobar que los cambios se han realizado correctamente:

cryptsetup luksDump /dev/sdb1

LUKS header information for /dev/sdb1
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d

Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED
Iterations: 267782
Salt: 8c e5 a2 31 60 2a f5 39 41 e9 52 94 eb 82 b8 c2
b7 a6 6e 4a 7a 0e b1 85 c2 3a 75 d6 a7 6a 76 b3
Key material offset: 512
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

5. Perfecto! Ahora podemos ver claramente que el slot 1 contiene nuestra clave, por lo que pasaremos a hacer una copia de seguridad de estos datos con el siguiente comando desde la terminal:

cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sdb1

file luksheader.back
luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d

6. Hablando de seguridad, no queremos quedarnos cortos, por lo que cifraremos estos datos para asegurarnos su almacenamiento. Para este menester usaremos openssl (antes de que más de un@ empiece a tirarse de los pelos, más adelante comentaremos acerca de Heartbleed y de que con ese bug el mundo no se ha acabado ^_^) que por defecto viene instalado en la distribución que tenemos instalada:

openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

ls -lh luksheader.back*
-r-------- 1 root root 2.0M Jan 9 13:42 luksheader.back
-rw-r--r-- 1 root root 2.0M Jan 9 15:50 luksheader.back.enc

file luksheader.back*
luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
luksheader.back.enc: data

7. Ya tenemos el encabezado cifrado y preparado para su almacenamient o, para lo que recomendamos una unidad que sea fácilmente accesible, como una tarjeta de memoria , o mejor aún una unidad USB .

Ahora pongámonos en el supuesto de que tenemos que desplazarnos a ver a un cliente, y necesitamos nuestro equipo para operar correctamente en el lugar de destino, pero desconfiamos de los accidentes que podamos sufrir en dicho viaje, y las manos en las que podría acabar nuestro equipo que está cargado de información sensible, clasificada o algo por el estilo... Procedemos a hacer uso de nuestro cifrado, introduciendo la clave de cifrado y reiniciando el equipo. Vaya! No inicia sin la clave y si intento arrancar desde un live cd de alguna distribución de Linux me dice que la unidad está inaccesible ...

8. Probemos con un live cd de Kali-Linux , abrimos una terminal y veamos el volcado del encabezado de LUKS:

cryptsetup luksDump /dev/sdb1

LUKS header information for /dev/sdb1

Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d

Key Slot 0: DISABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Comprobamos que ninguno de los slots para las claves está siendo usado, por lo que cryptsetup funcionó como se esperaba.

9. Desde esa misma terminal, podemos restaurar la cabecera de LUKS , conectado la unidad donde almacenamos las claves, desencriptando las mismas y recuperando el encabezado desde el archivo de recuperación. O lo que es lo mismo, escribiendo estos comandos en la terminal:

openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back

enter aes-256-cbc decryption password:

cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sdb1

WARNING!
========
Device /dev/sda5 already contains LUKS header. Replacing
header will destroy existing keyslots.

Are you sure? (Type uppercase yes): YES

cryptsetup luksDump /dev/sdb1

LUKS header information for /dev/sdb1

Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d

Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED
Iterations: 267782
Salt: 8c e5 a2 31 60 2a f5 39 41 e9 52 94 eb 82 b8 c2
b7 a6 6e 4a 7a 0e b1 85 c2 3a 75 d6 a7 6a 76 b3
Key material offset: 512
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

10. Y con esto ya podremos iniciar de nuevo nuestro equipo, proceder a desencriptar los datos y seguir trabajando en el lugar de destino.

Resumiendo , el procedimiento básicamente es el de encriptar el disco , hacer copia de seguridad de la cabecera de LUKS , encriptar el archivo de copia de seguridad, dejar inutilizable el disco durante el viaje y cuando lleguemos a la zona segura de destino, iniciar desde live cd de Kali-Linux, desencriptar el archivo de copia de seguridad y restaurar la configuración que este contiene.

Espero que esta información os resulte útil de alguna forma, y que nunca tengáis la necesidad de usar el nuevo módulo de autodestrucción que implementa esta distribución.

Recordad suscribiros para estar al tanto de las más actuales noticias, artículos, webinars y mucho más acerca del mundo del software libre y la informática en general.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars