Venom Shellcode y explotación de Win 7, 8, 8.1 y 10.

Previamente había realizado unas demostraciones de cómo generar payloads binarios (.exe) maliciosos que al momento de ejecutarse en el equipo objetivo, realizan la inyección de código arbitrario en la RAM del sistema, con la consecuencia de que tal sistema sea comprometido de forma completa o parcial, en esta última es donde se lleva cabo la escalada de privilegios para poder realizar más tareas de post-explotación sobre el equipo. El detalle es que la generación de RATs (Remote Access Trojans) con algunas otras herramientas no es tan discreta que con Venom Shellcode, el cual genera payloads en distintos formatos (Python, C, Ruby, Exe, DLL, BAT, .JAR (Java), PDF, etc) los cuales llevarán consigo potentes troyanos que resultan bastante perjudiciales para el equipo víctima.   En la siguiente demostración ejemplificaré como conseguir la explotación de un sistema con plataforma Windows, en este caso será con Win 10, cabe mencionar que los payloads generados para Windows funcionan para los más modernos y comunes (Win Vista, 7, 8 y 8.1)

Lo que necesitarás para este ataque.

  • Una Distribución para pentesting actualizada, recomiendo Parrot 3.1 o 3.2, Kali 2016.1 ó 2, ya que las anteriores puede que no cuenten con las dependencias que usa Venom Shellcode.
  • Un equipo Windows en el mismo segmento de red que tú maquina atacante, ya sea virtualizado o físico, en este ejemplo usaré uno virtualizado.

Obtención de Venom Shellcode.

Al igual que con otras herramientas que he demostrado, Venom Shellcode no viene precargada en las distros para pentesting más populares, por lo que habrá que descargarla e instalarla por nuestra cuenta.
Entra a este URL para descargarlo: https://sourceforge.net/p/crisp-shellcode-generator/shell/ci/master/tarball

También puedes descargarlo mediante el comando “git clone”, ejecutando: git clone http://git.code.sf.net/p/crisp-shellcode-generator/shell crisp-shellcode-generator-shell

Lo cual realizará la descarga en nuestra máquina atacante, en donde navegaremos al lugar donde reside su descarga: “/root/shell/”, dentro se halla otro directorio nombrado “aux” el cual contiene el archivo para iniciar la instalación, (setup.sh), establecemos una configuracion con chmod +x *.sh y después ejecutamos el archivo .sh:

1
Imagen 1.1: Descarga de Venom Shellcode

Al iniciar, realizará la búsqueda y Checking de las dependencias para que funcione, en donde seguirás los pasos de la instalación para poder completarla, no toma más de 5 min.

Una vez ya instalado, navegamos al directorio “/root/shell/” y desde ahí iniciaremos a Venom Shellcode, ejecutando el comando “./vemom.sh”:

2
Imagen 1.2: Directorios de Venom Shellcode

Al iniciar se realizará de nuevo el Checking de las dependencias e inciará el Banner donde se muestra un listado con varias columnas, indicando que se codificará, el objetivo con el que funciona, con que se compilará y el formato final del payload:
3
Imagen 1.3: Listado de Shellcodes por generar

Del listado, seleccionaremos la opción número 6, la que funciona para plataforma Windows, funciona mediante powershell y será generada como un .exe

Seguido de esto, estableceremos la configuracion del payload que generará, esto comenzará al ingresar el número correspondiente de la lista:

4
Imagen 1.4: Ingreso de tipo de Shellcode por generar.

Lo primero que tendrá que configurarse será el Host al que el payload establecerá el canal de comunicación para interactuar con el equipo comprometido, es decir, “LHOST”, que es donde ira la dirección IP de nuestra maquina atacante:

5

Imagen 1.5: Ingreso de LHOST

Luego tendremos que configurar el puerto que estará a la escucha de dicha conexión, “LPORT”, en este ejemplo se usara el 556, tú puedes configurar algún otro puerto de tu preferencia.

6

Imagen 1.6: Selección de Puerto

Ahora lo siguiente será escoger el payload de tipo “Staged” que será el que desde la maquina victima trabajará en conjunto con el Framework de Metasploit en nuestra maquina atacante. El payload que escogeremos será “windows/meterpreter/reverse_tcp” el cual funcionará como un shell inversa que se nos devolverá al momento de la ejecución del binario malicioso en el quipo objetivo:

