Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
obfuscation_detection — Complemento de Binary Ninja para identificar código ofuscado y otras construcciones de código interesantes | Kitploit
Herramientas/GitHubGitHub/mrphrazer/obfuscation_detection
Análisis EstáticoIngeniería InversaAnálisis de MalwareAnálisis de BinariosAnálisis de Firmware
GitHubmrphrazer/obfuscation_detection

obfuscation_detection

Complemento de Binary Ninja para identificar código ofuscado y otras construcciones de código interesantes

Ver Repositorio
67274hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Detección de Ofuscación (v2.4)

Autor: Tim Blazytko

Detectar automáticamente código ofuscado y otras construcciones de código interesantes

Descripción:

Obfuscation Detection es un plugin de Binary Ninja para detectar código ofuscado y construcciones de código interesantes (por ejemplo, máquinas de estado) en binarios. Dado un binario, el plugin facilita el análisis identificando ubicaciones de código que podrían merecer un examen más detallado durante la ingeniería inversa.

Basado en varias heurísticas, el plugin señala funciones que contienen construcciones de código complejas o poco comunes. Dichas construcciones pueden implementar

  • código ofuscado
  • máquinas de estado y protocolos
  • comunicación con servidores C&C
  • rutinas de descifrado de cadenas
  • algoritmos criptográficos

Las siguientes publicaciones de blog proporcionan más información sobre las heurísticas subyacentes y demuestran sus casos de uso:

  • Detección automatizada de aplanamiento de flujo de control
  • Detección automatizada de código ofuscado
  • Análisis estadístico para detectar código poco común
  • Identificación de funciones API en binarios

Algunos casos de uso de ejemplo se pueden encontrar en ejemplos. Además, la charla de REcon "Unveiling Secrets in Binaries using Code Detection Strategies" demuestra algunos casos de uso. Las diapositivas se pueden encontrar aquí; la grabación se puede encontrar aquí.

Funcionalidades principales

  • identifica construcciones de código interesantes en binarios grandes
  • resalta instrucciones desalineadas en la vista de grafo de Binary Ninja
  • implementación eficiente e independiente de la arquitectura
  • se ejecuta como tarea en segundo plano
  • etiqueta automáticamente las funciones identificadas con la heurística o utilidad correspondiente
  • puede utilizarse en modo UI y headless

Instalación

La herramienta se puede instalar usando el administrador de plugins de Binary Ninja.

Para la versión headless, siga estos pasos:

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

# instalar obfuscation_detection
pip install .

Uso

El plugin se puede utilizar en la interfaz de usuario y en modo headless.

Interfaz de usuario

Elija Plugins -> Obfuscation Detection para ejecutar heurísticas individuales, o Plugins -> Obfuscation Detection -> Utils para ejecutar detecciones de utilidad individuales. El comando Plugins -> Obfuscation Detection -> All ejecuta todas las heurísticas y todas las utilidades juntas.

Menú del plugin

Los resultados se muestran en la ventana de Log:

Log de Binary Ninja

Al hacer clic en las direcciones de función identificadas, Binary Ninja navega a la función seleccionada.

Headless

Para usar el plugin en modo headless, ejecute scripts/detect_obfuscation.py:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py <binario>

Esto ejecuta todas las heurísticas y todas las utilidades. Para obtener una salida legible por máquina, pase --json:

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

El payload JSON contiene todos los resultados bajo la clave detections. Cada detección tiene un id estable para automatización y un name legible por humanos. Cada hallazgo de función etiquetada incluye el tipo de etiqueta y la descripción utilizados por el plugin de Binary Ninja.

Para ejecutar solo la heurística de máquina de estado en modo headless, use scripts/detect_state_machine.py:

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

Heurísticas de detección

El plugin implementa varias heurísticas de detección para detectar diferentes construcciones de código. A continuación, describimos brevemente las heurísticas individuales y explicamos su uso.

Bloque Básico Grande

La heurística de bloque básico grande identifica el 10% superior de las funciones con el mayor número promedio de instrucciones por bloque básico. Permite detectar

  • código desenrollado
  • implementaciones criptográficas
  • rutinas de inicialización
  • ofuscación aritmética / Aritmética Booleana Mixta

Función Compleja

La heurística de función compleja identifica el 10% superior de las funciones con los grafos de flujo de control más complejos (basado en la complejidad ciclomática). Permite identificar

  • rutinas de despacho y protocolos complejos
  • máquinas de estado
  • funciones ofuscadas con predicados opacos

Máquina de Estado

La heurística de máquina de Estado utiliza propiedades de teoría de grafos para identificar funciones que implementan máquinas de estado. Por lo general, dichas máquinas de estado se pueden representar como declaraciones switch que se despachan en un bucle. La heurística permite identificar

  • despacho de protocolos de red
  • lógica de análisis de archivos
  • comunicación con servidor C&C / despacho de comandos
  • aplanamiento de flujo de control

Secuencia de Instrucción Poco Común

