El archivo de intercambio puede contener datos confidenciales

12

¿Es posible que el archivo de intercambio contenga fragmentos de datos por un archivo al que haya accedido, y podría detectarse durante un análisis forense?

¿Cómo podrías evitar esta situación?

¿Es una solución válida usar un software de congelación o similar?

    
pregunta opc0de 19.01.2013 - 19:37
fuente

6 respuestas

8

Sí, los archivos de intercambio pueden contener datos confidenciales.

En Windows puede configurar el archivo de página (archivo de intercambio) para que se borre al cerrar de esta manera:

  1. Iniciar regedit32.exe
  2. Ir a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
  3. Establezca el valor de datos de ClearPageFileAtShutdown en 1
  4. Si el valor no existe, créelo con el tipo REG_DWORD y configúrelo en 1
  5. reiniciar

No estoy seguro de si se trata de una eliminación segura de los datos de intercambio, pero por el hecho de que agrega minutos al proceso de apagado y de texto en la página de Microsoft sobre ClearPageFileAtShutdown :

  

Algunos programas de terceros pueden almacenar temporalmente sin cifrar   Contraseñas (texto simple) u otra información confidencial en la memoria.   Aunque borrar el archivo de paginación no es un sustituto adecuado para   seguridad física de una computadora, es posible que desee hacer esto para aumentar   La seguridad de los datos en una computadora mientras Windows no se está ejecutando. "

Creo que los datos se borran de forma segura.

En Linux puede borrar manualmente la partición de intercambio:

  1. Mostrar detalles de intercambio: swapon -s
  2. Desmontar la partición de intercambio: swapoff -a
  3. Sobrescribirlo con ceros: dd if=/dev/zero of=/dev/sdaX bs=1024
  4. Obtenga el UUID de su antigua partición de intercambio de /etc/fstab
  5. Cree una nueva partición de intercambio con ese UUID: mkswap /dev/sdaX -U <old_uuid> 1024
  6. Montarlo para su uso: swapon -a

El paquete de eliminación segura que viene con los siguientes comandos:

/ p>

  • srm (eliminación segura): se utiliza para eliminar archivos o directorios que se encuentran actualmente en su disco duro.
  • smem (limpiador de memoria segura): se usa para borrar rastros de datos de la memoria de la computadora (RAM).
  • sfill (limpiador de espacio libre seguro): se usa para borrar todos los rastros de datos del espacio libre en su disco.
  • sswap (Secure swap wiper): se usa para borrar todos los rastros de datos de su partición de intercambio.

Sswap está diseñado para eliminar datos que puedan permanezca inmóvil en su espacio de intercambio de una manera segura que no pueda ser recuperada por ladrones, agentes del orden u otras amenazas. El algoritmo de borrado se basa en el documento " Eliminación segura de datos de la memoria magnética y de estado sólido "presentado en el 6º Simposio de Seguridad de Usenix por Peter Gutmann, uno de los principales criptógrafos civiles.

    
respondido por el Cristian Dobre 19.01.2013 - 19:59
fuente
7
  

¿Es posible que el archivo de intercambio contenga fragmentos de datos por un   archivo al que ha accedido, y podría ser detectado durante un análisis forense   análisis?

Sí, lo es. Además, es posible que pueda leer algunas contraseñas, claves de cifrado y otros datos confidenciales / privados.

  

¿Cómo podrías evitar esta situación?

Puede deshabilitar el intercambio de memoria para un espacio de direcciones virtuales en particular en un proceso mediante el uso de algunas llamadas específicas del sistema operativo:

Otros sistemas operativos modernos proporcionarán una funcionalidad similar. Sin embargo, los datos generalmente no se eliminan de la memoria física (como la memoria RAM) cuando apaga su PC, y aún se pueden recuperar con un frío Ataque de arranque .

    
respondido por el oleksii 19.01.2013 - 21:56
fuente
2

Al usar Linux, podría asegurarse de que no se intercambiarán herramientas razonables como PGP, mediante el uso de memoria protegida.

Pero tiene que configurar su secuencia de comandos previa a la hibernación para eliminar todas las herramientas sensibles y ¡desmontar todos los sistemas de archivos cifrados!

    
respondido por el F. Hauri 19.01.2013 - 19:49
fuente
2

Si está codificando, muchos idiomas "no administrados" admiten (requieren) la capacidad de eliminar la memoria asignada dinámicamente. Si desea estar realmente seguro, generalmente también puede establecer el valor de dicha memoria en todos los ceros, o en algo que no sea útil para un atacante (datos aleatorios, "Todo funciona y no se reproduce ...", etc.).

En los tiempos de ejecución de memoria administrada, como JVM o CLR, no tiene este control; el recolector de basura comprueba si el código en ejecución todavía tiene alguna referencia al objeto, y si no, lo programa para su recolección. El proceso de marcado, y la liberación de memoria y la reorganización del montón resultantes, ocurren cuando el tiempo de ejecución considera que podría ser un buen momento para limpiar, no cuando se sabe que algo debe limpiarse. En estos entornos, generalmente hay una estructura provista específicamente para manejar datos confidenciales.

