Guía de auto-estudio para la escritura de exploits

La guía tiene un repositorio en Github y un micrositio en Jekyll que puede ser más amigable de usar.

¿Cómo empiezo?

1. Sistema operativo: los exploits están pensados para ser trabajados en un sistema GNU/Linux de 32 bits. Por ejemplo, en le aguía trabajé con un Debian 8 de 32 bits, virtualizado con todas las mitigaciones dehabilitadas. En la sección de configuración se especifica como habilitar y deshabilitar estas protecciones en un sistema GNU/Linux.

Para comenzar con los exploits básicos es necesario, en un principio, utilizar un entorno sin las mitigaciones que se han introducido en los sistemas operativos y compiladores modernos. A medida que se profundiza en técnicas de ataque más avanzadas se procede a deshabilitar las mitigaciones.

2. Herramientas: Instalá las herramientas de análisis de binarios y debugging.

3. Niveles: Te recomendamos empezar por el Nivel 1. Todos los niveles tienen una parte teórica con todos los conceptos necesarios para resolver la parte práctica de cada nivel. La guía esta pensada para que primero leas la parte teórica, al final de la misma se indican qué ejercicios pueden ser resueltos. La idea es que pruebes resolverlos y después compares tu resolución con la propuesta en el apartado práctico de ese nivel.
En el nivel 1: Introducción teórica. Práctica.

¿Qué son los ABOs?

Los abos son una serie de ejercicios creados por Gerardo Richarte. Son programas vulnerables escritos en C que sirven como una presentación introductoria a la escritura de exploits y presentan un amplio abanico de vulnerabilidades.
Las vulnerabilidades presentes en gran parte de los ejercicios resultan triviales, por ejemplo como en el uso de una funcion obsoleta como gets(). Esto se debe a que justamente el objetivo de estos ejercicios no es aprender a detectar vulnerabilidades sino a escribir exploits que se aprovechen de ellas.

Indice

BUFFER OVERFLOW

Nivel 1: Exploits con corrupción de memoria.
Introducción teórica. Práctica.

Nivel 2: Exploits con corrupción de memoria II.
Introducción teórica. Práctica.

Nivel 3: Exploits con reescritura de la GOT.
Introducción teórica. Práctica.

Nivel 4: Exploits con variables de entorno.
Práctica.

FORMAT STRINGS

Nivel 5: Exploits con format strings.
Introducción teórica. Práctica.

ESOTERIC

Nivel 6: Exploits con Return to libc.
Introducción teórica. Práctica.