Limpie la RAM al apagar para evitar un ataque de arranque en frío

Limpie la RAM al apagar para evitar un ataque de arranque en frío

Mi sistema está cifrado usando Full Disk Encryption, es decir, todo excepto /boot está cifrado usando dmcrypt/luks. Estoy preocupado porAtaques de arranque en frío, donde los investigadoresdemostrado, ese contenido podría extraerse paraunos 5 minutos.

¿Puede proporcionarnos instrucciones sobre:

  • cómo activar kexec en un nuevo kernel en los últimos pasos del proceso de apagado/reinicio (para garantizar un desmontaje limpio, evitar la corrupción del sistema de archivos y garantizar que el kernel antiguo se sobrescriba)
  • cómo crear ese kernel, que borra toda la memoria RAM

es decir, ¿puedes explicar, por favor, cómo hacer lo mismo en Ubuntu?

¿Cómo detectar el apagado? ¿Cómo iniciar el borrado de RAM? La RAM debe borrarse cuando el usuario hace clic en "apagar" o si inicia un "script de pánico".

¡Gracias por tus esfuerzos!

Trabajo prioritario:

Si desea que la función se haga realidad, ¡vote en Ubuntu Brainstorm!

http://brainstorm.ubuntu.com/idea/30076/

Respuesta1

Si no estás utilizando RAM antigua como DDR2, 512 MB o 1024 MB, entonces no deberías preocuparte por el CBA.

Eche un vistazo a la investigación originalaquí(PDF).

Si lo lee detenidamente, encontrará que sólo DDR2 y anteriores son propensos a este ataque. DDR3 pierde voltaje demasiado rápido para permitir el procedimiento de desmontaje y congelación de la carcasa de la computadora. Así que simplemente desconéctelo antes de abrir la puerta.

También,este papelconfirma que DDR3 no es susceptible a un CBA. Si de hecho quieres asegurarte porque tienes RAM DDR2, habilítalo en BIOS:

  1. Inicio automático después de una pérdida de energía
  2. Comprobación de RAM en el momento del arranque

y haga lo mismo que con DDR3, pero después de desconectarlo, vuelva a enchufarlo. Su computadora se iniciará sola y borrará la memoria RAM revisándola. Si no se borra con la suficiente eficacia, el proceso de arranque cargará el sistema en la RAM nuevamente. Será demasiado rápido permitir el ACB.

Desde elenlaceusted proporcionó en los comentarios:

Por lo tanto, en conclusión, el ataque de arranque en frío no debe verse como el método principal para adquirir la memoria de un sistema informático sospechoso. En su lugar, se deben intentar otras técnicas, incluida la adquisición basada en software y hardware (es decir, FireWire), antes de llevar a cabo un ataque de arranque en frío contra dicho sistema. Sin embargo, si ocurre una situación en la que las técnicas antes mencionadas no están disponibles (es decir, la falta de conexión FireWire o la consola de inicio de sesión del sistema o la adquisición de memoria remota no es posible) o son ineficaces, entonces el ataque de arranque en frío puede administrarse asumiendo que el investigador entiende ambas. cómo y dónde pueden surgir problemas y salir mal.
Como ha demostrado este estudio, no se puede establecer que el ataque de arranque en frío sea particularmente sólido o confiable desde el punto de vista forense, ya que en la mayoría de los experimentos realizados aquí las claves de cifrado residentes en la memoria no se pudieron encontrar ni extraer de manera consistente, aunque deberían haberlo sido. Lo mismo puede decirse de las diversas cadenas y búsquedas de palabras clave que deberían haber arrojado muchas más cadenas y palabras clave que las encontradas en la mayoría de los experimentos. Además, como se ha demostrado, el simple hecho de congelar rápidamente la memoria del ordenador no garantiza la adquisición exitosa de dicha memoria. Otros factores y variables ya examinados han examinado plenamente estas cuestiones y sus causas subyacentes. Por lo tanto, los autores de este estudio opinan que el ataque de arranque en frío puede ser útil en algunos casos para adquirir la memoria de un sistema sospechoso, pero que este método no debe considerarse una panacea y, en cambio, debe usarse como último recurso cuando todos otras vías se han agotado.
Por último, incluso una adquisición exitosa que haya sufrido poca o ninguna degradación probablemente no se presentará ante un tribunal como prueba sólida, al menos hasta que se haya presentado jurisprudencia y se pueda demostrar que la integridad de la memoria adquirida está intacta mediante un análisis sólido y Metodología comprensible. La búsqueda continúa para establecer una forma más adecuada y confiable de adquirir la memoria de la computadora de un sospechoso...

Además, si verifica los resultados del experimento, se dará cuenta de que extrajeron con éxito las claves AES solo en los sistemas 2 y 6 y que fueron ataques de arranque en caliente cuando observe las especificaciones del sistema 2: 1024 MB de RAM, 533 MHz; esto es antiguo. cosa. El otro sistema, el sistema 6 con 256 RAM / 128 RAM, supongo que se explica por sí mismo.

Precisamente por eso su conclusión fue:

La búsqueda continúa para establecer una forma más adecuada y confiable de adquirir la memoria de la computadora de un sospechoso...

En realidad, creo que si tiene datos muy, muy importantes, no sólo debe utilizar Full Drive Encryption, sino también guardarlos en un archivo cifrado separado. Cifrado con algoritmos en cascada y una contraseña diferente a la utilizada durante el cifrado del disco. ¿Quiere una forma segura de apagar la PC? Aquí lo tienes:

  1. Mantenga los datos seguros en un archivo cifrado con el algoritmo en cascada True Crypt
  2. Usar serpiente
  3. Cree un script para manejar el apagado:

Para ventanas:

truecrypt.exe /wipecache
shutdown -s -f -t 1