7

Imagen 1.7: Selección de payload

Por ultimo escogeremos el medio por el cual se establecerá el enlace de comunicación al momento de que el payload se ejecutado, ya sea un handler o un enlace malicioso, en este caso se usará la primera opción, el Handler, el cual es un exploit que al momento de usarlo estará a la escucha de los exploits ejecutados por fuera de Metasploit, es decir, mostrará los stage o conexiones creadas por estos troyanos o exploits ajenos al framework, en donde este trabajara en conjunto con el binario malicioso:

8

Imagen 1.8: Selección de método de conexión

Al escogerlo se mostrará la información acerca de lo que se ha generado y detalles sobre esto:

9

Imagen 1.9: Detalles del Shellcode Generado

Asi como también se inicializa el framework de Metasploit por consola de comandos, estableciendo de forma automática el Handler y el payload de tipo Stager:

10

Imagen 2.0: Metasploit iniciado automáticamente

NOTA: Para esta demostración no haré uso de Metasploit por este medio, ya que las fallas son algo común al momento de enviar exploits, hacer uso de auxiliaries, encoders o shells, en cambio, lo iniciaré por mi cuenta desde una nueva terminal de comandos, simplemente ejecutando “msfconsole:

11

Imagen 2.1: Inicio de Metasploit por nuestra cuenta.

Estando dentro, haremos uso de un exploit (handler) para que haga la función antes descrita, después colocaremos un payload de tipo Stager trabajando desde Metasploit, lo que hará este será establecer una conexión con el payload de tipo “Staged” que es el que está en el Troyano que generamos, al momento de que este se ejecute en el equipo víctima, se devolverá una shell inversa a nuestra maquina atacante, ya que ambos payloads están trabajando en conjunto, puesto a que es el mismo tipo de payload, solo que uno trae la shell inversa esperando a ser lanzada y otro establece la conexión con el troyano, asi otorgándonos la shell de Meterpreter para asi poder interactuar de forma remota con el equipo comprometido. Para configurar esto, haremos uso del exploit del handler (multi/handler), después seleccionaremos el payload (windows/meterpreter/reverse_tcp), e ingresaremos las mismas variables de LHOST y LPORT que al principio, ya que estos payloads trabajarán de forma síncrona y ejecutamos el comando “exploit”, para que el handler y el payload comiencen sus funciones en el Framework:

12
Imagen 2.2: Configuracion de Handler y Payload en Metasploit

Al terminar eso, solo hace falta llegar el troyano al equipo víctima y conseguir que sea ejecutado, para esto puede que  se requiera algo de ingeniería social. La ubicación del binario es “/root/shell/output”:

13

Imagen 2.2: Ubicación de Binario Generado

Ya que sabemos dónde se encuentra solo falta hacerlo llegar a la víctima, ya sea por e-mail, vía multimedia, o algún otro medio.

Antes de continuar, no está demás verificar que tan “discreto” es el malware que se ingresará al equipo objetivo, para esto haremos un análisis en un sitio web que escanea archivos con la ayuda de 35 software AV para mostrar resultados y compararlos, esto se hará desde https://nodistribute.com/, donde nos mostrará resultados bastante sorprendentes, al arrojarnos el dato de que solo  2 de 35 software de protección notaron algo sospechoso en su código, esto quiere decir que resulta perjudicial o amenazante para solo  el 6% del software que contiene la plataforma de escaneo, lo que para nosotros es bastante ventajoso:

14

Imagen 2.4: Resultados de No Distribute.

Ahora que sabemos que puede hacer bypass o evasión de más de 30 AV´s destinos, podemos hacerlo llegar al equipo objetivo y conseguir que sea ejecutado:

15

Imagen 2.5: Binario Transferido

Una vez que se consiga esto, en Metasploit aparecerá el envió de petición hacia la dirección donde se ejecuta el troyano, devolviéndonos asi la shell inversa antes configurada  y obteniendo la sesion de Meterpreter, lista para ejecutar comandos sobre el equipo ajeno:

16

Imagen 2.6: Sesion Meterpreter conseguida

Una vez dentro podremos ejecutar múltiples comandos para obtener información diversa acerca del equipo, por ejemplo con los comandos “sysinfo” y “getuid” podremos saber detalles acerca del sistema en donde estamos (intrusión) y el otro para saber el nombre del usuario:

