BLint Comprobar Propiedades de Seguridad Ejecutables Binarios
BLint Comprobar Propiedades de Seguridad Ejecutables Binarios

BLint: Comprobar Propiedades de Seguridad y Capacidades en tus Ejecutables

Hoy en día, los vendedores distribuyen binarios enlazados estáticamente producidos por golang o rust o .net. Los usuarios están acostumbrados a ejecutar escaneos antivirus y antimalware mientras usan estos binarios en sus dispositivos locales. Blint aumenta estos escaneos enumerando las capacidades técnicas de un binario. Por ejemplo, si el binario puede utilizar conexiones de red, o puede realizar operaciones con el sistema de archivos, etc.

El binario se analiza en primer lugar utilizando el framework lief para identificar las diversas propiedades, como las funciones, los símbolos estáticos y dinámicos presentes. Gracias a los datos de las anotaciones basadas en YAML, esta información puede compararse con las capacidades y presentarse visualmente mediante una tabla enriquecida.

https://github.com/lief-project/LIEF
Ejemplo de uso de BLint con ngrok
Ejemplo de uso de BLint con ngrok

Formatos binarios soportados:

  • ELF (GNU, musl)
  • PE (exe, dll)
  • Mach-O (x64, arm64)

Puedes ejecutar blint en Linux, Windows y Mac contra cualquiera de estos formatos binarios.

Nota

La presencia de capacidades no implica que las operaciones sean siempre realizadas por el binario. Utiliza la salida de esta herramienta para hacerte una idea sobre un binario. Además, esta herramienta no es adecuada para revisar malware y otros binarios muy ofuscados por razones obvias.

Casos de Uso

  • Añadir blint a CI/CD para inspeccionar los binarios finales y asegurarte de que la firma de código o authenticode se aplica correctamente
  • Identificar funciones y símbolos interesantes para fuzzing
  • Blint se utilizó en ShiftLeft para revisar los paquetes enlazados estáticamente y optimizar el binario cli distribuido
  • Identificar rápidamente los binarios maliciosos observando sus capacidades (capacidad de manipular redes o controladores o kernels, etc.)

Instalación

Necesitas tener instalado Python 3.8 o 3.9.

Entonces, se instala a través de pip:

pip3 install blint

Versiones binarias individuales

Puedes descargar compilaciones binarias individuales de las releases de blint-bin. Estos ejecutables deberían funcionar sin necesidad de tener instalado Python. El archivo .pkg de macOS está firmado con una cuenta de desarrollador válida.

https://github.com/ngcloudsec/blint-bin/releases

Uso

usage: blint [-h] [-i SRC_DIR_IMAGE] [-o REPORTS_DIR] [--no-error] [--no-banner] [--no-reviews]

Linting tool for binary files powered by lief.

optional arguments:
  -h, --help            show this help message and exit
  -i SRC_DIR_IMAGE, --src SRC_DIR_IMAGE
                        Source directory or container image or binary file
  -o REPORTS_DIR, --reports REPORTS_DIR
                        Reports directory
  --no-error            Continue on error to prevent build from breaking
  --no-banner           Do not display banner
  --no-reviews          Do not perform method reviews
  --suggest-fuzzable    Suggest functions and symbols for fuzzing based on a dictionary
  • Para probar cualquier binario, incluidos los comandos por defecto
blint -i /bin/netstat -o /tmp/blint
  • Utiliza -i para comprobar cualquier otro binario. Por ejemplo: para comprobar ngrok
blint -i ~/ngrok -o /tmp/blint
  • Pasa --suggest-fuzzable para obtener sugerencias de fuzzing. Se utiliza un diccionario que contiene “verbos comunes” para identificar estas funciones.
blint -i ~/ngrok -o /tmp/blint --suggest-fuzzable

Ejemplo de PowerShell:

Ejemplo de uso de BLint desde PowerShell
Ejemplo de uso de BLint desde PowerShell

Informes

Blint produce los siguientes artefactos json en el directorio de reports:

  • blint-output.html – Salida HTML de los registros de la consola
  • exename-metadata.json – Metadatos sin procesar sobre el binario analizado. Incluye información sobre símbolos, funciones y firmas
  • findings.json – Contiene información de la auditoría de propiedades de seguridad. Útil para la integración basada en CI/CD
  • reviews.json – Contiene información de las revisiones de capacidades. Útil para el análisis posterior
  • fuzzables.json – Contiene una lista sugerida de métodos para fuzzing
https://git.sr.ht/~prabhu/blint

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda