Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ex0dus-0x/binsec

Binary (In)security tool
https://github.com/ex0dus-0x/binsec

checksec security-mitigations

Last synced: about 2 months ago
JSON representation

Binary (In)security tool

Awesome Lists containing this project

README

        

# binsec

[![Actions][actions-badge]][actions-url]
[![crates.io version][crates-binsec-badge]][crates-binsec]

[actions-badge]: https://github.com/ex0dus-0x/binsec/workflows/CI/badge.svg?branch=master
[actions-url]: https://github.com/ex0dus-0x/binsec/actions

[crates-binsec-badge]: https://img.shields.io/crates/v/binsec.svg
[crates-binsec]: https://crates.io/crates/binsec

Swiss Army Knife for Binary (In)security

__binsec__ is a minimal static analysis utility for detecting security capabilities in ELF/PE/Mach-O executables. It's useful
for reverse engineers and vulnerability researchers to gain quick and deeper insights into binary artifacts,
build fast detection pipelines, and improve overall binary analysis.

## Features

* Cross-platform, supports robust checks for ELF/PE/Mach-Os while running on any host.
* Backends [libgoblin](https://github.com/m4b/goblin) for efficient and cross-platform binary parsing.
* JSON serializable for storage/logging consumption.
* Small and ast: final release build is ~2.44Mb, with analysis done in 30ms.

### Static Analysis Checks

The project currently supports static detection for a variety of executable checks:

* __Compilation Features__ - insights about how the executable was compiled, and runtimes used in that process.
* __Exploit Mitigations__ - OS-supported binary hardening features used to limit exploitation and priviledge escalation.
* __Dynamic Instrumentation__ - detects any known instrumentation frameworks used for dynamic analysis and/or profiling.
* __Anti-Analysis (WIP)__ - noticeable anti-analysis checks employed to mitigate reverse engineering.

## Usage

Install `binsec` as a command line application as so:

```
$ cargo install binsec
```

Using the application is meant to be very simple. Given any binary executable you want to conduct initial analysis,
simply pass it in as a positional argument:

```
$ binsec -- ./suspicious
```

`binsec` output can also be serialized into JSON:

```
# print to stdout
$ binsec --json - -- ./suspicious

# print to path
$ binsec --json report.json -- ./suspicious
```

## Contributing

This is something that is continually being developed! You can contribute by catching issues and bugs
and submitting them through the [issue tracker](https://github.com/ex0dus-0x/binsec/issues) or making a pull request!

## License

[MIT License](https://codemuch.tech/license.txt)