Cyberbro
A simple application that extracts your IoCs from garbage input and checks their reputation using multiple CTI services.
Install / Use
/learn @stanfrbd/CyberbroREADME
<p align="center"> <a href="https://github.com/stanfrbd/cyberbro/stargazers"> <img src="https://img.shields.io/github/stars/stanfrbd/cyberbro?style=social" alt="GitHub stars"> </a> <a href="https://x.com/cyberbro_cti"> <img src="https://img.shields.io/twitter/follow/cyberbro_cti?style=social" alt="Follow on X/Twitter"> </a> <a href="https://infosec.exchange/@cyberbro"> <img src="https://img.shields.io/badge/Follow_@cyberbro-23-blue?logo=mastodon" alt="Mastodon"> </a> <a href="https://github.com/stanfrbd/cyberbro/issues"> <img src="https://img.shields.io/github/issues/stanfrbd/cyberbro" alt="GitHub issues"> </a> <a href="https://github.com/stanfrbd/cyberbro/blob/main/LICENSE"> <img src="https://img.shields.io/github/license/stanfrbd/cyberbro" alt="License"> </a> <a href="https://github.com/stanfrbd/cyberbro/actions/workflows/jobs.yml"> <img src="https://github.com/stanfrbd/cyberbro/actions/workflows/jobs.yml/badge.svg" alt="build and test badge"> </a> <a href="https://github.com/stanfrbd/cyberbro/actions/workflows/pre-commit-validation.yml"> <img src="https://github.com/stanfrbd/cyberbro/actions/workflows/pre-commit-validation.yml/badge.svg" alt="pre-commit validation badge"> </a> <a href="https://www.python.org/"> <img src="https://img.shields.io/badge/Python-3.13-blue?logo=python" alt="Python"> </a> </p>
About
Inspired by Cybergordon and IntelOwl.
This project aims to provide a simple and efficient way to check the reputation of your observables using multiple services, without having to deploy a complex solution. Read the docs at https://docs.cyberbro.net/
[!TIP] To build custom reports, use Cyberbro with your favorite LLM (Claude, OpenAI gpt-5...) via MCP (Model Context Protocol)
Checkout Cyberbro MCP for more information.
Demo
Features
- Easy Input: Paste raw logs or IoCs-automatic parsing and extraction.
- Multi-Service Checks: Reputation lookup for IPs, hashes, domains, URLs, and Chrome extension IDs across many threat intel services.
- Comprehensive Reports: Advanced search, filtering, and export to CSV/Excel.
- Fast Processing: Multithreaded for speed.
- Automated Pivoting: Discover related domains, URLs, and IPs via reverse DNS and RDAP / Whois.
- Accurate Domain & Abuse Info: RDAP / Whois and abuse contact lookups.
- Integrations: Microsoft Defender for Endpoint, CrowdStrike, OpenCTI, Grep.App, Hudson Rock, and more.
- Proxy & Storage: Proxy support and results stored in SQLite.
- History & Graphs: Analysis history and experimental graph view.
- Cache: Caching for faster repeat lookups (enabled at multi-engines level, not each engine).
What Makes Cyberbro Unique
- Beginner-Friendly: Accessible for all skill levels.
- Chrome Extension ID Lookup: Get extension names and CTI data from IDs.
- Lightweight Deployment: Simple setup and use.
- Advanced TLD Extraction: Accurate root domain detection for better lookups.
- Pragmatic Data Gathering: Uses GitHub and Google to find overlooked IoCs.
- CTI Report Integration: Fetches IoC-related reports from IoC.One.
- EDR Integration: Checks observables against your own security tools (MDE, CrowdStrike).
Getting Started - TL;DR
[!TIP] If you are lazy, you need Docker.
Do agit clone; copy.env.sampleto.env;docker compose upthen go tolocalhost:5000. Yep, that's it!
Getting Started
- To get started, clone the repository
git clone https://github.com/stanfrbd/cyberbro
cd cyberbro
Edit the config file (mandatory)
cp .env.sample .env
[!NOTE] Don't have API keys? No problem, just copy
.env.sampleto.envand leave optional values empty. Be careful if a proxy is used.
You will be able to use all free engines!
- Fill values (including proxy if needed) in the
.envfile.
[!WARNING]
.envcontains sensitive secrets and must never be committed. For production/team deployments, use SOPS, Vault, or an equivalent secret manager workflow.
ABUSEIPDB=token_here
ALIENVAULT=token_here
CRIMINALIP_API_KEY=token_here
CROWDSTRIKE_CLIENT_ID=client_id_here
CROWDSTRIKE_CLIENT_SECRET=client_secret_here
DFIR_IRIS_API_KEY=token_here
DFIR_IRIS_URL=https://dfir-iris.local
GOOGLE_CSE_CX=cx_here
GOOGLE_CSE_KEY=key_here
GOOGLE_SAFE_BROWSING=token_here
IPAPI=token_here
IPINFO=token_here
MDE_CLIENT_ID=client_id_here
MDE_CLIENT_SECRET=client_secret_here
MDE_TENANT_ID=tenant_here
MISP_API_KEY=token_here
MISP_URL=https://misp.local
OPENCTI_API_KEY=token_here
OPENCTI_URL=https://demo.opencti.io
PROXY_URL=
RL_ANALYZE_API_KEY=token_here
RL_ANALYZE_URL=https://spectra_analyse_url_here
ROSTI_API_KEY=token_here
SHODAN=token_here
SPUR_US=token_here
THREATFOX=token_here
VIRUSTOTAL=token_here
WEBSCOUT=token_here
[!IMPORTANT] Starting with version
v0.13.0, Cyberbro no longer supportssecrets.jsonand the/configpage. Cf. discussion 165.
If you already have a legacysecrets.json, convert it to.envwith:python3 scripts/secrets_json_to_env.py
See Advanced options for deployment in the docs.
Launch the app
Lazy and easy - use docker
[!WARNING] Make sure you install the
composeplugin asdocker composeand notdocker-compose. In Docker, the app binds to0.0.0.0inside the container even if your local.envsetsFLASK_HOST=127.0.0.1.
docker compose up # use -d to run in background and use --build to rebuild the image
- Go to http://127.0.0.1:5000 and Enjoy.
Don't forget to edit
.envbefore building the image.
See Advanced options for deployment in the docs to get all Docker deployment options.
The old way
- Clone the repository and install the requirements.
You might want to create a venv before installing the dependencies.
pip install -r requirements.txt
- Run the app with
gunicorn(clean mode).
gunicorn -c prod/gunicorn.conf.py app:app
- Run the app with in development mode.
python3 app.py
Screenshots
<details> <summary>See all screenshots</summary> <img width="1897" height="909" alt="image" src="https://github.com/user-attachments/assets/8f8da960-e42f-4357-80a0-eb5366b04686" /> <img width="1883" height="907" alt="image" src="https://github.com/user-attachments/assets/f6dd920a-884f-47a4-b862-8f3361b0c2f6" /> <img width="1887" height="906" alt="image" src="https://github.com/user-attachments/assets/8bfe69af-3a9e-4e85-a38c-eb8821f1182e" /> </details> <img width="1788" height="1536" alt="image" src="https://github.com/user-attachments/assets/a5206515-2f5e-44db-bc50-384144c62021" /> <img width="1873" height="900" alt="image" src="https://github.com/user-attachments/assets/7588ade2-9347-4497-8edd-37c5fbd8cce3" />[!CAUTION] If you intend to use this in a production environment, use well configured Reverse Proxy + WAF to prevent security issues.
Cyberbro browser extension
<p> <a href="https://addons.mozilla.org/addon/cyberbro-analyzer/"><img src="https://user-images.githubusercontent.com/585534/107280546-7b9b2a00-6a26-11eb-8f9f-f95932f4bfec.png" alt="Get Cyberbro Analyzer for Firefox"></a> <a href="https://chromewebstore.google.com/detail/cyberbro-analyzer/nfcfigpaollodajabegcdobhmgaclbbm"><img src="https://user-images.githubusercontent.com/585534/107280622-91a8ea80-6a26-11eb-8d07-77c548b28665.png" alt="Get Cyberbro Analyzer for Chromium"></a> <a href="https://microsoftedge.microsoft.com/addons/detail/cyberbro-analyzer/lbponbmcggcepflackehgpbceehagiam"><img src="https://user-images.githubusercontent.com/585534/107280673-a5ece780-6a26-11eb-9cc7-9fa9f9f81180.png" alt="Get Cyberbro Analyzer for Microsoft Edge"></a> </p>Cyberbro API
- The API is available at
/api/and can be accessed via the GUI or command-line.
There are currently 3 endpoints:
/api/analyze- Analyze a text and return analysis ID (JSON)./api/is_analysis_complete/<analysis_id>- Check if the analysis is complete (JSON)./api/results/<analysis_id>- Retrieve the results of a previous analysis (JSON).
curl -X POST "http://localhost:5000/api/analyze" -H "Content-Type: application/json" -d '{"text": "cyberbro.net", "engines": ["reverse_dns", "rdap_whois"]}'
{
"analysis_id": "e88de647-b153-4904-91e5-8f5c79174854",
"link": "/results/e88de647-b153-4904-91e5-8f5c79174854"
}
curl "http://localhost:5000/api/is_analysis_complete/e88de647-b153-4904-91e5-8f5c79174854"
{
"complete": true
}
curl "http://localhost:5000/api/results/e88de647-b153-4904-91e5-8f5c79174854"
[
{
"observable": "cyberbro.net",
"rdap_whois": {
"abuse_contact": "registrar-abuse@cloudflare.com",
"creation_date": "2024-12-20",
"data_source": "rdap",
"emails": [
"registrar-abuse@cloudflare.com"
],
"expiration_date": "2026-12-20",
"link": "https://rdap.verisign.com/net/v1/domain/CYBERBRO.NET",
"name_servers": [
"anderson.ns.cloudflare.com",
"lisa.ns.cloudflare.com"
