No llevo mucho tiempo en el mundo del Exploiting pero quiero compartir con ustedes lo que he aprendido en cursos, libros y recursos en la web, además de practicar es necesari­­o llenarse de paciencia.

Con esta entrada daré inicio a una serie de artículos relacionados al mundo del Exploiting, si crees que algo de lo que escribe esta errado, ¡por favor deja un comentario!




Proceso de desarrollo de un Exploit

Es muy importante seguir las fases en un orden lógico y establecido, esto garantizará que nuestro exploit funcione de manera correcta o en todo caso evitar invertir tiempo innecesario en el desarrollo de exploit. No importa las herramientas, solo la metodología.

Proceso de desarollo de exploit

Fuzzing


Esta fase es muy importante, aquí es donde inicia todo el proceso, en esta fase generamos información de manera aleatoria que posteriormente es enviada por diferentes medios (Protocolos de red, Archivos mal formados, de forma local) a la aplicación en cuestión para ver cómo reacciona a datos no esperados.

Controling EIP


Una vez identificada o desencadena la vulnerabilidad es momento de conseguir escribir la dirección de memoria que esta almacenada en el registro EIP (Registro solo lectura, ¡no sobre-escribimos EIP!, ¡por favor!) muchas veces y dependiendo de la técnica o método de explotación lo conseguiremos, más allá de solo trabajar con el registro EIP, en esta fase debemos controlar el flujo de ejecución de la aplicación vulnerable. Existen dos formas de realizar esto, una atravesó de un análisis binario y la otra y más conocida es enviando una cadena única de caracteres, esta última será la que utilizaremos.


Calculating offset


Una vez controlado el flujo de ejecución de la aplicación vulnerable, necesitamos calcular la cantidad de datos que debemos de generar mediante una cadena única de caracteres para determinar el espacio que tenemos para nuestro payload, por lo general un reverse Shell payload estándar debería estar entre los 300 a 400 bytes, con esto verifica la disponibilidad de espacio para nuestro payload


Identifying bad Characters


Dependiendo de la aplicación y /o la vulnerabilidad existen caracteres especiales que pueden llegar a interrumpir la ejecución de la aplicación vulnerable, los cuales no deberían encontrarse en direcciones de memoria o nuestra Shellcode.

Generate Shellcode


Aquí es donde generamos nuestra Shellcode, por lo general utlizamos herramientas de terceros para evitar como msfvenom (https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom) , existen diferentes métodos y formas de codificar nuestra Shellcode para no ser detectada por los AV.

Test exploit!


Esta fase es donde ejecutamos nuestro exploit construido, seguramente con un sistema operativo “Vainilla” funcionará perfectamente, en un mundo real debemos  evadir diferentes contramedidas implementadas a nivel de Sistema Operativo o las que son agregadas en tiempo de compilación de la aplicación vulnerable, alguna de ellas son ASLR,DEP, StackCookie, SafeSEH, SeHOP.

Por cada fase identificada escribiere una entrada en mi blog, hasta llegar a la creación de un exploit paso a paso.

Si tenes alguna duda podes mandarme un DM via twitter y con gusto te ayudo con lo que pueda @yaritu_ 
Saludos!

Desarrollo de Exploit Win32 : Proceso de Desarollo de un Exploit

No llevo mucho tiempo en el mundo del Exploiting pero quiero compartir con ustedes lo que he aprendido en cursos, libros y recursos en la web, además de practicar es necesari­­o llenarse de paciencia.

Con esta entrada daré inicio a una serie de artículos relacionados al mundo del Exploiting, si crees que algo de lo que escribe esta errado, ¡por favor deja un comentario!




Proceso de desarrollo de un Exploit

Es muy importante seguir las fases en un orden lógico y establecido, esto garantizará que nuestro exploit funcione de manera correcta o en todo caso evitar invertir tiempo innecesario en el desarrollo de exploit. No importa las herramientas, solo la metodología.

Proceso de desarollo de exploit

Fuzzing


Esta fase es muy importante, aquí es donde inicia todo el proceso, en esta fase generamos información de manera aleatoria que posteriormente es enviada por diferentes medios (Protocolos de red, Archivos mal formados, de forma local) a la aplicación en cuestión para ver cómo reacciona a datos no esperados.

Controling EIP


Una vez identificada o desencadena la vulnerabilidad es momento de conseguir escribir la dirección de memoria que esta almacenada en el registro EIP (Registro solo lectura, ¡no sobre-escribimos EIP!, ¡por favor!) muchas veces y dependiendo de la técnica o método de explotación lo conseguiremos, más allá de solo trabajar con el registro EIP, en esta fase debemos controlar el flujo de ejecución de la aplicación vulnerable. Existen dos formas de realizar esto, una atravesó de un análisis binario y la otra y más conocida es enviando una cadena única de caracteres, esta última será la que utilizaremos.


Calculating offset


Una vez controlado el flujo de ejecución de la aplicación vulnerable, necesitamos calcular la cantidad de datos que debemos de generar mediante una cadena única de caracteres para determinar el espacio que tenemos para nuestro payload, por lo general un reverse Shell payload estándar debería estar entre los 300 a 400 bytes, con esto verifica la disponibilidad de espacio para nuestro payload


Identifying bad Characters


Dependiendo de la aplicación y /o la vulnerabilidad existen caracteres especiales que pueden llegar a interrumpir la ejecución de la aplicación vulnerable, los cuales no deberían encontrarse en direcciones de memoria o nuestra Shellcode.

Generate Shellcode


Aquí es donde generamos nuestra Shellcode, por lo general utlizamos herramientas de terceros para evitar como msfvenom (https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom) , existen diferentes métodos y formas de codificar nuestra Shellcode para no ser detectada por los AV.

Test exploit!


Esta fase es donde ejecutamos nuestro exploit construido, seguramente con un sistema operativo “Vainilla” funcionará perfectamente, en un mundo real debemos  evadir diferentes contramedidas implementadas a nivel de Sistema Operativo o las que son agregadas en tiempo de compilación de la aplicación vulnerable, alguna de ellas son ASLR,DEP, StackCookie, SafeSEH, SeHOP.

Por cada fase identificada escribiere una entrada en mi blog, hasta llegar a la creación de un exploit paso a paso.

Si tenes alguna duda podes mandarme un DM via twitter y con gusto te ayudo con lo que pueda @yaritu_ 
Saludos!

2 comentarios:

  1. Excelente, Post
    saludos, se me ocurrio quizas que un ejemplo podria ser :

    http://bit.ly/1n3fcVN

    ResponderEliminar
  2. Gracias, Te comento que si tienen problemas y no estan controlando las excepciones genaradas por el framework, pero vamos a utilizar algunos codigos en C para ejemplos de entendimiento de BoF y luego sobre aplicaciones creamos o recrearemos exploit!!!

    Saludos!

    ResponderEliminar