Este Ghidra Toolkit é um conjunto abrangente de ferramentas projetadas para agilizar e automatizar várias tarefas associadas à execução do Ghidra no modo Headless. Este kit de ferramentas fornece uma ampla variedade de scripts que podem ser executados dentro e junto com o Ghidra, permitindo aos usuários realizar tarefas como caça a vulnerabilidades, comentários de pseudocódigo com ChatGPT e relatórios com visualização de dados na base de código analisada. Ele permite ao usuário carregar e salvar seu próprio script e interagir com a API integrada do script.
Automação do modo Headless : O kit de ferramentas permite que os usuários iniciem e executem perfeitamente o Ghidra no modo Headless, permitindo o processamento automatizado e em lote de tarefas de análise de código.
Repositório/gerenciamento de scripts : O kit de ferramentas inclui um repositório de scripts pré-construídos que podem ser executados no Ghidra. Esses scripts cobrem uma variedade de funcionalidades, capacitando os usuários a realizar diversas tarefas de análise e manipulação. Ele permite que os usuários carreguem e salvem seus próprios scripts, oferecendo flexibilidade e opções de personalização para seus requisitos específicos de análise. Os usuários podem gerenciar e organizar facilmente sua coleção de scripts.
Opções de entrada flexíveis : os usuários podem utilizar o kit de ferramentas para analisar arquivos individuais ou pastas inteiras contendo vários arquivos. Essa flexibilidade permite a análise eficiente de bases de código de pequena e grande escala.
Caça a vulnerabilidades com reconhecimento de padrões : aproveite os scripts do kit de ferramentas para identificar vulnerabilidades potenciais na base de código que está sendo analisada. Isso ajuda os pesquisadores e desenvolvedores de segurança a descobrir pontos fracos de segurança e a solucioná-los de forma proativa.
Caça a vulnerabilidades com SemGrep : Graças ao pesquisador de segurança 0xdea e ao conjunto de regras que eles criaram, podemos usar regras simples e SemGrep para detectar vulnerabilidades em pseudocódigo C/C++ (seu github: https://github.com/0xdea/semgrep -regras)
Geração automática de pseudocódigo : gera automaticamente pseudocódigo no modo Headless do Ghidra. Este recurso auxilia na compreensão e documentação da lógica do código sem intervenção manual.
Comentários de pseudocódigo com ChatGPT : melhore a legibilidade e a compreensão da base de código utilizando ChatGPT para gerar comentários semelhantes aos humanos para trechos de pseudocódigo. Este recurso auxilia na documentação e explicação da lógica do código.
Relatórios e visualização de dados : gere relatórios abrangentes com visualizações para resumir e apresentar os resultados da análise de forma eficaz. O kit de ferramentas fornece recursos de visualização de dados para auxiliar na identificação de padrões, dependências e anomalias na base de código.
Antes de usar este projeto, certifique-se de ter o seguinte software instalado:
Ghidra: Você pode baixar o Ghidra do repositório GitHub da Agência de Segurança Nacional em https://github.com/NationalSecurityAgency/ghidra
Java: certifique-se de ter o Java Development Kit (JDK) versão 17 ou superior instalado. Você pode baixá-lo no site do OpenJDK @ https://openjdk.org/projects/jdk/17/
BinExport (OPCIONAL) Siga as instruções para instalar a extensão Ghidra https://github.com/google/binexport
SemGrep (OPCIONAL) Siga as instruções detalhadas https://semgrep.dev/docs/getting-started/
Instale os pré-requisitos mencionados acima.
Baixe a versão do Sekiryu diretamente do Github ou use: pip install sekiryu
.
Para usar o script você pode simplesmente executá-lo em um binário com as opções que deseja executar.
sekiryu [-F FILE][OPTIONS]
Observe que realizar uma análise binária com Ghidra (ou qualquer outro produto) é um processo relativamente lento . Portanto, espere que a análise binária demore vários minutos, dependendo do desempenho do host. Se você executar o Sekiryu em um aplicativo muito grande ou em uma grande quantidade de arquivos binários, esteja preparado para ESPERAR
Encontre a demonstração em www.bushido-sec.com
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
Para utilizá-lo o usuário deve importar xmlrpc em seu script e chamar a função como por exemplo: proxy.send_data
send_data() - Permite ao usuário enviar dados para o servidor. ("dados" é um dicionário)
recv_data() - Permite ao usuário receber dados do servidor. ("dados" é um dicionário)
request_GPT() - Permite ao usuário enviar dados de string via API ChatGPT.
Os scripts são salvos na pasta /modules/scripts/ você pode simplesmente copiar seu script para lá. No arquivo ghidra_pilot.py
você pode encontrar a seguinte função que é responsável por executar um script ghidra sem cabeça:
def exec_headless(file, script): """ Executar a análise headless do ghidra """path = ghidra_path + 'analyzeHeadless'# Configurando variáveistmp_folder = "/tmp/out"os.mkdir(tmp_folder) cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ arquivo + ' '+ "-postscript "+ script +" -deleteProject"# Executando ghidra com arquivo e script especificados: p = subprocess.run([str(caminho + cmd)], shell=True, capture_output=True) os.rmdir(tmp_folder) exceto KeyError como e: print(e) os.rmdir(tmp_folder)
O uso é bastante simples, você pode criar seu próprio script e basta adicionar uma função no ghidra_pilot.py
como:
def yourfunction(file): try: # Setting scriptscript = "modules/scripts/your_script.py"# Inicie a função exec_headless em um novo threadthread = threading.Thread(target=exec_headless, args=(file, script)) thread.start () thread.join() exceto exceção como e: print(str(e))
O arquivo cli.py
é responsável pela interface da linha de comando e permite adicionar argumentos e comandos associados assim:
analyze_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Sua mensagem de ajuda", action="store_true")
Scripts/SCRIPTS/SCRIIIIIPTS : Esta ferramenta foi projetada para ser um kit de ferramentas que permite ao usuário salvar e executar seu próprio script facilmente, obviamente se você puder contribuir com qualquer tipo de script (qualquer coisa que seja interessante será aprovada!)
Otimização : Qualquer tipo de otimização é bem-vinda e será aprovada e implantada quase automaticamente a cada lançamento. Algumas coisas interessantes poderiam ser: melhorar tarefas paralelas, limpeza de código e melhoria geral.
Análise de malware : é uma grande parte com a qual não estou familiarizado. Qualquer analista de malware disposto a contribuir pode sugerir ideias, scripts ou até mesmo comprometer código diretamente no projeto.
Reportagem : Não sou engenheiro de visualização de dados, se alguém estiver disposto a melhorar/contribuir nessa parte, será muito bom.
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
Para obter mais informações sobre a Bushido Security, visite nosso website: https://www.bushido-sec.com/.