Skip to main content

Linter for binary files powered by lief

Project description

Introduction

BLint is a Binary Linter to check the security properties, and capabilities in your executables. It is powered by lief

BLint Demo

Capabilities review is supported for go and rust binaries.

Supported binary formats:

  • ELF
  • PE
  • Mach-O

Motivation

Nowadays, vendors distribute statically linked binaries produced by golang or rust or dotnet tooling. Users are used to running antivirus and anti-malware scans while using these binaries in their local devices. Blint augments these scans by listing the technical capabilities of a binary. For example, whether the binary could use network connections, or can perform file system operations and so on.

The binary is first parsed using lief framework to identify the various properties such as functions, static, and dynamic symbols present. Thanks to a YAML based annotations data, this information could be matched against capabilities and presented visually using a rich table.

NOTE: The presence of capabilities doesn't imply that the operations are always performed by the binary. Use the output of this tool to get an idea about a binary. Also, this tool is not suitable to review malware and other heavily obfuscated binaries for obvious reasons.

Use cases

Blint was used at ShiftLeft to review and optimize the distributed cli binary.

Installation

  • Install python 3.8 or 3.9
pip3 install blint

Usage

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

To test any binary including default commands

blint -i /bin/netstat -o /tmp/blint

Use -i to check any other binary. For eg: to check ngrok

blint -i ~/ngrok -o /tmp/blint

PowerShell example

PowerShell

References

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blint-1.0.0.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blint-1.0.0-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file blint-1.0.0.tar.gz.

File metadata

  • Download URL: blint-1.0.0.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.9 CPython/3.9.5 Linux/5.13.13-051313-generic

File hashes

Hashes for blint-1.0.0.tar.gz
Algorithm Hash digest
SHA256 883b713b5e3c9355042c3f97e9126044a51e5806fd743a2f3357d343bb9d6942
MD5 3ba148b13af3d7359c90df11cdd51f5a
BLAKE2b-256 8df327c640706943033588fe9f0b2a8d4e7e9cb4e9cc48448b516dafe3a1dfe4

See more details on using hashes here.

File details

Details for the file blint-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: blint-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.9 CPython/3.9.5 Linux/5.13.13-051313-generic

File hashes

Hashes for blint-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca47dd29f1fc0e4f72e54e96f38c6228c8a0d38a6b7db54cd9c2e0be097ab53f
MD5 53910da9cf206c2f6e18c18087e2bda4
BLAKE2b-256 03b9a88d7f1fccc4d6b1e913a8fa65a438c3ff4b89c79617ef1ce76a6c2914a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page