Msfrop
De www.metasploit-es.com.ar
msfrop
Al desarrollar exploits para las versiones mas nuevas de los sistemas operativos Windows, encontraras que ahora tienen DEP (Prevencion de Ejecucion de Datos) habilitado por defecto. DEP previene que el shellcode sea ejecutado en la pila (stack) y ello ha forzado a los desarrolladores de exploits a darle la vuelta a esta mitigacion y se desarrollo la llamada ROP (Programacion Orientada al Retorno). Un payload ROP se crea utilizando conjuntos de instrucciones pre-existentes de binarios con no-ASLR habilitado para hacer tu shellcode ejecutable. Cada conjunto de instrucciones necesita terminar con una instruccion RETN para continuar la cadena ROP con cada conjunto de instrucciones, comunmente se llama a esto un 'gadget'. La herramienta "msfrop" de Metasploit buscara un binario dado y devolvera los gadgets utilizables.
root@bt:/tmp# msfrop -h Usage /usr/local/bin/msfrop
Ejecutar msfrop con el modificador -v devolvera todos los gadgets encontrados directamente en la consola:
root@bt:/tmp# msfrop -v metsrv.dll Collecting gadgets from metsrv.dll Found 4829 gadgets metsrv.dll gadget: 0x10001057 0x10001057: leave 0x10001058: ret metsrv.dll gadget: 0x10001241 0x10001241: leave 0x10001242: ret metsrv.dll gadget: 0x1000132e 0x1000132e: leave 0x1000132f: ret metsrv.dll gadget: 0x1000138c 0x1000138c: leave 0x1000138d: ret ...snip...
La salida verbosa no ayuda especialmente cuando un binario contiene miles de gadgets, por lo que un modificador mas util es -x que te permite sacar los gadgets en un archivo csv para que puedas buscar mas tarde.
root@bt:/tmp# msfrop -x metsrv_gadgets metsrv.dll Collecting gadgets from metsrv.dll Found 4829 gadgets Found 4829 gadgets total Exporting 4829 gadgets to metsrv_gadgets Success! gadgets exported to metsrv_gadgets root@bt:/tmp# head -n 10 metsrv_gadgets Address,Raw,Disassembly "0x10001098","5ec20c00","0x10001098: pop esi | 0x10001099: ret 0ch | " "0x100010f7","5ec20800","0x100010f7: pop esi | 0x100010f8: ret 8 | " "0x1000113d","5dc21800","0x1000113d: pop ebp | 0x1000113e: ret 18h | " "0x1000117a","5dc21c00","0x1000117a: pop ebp | 0x1000117b: ret 1ch | " "0x100011c3","5dc22800","0x100011c3: pop ebp | 0x100011c4: ret 28h | " "0x100018b5","5dc20c00","0x100018b5: pop ebp | 0x100018b6: ret 0ch | " "0x10002cb4","c00f9fc28d54","0x10002cb4: ror byte ptr [edi], 9fh | 0x10002cb7: ret 548dh | " "0x10002df8","0483c20483","0x10002df8: add al, -7dh | 0x10002dfa: ret 8304h | " "0x10002e6e","080bc20fb6","0x10002e6e: or [ebx], cl | 0x10002e70: ret 0b60fh | " root@bt:/tmp#
© Offensive Security 2009
Original de www.offensive-security.com Traducido por cbk999