Author: CX330
IoC Ninja is a Binary Ninja plugin that scans a BinaryView's user-visible strings and extracts Indicators of Compromise (IoCs) — IP addresses, domains, URLs, email addresses, API keys, hashes, PEM blocks, Base64 blocks, file paths, registry keys and other useful artifacts. Findings are presented in an interactive Qt UI with selectable detectors, incremental results, live-domain filtering, and CSV export.
Why this is useful
- Quickly surface potential IoCs embedded in binaries without writing custom extraction scripts.
- A large, curated set of regular expressions and heuristics for many IoC classes (see
ioc_logic.py). - Optional DNS-based live-domain filtering to reduce false positives.
- Background scanning with incremental UI updates and exportable CSV output for triage.
IoC.Ninja.mp4
- Pattern-based detection for IPv4/IPv6, domains, URLs, emails, UUIDs, MACs, MD5/SHA hashes, JWTs, API keys, PEM blocks, Base64 blocks, file paths, registry keys and more.
- Heuristic checks: high-entropy tokens, base64 decode validation and file-hash extraction.
- GUI: choose detectors, run scans in background, view incremental and aggregated results, export to CSV.
- Live DNS filtering: optionally show only resolvable domains.
- Binary Ninja (minimum version referenced in
plugin.json: 3164) - Python 3 (Binary Ninja's bundled Python is recommended)
- The plugin uses the Binary Ninja API and PySide6; these are typically supplied by the Binary Ninja application.
This plugin requires the following minimum version of Binary Ninja:
- 3164
Open Binary Ninja Plugin Manager and search for "IoC Ninja" to install it.
-
Clone the repository and put
ioc_ninjainside your Binary Ninjapluginsdirectory.- MacOS:
~/Library/Application Support/Binary Ninja/plugins/ - Linux:
~/.binaryninja/plugins/ - Windows:
%APPDATA%\\Binary Ninja\\plugins/
- MacOS:
-
Restart Binary Ninja to load the plugin.
- Open a binary in Binary Ninja.
- Open the plugin UI:
Plugins -> IoC Ninja(or use the command palette). - Select IoC types to scan (or use the All/None shortcuts) and click
Scan. - Watch progress and partial results in the UI. Use the search box to filter by Type, Value, or Address.
- Export results using the
Exportbutton (CSV) for further triage.
- Core logic:
ioc_ninja/core/ioc_logic.py - UI:
ioc_ninja/ui/ioc_ui.py - Compatibility shim for legacy imports:
ioc_ninja/logic/ioc_logic.py - Tests:
tests/test_ioc_regex.py(mocks Binary Ninja internals so tests can run outside the host application).
Run unit tests locally (Python 3 required):
python3 -m pytest tests/test_ioc_regex.py
# or (tests include a small runner):
python3 tests/test_ioc_regex.pyWhen adding or changing detectors, please add/update tests in tests/test_ioc_regex.py to cover edge cases.
- Open an issue in this repository for bugs or feature requests. Include: Binary Ninja version, small repro if possible, and steps to reproduce.
- For quick questions, code pointers, or to propose changes, open a discussion or PR.
- This project is maintained in this repository. See
LICENSEfor license details (MIT). - Contributions are welcome via pull requests — for larger changes, open an issue first to discuss the approach.
This plugin is released under a MIT license.