Articles

0: Conocimiento básico

Posted on

El desarrollo de exploits es difícil, aprender a hacerlo requerirá mucho estudio, práctica y una buena comprensión de una amplia gama de temas asociados. La buena noticia es que no tienes que aprender todo de una vez, o de la noche a la mañana, y que hay muchas personas que han hecho o están en el mismo viaje doloroso, algunos de los cuales escriben blogs como corelan security o fuzzy security.

El enfoque generalmente recomendado para un principiante es comenzar por el principio, al estilo de finales de los 90, desbordamientos de búfer basados en pilas simples popularizados por Aleph One «Rompiendo la pila por diversión y beneficio», y luego trabajar gradualmente en introducir y derrotar progresivamente mitigaciones más modernas, nuevos vectores de explotación y arquitecturas. Al hacer esto y practicar contra las hazañas del mundo real, comienzas a recoger algunos de los conocimientos auxiliares de tu propia investigación, y no te olvides de tomar notas, es posible que te ayude mantener un blog o publicar tutoriales de tus hazañas aquí

Exactamente en qué nivel de habilidad debes estar antes de comenzar a aprender sobre la explotación binaria, siempre será algo que cause preocupaciones a algunas personas. ¿Ya estás listo? La respuesta es generalmente sí y no, aprendes más al comenzar hoy y fallar que cualquier cantidad de dilación, pero al mismo tiempo, cada vez que aprendes algo nuevo, descubres dos cosas que no entiendes. Hackear es terrible para esto, cuanto más aprendo, más me siento como un novato completo. Lo único que hay que hacer es intentarlo; el peor de los casos es que descubres que necesitas aprender otras cosas primero, y nunca está de más leer un libro.

Recursos:

Una variedad de libros

> Recomendado Temas:

Una comprensión de C / C++

Conceptos de memoria y CPU como direccionamiento de memoria, registros y pilas

Un lenguaje de scripting como Python, Perl, Ruby o Bash

Fluidez en el sistema operativo elegido y, al menos, una comprensión básica del depurador que esté utilizando

La cuestión de las plataformas para usar como víctimas es principalmente una elección personal, a algunas personas les gusta aprender primero la explotación de Windows y luego pasar a Linux, mientras que algunos (como yo) prefieren comenzar con la explotación de Linux antes de pasar a Windows. En mi opinión, hay más y mejores recursos para aprender los conceptos básicos en Linux, pero la elección realmente es suya.

Recursos:

Romper la Pila por Diversión y beneficio

Ejercicios de explotación Protostar: Niveles de pila 0-5

Algunos de los conceptos involucrados en aprender a hacer este tipo de explotación simple serán bastante extraños para un novato, pero con un tiempo dedicado a un depurador, debería comenzar a comprender algunas de las cosas que necesitará leer

2: Vulnerabilidades de cadena de formato

Recursos:

Introducción a los Exploits de formato de cadenas

Ejercicios de Exploits Protostar: Niveles de formato 0-4

Los exploits de formato de cadenas son un buen paso después de un simple desbordamiento de búfer porque comparten muchas similitudes, pero también le brindan la oportunidad de jugar con manipulaciones arbitrarias de memoria. Cadenas de formato también le muestra algunas de las rarezas que pueden resultar en situaciones explotables

3: Volver a Pilas no ejecutables Derrotadas por LibC (también conocidas como DEP, W^X, NX)

Recursos:

(Ejercicios de explotación Protostar: Nivel de pila 6](https://exploit.education/protostar/stack-six/)

ret2libc es el primer bypass simple de una mitigación de exploits y sirve como introducción a los conceptos que forman la base de la poderosa técnica de programación orientada al retorno, hay un par de variantes de esta técnica como ret2plt o ret2text

4: Programación orientada al retorno (ROP)

Recursos:

Ejercicios de exploits Protostar: La introducción de ROP de Stack level 7

/u/d4mianwayne

ROP es una técnica clave para la explotación moderna que se puede usar para derrotar a DEP y ASLR, y una forma interesante de aprender sobre ensamblador y comenzar a profundizar en llamadas de sistema, registros y otros fundamentos de bajo nivel.

5: Derrotar a canarios de pila

Los canarios de pila son una mitigación de exploits que busca evitar exploits agregando una pequeña comprobación al final de las funciones para detectar desbordamientos de búfer. Vienen en una variedad de formas y estilos, como canarios terminator y canarios aleatorios. Aprender algunas técnicas para derrotarlas o evitarlas es bastante esencial.

Recursos:

Notas de Corelan sobre esto

Nota: los recursos para esto parecen limitados: cualquier sugerencia o publicación sobre el tema bienvenido

6: Conceptos básicos de explotación de pilas

La explotación más moderna se centra en el montón en lugar de la pila, en parte debido al estado de mejora de las mitigaciones para exploits basados en pilas, en parte porque los estándares de codificación han mejorado y menos oportunidades para romper pilas simples.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.