Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resumen
Introduccion a los ataques ROP ROP variantes
Ataques ROP
Introduccion de Juan Sacco Proteccion DEP (data execution prevention) Exploits basados en memoria Tecnicas ret-2-lib ( Todos sus tipos) Aplicable a varias arquitecturas
ROP Attacks
Los vectores son construidos Los vectores finalizan con un RET Ejemplo de vectores
Mov eax, ebx Ret Pop eax Ret
ROP attacks
x86 stack layout . Registro de ebp y esp apunta a la base y top respectivamente . EBP se usa para acceder local y se pasan parametros por ejemplo:. [ebp + 8] primer parametro (EBP + 4) para la direccion ret . ESP se usa como puntero para popear valores del stack
ROP attacks
RET x86 instruction
Pops un valor del stack hacia el EIP
Usado para retornar el control a una function RET puede tener argumentos ejemplo RET 8
Manejando NULLs!
Handling NULL bytes
Algunos parametros contienen NULL Algunas direcciones contienen zero ( valores ) No podemos injectar NULL o Zeros Funciones bugeadas como strcpy terminan de copiar cuando encuentran NULL byte (00 hex)
ROP Shellcodes
Shellcodes tradicionales pueden ser alphanumericas seleccionando ciertas instrucciones: Ejemplo. pop ecx has an opcode 0x59 que es el ASCII code del caracter Y)
. Seleccionando una direccion que sea printable envez de un opcode ( caso de sllecodes tradicionales )
ROP Shellcodes
Tecnicas basicas agregando dos direciones imprimibles, el tango de ASCII en los caracteres entre 0x21 y 0x7e Ejemplo, un vector en kernel32.dll en 0x77D4B8C { pop ebx;ret} puede ser representada por dos direcciones:
Comibadas pueden ser utilizadas para transformar codigo printable en uno que no lo es.
Tecnica similar se utiliza en ROP shellcodes
Para las regiones de memoria tenemos por ejemplo: urlmon.dll 0x772C2E5E . MOV DWORD PTR DS:[ECX],EAX POP EAX . ESP relacionado a CRYPTUI.dll 0x775513E30 XCHG EAX,ESP MSCTF.DLL 0x74722973
. Mshtml.dll
0x7D504962
ADD EAX,ECX
. msimtf.dll MEM hacia reg 0x74714263 MOV EAX,DWORD PTR DS:[ECX] . Todas estas librerias son cargadas en memoria por internet explorer
Gracias!
Juan Sacco jsacco@exploitpack.com