La heurística de secuencia de instrucción poco común realiza un análisis estadístico para identificar el 10% superior de las funciones cuyos patrones de código se desvían de una verdad fundamental precomputada. De esta manera, la heurística permite identificar

  • implementaciones criptográficas
  • uso intensivo de aritmética de punto flotante
  • ofuscación aritmética / Aritmética Booleana Mixta
  • patrones genéricos de ofuscación

Instrucción Superpuesta

La heurística de instrucción superpuesta identifica funciones con instrucciones desalineadas (bytes de instrucción compartidos por dos instrucciones diferentes). La heurística identifica

  • desensamblado roto (por ejemplo, datos que están marcados como código)
  • predicados opacos que saltan dentro de otras instrucciones

Si la heurística se utiliza en la interfaz de usuario de Binary Ninja, las instrucciones superpuestas también se resaltan en la vista de grafo.

Función Más Llamada

La heurística de función más llamada identifica el 10% superior de las funciones con el mayor número de llamadas desde diferentes funciones. De esta manera, la heurística puede identificar

  • rutinas de descifrado de cadenas
  • funciones de biblioteca en binarios enlazados estáticamente

Frecuencia de Bucles

La heurística identifica funciones con un alto número de bucles. Este tipo de funciones podrían implementar

  • lógica de análisis compleja para formatos de datos estructurados
  • cálculos algorítmicos intensivos

La heurística también ayuda a señalar posibles cuellos de botella de rendimiento.

Bucle Irreducible

La heurística identifica funciones con estructuras de bucle raras y complejas que generalmente sugieren

  • optimizaciones agresivas del compilador
  • ensamblador escrito a mano
  • uso de declaraciones goto
  • código ofuscado

Bucle de Descifrado XOR

La heurística identifica funciones que realizan una operación XOR con una constante dentro de un bucle. De esta manera, la heurística puede identificar

  • rutinas de descifrado de cadenas
  • stubs de descifrado de código
  • implementaciones criptográficas

Expresión Aritmética Compleja

La heurística identifica funciones en las que las expresiones tienen más de una operación aritmética y una operación booleana simultáneamente. De esta manera, la heurística puede identificar

  • ofuscación aritmética booleana mixta
  • rutina de inicialización
  • implementaciones criptográficas

Subgrafo Duplicado

La heurística utiliza un enfoque de hashing de contexto iterativo para detectar estructuras repetidas de múltiples bloques dentro del grafo de flujo de control de cada función. Al comparar la firma de opcode de cada bloque junto con las firmas de sus sucesores, la heurística identifica subgrafos que están duplicados o casi duplicados en una sola función. Esto ayuda a señalar:

  • stubs de ofuscación como pequeñas máquinas de estado o bloques despachadores clonados varias veces
  • bucles desenrollados o en línea introducidos por optimizaciones del compilador
  • lógica de bifurcación de múltiples vías como divisores de rango y árboles de decisión
  • stubs criptográficos o de suma de verificación repetidos

Utilidades

El plugin también incluye utilidades más específicas para funciones y regiones de código interesantes. Están disponibles en el submenú Utils; el comando All las ejecuta junto con las heurísticas más amplias.

Función de Entrada

Esta utilidad identifica funciones sin llamadores conocidos. Estas funciones podrían ser

  • puntos de entrada en el binario
  • destinos de saltos indirectos donde el desensamblador no pudo recuperar la jerarquía de llamadas

Función Hoja

Esta utilidad identifica funciones que no llaman a otras funciones. Estos tipos de funciones pueden ser, por ejemplo, funciones que

  • son delineadas por el compilador para implementar funcionalidades utilizadas en diversas ubicaciones de código
  • son trampolines a otras funciones
  • forman parte de esquemas de ofuscación de código (por ejemplo, cálculos delineados para ofuscación de flujo de control)

Función Recursiva

Esta utilidad identifica funciones recursivas—funciones que se llaman a sí mismas directa o indirectamente. Las funciones recursivas pueden indicar:

  • implementaciones algorítmicas como recorrido de árboles o grafos
  • código ofuscado diseñado para complicar el análisis estático
  • implementaciones de algoritmos matemáticos o rutinas de análisis complejas
  • posibles vulnerabilidades de desbordamiento de pila debido a recursión profunda

Entropía de Sección

Esta utilidad evalúa la entropía de cada sección. La entropía es una medida estadística de aleatoriedad con valores que van de 0 a 8. Las secciones con una entropía cercana a 8 indican un alto grado de aleatoriedad y pueden sugerir:

  • código empaquetado o comprimido
  • datos o código cifrados
  • datos aleatorios

RC4

Esta utilidad detecta posibles implementaciones del algoritmo RC4 mediante el empleo de marcadores heurísticos típicamente asociados con el Algoritmo de Programación de Claves (KSA) de RC4 y el Algoritmo de Generación Pseudoaleatoria (PRGA). RC4 se usa ampliamente en malware para fines como:

  • descifrar cadenas y otras cargas útiles de datos
  • ofuscar comunicaciones de comando y control (C&C)

Contacto

Para más información, contacte a @mr_phrazer.

Descargar herramienta