¿Cómo podría uno realmente obtener información confidencial de una partición de intercambio?

8

Cuando busco en Google esta pregunta, solo obtengo todo tipo de información sobre cómo proteger datos confidenciales, cómo cifrar el intercambio y cuán "peligroso" podría ser mantener un intercambio "normal" en un sistema Linux.

Pero no pude encontrar ningún software, método o "cómo" para realmente obtener (leer) cualquier dato de una partición de intercambio.

Entonces, mi pregunta es, como ciudadano "normal" que vive en Europa occidental, ¿es realmente necesario borrar o cifrar el intercambio en mi computadora? Y antes de que alguien responda "sí", ¿puedo tener un ejemplo de cómo podría probar y filtrar mi propio intercambio, de modo que pueda ver qué tipo de datos no están protegidos a pesar de mi hogar encriptado?

Beto
fuente
1
Se puede encontrar un método para esta pregunta
Nattgew

Respuestas:

10

Siendo un ciudadano "normal" que vive en Europa occidental, ¿es realmente necesario borrar o cifrar el intercambio en mi computadora?

Es un juicio personal, uno que depende de cuánto valora la privacidad de sus datos y cuánto desea proteger sus datos para que no se expongan en caso de que caiga en manos de un atacante. Supongamos que tiene una computadora portátil y un día se la roban: ¿qué posibilidades hay de que un ladrón intente extraer contraseñas o claves de cifrado o datos privados, y le importa? A mucha gente no le importa, pero a algunos sí. Es cierto que la mayoría de los ladrones simplemente venderían la computadora portátil para obtener una ganancia financiera inmediata, pero hay casos en los que un atacante podría estar motivado para ir más allá al intentar acceder a los datos en sí.

Y antes de que alguien responda "sí", ¿puedo tener un ejemplo de cómo podría probar y filtrar mi propio intercambio, de modo que pueda ver qué tipo de datos no están protegidos a pesar de mi hogar encriptado?

La memoria de cualquier proceso podría potencialmente intercambiarse al espacio de intercambio. La pérdida de memoria puede ser peligrosa, el ejemplo obvio es Heartbleed. Vea cómo usé Heartbleed para robar la clave criptográfica privada de un sitio . La memoria expuesta por Heartbleed solo pertenece a un solo proceso, mientras que la memoria potencialmente expuesta por su espacio de intercambio pertenece a cada proceso. Imagine que se intercambia un proceso que contiene una clave privada o una lista de contraseñas (por ejemplo, navegador web): esos elementos aparecerán, en texto plano, en el espacio de intercambio. Extraerlos es una cuestión de tamizar a través de la memoria patrones particulares de datos; podrían ser datos ASCII de texto sin formato visibles a través destrings, o podría estar más involucrado, como en Heartbleed (donde la prueba es que algunos bytes consecutivos son un divisor de la clave criptográfica pública). Si tiene una partición encriptada / doméstica, lo que debe buscar es un bloque de datos que forma la clave de encriptación que desbloqueará los datos del usuario.

Un ejemplo de trabajo:

  • hacer bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'para crear un proceso bash con algunos datos secretos en su pila

  • hacer sysctl vm.swappiness=100para aumentar el intercambio (no es necesario, pero puede facilitar el ejemplo)

  • ejecutar top -c, presione f, active la columna SWAP, presione q para volver a la vista superior del proceso, desplácese hacia abajo hasta que vea el bash -cproceso

  • en otro terminal, guarde el programa Chimnay Kanchi de Linux: ¿Cómo cargar la memoria del sistema? a usemem.c, compilarlo gcc -o usemem usemem.cy ejecutarlo usemem &repetidamente en un terminal. Esto usará hasta 512 MB de bloques de memoria a la vez. (No importa qué causa que la memoria se intercambie, podría ser el uso normal del sistema, un proceso de fuga o un ataque deliberado, el resultado final es el mismo)

  • mire la parte superior, espere bash -ca que lo intercambien (valor de columna SWAP> 0)

  • ahora corre strings /dev/sdaX | grep SECRETdonde X es tu parcela de intercambio

  • Felicitaciones: acaba de extraer datos "secretos" de la partición de intercambio. verá múltiples copias del texto SECRETO seguido de la "contraseña", las copias que incluyen la línea de comando completa filtrada del proceso bash principal, el proceso superior y el proceso 'bash -c'. Las líneas que no incluyen la línea de comando completa se han filtrado del proceso 'bash -c'.

  • Para probar que los secretos se escapan de la memoria del proceso, y no solo de la línea de comando, agregue la línea unsigned char secret[] = "SECRET=XXXX";a usemem.c (justo debajo de la unsigned long mem;línea). Vuelva a compilar y ejecute usemem &repetidamente, y strings /dev/sdaX | grep SECRETnuevamente. Esta vez verás el secreto 'XXXX' siendo filtrado.

baño
fuente
+1 para una muy buena explicación y un gran ejemplo.
jobin
-1

Esta pregunta nos lleva a una discusión de problemas entre el desarrollo de software, como el software que mantiene los datos confidenciales en la memoria y el cifrado de datos.

Entonces, para comenzar, debe leer algunos artículos de desarrollo práctico de software y cifrado de datos.

Comience a leer este artículo: http://www.ibm.com/developerworks/library/s-data.html?ns-311

Espero eso ayude.

Octávio Filipe Gonçalves
fuente