- One container with the database, file store and web client inside.
- About twenty analysts on one case at once, each seeing the others’ changes as they happen.
- Runs on a laptop or a Raspberry Pi 4/5. Images for amd64 and arm64.
Cyber hunt // DCO attack reconstruction // Terrain mapping
Midden is a shared case for hunt teams. Record each step of an intrusion with the evidence attached, map the terrain from nmap scans, and hand the whole thing to the next shift as a live case.
$ docker run -d --name midden \
-p 8080:8080 \
-v "$PWD/midden-data:/data" \
-e MIDDEN_SECRET="$(openssl rand -base64 32)" \
-e MIDDEN_ADMIN_USER=admin \
-e MIDDEN_ADMIN_PASSWORD='choose something long' \
ghcr.io/jacstrong/midden:latest
Then open localhost:8080 and sign in as admin. Deployment guide →
The same interface in both. Case files move freely between them.
One lane per host, ordered by when the adversary first reached it, with a branch wherever activity pivoted. Read every event in UTC, your local time, or the source system’s own timezone.
Indicators are deduplicated across the case with every sighting kept. Techniques roll up into the Enterprise matrix.
Upload -oX or -oN output for a searchable inventory and a network map: a hub per subnet, case hosts overlaid by status. Promote a scanned host in one click.
Composes nmap commands for the two-phase workflow: find live hosts, then service-scan exactly those. Every command it can produce is checked against real nmap in CI.
Screenshots, log excerpts and small captures attach to events and hosts. Content-addressed, and only recognised image formats ever render inline.
HTML, Markdown, a timeline CSV and an indicator list, assembled from the case.
Every change is an operation with an actor and a time. See before and after, and revert anything.