Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Buffer Overflows
Agenda (Cont.)
Introducción
Por qué las aplicaciones son vulnerables?
Tipos de Buffer Overflows
Ejemplo
El Stack
Manejo de Memoria
Stack Pointer
Lenguaje Ensamblador
Una Función por Dentro
Shellcode
Técnicas de Mutación
Stack-Based Buffer Overflows: Pasos
Ataque a un Programa Real
Agenda (Cont.)
Generando un Desbordamiento
Luego de un Ataque
Conocimientos requeridos para la explotación
Heap-Based Buffer Overflows
Detección
Ejemplo en Lenguaje C
Análisis del Código de Ejemplo
Contramedidas
Herramientas
1
Ethical Hacker Security Training – Buffer Overflows
Introducción
Introducción (Cont.)
Los Buffer Overflows son utilizados por los hackers contra los
sistemas operativos y aplicaciones.
Introducción (Cont.)
2
Ethical Hacker Security Training – Buffer Overflows
Las ubicaciones del stack son estáticas y las del heap son
dinámicas y ocurren en tiempo de ejecución.
3
Ethical Hacker Security Training – Buffer Overflows
Ejemplo
int main () {
int buffer[10];
buffer[20] = 10;
}
El Stack
Es un mecanismo del tipo LIFO (Last Input First Output) que las
computadoras utilizan para pasar argumentos a funciones y
referenciar variables locales.
Segmentos
.text: solo lectura; código.
.bss: datos no inicializados y dinámicos
.data: datos inicializados y estáticos
Stack
Last In First Out (LIFO)
Crece hacia abajo respecto de
la dirección de memoria
Push
Heap
First In First Out (FIFO)
Crece hacia arriba
malloc()
4
Ethical Hacker Security Training – Buffer Overflows
Stack Pointer
Lenguaje Ensamblador
5
Ethical Hacker Security Training – Buffer Overflows
Shellcode
"\x2d\x0b\xd8\x9a\xac\x15\xa1\x6e\x2f\x0b\xdc\xda\x90\x0b\x80\x0e"
"\x92\x03\xa0\x08\x94\x1a\x80\x0a\x9c\x03\xa0\x10\xec\x3b\xbf\xf0"
"\xdc\x23\xbf\xf8\xc0\x23\xbf\xfc\x82\x10\x20\x3b\xaa\x10\x3f\xff"
"\x91\xd5\x60\x01\x90\x1b\xc0\x0f\x82\x10\x20\x01\x91\xd5\x60\x01"
Técnicas de Mutación
6
Ethical Hacker Security Training – Buffer Overflows
Generando un Desbordamiento
7
Ethical Hacker Security Training – Buffer Overflows
Funciones de C y el Stack.
Lenguaje Assembler.
8
Ethical Hacker Security Training – Buffer Overflows
Detección
Ejemplo en Lenguaje C
#include <stdio.h>
main() {
char *name;
char *dangerous_system_command;
name = (char *) malloc(10);
dangerous_system_command = (char *) malloc(128);
9
Ethical Hacker Security Training – Buffer Overflows
[XX]$ ./overrun
Address of name is 134518696
Address of command is 134518712
What's your name?xmen
Hello world!
[XX]$
[XX]$ ./overrun
Contramedidas
10
Ethical Hacker Security Training – Buffer Overflows
Contramedidas (Cont.)
Contramedidas (Cont.)
Contramedidas (Cont.)
11
Ethical Hacker Security Training – Buffer Overflows
Herramientas: AppArmor
Está diseñada para proveer una protección de fácil uso para las
aplicaciones, restringiendo las acciones que el software instalado
puede realizar.
12
Ethical Hacker Security Training – Buffer Overflows
Buffer Overflows
Links, Referencias y
Lecturas Complementarias
Links
AppArmor
http://en.opensuse.org/AppArmor
ProPolice
http://wiki.x.org/wiki/ProPolice
Libsafe
http://directory.fsf.org/libsafe.html
RAD
http://www.ecsl.cs.sunysb.edu/RAD
SSP
http://www.trl.ibm.com/projects/security/ssp
13
Ethical Hacker Security Training – Buffer Overflows
Buffer Overflows
Preguntas?
14