Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
obfuscation_detection — Plugin do Binary Ninja para identificar código ofuscado e outras construções de código interessantes | Kitploit
Ferramentas/GitHubGitHub/mrphrazer/obfuscation_detection
Análise EstáticaEngenharia ReversaAnálise de MalwareAnálise de BináriosAnálise de Firmware
GitHubmrphrazer/obfuscation_detection

obfuscation_detection

Plugin do Binary Ninja para identificar código ofuscado e outras construções de código interessantes

Ver Repositório
67274há 3 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Detecção de Ofuscação (v2.4)

Autor: Tim Blazytko

Detecta automaticamente código ofuscado e outras construções de código interessantes

Descrição:

Obfuscation Detection é um plugin do Binary Ninja para detectar código ofuscado e construções de código interessantes (ex.: máquinas de estado) em binários. Dado um binário, o plugin facilita a análise ao identificar locais de código que podem merecer uma análise mais aprofundada durante a engenharia reversa.

Baseado em várias heurísticas, o plugin identifica funções que contêm construções de código complexas ou incomuns. Essas construções de código podem implementar:

  • código ofuscado
  • máquinas de estado e protocolos
  • comunicação com servidores C&C
  • rotinas de descriptografia de strings
  • algoritmos criptográficos

Os seguintes posts de blog fornecem mais informações sobre as heurísticas subjacentes e demonstram seus casos de uso:

  • Detecção Automatizada de Achatamento de Fluxo de Controle
  • Detecção Automatizada de Código Ofuscado
  • Análise Estatística para Detectar Código Incomum
  • Identificação de Funções de API em Binários

Alguns exemplos de uso podem ser encontrados em exemplos. Além disso, a palestra do REcon "Unveiling Secrets in Binaries using Code Detection Strategies" demonstra alguns casos de uso. Os slides podem ser encontrados aqui; a gravação pode ser encontrada aqui.

Funcionalidades Principais

  • identifica construções de código interessantes em binários grandes
  • destaca instruções desalinhadas na visualização de grafo do Binary Ninja
  • implementação eficiente e independente de arquitetura
  • executa como tarefa em segundo plano
  • marca automaticamente funções identificadas com a heurística ou utilitário correspondente
  • pode ser usado na interface gráfica e no modo headless

Instalação

A ferramenta pode ser instalada usando o gerenciador de plugins do Binary Ninja.

Para a versão headless, siga estes passos:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_detection.git
cd obfuscation_detection

# instalar obfuscation_detection
pip install .

Uso

O plugin pode ser usado na interface do usuário e no modo headless.

Interface do Usuário

Escolha Plugins -> Obfuscation Detection para executar heurísticas individuais, ou Plugins -> Obfuscation Detection -> Utils para executar detecções de utilitários individuais. O comando Plugins -> Obfuscation Detection -> All executa todas as heurísticas e todos os utilitários juntos.

Menu do Plugin

Os resultados são exibidos na janela de Log:

Log do Binary Ninja

Ao clicar nos endereços de funções identificadas, o Binary Ninja navega para a função selecionada.

Headless

Para usar o plugin em modo headless, execute scripts/detect_obfuscation.py:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py <binário>

Isso executa todas as heurísticas e todos os utilitários. Para saída legível por máquina, use --json:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py --json <binário>

O payload JSON contém todos os resultados sob a chave detections. Cada detecção possui um id estável para automação e um name legível por humanos. Cada achado de função marcada inclui o tipo de tag e a descrição usada pelo plugin do Binary Ninja.

Para executar apenas a heurística de máquina de estado em modo headless, use scripts/detect_state_machine.py:

root@kitploit:~
$ python3 scripts/detect_state_machine.py [--json] <binário>

Heurísticas de Detecção

O plugin implementa várias heurísticas de detecção para detectar diferentes construções de código. A seguir, descrevemos brevemente as heurísticas individuais e explicamos seu uso.

Bloco Básico Grande

A heurística de bloco básico grande identifica as 10% principais funções com o maior número médio de instruções por bloco básico. Permite detectar:

  • código desenrolado
  • implementações criptográficas
  • rotinas de inicialização
  • ofuscação aritmética / Aritmética Booleana Mista

Função Complexa

A heurística de função complexa identifica as 10% principais funções com os grafos de fluxo de controle mais complexos (com base na complexidade ciclomática). Permite identificar:

  • rotinas de despacho e protocolos complexos
  • máquinas de estado
  • funções ofuscadas com predicados opacos

Máquina de Estado

A heurística de máquina de estado usa propriedades teóricas de grafos para identificar funções que implementam máquinas de estado. Geralmente, essas máquinas de estado podem ser representadas como instruções switch que são despachadas em um loop. A heurística permite identificar:

  • despacho de protocolo de rede
  • lógica de análise de arquivos
  • comunicação com servidor C&C / despacho de comandos
  • achatamento de fluxo de controle

Sequência de Instruções Incomum

