Este documento presenta una introducción a Mauricio Velazco, un consultor de seguridad y hacker ético. Explica vulnerabilidades comunes en Linux como desbordamientos de búfer y pila, e introduce conceptos como fuzzing y shellcode. Muestra ejemplos de cómo explotar fallos mediante el control del registro EIP y la inyección de código malicioso.
1. www.Open-Sec.com
Tumbando a Tux …
Creando exploits para
GNU/Linux
Mauricio Velazco
Certified Ethical Hacker
mvelazco@open-sec.com
http://ehopen-sec.blogspot.com/
http://twitter.com/mvelazco
Dont Learn To HACK,
HACK To Learn
7. www.Open-Sec.com
Buffer Overflow
• Un desbordamiento de buffer es un error de
software que se produce cuando se copia una
cantidad de datos sobre un área que no es lo
suficientemente grande para contenerlos,
sobrescribiendo de esta manera otras zonas de
memoria.
16. www.Open-Sec.com
Registros del CPU
• Un registro es como una variable (número fijo )
• Cada registro es un lugar del CPU donde se
guarda un valor
• Un registro normalmente guarda punteros de
direcciones de memoria.
• Intel (x86) tiene 8 registros de 32 bits eax, ebx,
ecx, edx, esi, edi, ebp, esp.
20. www.Open-Sec.com
¿Cómo se descubren fallos?
• Para algunos un “crash” del sistema es sólo eso,
para otros es un potencial fallo de seguridad
aprovechable.
• En la actualidad se ha hecho muy extendido el uso
de fuzzers para descubrir vulnerabilidades.
• Se pueden descubrir fallos de seguridad mediante
la revisión de código fuente.
21. www.Open-Sec.com
¿Cómo se descubren fallos?
• Sometiendo a las aplicaciones a pruebas de
intrusión.
• Muchas veces se descubren fallos de seguridad
simplemente utilizando el sistema.
22. www.Open-Sec.com
• Fuzzing (1989 Universidad de Wisconsin Madison)
– Se llama fuzzing a las diferentes técnicas de testeo de
software capaces de generar y enviar datos secuenciales o
aleatorios hacia los puntos de entrada de una aplicación,
con el objeto de detectar defectos o vulnerabilidades o
existentes en el software auditado
– Los fuzzers pueden estar enfocados a tanto a protocolos de
red, como a formatos de archivos, sistemas de ficheros, etc
25. www.Open-Sec.com
¿ Cómo se explota ?
• Controlar el registro EIP .
• Ingresar código malicioso (shellcode).
• Sobreescribir EIP con la dirección de memoria que
haga referencia al código malicioso.
26. www.Open-Sec.com
Shellcode (payload)
• Es un conjunto de órdenes programadas
generalmente en lenguaje ensamblador y
trasladadas a opcodes que suelen ser inyectadas
en la pila para luego ser ejecutadas.
• El término shellcode deriva de su propósito
general, esto era una porción de un exploit
utilizada para obtener una shell.