En .NET, el tipo primario para estas cosas se llama SecureString , y tiene varias ventajas sobre el System.String básico:

  • SecureString es mutable, a diferencia de String que, aunque es un tipo de referencia, se trata como inmutable; Cada vez que se asigna una variable de cadena, se crea un nuevo objeto de cadena en el montón, lo que significa que cuando se trabaja con datos confidenciales, pueden existir muchas copias diferentes de dichos datos en el montón a la vez. SecureString maneja todas las manipulaciones de sí mismo dentro de un solo espacio de memoria en el montón.
  • Los datos que se guardan en SecureString están cifrados en todo momento, por lo que incluso si se los deja tirados, el atacante también necesitará acceso al contenedor de claves almacenado en la memoria no administrada protegida.
  • El objeto se deriva de una familia de clases básica que lo identifica como que tiene un "finalizador crítico"; Mientras el CLR tenga voz en la materia, el finalizador, que en el caso de SecureString elimina todos los datos confidenciales de la memoria, se ejecutará cuando el objeto salga de su alcance.

  • El usuario puede borrar de forma síncrona el estado de los datos de SecureString llamando a Clear (). Esto también sucede si el usuario utiliza la interfaz IDisposable incorporada, o si el usuario no la limpia, cuando el recolector de basura finaliza el objeto, pero se recomienda al usuario que use Borrar () o Eliminar () para limpiar memoria exactamente en el momento en que el usuario está seguro de que no la volverá a necesitar.

En todos los casos, los datos confidenciales deben mantenerse como texto sin formato en la memoria por el menor tiempo posible menos antes de la eliminación. Si se puede mantener cifrado la mayor parte del tiempo, y solo se puede descifrar en texto plano cuando sea necesario (como lo permite SecureString), eso es genial.

    
respondido por el KeithS 22.01.2013 - 00:50
fuente
1

Casi cualquier cosa que pase por la RAM puede terminar en el espacio de intercambio. (La principal excepción es la memoria del kernel, que no se puede intercambiar en la mayoría de los sistemas operativos. Algunos sistemas operativos permiten que las aplicaciones soliciten memoria no intercambiable, pero esto es en sí mismo un problema de seguridad, ya que una aplicación podría acaparar la memoria física.)

Por lo tanto, si su sistema manipula datos confidenciales y existe el riesgo de que un atacante obtenga acceso a su almacenamiento (por ejemplo, robando la computadora), debe proteger su espacio de intercambio mediante cifrado (y no con una clave que esté almacenada). en el sistema, por supuesto).

Una forma segura de cifrar su intercambio es usar una clave aleatoria. Algunos sistemas operativos tienen una opción para configurar esto automáticamente en el momento de la instalación (por ejemplo, Debian). Esto tiene la desventaja de que no se puede usar el espacio de intercambio para hibernar.

Si desea que ambos puedan hibernar y conservar la confidencialidad contra los atacantes que pueden robar sus medios de almacenamiento, cifre el espacio de intercambio con una clave derivada de una contraseña segura o con una clave almacenada en un dispositivo externo (como una tarjeta inteligente) que no deja en el sistema. Deberá estar físicamente presente para ingresar la clave cuando se inicie el sistema.

    
respondido por el Gilles 21.01.2013 - 01:03
fuente
0

Tengo entendido que cifrar solo la partición de intercambio puede causar problemas si suspendes / hibernas tu computadora portátil. Esto tiene que ver con el hecho de que la clave de cifrado no está disponible para desbloquear la partición de intercambio al reanudar la computadora portátil.

Debido a que tengo una computadora portátil vieja con solo dos gigas de memoria, y un procesador Intel Centrino Duo ejecuto Lubuntu 16.04.1 y no cifro la instalación en el disco duro. Sin embargo, he establecido una contraseña de HDD en el momento del arranque en el BIOS. Cualquier información confidencial que guarde en este portátil está en un volumen de veracrypt que tiene una frase de contraseña muy larga.

Utilizo el siguiente procedimiento para limpiar mi partición de intercambio en este portátil cuando lo saco de la casa en caso de que sea robado. No es probable que tenga en cuenta su edad, pero es mejor prevenir que lamentar.

Para determinar el nombre del archivo de intercambio:

  1. desde el fstab:

    swapon -a
    eg.  /dev/hda5
    
  2. Si tienes un volumen LVM (configuro mi disco duro con LVM):

    swapon --show
    

    Por ejemplo:

    NAME      TYPE      SIZE USED PRIO
    /dev/dm-1 partition   2G   0B   -1
    

Para borrar la partición de intercambio:

  1. sudo swapoff /dev/dm-1
  2. sudo dd if=/dev/zero of=/dev/dm-1 o sudo dd if=/dev/urandom of=/dev/dm-1
  3. sudo mkswap /dev/dm-1
  4. sudo swapon /dev/dm-1
respondido por el MJD 21.10.2016 - 10:57
fuente

Lea otras preguntas en las etiquetas