Se pueden robar datos de la RAM en uso

4

Los límites de mi conocimiento sobre el tema (sobre cualquier tema) pueden hacer de esto una pregunta estúpida. Sin importar; ¿Podría un programa malicioso robar teóricamente datos de la memoria primaria (RAM)?

Escenario :

  • Actualmente almaceno los datos de contraseña en un USB fuertemente encriptado, con capas de encriptación actualmente poco prácticas para romper. En caso de que este USB sea robado, sé exactamente para qué cuentas cambiar las contraseñas rápidamente, a pesar de la seguridad práctica del cifrado.
  • Aunque el archivo passwords.txt solo se 'almacena' en la memoria secundaria permanente del USB, aparecerá brevemente en la memoria RAM de la computadora que utilizo para montar el USB, descifrar los datos y abrir el archivo. Es aquí donde sospecho que una debilidad reside en mí.
  • Para aclarar: por supuesto, es más realista que este 'programa malicioso' simplemente lea el archivo una vez que se haya montado el USB y se descifre su contenido, sin embargo, estoy preguntando específicamente sobre cómo comprometer estos datos a través de la RAM.

En resumen:

  • ¿Qué tan realista es la amenaza de que un programa robe datos de RAM, teóricos o no?

  • (Pregunta paralela): Aparte de la solución antivirus evidente para mitigar un programa malicioso, ¿cómo se puede proteger la RAM?

pregunta user4493605 17.11.2017 - 16:01
fuente

2 respuestas

4
  

¿Qué tan realista es la amenaza de que un programa robe datos de RAM, teóricos o no?

Es fácil. Con los permisos correctos hay varias maneras de hacer esto. Desde llevar un volcado de memoria del programa a leerlo / escribirlo directamente. A menos que haya comprobado explícitamente los permisos de todos los códigos que se ejecutan en su máquina, debe asumir que cualquier código que se ejecute como administrador / root o como el usuario que ejecuta el proceso que le preocupa puede hacerlo. En Windows, por ejemplo, hay ReadProcessMemory y < a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms681674(v=vs.85).aspx"> WriteProcessMemory .

  

Aparte de la solución anti-virus obvia para mitigar un programa malicioso, ¿cómo puede protegerse la RAM?

  • No ejecute ningún código en el que no confíe.
  • Ejecute el código como un usuario independiente en virtud del cual ningún usuario que no sea administrador tiene derechos de acceso.
  • Use métodos como aleatorización del diseño del espacio de direcciones y el cifrado de la memoria para identificar dónde es más difícil la información (aunque con memoria completa) El acceso aún se puede hacer; después de todo, su programa debe saber dónde está).
respondido por el Hector 17.11.2017 - 16:12
fuente
1
  

Independientemente; ¿Podría un programa malicioso robar teóricamente datos de la memoria primaria (RAM)?

Con permisos suficientes, absolutamente. La forma en que las computadoras modernas administran la memoria es un poco compleja, pero su idea es fácil de entender. Una computadora x86 usa dos "anillos" de privilegios, llamados anillo 0 y anillo 3 (tiene más, pero no están siendo utilizados por ningún sistema operativo popular). El anillo 0 es altamente privilegiado y puede hacer casi cualquier cosa. El anillo 3 tiene menos privilegios y debe pedirle al código que se ejecuta en el anillo 0 (el kernel) que haga cualquier cosa privilegiada en su nombre (esto se denomina una llamada del sistema). En todos los procesadores x86 modernos, hay una protección adicional, llamada Unidad de administración de memoria, o MMU. Permite que cada proceso tenga su propio espacio de direcciones virtuales, y si intenta acceder a cualquier otra memoria, se bloqueará.

Esto parece que todos los procesos están aislados, ¿verdad? Desafortunadamente no es tan simple. El kernel, que se ejecuta en el anillo 0, proporciona una interfaz para que los procesos se comuniquen entre sí e incluso accedan a la memoria del otro indirectamente, mediante una llamada del sistema. Si la llamada al sistema está permitida o no, depende de los permisos del proceso. Un proceso malintencionado con altos permisos puede simplemente pedirle al núcleo que le dé acceso a la memoria de otro proceso, y el núcleo estará encantado de hacerlo. Los procesos maliciosos sin permisos no pueden hacer eso. Sin embargo, es importante tener en cuenta que en muchos sistemas, simplemente ejecutarse como el mismo usuario que otro proceso se considera un permiso suficiente. Dos procesos que se ejecutan como el mismo usuario pueden leer y escribir en la memoria del otro en algunos sistemas.

La primera respuesta explica cómo funciona esto en Windows. En Linux, las formas equivalentes de leer las memorias de otro proceso son las llamadas al sistema ptrace() , process_vm_readv() y el archivo /proc/<pid>/mem . Las dos primeras comprobaciones aseguran que el proceso de llamada se esté ejecutando como el mismo usuario que el objetivo o que tenga permisos de reemplazo específicos (excepto en algunos sistemas con funciones de seguridad adicionales). El último archivo solo puede ser leído por el programa que lo posee.

  

Aunque el archivo passwords.txt solo se 'almacena' en la memoria secundaria permanente del USB, aparecerá brevemente en la RAM de la computadora que utilizo para montar el USB, descifrar los datos y abrir el archivo. Es aquí donde sospecho que una debilidad reside en mí.

En realidad, la clave está en la memoria constantemente, no solo brevemente. Permanecerá en la memoria mientras el dispositivo esté montado. Esto es fundamentalmente necesario para que el cifrado / descifrado funcione. Tenga en cuenta que probablemente será un derivado de la contraseña, no la contraseña en sí, pero aún es suficiente para descifrar la unidad. Sin embargo, está presente en el kernel que, al ser el anillo 0, no puede accederse mediante procesos normales.

  

(Pregunta paralela): Aparte de la solución antivirus evidente para mitigar un programa malicioso, ¿cómo puede protegerse la RAM?

Suponiendo que no hay errores explotables, dos procesos se ejecutan ya que diferentes usuarios no podrán acceder a la memoria del otro. Ejecutar un usuario como otro proceso proporciona un mejor aislamiento. Tenga en cuenta que, en Windows y la mayoría de Linux, si dos procesos gráficos de diferentes usuarios se ejecutan simultáneamente, aún pueden comunicarse a través de API de gráficos. Windows intenta bloquear esto, pero se ha omitido repetidamente. Además, si el núcleo está comprometido (lo que requiere una explotación avanzada), todas las apuestas están desactivadas, ya que el código del anillo 0 puede acceder a cualquier memoria en circunstancias normales.

El antivirus no ayuda mucho, ya que solo tiende a proteger de malware antiguo, mal escrito o ya descubierto y producido en masa. Los programas maliciosos especializados, incluso si son bastante aficionados, aún evitarán el antivirus con alta probabilidad.

    
respondido por el guest 18.11.2017 - 04:43
fuente

Lea otras preguntas en las etiquetas