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
Herramientas personales