¿Cómo funcionan las vulnerabilidades de los programas ejecutables independientes al considerar la memoria virtual?

4

Mi comprensión de la memoria virtual es que el sistema operativo permite que cada proceso tenga acceso a todo el conjunto de memoria, y crea esta ilusión mediante la paginación.

Como consecuencia, un programa solo puede ver su propia memoria, y no puede ver la memoria real del sistema, y ciertamente no el espacio de memoria de otras aplicaciones.

¿Cómo funcionan los exploits como los desbordamientos de búfer (cuando no hay entrada para el programa), si no pueden ver fuera de su propia memoria?

Estoy hablando del tipo de explotaciones que compilas y que dan como resultado un ejecutable que explota un demonio (y no pasando una entrada especialmente diseñada a través de campos de entrada humanos).

    
pregunta Tim Matheson 05.03.2016 - 14:27
fuente

2 respuestas

1
  

Estoy hablando del tipo de explotaciones que compilas y que dan como resultado un ejecutable que explota un demonio (y no pasando una entrada especialmente diseñada a través de campos de entrada humanos).

Lo hacen pasando una entrada especialmente diseñada a través de campos de entrada no humanos. Un programa que hace algo útil necesita interactuar con otros programas de alguna manera, ya sea a través de protocolos de red, a través de protocolos de comunicación entre procesos, leyendo y escribiendo archivos, etc. El programa malicioso utiliza cualquier método de interacción que el demonio usa y lo envía especialmente entrada hecha a mano. Como es el caso con la entrada de humanos, el demonio analiza la entrada. Debido al error en el demonio que hace posible la explotación (la vulnerabilidad), esta entrada no se procesa correctamente, sino que conduce a la ejecución de la carga útil (el código "útil" contenido en la explotación).

Si lo piensas, los campos de entrada humanos pasan por programas intermedios. Cuando explota una aplicación web, por ejemplo, la vulnerabilidad se entrega a través de la capa de red del sistema operativo remoto, al servidor web, a la aplicación. Los exploits casi nunca son entregados por un humano escribiendo en un teclado, e incluso si lo son, el exploit se entrega a través del controlador del teclado del sistema operativo, al subsistema GUI, si existe, y así sucesivamente.

    
respondido por el Gilles 08.05.2016 - 00:03
fuente
1

Un desbordamiento de búfer es un tipo de vulnerabilidad no un exploit. Se desbordará en la memoria virtual del proceso que lo está ejecutando.

"Un proceso no puede acceder a la memoria de otro proceso". Esto es totalmente dependiente del sistema operativo. En Windows / Linux / Android esta es una afirmación verdadera. Existen muchos controles de acceso para evitar que un proceso altere la memoria a la que no debería necesitar acceso. Sin embargo, muchos sistemas integrados permitirán que cualquier proceso escriba en cualquier parte de la memoria.

Un daemon es un servicio que puede ser activado por una sonda externa. Si existe una vulnerabilidad en un daemon, el binario malintencionado puede simplemente falsificar una sonda que activará la vulnerabilidad. Los buffers codificados se pueden usar para activarlo, mientras que el código de shell codificado se utiliza para explotar la vulnerabilidad. Si se explota el demonio, entonces se ejecuta el código de shell para obtener la ejecución. El daemon ya no tiene el control del código que está ejecutando; El búfer de entrada malintencionado ahora está en control. Y como el demonio procesó los datos de entrada, el búfer de entrada malintencionado se ejecuta dentro del contexto del proceso del demonio.

¿Por qué un binario malicioso explotaría un servicio? Generalmente sería para ganar privilegios de nivel superior. El binario malintencionado podría ejecutarse con privilegios de bajo nivel y luego, a través del servicio, obtener privilegios administrativos. Esto se puede usar para asegurar que persista en los reinicios o intentos de evadir los Programas de Seguridad Personal.

    
respondido por el RoraΖ 07.03.2016 - 19:06
fuente

Lea otras preguntas en las etiquetas