Sí, puede leer la memoria de los procesos que posee.
En Windows, necesita abrir un identificador para el proceso con PROCESS_VM_READ
rights, y puede usar ReadProcessMemory
para leer la memoria de ese proceso (como era de esperar). Debe ejecutarse en un contexto con el token de seguridad adecuado para que coincida con una regla en la DACL (lista de control de acceso) del proceso, o se le debe otorgar un privilegio que permita el acceso al proceso global (por ejemplo, SeDebugPrivilege).
En Linux, puedes leer /proc/$pid/mem
si eres el propietario de ese proceso o raíz.
Esto es totalmente por diseño. Los procesos existen en su contexto de seguridad, por lo tanto, usted tiene acceso a ellos. Si ejecuta código malicioso en ese mismo contexto de seguridad, tiene acceso a todo lo que hace.
Sin embargo, existe una salvación de este escenario en un moderno sistema Windows: niveles de integridad . Los procesos se pueden dividir en diferentes niveles de integridad que describen su confiabilidad . Un proceso de baja integridad está restringido a muchas operaciones, incluido el acceso entre procesos a procesos de alta integridad. El límite entre la baja integridad y la alta integridad a menudo se administra a través de las indicaciones de elevación del Control de acceso del usuario (UAC) y el escritorio seguro. KeePass, por ejemplo, utiliza esto para que un exploit del navegador que obtiene la ejecución de código en un proceso de baja integridad no pueda obtener acceso directo al proceso de KeePass. Si bien UAC no se considera un límite de seguridad, sí lo son los niveles de integridad.
Muchos administradores de contraseñas también intentan dificultar el descifrado de clave maestra y contraseña de volcados de memoria. En Windows, se puede utilizar la CryptProtectMemory API para cifrar los datos en la memoria usando una clave almacenado en el subsistema de autoridad de seguridad local (LSASS) que está protegido por el sistema operativo, lo que requiere privilegios administrativos (de hecho, SISTEMA) para descubrir la clave.
Linux con los parches de grsecurity tiene algunas restricciones de acceso a /proc
, lo que también puede proporcionar algunos beneficios de seguridad en este tipo de escenarios, aunque no estoy lo suficientemente versado en las opciones de grsec o en las aplicaciones internas de Linux para saber exactamente cómo funcionan y qué es exactamente lo que evitan.