A heurística de sequência de instruções incomum realiza uma análise estatística para identificar as 10% principais funções cujos padrões de código se desviam de uma referência pré-computada. Dessa forma, a heurística permite identificar:

  • implementações criptográficas
  • uso intenso de aritmética de ponto flutuante
  • ofuscação aritmética / Aritmética Booleana Mista
  • padrões genéricos de ofuscação

Instrução Sobreposta

A heurística de instrução sobreposta identifica funções com instruções desalinhadas (bytes de instrução são compartilhados por duas instruções diferentes). A heurística identifica:

  • desmontagem quebrada (ex.: dados marcados como código)
  • predicados opacos que saltam para outras instruções

Se a heurística for usada na interface do usuário do Binary Ninja, as instruções sobrepostas também são destacadas na visualização de grafo.

Função Mais Chamada

A heurística de função mais chamada identifica as 10% principais funções com o maior número de chamadas de diferentes funções. Dessa forma, a heurística pode identificar:

  • rotinas de descriptografia de strings
  • funções de biblioteca em binários vinculados estaticamente

Frequência de Loop

A heurística identifica funções com um alto número de loops. Esses tipos de funções podem implementar:

  • lógica de análise complexa para formatos de dados estruturados
  • cálculos algorítmicos intensivos

A heurística também ajuda a identificar possíveis gargalos de desempenho.

Loop Irredutível

A heurística identifica funções com estruturas de loop raras e complexas que geralmente sugerem:

  • otimizações agressivas do compilador
  • assembly escrito à mão
  • uso de instruções goto
  • código ofuscado

Loop de Descriptografia XOR

A heurística identifica funções que realizam uma operação XOR com uma constante dentro de um loop. Dessa forma, a heurística pode identificar:

  • rotinas de descriptografia de strings
  • stubs de descriptografia de código
  • implementações criptográficas

Expressão Aritmética Complexa

A heurística identifica funções nas quais as expressões têm mais de uma operação aritmética e uma operação booleana simultaneamente. Dessa forma, a heurística pode identificar:

  • ofuscação aritmética booleana mista
  • rotina de inicialização
  • implementações criptográficas

Subgrafo Duplicado

A heurística usa uma abordagem iterativa de hashing de contexto para detectar estruturas de múltiplos blocos repetidas dentro do grafo de fluxo de controle de cada função. Ao comparar a assinatura de opcode de cada bloco junto com as assinaturas de seus sucessores, a heurística identifica subgrafos que são duplicados ou quase duplicados em uma única função. Isso ajuda a identificar:

  • stubs de ofuscação como pequenas máquinas de estado ou blocos de despacho clonados múltiplas vezes
  • loops desenrolados ou inline introduzidos por otimizações do compilador
  • lógica de ramificação multi-caminho como divisores de intervalo e árvores de decisão
  • stubs criptográficos ou de checksum repetidos

Utilitários

O plugin também inclui utilitários mais específicos para funções e regiões de código interessantes. Eles permanecem disponíveis no submenu Utils; o comando All os executa junto com as heurísticas mais amplas.

Função de Entrada

Este utilitário identifica funções sem chamadores conhecidos. Essas funções podem ser:

  • pontos de entrada no binário
  • alvos de saltos indiretos onde a hierarquia de chamadas não pôde ser recuperada pelo desmontador

Função Folha

Este utilitário identifica funções que não chamam outras funções. Esses tipos de funções podem, por exemplo, ser funções que:

  • são delineadas pelo compilador para implementar funcionalidades utilizadas em vários locais de código
  • são trampolins para outras funções
  • fazem parte de esquemas de ofuscação de código (ex.: computações delineadas para ofuscação de fluxo de controle)

Função Recursiva

Este utilitário identifica funções recursivas — funções que chamam a si mesmas direta ou indiretamente. Funções recursivas podem indicar:

  • implementações algorítmicas como travessia de árvores ou grafos
  • código ofuscado projetado para complicar a análise estática
  • implementações de algoritmos matemáticos ou rotinas complexas de análise
  • potenciais vulnerabilidades de estouro de pilha devido à recursão profunda

Entropia da Seção

Este utilitário avalia a entropia de cada seção. Entropia é uma medida estatística de aleatoriedade com valores variando entre 0 e 8. Seções com entropia próxima de 8 indicam um alto grau de aleatoriedade e podem sugerir:

  • código empacotado ou comprimido
  • dados ou código criptografados
  • dados aleatórios

RC4

Este utilitário detecta implementações potenciais do algoritmo RC4 empregando marcadores heurísticos tipicamente associados ao Algoritmo de Agendamento de Chaves (KSA) e ao Algoritmo de Geração Pseudo-Aleatória (PRGA) do RC4. O RC4 é amplamente usado em malware para fins como:

  • descriptografar strings e outras cargas de dados
  • ofuscar comunicações de comando e controle (C&C)

Contato

Para mais informações, entre em contato com @mr_phrazer.

Baixar ferramenta