CERT Kaiju é uma coleção de ferramentas de análise binária para Ghidra.
Esta é uma implementação Ghidra/Java de alguns recursos do CERT Pharos Binary Analysis Framework, particularmente as ferramentas de hashing de função e análise de malware, mas espera-se que novas ferramentas e recursos cresçam ao longo do tempo.
Como este é um esforço novo, esta implementação ainda não possui paridade total de recursos com a implementação C++ original baseada em ROSE; no entanto, a mudança para Java e Ghidra permitiu alguns novos recursos não disponíveis na estrutura original - notadamente, melhor manipulação de arquiteturas não-x86. Como está ocorrendo uma re-arquitetura significativa da estrutura e das ferramentas, e a mudança para Java e Ghidra permite recursos diferentes da implementação C++, foi tomada a decisão de utilizar uma nova marca para que houvesse menos confusão entre as implementações ao discutir o diferentes ferramentas e capacidades.
Nossa intenção para o futuro próximo é manter tanto a estrutura original do Pharos quanto o Kaiju, lado a lado, uma vez que ambos podem fornecer recursos e capacidades exclusivos.
CAVEAT: Como protótipo, muitos problemas podem surgir ao avaliar os hashes de função criados por este plugin. Por exemplo, ao contrário da implementação do Pharos, o módulo de hashing de função do Kaiju criará hashes para funções muito pequenas (por exemplo, aquelas com uma única instrução como RET causando muito mais colisões não intencionais). Como tal, os resultados analíticos podem variar entre este plugin e o Pharos fn2hash.
Pacotes Kaiju pré-construídos estão disponíveis. Basta baixar o arquivo ZIP correspondente à sua versão do Ghidra e instalar de acordo com as instruções abaixo. Recomenda-se a instalação através da interface gráfica do Ghidra, mas também é possível descompactar manualmente no diretório apropriado para instalação.
CERT Kaiju requer as seguintes dependências de tempo de execução:
O Z3 é fornecido pré-compilado como parte dos pacotes pré-construídos, ou você pode construir o Z3 por conta própria ou usar o pacote da sua distribuição Linux.
Inicie o Ghidra e, na janela de abertura, selecione no menu: File > Install Extension
. Clique no sinal de mais na parte superior da janela de extensões, navegue e selecione o arquivo .zip no navegador de arquivos e clique em OK. A extensão será instalada e uma caixa de seleção será marcada ao lado do nome da extensão na janela para que você saiba que ela está instalada e pronta.
A interface solicitará que você reinicie o Ghidra para começar a usar a extensão. Basta reiniciar e os recursos extras do Kaiju estarão disponíveis para uso interativo ou em scripts.
Algumas funcionalidades podem exigir a ativação de plug-ins Kaiju. Para fazer isso, abra o Code Browser e navegue até o menu File > Configure
. Na janela que aparece, clique no link Configure
abaixo do ícone da categoria "CERT Kaiju". Um pop-up exibirá todos os plug-ins Kaiju disponíveis publicamente. Verifique todos os plug-ins que deseja ativar e clique em OK. Agora você terá acesso aos recursos interativos do plugin.
Se um plug-in não estiver imediatamente visível depois de ativado, você poderá encontrá-lo no menu Window
no Navegador de código.
Versões experimentais "alfa" de ferramentas futuras podem estar disponíveis na categoria "Experimental" se você desejar testá-las. No entanto, esses plug-ins são definitivamente experimentais, não têm suporte e não são recomendados para uso em produção. No entanto, agradecemos o feedback antecipado!
Extensões Ghidra como Kaiju também podem ser instaladas manualmente descompactando o conteúdo da extensão no diretório apropriado de instalação do Ghidra. Para obter mais informações, consulte o Guia de instalação do Ghidra.
Você também pode construir a extensão Kaiju diretamente do código-fonte. Consulte o arquivo INSTALL.md
incluído no diretório de origem Kaiju superior.
As ferramentas do Kaiju podem ser usadas de forma gráfica interativa ou por meio de um modo "sem cabeça", mais adequado para trabalhos em lote. Algumas ferramentas podem estar disponíveis apenas para uso gráfico ou sem interface, devido à natureza da ferramenta.
Kaiju cria uma interface gráfica interativa (GUI) dentro do Ghidra utilizando Java Swing e a arquitetura de plugins do Ghidra.
A maioria das ferramentas do Kaiju são, na verdade, plug-ins de análise que são executados automaticamente quando a opção "Análise automática" é escolhida, seja na importação de um novo executável para desmontar ou escolhendo diretamente Analysis > Auto Analyze...
na janela do navegador de código. Você verá vários plug-ins de análise CERT selecionados por padrão na ferramenta Auto Analyze, mas poderá ativar/desativar qualquer um conforme desejar.
Entretanto, as ferramentas de análise devem ser executadas antes que as diversas ferramentas GUI funcionem. Em alguns casos extremos, pode até ser útil executar a análise automática duas vezes para garantir que todos os metadados sejam produzidos para criar informações corretas de particionamento e desmontagem, o que, por sua vez, pode influenciar os resultados do hash.
Os analisadores são executados automaticamente durante a fase de análise do Ghidra e incluem:
As ferramentas GUI incluem:
Kaiju > GhiHorn
para acessar esta ferramenta no CodeBrowser do Ghidra. Você também pode iniciar o plugin pressionando CTRL-G
.Window > CERT Function Hash Viewer
no menu para começar a usar esta ferramenta, caso ela ainda não esteja visível. Uma nova janela aparecerá exibindo uma tabela de hashes e outros dados. Os botões na parte superior da janela podem atualizar a tabela ou exportar dados para um arquivo ou uma assinatura YARA. Esta janela também pode ser encaixada no Ghidra CodeBrowser principal para facilitar o uso junto com outros plug-ins. Documentação de uso mais extensa pode ser encontrada no menu Help > Contents
do Ghidra ao usar a ferramenta.Kaiju > OOAnalyzer Importer
no menu para começar a usar esta ferramenta. Uma caixa de diálogo simples solicitará que você localize o arquivo JSON que deseja importar. Documentação de uso mais extensa pode ser encontrada no menu Help > Contents
do Ghidra ao usar a ferramenta.Ghidra também suporta um modo "sem cabeça", permitindo que ferramentas sejam executadas em algumas circunstâncias sem o uso da GUI interativa. Esses comandos podem, portanto, ser utilizados para scripts e trabalhos em "modo em lote" de um grande número de arquivos.
As ferramentas headless dependem em grande parte da funcionalidade GhidraScript do Ghidra.
As ferramentas sem cabeça incluem:
Um script de inicialização de shell simples chamado kaijuRun
foi incluído para executar esses comandos headless para cenários simples, como a saída de hashes de função para cada função em um único executável. Supondo que a variável GHIDRA_INSTALL_DIR
esteja definida, pode-se, por exemplo, executar o script de inicialização em um único executável da seguinte forma:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
Este comando geraria os resultados em um arquivo nomeado automaticamente como example.exe.Hashes.csv
.
A ajuda básica para o script kaijuRun
está disponível executando:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Consulte o arquivo docs/HeadlessKaiju.md
no repositório para obter mais informações sobre como usar este modo e o script do iniciador kaijuRun
.
Documentação e ajuda mais abrangentes estão disponíveis em um dos dois formatos.
Consulte o diretório docs/
para documentação formatada em Markdown e ajuda para todas as ferramentas e componentes Kaiju. Esses documentos são fáceis de manter, editar e ler, mesmo em uma linha de comando.
Alternativamente, você pode encontrar a mesma documentação no sistema de ajuda integrado do Ghidra. Para acessar esses documentos de ajuda, no menu Ghidra, vá para Help > Contents
e selecione CERT Kaiju
na navegação em árvore no lado esquerdo da janela de ajuda.
Observe que a documentação da Ajuda do Ghidra tem exatamente o mesmo conteúdo dos arquivos Markdown no diretório docs/
; graças a um plugin gradle na árvore, o gradle analisará automaticamente o Markdown e exportará para Ghidra HTML durante o processo de construção. Isso permite uma manutenção ainda mais simples (atualizar documentos em apenas um lugar, não em dois) e mantém os dois sincronizados.
Toda nova documentação deve ser adicionada ao diretório docs/
.
Este software é licenciado sob uma licença simplificada estilo BSD pelo Software Engineering Institute da Carnegie Mellon University. Encontre detalhes completos desta licença, bem como os termos de licenciamento das dependências usadas neste projeto, no arquivo LICENSE.md
na raiz deste repositório.
O logotipo CERT Kaiju é baseado na arte criada por Cameron Spahn, originalmente lançada sob os termos da licença Creative Commons Attribution-Share Alike 4.0 International.