
Ferramenta automatizada de análise de vulnerabilidades binárias que descompila executáveis via Ghidra, verifica código pseudo-C com Semgrep e valida descobertas usando GPT-3.5-Turbo para reduzir falsos positivos.
Uma ferramenta inteligente e automatizada de análise de vulnerabilidades em binários
Demonstração:

Callisto é uma ferramenta inteligente e automatizada de análise de vulnerabilidades em binários. Seu objetivo é descompilar de forma autônoma um binário fornecido e percorrer a saída do pseudocódigo em busca de potenciais vulnerabilidades de segurança nesse pseudo código C. O descompilador headless do Ghidra é o que conduz a parte de descompilação e análise do binário. A análise do pseudocódigo é realizada inicialmente pela ferramenta SAST Semgrep e depois transferida para o GPT-3.5-Turbo para validação dos achados do Semgrep, bem como para a potencial identificação de vulnerabilidades adicionais.
O propósito pretendido desta ferramenta é auxiliar na análise de binários e na descoberta de vulnerabilidades de dia zero. A saída visa ajudar o pesquisador a identificar áreas potenciais de interesse ou componentes vulneráveis no binário, que podem ser acompanhados com testes dinâmicos para validação e exploração. Certamente não vai detectar tudo, mas a dupla validação com Semgrep para GPT-3.5 visa reduzir falsos positivos e permitir uma análise mais aprofundada do programa.
Para aqueles que desejam apenas usar a ferramenta como um descompilador headless rápido, o arquivo output.c criado conterá todo o pseudocódigo extraído do binário. Isso pode ser inserido em suas próprias ferramentas SAST ou analisado manualmente.
Devo um enorme agradecimento a Marco Ivaldi @0xdea por suas regras C personalizadas do Semgrep publicamente disponíveis, bem como por sua ideia de automatizar a descoberta de vulnerabilidades usando semgrep e a saída de pseudocódigo de descompiladores. Você pode ler mais sobre sua pesquisa aqui: Automating binary vulnerability discovery with Ghidra and Semgrep
Requisitos:
pip install semgreppip install -r requirements.txtconfig.txtPara executar:
python callisto.py -b <caminho_para_binario> -ai -o <caminho_para_arquivo_saida>
-ai => ativa a Análise OpenAI GPT-3.5-Turbo. Será necessário colocar uma chave de API OpenAI válida no arquivo config.txt-o => define um arquivo de saída, se você quiser salvar a saída-ai e -o são parâmetros opcionais-all executará todas as funções através da Análise OpenAI, independentemente de quaisquer achados do Semgrep. Esta flag requer a flag pré-requisito -aipython callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtExemplo de saída do programa:
