
Aggregates MITRE ATT&CK, Sigma, and Atomic Red Team data into BloodHound graphs so SOC analysts can map detection coverage, identify gaps, and investigate incidents with Cypher queries.

BloodSOCer is a Python automation tool that aggregates threat intelligence data from multiple sources (Mitre ATT&CK, Sigma rules, Atomic Red Team) and produces JSON files to ingest in BloodHound in OpenGraph format. BloodSOCer can also upload the files to BloodHound and set the icons for the custom objects if it has API Tokens defined in the configuration. Security analysts can then visualize the data from any angle, and a few Cypher queries are provided to help you get started.
The idea behind this project is to help SOC map their coverage of the Mitre ATT&CK Framework and help during incident response to quickly identify where there might be blind spots. Ideally the SOC would map their own detections and not the "canned" one from Sigma. Don't get me wrong, Sigma is one of my favorite Open Source project, but most detections are better suited for context/enrichment or generate threat hunting lead than creating actionable tickets.
When I was in a SOC we often tried to view/show how our detections mapped to the ATT&CK Framework. I always thought BloodHound type graph would be awesome for that so I built this project hoping that it would help fellow Blue Teamers visualize their coverage and how the different pieces are linked together.
With the ingestion of ART, it's also possible to see which TTP are easy to test and which one can't be tested easily.
I highly encourage you to share Sigma Rules and ART back to the original project if you create detections/tests for a TTP that doesn't have any.
UL-Cyphers.py or --setuphttp://127.0.0.1:8080)Clone the repository:
git clone https://github.com/yourusername/BloodSOCer.git
cd BloodSOCer
Install dependencies:
pip3 install -r requirements.txt
Configure API credentials in BloodSOCer.py:
apikey = "your-api-key-here"
apiid = "your-api-id-here"
python3 BloodSOCer.py
python3 BloodSOCer.py -h
python3 BloodSOCer.py --mitre, -m
python3 BloodSOCer.py --sigma, -s
python3 BloodSOCer.py --art, -r
python3 BloodSOCer.py --define-icons, -di
python3 BloodSOCer.py --setup, -st
python3 BloodSOCer.py --upload-only, -ul
python3 BloodSOCer.py --all, -a
python3 BloodSOCer.py --mitre --sigma --define-icons
python3 BloodSOCer.py --clear-db
NOTE: For --define-icons and --upload-only an API Key and API Secret must be defined in BloodSOCer.py
Edit BloodSOCer.py to customize:
http://127.0.0.1:8080)BloodSOCer/
├── BloodSOCer.py # Main entry point
├── MitreHound.py # MITRE ATT&CK data fetcher
├── ARTHound.py # Atomic Red Team data fetcher
├── SigmaHound.py # Sigma rules data fetcher
├── Define-Icons.py # BloodHound icon customizer
├── UL-Cyphers.py # Upload custom Cyphers to help query ingested data
├── Cyphers/ # Saved queries (Cypher) JSONs
├── ressources/ # Images/diagrams (Arrows graph, logo)
├── README.md # This file
├── requirements.txt # Python dependencies
└── output/ # Generated *_graph.json files
This project adds the following node types
This project adds the following edges/relationships
Exploits a (Sub-)TechniqueUses a Tool or a (Sub-)TechniquePartOf a TacticSubTechniqueOf a TechniqueDetectedBy a RuleTestedBy an ARTInvestigateWith a PlaybookBloodSOCer Arrows Graph
To download the json file of this Arrows.app graph click here
Detections for FIN7 using Mimikatz

Tactics used by FIN7

Detection and Test for FIN7 activity

Playbooks to investigate FIN7 & Scattered Spider activity

Define-Icons.py will be applied to the BloodHound interfaceApache 2.0
When I first heard of OpenGraph, I immediately thought it would be a great way to ingest the Mitre ATT&CK Framework and use BloodHound to visualize it. Olaf Hartong did that a few years ago see his blog apparently inspired by SadProcessor who's now a colleague of mine. We came full circle on this.
Pull requests and issues are welcome.