17

Imagen 2.7: Detalles acerca de Sistema vulnerado y Tipo de Usuario.

Ahora que sabemos el User ID, podemos notar que no tenemos carácter administrativo sobre este sistema, asi que haremos una escalada de privilegios para conseguir esta, la cual también se demostró en previos post que h realizado, haciendo bypass del UAC mediante algo de Powershell.

Antes de hacer esto haremos una migración a un proceso que este corriendo actualmente, esto con el fin de que no se pierda la conexión en caso de que la persona borre o cierre el binario malicioso. Después haremos un background de la sesión para tenerla trabajando en segundo plano y asi volver a msfconsole, desde donde haremos uso del exploit para hacer bypass de UAC, colocando en este la sesion en la que nos encontramos (1) y la técnica de inyección de código: PSH (Powershell), al lanzarlo se deshabilitará el UAC y abrirá una sesion de meterpreter nueva:

18

Imagen 2.8: Migración de procesos y Bypass de UAC con Powershell

En esta nueva sesion ejecutaremos de nuevo el comando “ps” para en listar los procesos y migraremos a alguno que tenga la característica “NT AUTHORITY\SYSTEM”:

19

Imagen 2.9: Migración a un proceso de carácter administrativo.

Una vez hecho esto, ejecutamos el comando “getprivs” para enlistar os privilegios con los que contamos actualmente en este sistema, en donde se enlistaran 22 privilegios, si ejecutamos de nuevo el comando “getuid” aparecerá la etiqueta “NT AUTHORITY\SYSTEM”, y si también ejecutamos el comando “getsystem” aparecerá que se obtuvo previamente mediante la técnica que se describe seguido a la derecha:

20

Imagen 3.0: Privilegios conseguidos

Ahora, como ya se sabe, tenemos 2 sesiones meterpreter abiertas, para ver el listado de estas y sus detalles, se hace un background de la sesion actual y en msfconsole ejecutamos “sessions -l”, donde vemos que una sesion contiene privilegios de usuario local y otra con privilegios administrativos, que es la que usaremos, para volver a la sesion, se ejecuta el comando “sessions –i #número de sesion que quieres”:

21

Imagen 3.1: Listado de Sesiones Meterpreter

Ahora, haremos una tarea de post-explotación, haciendo uso de un “keysniffer” para capturar teclas presionadas en este equipo comprometido, usando el comando “keyscan_start” para iniciar este sniffer, una vez que queramos hacer el volcado de la información que capturó ejecutamos el comando “keyscan_dump”. Seguido de eso, dentro de un Doc. De Word nombrado Testing Shellcode, se ejemplificará un escrito para demostrar el uso del Keylogger:

22

23

Imagen 3.2 y 3.3: Inicio de Keysniffer y creación de Doc.

24

25

Imagen 3.4 y 3.5: Escrito hecho y volcado de información.

Ahora lo intentaremos con el formulario de Loggeo en una Página Web, no importa si usa una conexión segura o no, ya que el sniffer solo captura teclas presionadas, y Metasploit lo ofusca para que no sea detectado por firewalls en equipos o sitios web en donde ingresaré un usuario y password ficticios, teniendo corriendo al keylogger/sniffer en Metasploit:

26

Imagen 3.6: Usuario y password ingresado en Instagram.

Por otro lado, en Metasploit, haremos el volcado de la información capturada por el “keysniffer”:

27

Imagen 3.7: Volcado de info capturada por keysniffer.

¿Cómo funcionó esto con Venom Shellcode?

Este script utiliza msfvenom (Metasploit) para generar código shell en diferentes formatos (c,  Python, Ruby, DLL, PSH | vbs, php, Java) luego inyecta el Shellcode genera en el archivo de salida que corresponda, en este caso fue un binario ejecutable, el código malicioso se ejecutará en la RAM, asi como también se inyecta un payload que trabajará en conjunto con Metasploit para establecer una conexión entre el payload que reside en el equipo víctima y el payload que está en el framework de Metasploit. Después evadimos l UAC mediante el uso de PSH y luego logramos la obtención de información sensible gracias a las tareas de post-explotación.

 

Todo el contenido de este escrito fue hecho con fines educativos.  

2 thoughts on “Venom Shellcode y explotación de Win 7, 8, 8.1 y 10.”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *