
CERT Kaiju é uma extensão de framework de análise binária para o conjunto de ferramentas de engenharia reversa de software Ghidra. Este repositório é um "espelho" -- por favor, registre tickets, relatórios de bugs ou pull requests no repositório principal em @CERTCC: https://github.com/certcc/kaiju
CERT Kaiju é uma coleção de ferramentas de análise binária para Ghidra.
Esta é uma implementação em Ghidra/Java de algumas características do CERT Pharos Binary Analysis Framework, particularmente as ferramentas de hashing de funções e análise de malware, mas espera-se que cresça com novas ferramentas e capacidades ao longo do tempo.
Como este é um novo esforço, esta implementação ainda não possui paridade total de funcionalidades com a implementação original em C++ baseada em ROSE; no entanto, a migração para Java e Ghidra permitiu algumas novas funcionalidades não disponíveis no framework original — notavelmente, melhor tratamento de arquiteturas não-x86.
Como uma reestruturação significativa do framework e das ferramentas está ocorrendo, e a migração para Java e Ghidra permite capacidades diferentes da implementação em C++, decidiu-se utilizar uma nova marca para que haja menos confusão entre as implementações ao discutir as diferentes ferramentas e capacidades.
Nossa intenção para o futuro próximo é manter tanto o framework Pharos original quanto o Kaiju lado a lado, já que ambos podem fornecer funcionalidades e capacidades únicas.
RESSALVA: Como protótipo, muitos problemas podem surgir ao avaliar os hashes de funções criados por este plugin. Por exemplo, ao contrário da implementação do Pharos, o módulo de hashing de funções do Kaiju criará hashes para funções muito pequenas (ex., aquelas com uma única instrução como RET, causando muito mais colisões não intencionais). Dessa forma, os resultados analíticos podem variar entre este plugin e o Pharos fn2hash.
Pacotes pré-construídos do Kaiju 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 instalar através da interface gráfica do Ghidra, mas também é possível descompactar manualmente no diretório apropriado para instalar.
CERT Kaiju requer as seguintes dependências de execução:
O Z3 é fornecido pré-compilado como parte dos pacotes pré-construídos, ou você pode compilar 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 no topo da
janela de extensões, navegue e selecione o arquivo .zip no navegador
de arquivos e pressione OK. A extensão será instalada e uma caixa de seleção
será marcada ao lado do nome da extensão na janela para indicar que está
instalada e pronta.
A interface solicitará que você reinicie o Ghidra para começar a usar a extensão. Basta reiniciar e, em seguida, os recursos extras do Kaiju estarão disponíveis para uso interativo ou em scripts.
Algumas funcionalidades podem exigir a ativação de plugins do Kaiju. Para
fazer isso, abra o Code Browser e navegue até o menu File > Configure.
Na janela que aparecer, clique no link Configure abaixo do ícone da
categoria "CERT Kaiju". Um pop-up exibirá todos os plugins do Kaiju
disponíveis publicamente. Marque quaisquer plugins que deseja ativar e
pressione OK. Agora você terá acesso aos recursos interativos dos plugins.
Se um plugin não estiver imediatamente visível após ser ativado, você
pode encontrá-lo no menu Window do Code Browser.
Versões experimentais "alfa" de ferramentas futuras podem estar disponíveis na categoria "Experimental" se você deseja testá-las. No entanto, esses plugins são definitivamente experimentais e não suportados, e não são recomendados para uso em produção. Mas recebemos feedbacks iniciais com satisfação!
Extensões do Ghidra como o Kaiju também podem ser instaladas manualmente descompactando o conteúdo da extensão no diretório apropriado da sua instalação do Ghidra. Para mais informações, consulte The Ghidra Installation Guide.
Você também pode compilar a extensão Kaiju diretamente do código-fonte.
Consulte o arquivo INSTALL.md incluído no diretório raiz do código-fonte do Kaiju.
As ferramentas do Kaiju podem ser usadas de forma interativa gráfica, ou através de um modo "headless" mais adequado para trabalhos em lote. Algumas ferramentas podem estar disponíveis apenas para uso gráfico ou headless, pela natureza da ferramenta.
O 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 plugins de Análise que
são executados automaticamente quando a opção "Auto Analysis" é escolhida,
seja ao importar um novo executável para desmontar, ou escolhendo diretamente
Analysis > Auto Analyze... na janela do code browser. Você verá vários
plugins de Análise do CERT selecionados por padrão na ferramenta Auto Analyze,
mas você pode ativar/desativar qualquer um conforme desejado.
No entanto, as ferramentas de Análise devem ser executadas antes que as várias ferramentas GUI funcionem. Em alguns casos extremos, pode até ser útil executar a Auto Analysis 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 de hashing.
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 a partir do CodeBrowser do Ghidra.
Você também pode iniciar o plugin pressionando CTRL-G.Window > CERT Kaiju Function Hash Viewer no menu para começar
a usar esta ferramenta se ela não estiver visível. Uma nova janela aparecerá
exibindo uma tabela de hashes e outros dados. Botões na parte superior
da janela podem atualizar a tabela ou exportar dados para arquivo ou
uma assinatura YARA. Esta janela também pode ser ancorada no CodeBrowser
principal do Ghidra para uso mais fácil junto com outros plugins.
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. Um 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.O Ghidra também suporta um modo "headless" que permite executar ferramentas em algumas circunstâncias sem usar a GUI interativa. Esses comandos podem, portanto, ser utilizados para scripts e trabalhos em "modo lote" de grandes números de arquivos.
As ferramentas headless dependem em grande parte da funcionalidade GhidraScript do Ghidra.
Ferramentas headless incluem:
Um script simples de lançamento em shell chamado kaijuRun foi incluído para executar
esses comandos headless em cenários simples, como gerar os hashes de funções 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 lançamento 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 mais informações sobre o uso deste modo e o script de lançamento kaijuRun.
Documentação e ajuda mais abrangentes estão disponíveis em um de dois formatos.
Consulte o diretório docs/ para documentação e ajuda formatadas em Markdown
para todas as ferramentas e componentes do Kaiju. Esses documentos
são fáceis de manter, editar e ler até mesmo a partir de uma linha de comando.
Alternativamente, você pode encontrar a mesma documentação no sistema de ajuda
embutido do Ghidra. Para acessar esses documentos de ajuda, a partir do menu do 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 de Ajuda do Ghidra tem exatamente o mesmo conteúdo
que os arquivos Markdown no diretório docs/; graças a um plugin gradle na árvore,
o gradle analisará automaticamente o Markdown e exportará para HTML do Ghidra
durante o processo de compilação. Isso permite uma manutenção ainda mais simples
(atualizar documentos em apenas um lugar, não 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 do tipo BSD
pelo Software Engineering Institute da Carnegie Mellon University.
Consulte os 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 do CERT Kaiju é baseado em arte criada por Cameron Spahn, originalmente lançada sob os termos da licença Creative Commons Attribution-Share Alike 4.0 International.