Programación orientada al retorno (ROP) - ¿Por qué pasa por alto ASLR y para qué son pop / pop / ret?

2

Estoy tratando de entender ROP y luchar con las siguientes dos preguntas:

  • A menudo leo que ROP pasa por alto ASLR y DEP. Si bien me queda claro que el ROP es una forma perfecta de evitar el DEP, no veo cómo se pasa por alto el ASLR. ¿Es porque la sección del código no es aleatoria?

  • También estoy leyendo mucho sobre estos gadgets pop / pop / ret, pero no entiendo por qué son necesarios. ¿No es un gadget que termine en una ret lo suficientemente bueno?

pregunta user66875 20.06.2017 - 09:40
fuente

1 respuesta

4

ROP es solo un bypass para DEP; ASLR en realidad es la protección contra ROP. La sección del código es aleatoria y es por eso que no puede (normalmente) usar ROP contra ASLR. Para evitarlo usando ROP, necesitará una fuga de información que revela cómo se cambió el espacio de direcciones.

En cuanto a los gadgets pop / pop / ret, estos se utilizan en el contexto del uso de SEH para la ejecución de código, un medio de omitir algunos métodos de análisis / protección distintos de DEP y ASLR.

Aquí hay una explicación para POP, POP, RET en el contexto de SEH: enlace . En cuanto a ROP, el mejor recurso que conozco son los tutoriales de Corelan: enlace

    
respondido por el AdrianH 20.06.2017 - 09:53
fuente

Lea otras preguntas en las etiquetas