Detectar si otro Proceso lee la memoria de mi Programa

1

Escenario hipotético: he escrito un programa que se ejecuta en mi máquina. Un atacante desea leer (no escribir) información crítica para la seguridad de la memoria de mis programas. Para lograr esto, hackeó mi máquina, instaló un programa y un controlador del núcleo para ocultar el proceso y la actividad de sus programas.

¿Es posible que modifique mi programa de manera que (solo) detecte este intento? ¿Para marcar las teclas o lo que sea posible comprometido? No estoy pidiendo detalles de programación.

    
pregunta Martin Tausch 21.09.2016 - 14:17
fuente

3 respuestas

2

Respuesta simple: No.

Pero ¿por qué? No conozco ningún sistema operativo común que separe los procesos lo suficiente como para prevenir o detectar de manera confiable la memoria de lectura. En Windows, está especialmente perdido, a menos que se ejecute en modo administrador, en cuyo caso los procesos sin privilegios solo deberían poder obtener cierta información limitada sobre usted (a menos que también se ejecute en modo privilegiado). También puedo simplemente congelar su aplicación "extremadamente segura", leer todos sus datos y luego simplemente eliminarlo.

Cuando el atacante tiene un controlador en su lado, estás especialmente perdido, ya que ahora el atacante está en ring0 y puede hacer cualquier cosa a tu sistema.

¿Ayudaría otra aplicación? No. Nada ayudará, porque básicamente es un juego de "Detecto X", así que me muevo a Y, X no te ayudará ". Si el atacante sabe cómo funciona su aplicación (y esto se aplica a cualquier programa que libere), entonces puede pensar en otro método para evitar toda su seguridad. Esto es esencialmente lo que sucede en los juegos en línea, en el desarrollo de virus y en el craqueo de software durante años. E incluso las empresas multimillonarias no pudieron resolver este problema.

Solo la ayuda se está volviendo más baja que la del atacante. En tu caso eso es hardware.

    
respondido por el axapaxa 22.09.2016 - 01:31
fuente
1

No creo que esto sea posible en las plataformas estándar actuales.

Creo que necesitarías al menos una aplicación de monitoreo independiente.

ACTUALIZACIÓN: " ¿Pero una segunda aplicación definitivamente podría detectar esto? ", es difícil ser definitivo allí, me temo que no estoy muy informado acerca de la programación del sistema Windows. Es posible que no fuera posible sin hardware especial. Pero si es posible, esperaría que solo fuera el caso utilizando bibliotecas de sistemas de bajo nivel.

    
respondido por el Julian Knight 21.09.2016 - 14:22
fuente
0

Hablando hipotéticamente (ya que no estás pidiendo detalles específicos), es posible. Sin embargo, no es 100% confiable y siempre hay soluciones.

Primero, si sus datos seguros son 1-8 bytes y se ejecuta en x86, puede establecer un punto de interrupción de hardware que se activará cuando se acceda a estos datos. Ver. por ejemplo, enlace

Si necesita proteger más de 32 bytes (hay 4 registros de puntos de interrupción de hardware), puede usar VirtualProtect con PAGE_GUARD, o hacer que la página sea ilegible (PAGE_NOACCESS).

Cuando necesita acceder a los datos usted mismo, elimina la marca / punto de interrupción, accede a los datos y los restaura. Esto, por supuesto, crea la condición de carrera, pero la ventana de oportunidad es corta.

Por supuesto, si alguien tiene una aplicación con un controlador de kernel, puede eliminar los puntos de interrupción del hardware o cambiar las marcas de la página de la aplicación a través del controlador del kernel, por lo que esto no funcionará. Sin embargo, si solo usan el controlador para ocultar la aplicación, esto debería funcionar.

    
respondido por el George Y. 22.09.2016 - 00:15
fuente

Lea otras preguntas en las etiquetas