Para Linux:

truecrypt /wipecache
shutdown -h now

Limpiar el caché garantiza que no queden datos vulnerables en la RAM después del apagado. Si alguien realiza un ataque de arranque en frío, en el mejor de los casos tendrá acceso a su sistema. No tendrán datos almacenados en un archivo cifrado por separado.

Respuesta2

Peter AH Peterson de UCLA escribió una tecnología de prueba de concepto y desarrolló la teoría para ejecutar de forma segura su sistema con RAM cifrada, y la solución esexpresamentediseñado para prevenir ataques de arranque en frío. El nombre de su periódico es Cryptkeeper. No sé si ofrece el software para descargarlo o si es posible obtener una licencia de UCLA. Sin embargo, aparentemente es posible, al menos en principio, diseñar un criptosistema para RAM que sea seguro incluso si se divulga todo el contenido de la RAM.

El impacto medido en el rendimiento de esta solución está entre una sobrecarga del 9% y una desaceleración por un factor de9, dependiendo de cuán "patológico" sea el escenario. Se cita que la cifra del 9% se aplica a la navegación web con Firefox, pero no indicaron qué caso de uso ralentizaría el rendimiento en un factor de 9.

La solución de Peterson no "borra" la RAM como usted sugiere. Más bien, utiliza un "mecanismo seguro de ocultación de claves" para evitar que la clave de descifrado se revele simplemente por obtener el contenido de la RAM. No estoy seguro de los detalles de la implementación, pero supongo que se explica en el documento.

El artículo fue publicado en 2010.

Está disponible para su compra en el sitio web ieeexplore del IEEE. También está disponible para descarga directa como PDF sin cargo desde el sitio web de alguien; está en los resultados de búsqueda de Google para "cryptkeeper RAM"... pero no estoy seguro de cuánto tiempo ese resultado permanecerá allí.

Estuve tentado de hacer de esto un comentario en lugar de una respuesta, porque esta solución no "borra" la RAM como usted me pidió. Sin embargo, creo que si la investigación de Peterson es técnicamente correcta, esto tendrá el mismo efecto práctico (o posiblemente incluso un efecto "mejor") que borrar la RAM. La razón es que un atacante físico experto probablemente podría interrumpir el intento del programa de su sistema de borrar la RAM si esperaba que ocurriera tal operación (por ejemplo, sacar la batería de la unidad o mantener presionado el botón de encendido antes de que pueda realizarse la operación). completo. La solución de Peterson es más segura porque no se basa en un período de tiempo necesario durante el cual se permite a la computadora continuar ejecutando instrucciones para completar el borrado. En cambio, la memoria esconstantementeprotegido, incluso si la propia CPU muere instantáneamente por alguna increíble hazaña tecnológica antes de que tengas la oportunidad de reaccionar ante el atacante.

Y por "increíble hazaña tecnológica" me refiero a algo como Stuxnet.

Respuesta3

me imaginomemtest86Sería bastante bueno para borrar la RAM. Siempre quise probar lo siguiente pero no lo hice. Si lo pruebo lo actualizaré.

Leer la kexecpágina de manual. Y no intentes con kexecel .iso, pero necesitas descomprimir el iso y enganchar el binario de arranque. En el sitio memtest86 anterior puede descargar el binario.

Primero debes usar un kexeccomando para cargar lo que estás iniciando.

Entonces creo que lo que puedes hacer es:

kexec -l {path-to-memtest86-bootable-binary} --append=console=ttyS0,115200n8

y cuando esté listo para apretar el gatillo:

kexec -e

Estoy pensando (pero podría estar equivocado) que --append=console=ttyS0,115200n8hace que memtest86 funcione a través del puerto serie. Entonces, si tiene uno, puede verificar que funciona incluso si no aparece en la salida de video, lo cual es una posibilidad ya que memtest86 no realiza la inicialización del video. Probablemente sea una buena idea eliminar cualquier instancia en ejecución de X.

El paquete Debian kexec-tools(también disponible en Ubuntu) conecta esto en los scripts de apagado, por lo que si lo edita /etc/default/kexecpuede indicarle al proceso de apagado que lo invoque kexeccomo último paso en lugar de reiniciar. Es decir, si está interesado en un cierre limpio.

En caso de emergencia, sync; kexec -efuncionaría.

Sin embargo, es posible que algunos conjuntos de chips, una vez inicializados, provoquen bloqueos si se abordan ciertas áreas de la memoria. No sé cómo funcionaría esto en la práctica.

Un buen compromiso si kexecno funciona es instalar memtest86 en su gestor de arranque, ponerlo como elemento de arranque predeterminado y tener un retraso de 1 segundo hasta la elección automática (o sin retraso y confiar en presionar una tecla para abrir el memu). Esto podría llevarlo a memtest86 desde una condición de "nuevo inicio" con bastante rapidez, pero no instantáneamente.

Tenga en cuenta que esto no tiene en cuenta la RAM de vídeo. Una solución para eso esconfigure su RAM de video como un dispositivo de bloquey salida /dev/randomal dispositivo de bloque durante algunas iteraciones.

Respuesta4

El problema es si su computadora está funcionando y la pantalla está bloqueada. En este punto, la clave AES se almacena en la RAM y el usuario está lejos de la computadora. Un intruso podría abrir la carcasa de la computadora y extraer los módulos de RAM, manteniéndolos encendidos y colocándolos en un dispositivo separado que lea su contenido. No es necesario apagar el sistema ni congelar los módulos antes de la extracción. No es confiable que la RAM contenga la clave AES, pero sí lo es el caché del procesador, como la solución llamada TRESOR. Desafortunadamente, eso requiere un kernel de Linux antiguo y conocimientos avanzados sobre cómo parchear y compilar el kernel.

información relacionada