Desbordamiento de búfer: ¿Cómo se implementa realmente en un entorno de prueba de lápiz?

2

Background:

Entonces, cuando se explota una vulnerabilidad de desbordamiento de búfer, el atacante necesita  no solo generar la carga útil (digamos para crear un shell de enlace), sino también configurar el búfer dañado con dicha carga útil para que se envíe a la máquina de la víctima. (es decir, un servidor tcp echo que utiliza una llamada de función BoF vulnerable que se ejecuta en el sistema operativo Windows XP). Y como parte de la configuración del búfer, debe haber ciertos parámetros tomados de la máquina de la víctima; como

  • la compensación de EIP en el momento del bloqueo
  • la ubicación de la memoria del EIP dañado (que apunta a la carga útil para ser ejecutado).

Mi pregunta es:

En un entorno de prueba de lápiz profesional, ¿cómo accedería el probador de lápiz a los dos parámetros anteriores sin tener acceso a la máquina de la víctima? es decir, sin tener que instalar un desensamblador y depurador dentro de la PC víctima y analizar realmente El programa en el depurador.

¿Hay otra forma de simular este ataque sin tener acceso a la máquina de la víctima?

    
pregunta Rennitbaby 05.04.2018 - 05:52
fuente

1 respuesta

3

La mayoría de las veces tendrás que emular el sistema del objetivo y desarrollar tu exploit localmente. Sobre cómo aprender sobre el sistema del objetivo, eso tiene que ver con el proceso de enumeración . Por supuesto, dependiendo del binario que esté intentando explotar, puede ser posible lograr una fuga de información, y de esa manera podrá hacer que su exploit funcione incluso de forma remota, incluso si su sistema es un poco diferente al del objetivo. sistema ( por supuesto, si su objetivo usa, por ejemplo, linux, también tendrá que usar linux, pero no la versión exacta ).

Por ejemplo, en el caso de una vulnerabilidad de cadena de formato , es posible que pueda filtrar libc de forma remota. Pero también hay otros casos, por ejemplo, si el binario utiliza una función de escritura de cadena , como puts ( o printf etc ... ), puede ser posible use esa función para filtrar la dirección base libc de una entrada GOT en tiempo de ejecución, de modo que pueda construir un exploit de múltiples etapas que evite incluso aslr. Ahora, acerca de cómo puede calcular la dirección base libc de una fuga, hay muchas formas ( puede usar base de datos libc o un contenedor web de libc-database aquí etc. . ).

    
respondido por el game0ver 05.04.2018 - 15:32
fuente

Lea otras preguntas en las etiquetas