
Vba2Graph - Gerar grafos de chamadas a partir de código VBA, para facilitar a análise de documentos maliciosos.
Uma ferramenta para pesquisadores de segurança, que perdem seu tempo analisando macros maliciosas do Office.
Gera um grafo de chamadas VBA, com palavras-chave potencialmente maliciosas destacadas.
Permite análise rápida de macros maliciosas e fácil compreensão do fluxo de execução.
✓ Bastante rápido
✓ Funciona bem na maioria das macros maliciosas observadas em campo
✗ Estático (chamadas resolvidas dinamicamente não seriam reconhecidas)
Exemplo 1:
Downloader Trickbot - utiliza o evento Resize do objeto como gatilho inicial, seguido por gatilhos TextBox_Change.

Exemplo 2:

Confira a pasta Examples para mais casos.
https://github.com/decalage2/oletools/wiki/Install
pip3 install -r requirements.txt
Instalar Graphviz:
https://graphviz.gitlab.io/download/#windows
Adicione "dot.exe" à variável de ambiente PATH ou apenas:
set PATH=%PATH%;C:\Program Files (x86)\Graphviz2.38\bin
brew install graphviz
sudo apt-get install graphviz
sudo pacman -S graphviz
usage: vba2graph.py [-h] [-o OUTPUT] [-c {0,1,2,3}] (-i INPUT | -f FILE)
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
output folder (default: "output")
-c {0,1,2,3}, --colors {0,1,2,3}
color scheme number [0, 1, 2, 3] (default: 0 - B&W)
-i INPUT, --input INPUT
olevba generated file or .bas file
-f FILE, --file FILE Office file with macros
Observe que uma versão Python 2 está disponível na seção Releases, mas não é mais suportada.
# Generate call graph directly from an Office file with macros [tnx @doomedraven]
python3 vba2graph.py -f malicious.doc -c 2
# Generate vba code using olevba then pipe it to vba2graph
olevba3 malicious.doc | python3 vba2graph.py -c 1
# Generate call graph from VBA code
python3 vba2graph.py -i vba_code.bas -o output_folder
Você obterá 4 pastas em sua pasta de saída:
O arquivo de script batch.sh está anexado para executar olevba e vba2graph em uma pasta de entrada de documentos maliciosos.
Exclui o diretório output. use com cautela.
O código neste projeto é licenciado sob a Licença EPL-2.0.
Este projeto está utilizando as seguintes ferramentas e bibliotecas de código aberto de terceiros. Por favor, observe suas respectivas licenças.