Este repositório contém uma coleção de scripts e plug-ins IDA Pro usados pela equipe de engenharia reversa avançada (FLARE) do FireEye Labs.
Para instalar, copie o conteúdo do diretório de plugins deste repositório para sua pasta %PROGRAMFILES%IDAplugins.
O diretório python aqui pode ser copiado para sua pasta %PROGRAMFILES%IDApython ou você pode modificar sua variável de ambiente PYTHONPATH para incluir o diretório.
O plugin IDA shellcode_hashes_search_plugin.py implementa a pesquisa de hash descrita aqui: https://www.mandiant.com/blog/precalculated-string-hashes-reverse-engineering-shellcode/.
O diretório shellcode_hashes contém o script usado para criar o banco de dados para o script shellcode_hash_search.py, juntamente com um banco de dados fornecido.
O plugin struct_typer_plugin.py implementa a digitação de struct descrita aqui: https://www.mandiant.com/blog/applying-function-types-structure-fields-ida/
O stackstrings_plugin.py implementa a recuperação de strings construídas manualmente descrita aqui: http://www.fireeye.com/blog/threat-research/2014/08/flare-ida-pro-script-series-automatic-recovery-of- strings-construídas-em-malware.html
Este script para IDA Pro adiciona informações do MSDN de um arquivo XML ao banco de dados. Informações sobre este plugin podem ser encontradas em: https://www.fireeye.com/blog/threat-research/2014/09/flare-ida-pro-script-series-msdn-annotations-ida-pro-for-malware -análise.html
A seguinte funcionalidade está incluída:
DR: No IDA, execute annotate_IDB_MSDN.py .
Todos os arquivos (scripts IDAPython, analisador XML, arquivo XML de informações do MSDN, etc.) devem estar localizados no mesmo diretório acessível pelo IDA Pro. No IDA, use Arquivo - Arquivo de script... (ALT + F7) para abrir annotate_IDB_MSDN.py . O formulário permitirá que você altere as configurações e anote o arquivo IDB depois de clicar em OK.
Depois de executar o script uma vez, Exibir - Scripts recentes (ALT + F9) também pode ser usado.
Este plugin permite que você especifique ou escolha um tipo de função para chamadas indiretas conforme descrito aqui: https://www.fireeye.com/blog/threat-research/2015/04/flare_ida_pro_script.html
Este script permite gerar facilmente padrões de função a partir de um banco de dados existente do BID que podem então ser transformados em assinaturas FLIRT para ajudar a identificar funções semelhantes em novos arquivos. Mais informações estão disponíveis em: https://www.fireeye.com/blog/threat-research/2015/01/flare_ida_pro_script.html
Este utilitário pode ajudá-lo a identificar argumentos estáticos para funções usadas em um programa. Isso é mais comumente usado para extrair argumentos para funções de decodificador de string. Exemplo de uso está disponível em
Uma postagem no blog com mais informações está disponível em:
https://www.fireeye.com/blog/threat-research/2015/11/flare_ida_pro_script.html
Este script cria referências cruzadas entre as referências do seletor e suas implementações, conforme definido nas seções relacionadas ao tempo de execução do Objective-C do executável Mach-O de destino. Ele também corrige ponteiros de referência do seletor para apontar para sua função de implementação. Isso facilita a análise do código Objective-C, permitindo transições suaves entre uma implementação e os locais onde seu seletor é referenciado em todo o código. Comentários úteis do código Objective-C são adicionados a cada chamada para variantes objc_msgSend para indicar claramente qual método está sendo chamado em qual classe.
ironstrings.py
é um script IDAPython que usa emulação de código para recuperar strings construídas (stackstrings) de malware. Por favor, veja os detalhes no README do script.
code_grafter.py
é um script IDAPython que enxerta código em um banco de dados IDA para implementar várias funções importadas e aumentar a probabilidade de ser capaz de executar um descompactador ou decodificador inteiramente em Bochs (ou qualquer outra ferramenta de emulação que não implemente tratamento especial para estes funções). Isso evita falhas quando a execução emulada atinge funções como VirtualAlloc
ou lstrlenA
.