2012/01/23

De 0x90 a 0x4c454554, un viaje dentro de la explotación

Hoy vamos a rescatar una entrada un poco antigua pero genial para todos aquellos que quieren aprender a desarrollar exploits.
'From 0x90 to 0x4c454554, a journey into exploitation' contiene una lista de recursos ordenados que describen el camino que se ha de seguir para llegar a ser un auténtico ninja en este arte, una estructura jerárquica en la que habrá que ir entendiendo y profundizando en cada sección antes de saltar a la siguiente.

Además se incluyen temas de aprendizaje paralelos para evitar la monotonía.
Parte 1: Programación
Aprendizaje paralelo # 1: (completa esta sección antes de llegar a la lectura del libro "Hacking Art of exploitation")
Aprender a programar es fundamental para escribir exploits. Es imprescindible dominar algún lenguaje de scripting. A continuación se enumeran algunos de los lenguajes de programación más populares y que se consideran más útiles.

- Python: uno de los lenguajes que más popularidad está ganando. Es potente, fácil de usar y está bien documentado.

- Ruby: si lo que quieres es trabajar fundamentalmente con Metasploit entonces debes empezar con Ruby.


- Perl: aunque es más antiguo continua siendo uno de los lenguajes de scripting más extendidos y por lo tanto utilizados en numerosos exploits.

- C y C++: tener un buen conocimiento de estos lenguajes es muy importante para entender como funcionan muchos exploits.
- Ensamblador x86: conocer el lenguaje máquina nos ayudará a comprender lo que el ordenador lee a la hora de compilar C y C++.

- Programación en Windows: para explotar los sistemas de Microsoft es necesario entender la estructura y las bibliotecas del sistema operativo.


- Desensamblado: más que programación se trata de comprender lo que el ordenador entiende y la forma que es interpretado por la CPU y la memoria. Aquí empieza lo bueno.


Parte 2: Iniciación

Ahora que tenemos una buena comprensión de los lenguajes de programación y de lo que la máquina está haciendo podemos empezar a trabajar en la tarea que nos ocupa, la explotación.


(
Aprendizaje paralelo# 1 terminado: ahora deberías tener un buen conocimiento de uno de los tres lenguajes de scripting listados)

Aprendizaje paralelo # 2: (completa esta sección antes de finalizar la parte 2)

(lee primero algunas entradas de este blog)


(este blog contiene información muy útil para empezar con fuzzers)


(el siguiente enlace es una demo, pero en este blog también encontrarás muchas cosas interesantes)


(papers de overflowedminds recomendados por Borja Merino)
(Aprendizaje paralelo# 2 terminado)

Parte 3: Herramientas comerciales
A continuación se listan algunas herramientas útiles



Parte 4: Networking y Metasploit(Networking)

(Metasploit)


Parte 5: Shellcode

Parte 6: Ingeniería inversaAprendizaje paralelo # 3: (sitios de referencia y uso para reversing)



Parte 7: Profundizando un poco en desbordamientos de buffer (BOF)Aprendizaje paralelo # 4: (para el final del curso y para después)
Encontrar exploits antiguos en Exploit-db, descargarlos, probarlos, reescribirlos y entenderlos.

(Parte A: contramedidas)


(Parte B: BOF Avanzado)


Parte 8: Desbordamientos de cabecera (heap overflow)



Parte 9: Lista de sitios de exploiting

(bonus: sitio que lista los tipos de vulnerabilidad e info)


Parte 10: Para añadir...1. Fuzzing
2. Formato de ficheros
3. y más


Y hasta aquí llega el camino. ¿Conocéis algún otro enlace de interés? ¿habéis seguido alguno una senda distinta? ¡Comenta por favor!.


Fuente: http://www.hackplayers.com

1 comentario:

  1. Esta información es de lo mejor...Ahora si podre aprender mucho mejor! Gracias amigo!

    ResponderBorrar