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

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.
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:

Informes
Blint produce los siguientes artefactos json en el directorio de reports:
blint-output.html
– Salida HTML de los registros de la consolaexename-metadata.json
– Metadatos sin procesar sobre el binario analizado. Incluye información sobre símbolos, funciones y firmasfindings.json
– Contiene información de la auditoría de propiedades de seguridad. Útil para la integración basada en CI/CDreviews.json
– Contiene información de las revisiones de capacidades. Útil para el análisis posteriorfuzzables.json
– Contiene una lista sugerida de métodos para fuzzing
https://git.sr.ht/~prabhu/blint