Título: Extraer informacion de Cifrado en DiscoDuro de FreeBSD Publicado por: AlbertoBSD en 8 Septiembre 2017, 06:45 am Extraer informacion de Cifrado en DiscoDuro de FreeBSD
FreeBSD ofrece la opcion de cifrar completamente el disco duro. La principal herramienta es Geli[2]. Para ver la información sobre el cifrado del disco, OJO no la información cifrada, sino la información relacionada con el tipo y modo de cifrado usado para el disco duro en cuestion, es necesario primero obtener acceso fisco al disco, una en otra instalación con FreeBSD podemos extraer el sector que tiene la meta-data a analizar, este sector del disco duro (512 Bytes) se encuentra en el ultimo sector de la particion cifrada. Si no sabemos cual particion es la particion cifrada podemos extraer el ultimo sector de todas la particiones de el disco duro. Ejemplo: Discoduro a analizar /dev/da1 Si listamos /dev/da1* podremos ver que tiene 2 particiones para este caso en particular Código: # ls /dev/da1* Tambien necesitamos saber cuanto espacio tiene el disco duro # geom disk list o # gpart list Ejemplo de salida: Código: Providers: Para este ejemplo la particion tiene 20401094656 con lo cual si dividimos entre 512 nos da un total 39845888 Sectores con lo cual el ultimo sector valido es 39845887 que el que tenemos que leer, entonces el comando para extraer dicho sector es: # dd if=/dev/da1p1 of=./sector.backup bs=512 iseek=39845887 count=1 Si nuestros calculos fueron acertados tendremos un archivo llamado sector.backup de 512 bytes. El contenido de ese archivo puede variar mucho dependiendo del estado previo del disco duro. Si el disco duro esta cifrado con mediante geli el archivo empezara con la siguiente leyenda: GEOM::ELI, lo restante es informacion en binario con el siguiente orden Código: struct g_eli_metadata { El programa puede ser visto en mi cuenta de github[3] si lo compilamos y ejecutamos pasandole como parametro el archivo de 512 bytes tendremos una salida similar a la siguiente [Algunos datos fuero cambiados]: Código: albertobsd@XHGC-VMBox:~ % ./eli_metadata sector.backup Datos interesantes de la salida: E ALGO: 22 Podemos ver en /usr/src/sys/opencrypto/cryptodev.h #define CRYPTO_AES_XTS 22 Que esta cifrado usando AES_XTS que segun [4] es el estandar recomenado para el cifrado de disco. Key Length: 128 El cifrado usa una Llave de 128 bits, se podria configurar a 256 para un mejor cifrado. A Algo: 0 El sistema no tiene Autenticacion, esto quiere decir que no se tiene forma de saber si la informacion que leemos del disco a sido modificada o sobreescirta por terceros, esto tambien da lugar a un ataque tipo replay para poder calcular la clave maestra Avaible Keys: 1 El sistema solo tiene una llave maestra lo cual si se nos olvida nuestra "passphrase" o se nos pierden nuestras llaves tendremos muy pocas (NULAS) posibilidades de recuperar nuestra informacion Iterations: 218830 Nuestra "passphrase" junto con el Salt y nuestros Keyfiles si existen es derivada 218830 veces mediante pkcs5v2_genkey en g_eli.c y el resultado de esta operacion se usa para descifrar la llave encripada en. Master Key: 3F4E170DAFF6539E9301EEF2840ED233BA3B84D02EB96 3AEBB0CA1EED891034A85A3BB325F7B09398706944DFE84CE4748D2C4F0E1FEA4FD601CC18A922ADE51C9D7DC740292A979153B744FC49F47956E24E23D64BFF854F04E3AD41C39215D834DF5E317FF9C1661D9B3300E40D85CE4C270BF57DD1AA82489A97F6741A119AF25D1987ED584E1585FD7ADAE7406D9119AC7AEE654DA2B9C28D2D39599593E1B751BAE614C921E814660E240D18B7650477E935941299F7D34C91350BD289902B7F7DF23D7523C1B6FC0AB33CAB3AF07E5EA0E97835EF13F31B1F56004A552F074951D8B490FEA605D449E2AEA774574BDFEE9153392E4084DF934FCA40638B676A868E3BAB8CA0E0A1912B348C645F74BCA3AB7D697053DD25107981086284F687D1D5EF1DA16280EE7CD0920A92CDAFAF7970D084C4C344FAB3117D0993A591AA43B1D09BE6D5AFB12C82C375BD980AC60F7E0A65C146F8E54E1D84FA0D73933EC26341E5B1D11BA14AF8FA3990F834C4FA39BEF17EECCE206670E5E854B El archivo termina con un MD5 Checksum de los valores en binario previamente mostrados, solo para validar que la información sea correcta. Si es posible usar la información contenida en el archivo para Atacar por fuerza bruta y obtener la Clave Maestra decifrada pero en computacionalmente casi imposible de realizar. [1] Original Post: https://albertobsd.blogspot.mx/2017/09/extraer-informacion-de-cifrado-en.html (https://albertobsd.blogspot.mx/2017/09/extraer-informacion-de-cifrado-en.html) [2] Man page of Eli: https://www.freebsd.org/cgi/man.cgi?query=geli&apropos=0&sektion=8&manpath=FreeBSD+11.1-RELEASE&arch=default&format=html (https://www.freebsd.org/cgi/man.cgi?query=geli&apropos=0&sektion=8&manpath=FreeBSD+11.1-RELEASE&arch=default&format=html)[3] Herramienta Utilizada: https://github.com/albertobsd/geli_metadata (https://github.com/albertobsd/geli_metadata) [4] https://en.wikipedia.org/wiki/Disk_encryption_theory (https://en.wikipedia.org/wiki/Disk_encryption_theory) |