Un ejemplo simple para mostrar el uso de la función de seguridad de Prevención de Ejecución de Datos (DEP)

4

¡Me resulta muy difícil entender por qué necesitamos un DEP!

Estados de Microsoft acerca de DEP:

  

El beneficio principal de DEP es ayudar a prevenir la ejecución de código a partir de datos   páginas.

     

Por lo general, el código no se ejecuta desde el montón predeterminado y la   apilar . El DEP aplicado por hardware detecta el código que se ejecuta desde estos   ubicaciones y genera una excepción cuando se produce la ejecución.

     

El DEP forzado por software puede ayudar a a evitar que el código malicioso tome   ventaja de los mecanismos de manejo de excepciones en Windows .

¿Qué significa eso?

¿Puedes darme un ejemplo simple sin código para esto?

    
pregunta Anirudha 27.06.2012 - 20:24
fuente

1 respuesta

3
  

El hardware DEP aprovecha el NX ("No Ejecutar protección de página",   Especificación de AMD) o bit XD ("Desactivación de ejecución", especificación de Intel)   en las CPU compatibles con DEP, y marcará ciertas partes de la memoria   (que solo debe contener datos, como el montón predeterminado, la pila,   agrupaciones de memoria) como no ejecutables.

     

Cuando se intenta ejecutar un código a partir de datos protegidos por DEP   página, una infracción de acceso (STATUS_ACCESS_VIOLATION (0xc0000005)) será   ocurrir. En la mayoría de los casos, esto resultará en la terminación del proceso   (Excepción no controlada). Como resultado de esto, cuando un desarrollador decidió   quiere permitir que el código se ejecute desde una página de memoria determinada, tendrá   para asignar la memoria y marcarla como ejecutable.

     

enlace

Cuando intenta redirigir el flujo de código a través de un exploit de desbordamiento de búfer, etc. desea redirigir el flujo a un shellcode / payload personalizado que le dará acceso remoto, etc. a la computadora víctima.

Lo hacemos reescribiendo registros como EIP (Extended Instruction Pointer), ESP (Extended Stack Pointer), etc. Con esta tecnología intentamos evitar el redireccionamiento del flujo de código a ubicaciones de memoria no autorizadas. Por lo tanto, para invocar el shell, deberíamos superar la violación de acceso en teoría.

Esencialmente, los programadores tienen que especificar ubicaciones de memoria que pueden tener código ejecutable, las otras ubicaciones tienen datos no ejecutables al invocar, lo que provoca una excepción de infracción de acceso.

Lea más sobre sus aspectos técnicos aquí: enlace

    
respondido por el Rohan Durve 27.06.2012 - 21:38
fuente

Lea otras preguntas en las etiquetas