Script Ghidra de interação da API Ollama para engenharia reversa assistida por LLM.
O que é isso?
Este script interage com a API do Ollama para interagir com Large Language Models (LLMs). Ele utiliza a API Ollama para realizar várias tarefas de engenharia reversa sem sair do Ghidra. Ele oferece suporte a instâncias locais e remotas do Ollama. Este script é inspirado em GptHidra.
Modelos Suportados
Este script oferece suporte a qualquer modelo compatível com Ollama
Ollama também adicionou recentemente suporte para qualquer modelo disponível no HuggingFace no formato GGUF, por exemplo:
ollama run hf.co/arcee-ai/SuperNova-Medius-GGUF
Pré-requisitos
- Ghidra
- Ollama
- Qualquer um dos modelos Ollama
Configuração do Ollama
Sinta-se à vontade para substituir llama3.1:8b
por qualquer um dos modelos compatíveis com Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b
Agora você deve estar pronto, localhost:11434
deve estar pronto para lidar com solicitações
Nota: Este script também suporta instâncias remotas, defina o endereço IP e a porta durante a primeira configuração.
O que isso pode fazer?
- Explique a função que está atualmente na janela do descompilador
- Sugerir um nome para a função atual, nomeará automaticamente a função se estiver ativada
- Reescreva a função atual com comentários recomendados
- Reescrever completamente a função atual, tentando melhorar os nomes das funções/parâmetros/variáveis e também adicionar comentários
- O usuário pode fazer uma pergunta sobre uma função
- Encontre bugs/sugira vulnerabilidades potenciais na função atual (mais apenas para ter certeza de que você cobriu tudo, algumas sugestões são idiotas, pois não têm contexto)
- Use uma versão modificada deste script LeafBlowerLeafFunctions.py Ghidra para automatizar a análise de possíveis funções 'folha', como strcpy , memcpy , strlen , etc em binários com símbolos removidos, renomeie automaticamente se estiver habilitado
- Explique a instrução de montagem única atualmente selecionada na janela de listagem
- Explicar as múltiplas instruções de montagem atualmente selecionadas na janela de listagem
- Entrada geral de prompt para fazer perguntas (em vez de ir ao Google, bom para coisas simples)
Opções de configuração
As seguintes opções de configuração estão disponíveis e podem ser configuradas na primeira execução:
- IP do servidor : se estiver usando instância remota, defina como IP da instância remota, caso contrário, insira
localhost
- Porta : Se sua instância estiver em uma porta diferente, altere-a aqui – o padrão é
11434
- Esquema : Selecione
http
ou https
dependendo de como sua instância está configurada - Modelo : Selecione o modelo que deseja usar para análise, você pode alterar isso a qualquer momento
- Prompt específico do projeto : usado para fornecer algum contexto adicional ao modelo, se necessário
- Comentários de resposta : algumas opções armazenam as respostas como um comentário no topo da função, isso pode ser ativado/desativado aqui
- Renomeação automática : algumas opções tentam renomear funções automaticamente com base nas respostas, isso pode ser ativado/desativado aqui
As opções 11 e 12 podem ser usadas para ajustar as configurações após a primeira execução.
Uso
- Coloque o script GhidrOllama.py e o diretório ghidrollama_utils em seu diretório de script Ghidra (geralmente
~/ghidra_scripts
). - Encontre uma função/instrução que você deseja fornecer ao LLM
- Execute o script na janela do Script Manager
- Se esta for a primeira vez que o script está sendo executado, conclua a configuração inicial (isso pode ser alterado posteriormente)
- Selecione como deseja que o funcionamento/instrução seja analisado
- Aguarde até que a saída seja impressa no console (o tempo de espera varia dependendo do modelo e das especificações do host)
Maneiras de correr
Entrar na janela do script para executar esse script sempre é inconveniente, o script pode ser facilmente executado das seguintes maneiras:
- Atalho de teclado : o atalho de teclado padrão para este script é Q
- Barra de ferramentas : Um pequeno ícone na barra de ferramentas pode ser clicado para executar o script
Atalhos de teclado
Para ativar, depois de adicionar seu script à lista de diretórios de script Ghidra, localize o script na lista. Clique com o botão direito no resultado e selecione "Atribuir vinculação de teclas". Se solicitar uma chave, insira q .
Barra de ferramentas
Para ativar o ícone da barra de ferramentas, localize o script no gerenciador de scripts e clique na caixa de seleção na primeira coluna (a coluna Na barra de ferramentas ). O ícone GhidrOllama deve aparecer na barra de ferramentas.
Notas
- Vale ressaltar que a análise só será tão boa quanto o modelo, esse script basicamente apenas faz a ponte entre os modelos e o Ghidra
- Quanto melhor o modelo (mais parâmetros, mais lento) mais abrangente e correta será a análise (na maioria das vezes!)
- Se você quiser uma visão geral rápida de uma função, llama3.1:8b é rápido e fornece uma análise decente
- Tenha cuidado com funções grandes e modelos de baixo contexto, se a função for muito grande para a janela de contexto, o modelo responderá com um jargão completo (se é que responde)
Exemplos de análise de função
Abaixo está uma implementação de strchr() conforme visto na janela de descompilação do Ghidra com símbolos removidos: