2011-04-03 19 views
6

entiendo que una carga útil de búfer basado en pila ataque de desbordamiento típica es como la siguiente:¿Cómo se aproxima la dirección de retorno modificada en un ataque de desbordamiento de búfer basado en la pila?

(dirección de retorno) (dirección de retorno) ... (dirección de retorno) (dirección de retorno) (dirección de retorno) (la dirección de retorno) (NOP) (NOP) (NOP) (NOP) ... (NOP) (NOP) (NOP) (NOP) (código shell)

también entiendo que la correcta ejecución del código shell depende de algunas cosas:

  1. La dirección de retorno de repetición porción de la carga útil tiene que sobrescribir el puntero devolución de ese marco de pila
  2. que devuelven la dirección tiene que ser la dirección de de alguna parte de la NOP corredera (o el comienzo de la shellcode)

Lo que no entiendo es cómo el malware que utiliza esta técnica siempre puede hacer estas dos cosas bien. Me parece que para crear una carga útil de trabajo, el atacante debe conocer la dirección aproximada del búfer de destino y su distancia aproximada desde la dirección de retorno.

¿Son estos dos factores bastante deterministas? Por ejemplo, si el atacante realiza algunas sesiones de prueba y error hasta que funcione en su máquina, ¿esa misma carga útil funcionará en todas las demás máquinas con los mismos binarios exactos?

Respuesta

6

La precisión para determinar el diseño de la memoria depende por completo del marco de pila de la función que corrompe. A veces, las compensaciones pueden ser muy precisas e incluso no se requiere un trineo nop, pero es una buena idea tener uno de todos modos. Si activa el problema un par de veces en un depurador, puede tener una idea de cuán caótica es la pila. Otros factores pueden influir mucho en el tamaño del desplazamiento. Por ejemplo, si el desplazamiento puede cambiar para diferentes versiones del programa, como un exploit escrito para windows 2000 and windows xp. Las distribuciones de idiomas diferentes de la aplicación también pueden afectar el tamaño del desplazamiento.

Sin embargo, ASLR causa serios problemas para este método de explotación. Heap Spraying es comúnmente utilizado por exploits basados ​​en navegador para eludir ASLR.

6

para crear una carga de trabajo, el atacante debe conocer la dirección aproximada del búfer de destino y su distancia aproximada de la dirección de retorno.

Tienes razón. De hecho, debes jugar un poco con el depurador, para escribir un exploit correcto. Una vez que lo haya escrito y probado, si el binario es el mismo en máquinas diferentes, el exploit debería funcionar bien.

(fino trabajo es un poco optimista. Digamos que el código shell debería ponerse en marcha. La efectividad del ataque de mayo depende de otros factores ..)

0

De cource la dirección no siempre será la misma función en sistema y binario, un malwares de hack utilizado para mejorar su probabilidad es generar carga múltiple usando diferentes direcciones de retorno (como incremento de +10 si hay 10 NOPS) y probarlos todos hasta que funcionen.

Cuestiones relacionadas