Tag Archives: seguridad

Hipócritas

We believe the commonly accepted practice of reporting vulnerabilities directly to a vendor serves everyone’s best interests. This practice helps to ensure that customers receive comprehensive, high-quality updates for security vulnerabilities without exposure to malicious attackers while the update is being developed.

Reciente Security Advisory de Microsoft
acerca de la nueva vulnerabilidad en SMB que afecta a Windows Vista y Server 2008

Recuperar la clave de cifrado de un disco duro congelando la memoria RAM

Lo he visto primero en Kriptopolis y luego en Quands.cat, este experimento realizado en la Universidad de Princetown demuestra cómo pueden extraerse las claves de cifrado de un dico duro congelando la memoria DRAM.

Entendemos que, para poder cifrar/descifrar los datos de un disco duro mientras el ordenador está en uso, la clave de cifrado debe estar en la memoria RAM. También damos por supuesto que este tipo de memoria pierde completamente sus datos cuando apagamos el ordenador. No electricidad, no datos. Pues bien, en realidad los datos de la memoria DRAM se mantienen unos segundos, hasta que los condensadores vuelven a su estado oiriginal. Pero a menos temperatura, más se va a alargar este proceso. Estos investigadores han demostrado que congelando la memoria, los datos pueden mantenerse los minutos suficientes como para volcar la información a un disco externo. Luego ya con calma, se puede buscar entre esta información la clave de cifrado del disco duro de la máquina, o cualquier otra cosa que estuviese en memoria en el momento de apagar el ordenador.

En estos experimentos se han recuperado claves de BitLocker (Windows), FileVault (Mac), dm-crypt (Linux, el que uso yo en mi máquina :D ) y TrueCrypt (Windows, Mac y Linux). Se puede ver todo de forma bastante clara en la sección de vídeos e imágenes de la página. Incluso hay un documento PDF explicativo de veintipico páginas.

Estos tipos tan simpáticos, que parecen sacados de un capítulo de It Crowd, son los coautores del experimento. Hay mucha más información en la página web que han creado:

Transferencia encriptada de archivos mediante SCP

SCP (Secure Copy) es un programa que viene con la mayoría de instalaciones de SSH y que nos permite transferir archivos entre 2 máquinas de forma encriptada. Su uso es muy simple, pero hay que tener en cuenta que nuestro host debe tener el cliente SSH instalado y el host remoto debe tener el servidor SSH habilitado.

Copiar un archivo de nuestro ordenador a un ordenador remoto:

$  scp archivo.tgz usuario@host_remoto:/ruta/remota/

Se nos pedirá la contraseña de ‘usurio’ en ‘host_remoto’ y se procederá a la transferencia del archivo hacia ‘/ruta/remota/’ si es que ‘usuario’ tiene permisos de escritura en esa ruta.

Copiar un archivo de un ordenador remoto a nuestro ordenador:

$ scp usuario@host_remoto:/ruta/remota/archivo.tgz /ruta/local/

También se nos pedirá la contraseña de ‘usuario’ en ‘host_remoto’ y se procederá a la transferencia del archivo hacia ‘/ruta/local’ si es que nuestro usuario tiene permisos de escritura en esta ruta.

En cualquiera de los dos casos, si el puerto TCP del servidor SSH no es el 22 (por defecto siempre es el 22) tendremos que especificarlo con el parámetro -p <número_de_puerto>.

Copias de seguridad del MBR y la tabla de particiones en GNU/Linux

En primer lugar tenemos que plantearnos si realmente necesitamos guardar en un fichero el contenido de nuestro Master Boot Record y de nuestra Tabla de Particiones, posiblemente no. Se me ocurren dos casos, a modo de ejemplo, en que puede ser muy útil.

El primero estaria destinado a la clonación de discos, puedes guardar una imagen de cada partición junto con una imagen del sector de arranque. Luego ir al disco destino y volcar esa información sin problemas, consiguiendo un perfecto clon (los dos discos tienen que ser iguales). A mi la clonación de discos no me interesa especialmente, pero ahí queda eso.

El segundo caso es cuando se trata de una copia de seguridad, simplemente. Si eres un fanático de tu distribución favorita y llevas con la misma instalación desde hace 4 años (subsistiendo como un héroe a base de actualizaciones), supongo que no debes tocar a menudo el MBR y mucho menos crear y eliminar particiones. Pero si eres como yo y te dedicas a instalar todo lo que te cae en las manos (físicamente, sin usar virtualización), tendrás el disco bien partido y repartido (Linux permite instalarse en particiones lógicas, por lo que podrías instalar decenas de distribuciones en un sólo disco duro). En este caso es recomendable hacer copias de seguridad del sector de arranque por lo que pueda pasar.

Creando copia de seguridad del MBR:

# dd if=/dev/sda of=/root/backups/mbr bs=512 count=1

Recuperando el MBR a partir de la copia de seguridad:

# dd if=/root/backups/mbr of=/dev/sda bs=512 count=1

dd es una utilidad que, simplemente, copia el contenido de la entrada estándar if en la salida estándar of. En mi caso el disco duro /dev/sda es la entrada y el fichero /root/backups/mbr es la salida (y viceversa para la recuperación). bs es un parámetro que contiene el número de bytes que se van a copiar (el MBR está situado en la pista zero del disco duro, los primeros 512 bytes) y count es un parámetro que contiene el número de bloques que se van a copiar (los bloques son de 512 bytes, por lo que vamos a copiar solo uno, el primero).

Creando copia de seguridad de la Tabla de Particiones:

# sfdisk -d /dev/sda > /root/backups/tabla_part

Recuperando la Tabla de Particiones a partir de la copia de seguridad:

# sdfisk /dev/sda < /root/backups/tabla_part

sfdisk sirve para manipular tablas de particiones en Linux. En la creación de la copia de seguridad usamos el parámetro [-d] para que nos dé una salida en texto plano que pueda ser usada luego para regenerar la tabla. Pasamos esta salida al fichero /root/backups/tabla_part mediante el redireccionador de STDOUT [>]. Para recuperar la tabla sólo hay que usar ese fichero pasándolo por el redireccionador de STDIN [<] hacia el comando sfdisk.

En los ejemplos he usado /dev/sda como disco duro porque es así en mi caso, pero esto puede ser diferente dependiendo de si el disco es IDE, SATA, SCSI o USB. Hay varias formas de saber a qué disco nos estamos refiriendo. una es usar el comando mount para ver las particiones montadas, otra seria leyendo el fichero /etc/fstab donde están las instrucciones de montaje de discos para el arranque. Pero estas opciones no funcionarian por ejemplo des de un Live CD. La solución mas útil para ver todos los discos y particiones (aunque no estén montadas) es:

# fdisk -l

Este comando nos listará todas las particiones (muy útil para detectar un pendrive por ejemplo). Hasta aquí este mini manual, espero que a alguien le pueda ser útil.