Skip to content

About

Open-source digital forensics analysis platform for investigating Windows/Linux/MacOS endpoint artifacts, correlating evidence, and identifying suspicious activity. Built to analyze data collected by Live-Forensicator or other raw artifact collectors.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Latest commit

Β 

History

158 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ Forensicator Core πŸ›‘οΈ

Free, Self-Hosted Digital Forensics & Incident Response (DFIR) Platform

Ingest evidence from memory, disk, network, Windows artifacts, and logs. Enrich it against threat intelligence, correlate it across hosts and cases, and report on it β€” all from one self-hosted app.

Forensicator Logo

πŸ€” About

Forensicator Core is the free, self-hosted edition of Forensicator β€” a full DFIR (Digital Forensics & Incident Response) platform, not just a case tracker. It's the server-side counterpart to the Forensicator collector: the collector gathers evidence from a live host, Core is where that evidence actually gets parsed, analyzed, enriched, correlated, and reported on.

Forensicator Core:

  • Parses RAM dumps, PCAPs, raw log files, and Windows forensic artifacts (registry hives, Prefetch, $MFT, SRUM, Defender quarantine, and more) into structured, searchable findings β€” see Key Features below
  • Enriches indicators automatically against VirusTotal, AbuseIPDB, OTX, URLhaus, ThreatFox, and MalwareBazaar
  • Groups related investigations, hosts, and findings under Cases, with built-in incident-response playbooks
  • Builds a cross-investigation Host profile β€” finding counts, IOC hits, persistence events β€” every time a hostname shows up again
  • Correlates findings across uploads into a single narrative and relationship graph per case
  • Generates executive and technical reports (PDF, CSV, JSON, ZIP)
  • Includes AI-assisted finding analysis (Ollama, OpenAI, Anthropic, or any OpenAI-compatible endpoint)
  • Ships with a signed, offline-capable update mechanism β€” online, offline .fpk package, or CLI

βš™οΈ Quickstart

🐳 Docker (recommended for Windows/macOS)

The easiest way to run Core, especially on Windows: Docker Desktop (uses WSL2 under the hood on Windows β€” Docker Desktop sets that up for you) handles Postgres, Redis, and the app itself as containers, so there's nothing to install on the host beyond Docker.

git clone https://github.com/Raptormatics/Forensicator-Core forensicator-core
cd forensicator-core
cp .env.docker.example .env

Edit .env β€” at minimum, set NEXTAUTH_SECRET (generate one with openssl rand -base64 32, or any 32+ character random string if you don't have openssl handy on Windows).

docker compose up -d

Then open http://localhost:3000 and complete the setup wizard β€” that's where you create the first admin account; nothing is seeded automatically.

To stop: docker compose down (add -v to also delete all data β€” cases, investigations, everything).

⚠️ Note: the in-app "Check for Updates" (Settings β†’ Updates) doesn't apply to the Docker path β€” there's no sudo/systemd inside a container for it to use. To update, pull this repo's latest changes and run docker compose up -d --build again.

🐧 Bare metal / VM (Linux)

For a real install on a machine you're already logged into β€” a dedicated box or a VM β€” skip Docker and provision it directly. Requires a fresh Debian/Ubuntu machine.

git clone https://github.com/Raptormatics/Forensicator-Core /opt/forensicator-core
cd /opt/forensicator-core
sudo bash ./deploy/provision.sh

No reboot needed β€” provision.sh installs Node.js, PostgreSQL, Redis, tshark (for PCAP Analysis), builds the app, sets up systemd units, then generates secrets, runs migrations, and starts the services itself, right there in the same command. Visit the machine's address in a browser once it prints "Setup complete" and complete the setup wizard.

Optional environment variables for provision.sh:

Variable Default Purpose
ORG_NAME Default Organization Seeded organization name
ORG_SLUG default Seeded organization slug
PUBLIC_URL http://localhost:3000 Externally reachable URL, used as NEXTAUTH_URL
APP_PORT 3000 Port next start binds to
SERVICE_USER forensicator System account the app runs as
UPDATE_SERVER_URL https://updates.forensicator.io/core Where "Check for Updates" queries. Set to an empty string to disable online update checks entirely (e.g. air-gapped installs) β€” offline/CLI .fpk installs work regardless of this setting
ORG_NAME="Acme Corp" ORG_SLUG=acme PUBLIC_URL="https://forensicator.acme.internal" sudo ./deploy/provision.sh

To remove a bare-metal install β€” services, config, the database (backed up first), the service account:

sudo ./deploy/uninstall.sh --dry-run   # preview first
sudo ./deploy/uninstall.sh

uninstall.sh leaves PostgreSQL/Redis/Node.js themselves, any swapfile provision.sh added, and this checkout's own files alone by default β€” pass --purge-packages, --remove-swap, or --remove-app-dir respectively to also remove those. --keep-data leaves the database and its role untouched (e.g. if you plan to point a fresh install at it later); --no-backup skips the pre-removal pg_dump. See sudo ./deploy/uninstall.sh --help for the full list. Docker installs don't need this β€” docker compose down -v instead.


πŸ” Key Features

Case & Investigation Management

  • Cases β€” organize related investigations, hosts, and findings under a single Case as an incident unfolds, with a human-readable case number
  • Investigations β€” upload a collector archive and get normalized findings, a timeline, and an attack-path reconstruction
  • Built-in playbooks β€” select an incident type on a case to apply a bundled response playbook
  • Notes & bookmarks β€” per-investigation/finding/evidence notes, and personal bookmarks for anything you want to get back to quickly
  • Known-hash allowlisting β€” link an NSRL-style known-good hash set to a case to cut down on noise

Analysis Engines

Each of the following is its own upload type with independent background processing, a detail page with per-artifact-type tabs, and its own no-code detection-rule builder:

  • RAM Analysis β€” Volatility3-based memory image analysis (processes, network connections, malfind/injection detection, and more)
  • PCAP Analysis β€” network capture analysis: conversations, DNS queries, extracted IOCs
  • Log Analysis β€” upload any raw log file (including raw .evtx, UTF-16 and .gz logs), pick a built-in or custom decoder, and get normalized events, extracted IOCs, and detection-rule matches. Built-in Windows decoders cover Security, Sysmon, PowerShell, Defender, Task Scheduler, WMI-Activity, BITS-Client, RDP (RCM/LSM), Directory Service, DFS Replication and DNS Server channels, plus Tomcat Catalina logs Linux decoders cover syslog in both the traditional and the RFC 3339 timestamp format (current Ubuntu/Debian, journalctl -o short-iso), auth.log/secure (SSH, sudo, user management), auditd, and dpkg/apt history.
  • Sigma detection β€” Core's own SigmaHQ rule library (download or update the Core, Core+, Core++ or All-rules package in Settings β†’ Threat Intel Providers) runs against every Log Analysis upload: Windows event logs (Security, Sysmon, PowerShell and other channels), Linux auth/syslog/auditd, web server, firewall and Zeek logs, and cloud audit logs uploaded as JSON lines (CloudTrail, Azure, GCP, Okta, GitHub, M365, Kubernetes). Matches become findings on the upload and appear under Intelligence β†’ Sigma Detections next to the collector's Sigma hits, with a searchable rule library where rules can be turned off. Existing uploads can be re-scanned with Run Sigma rules
  • Host Artifacts (Windows) β€” upload the collector's host folder in one step (Collector folder mode routes every file by its path and verifies each one's SHA-256 against the collector's CollectionManifest), or individual artifacts: registry hives + transaction logs (SYSTEM, SOFTWARE, SECURITY, SAM, DEFAULT, Amcache, NTUSER/UsrClass, plus RegBack/Windows.old/restore-point copies), every regipy plugin result (SAM accounts and group membership, LSA secret names, cached domain logons, installed programs, IFEO, WDigest/LSA configuration, ...), Prefetch, LNK/Jump Lists/Shellbags, $MFT/$UsnJrnl (any volume)/$LogFile/SRUM, Windows Search (ESE and Windows 11 SQLite), Defender quarantine/DetectionHistory/Support logs, WER, Recycle Bin ($I and $R), Notifications, BITS (qmgr*.dat and qmgr.db, including carved deleted jobs), Windows Timeline, WMI permanent subscriptions and repository, application artifacts (remote-access tool logs, Notepad/Notepad++ unsaved text, cloud-sync and EDR logs), pagefile/swapfile/hiberfil indicator sweeps, and LOG4J/GPResult/RAM-triage extras β€” paired with the Forensicator collector's -WINARTIFACTS flag
  • Host Artifacts (Linux) β€” upload the Linux collector's -A folder the same way (hashes verified against its CollectionManifest): accounts, shadow and groups, sudoers, PAM, login records (wtmp/btmp/utmp), every user's shell and application histories, SSH authorized_keys and known_hosts, cron/at jobs, systemd units and drop-ins, shell startup files, ld.so.preload, module/udev/sysctl/APT hooks, the process table (with deleted executables recovered from /proc), sockets, packages, containers, eBPF programs and a filesystem timeline (bodyfile) β€” each parsed into searchable records, flagged, and checked by built-in Linux detection rules (UID-0 backdoors, reverse shells, download-and-execute, log clearing, PAM backdoors, processes running from deleted or temp binaries, SUID files in temp dirs, ...). The collection's logs (auth, syslog, audit, journal, dpkg/apt, web server) go to Log Analysis in the same case
  • Host Artifacts (macOS) β€” upload the macOS collector's -A folder the same way: Directory Services account records (UID-0 and hidden accounts, creation and password-change times), sudoers and the login authorization mechanisms, LaunchAgents/LaunchDaemons with what they run, login and background items (Background Task Management), the code signature of every running executable and launch item program, TCC privacy grants, downloads (quarantine events), KnowledgeC app usage, install history, XProtect behavioural detections, security settings (SIP, Gatekeeper, FileVault, firewall, remote access), FSEvents, every user's shell and Terminal session histories, SSH files, cron/at, startup files, sockets, proxy settings and a filesystem timeline with birth times β€” SQLite databases read together with their -wal files β€” checked by built-in macOS detection rules (login hooks, DYLD injection, fake password prompts, quarantine removal, unsigned persistence, non-Apple authorization plugins, sensitive TCC grants to bare binaries, ...). Its unified log exports and install log go to Log Analysis in the same case

Threat Intelligence

  • Automatic IOC enrichment against VirusTotal, AbuseIPDB, OTX AlienVault, URLhaus, ThreatFox, and MalwareBazaar β€” bring your own API keys for the ones that need them; URLhaus and MalwareBazaar also offer a free, keyless bulk-feed cache you can sync on demand
  • Host Intelligence β€” every host that's had data collected from it, rolled up across every investigation it's ever appeared in
  • Correlation β€” cross-upload correlation into a single narrative and relationship graph per case, with an optional AI-generated interpretation on top of the deterministic facts

Reporting & AI

  • Executive and technical reporting β€” PDF, CSV, JSON, ZIP
  • AI-assisted analysis β€” per-finding verdicts and case correlation narratives from a local (Ollama) or commercial LLM (OpenAI, Anthropic, or any OpenAI-compatible endpoint)

Platform

  • REST API with its own API Keys β€” build integrations without writing glue code against the UI
  • Global search and a severity-ranked dashboard across every case
  • Audit log of account and data-changing actions
  • A signed update mechanism (online, offline .fpk, or CLI) that verifies, backs up, migrates, and auto-rolls-back on a failed health check

πŸ“Έ Screenshots

Host Artifacts image
image
image
image
Artifact Explorer image
image
image
Case Management image
image
image
image
Full Functions image

πŸ”„ Updates

Three ways to update an existing install, covered in more detail in-app (Settings β†’ Updates):

  • Online β€” if UPDATE_SERVER_URL is configured (set by default on bare-metal installs), click "Check for Updates" then "Install Update".
  • Offline β€” upload a signed .fpk package directly (Settings β†’ Updates β†’ Offline Update). Works fully air-gapped.
  • CLI β€” see below.

CLI (bare-metal only)

provision.sh installs a forensicator command for admins who prefer console/SSH over the Admin UI:

forensicator update <package.fpk>                    # install a signed update package
forensicator update <package.fpk> --allow-downgrade   # install even if it's an older version
forensicator update --list-backups                    # list available rollback points
forensicator update --rollback <backup-id>             # undo a previous update

Every update is preceded by a database backup; a failed post-update health check triggers an automatic rollback on its own, before you'd even need --rollback yourself.


🩺 Troubleshooting (bare-metal)

Check Command
Is the app running? systemctl status forensicator
Is the background worker running? systemctl status forensicator-workers
App logs journalctl -u forensicator -f
Worker logs (reports, enrichment) journalctl -u forensicator-workers -f
First-boot setup logs (secrets/DB/migrations) journalctl -u forensicator-firstboot
Is the app healthy? curl http://localhost:3000/api/health β€” {"status":"ok"} means the app can reach Postgres
Restart after a config change sudo systemctl restart forensicator
Check Live Update Log sudo tail -150 ./backups/update.log

Common first issues:

  • Setup wizard never appears / blank page on first visit β€” check journalctl -u forensicator-firstboot for a failed migration or secret-generation step; forensicator.service depends on it and won't start cleanly until it succeeds.
  • "Check for Updates" does nothing β€” confirm UPDATE_SERVER_URL is set in /etc/forensicator/forensicator.env and the box has outbound HTTPS; otherwise use an offline .fpk package instead.
  • Running in Docker and systemctl/journalctl aren't available β€” that's expected; use docker compose logs -f instead, and see the Docker-specific note under Quickstart above for why the in-app updater doesn't apply there.

πŸ§‘β€πŸ’» Development - Manual Options

npm install
cp .env.example .env   # fill in DATABASE_URL at minimum β€” needs a real local Postgres
npm run prisma:generate
npm run prisma:migrate
npm run dev
Script What it does
npm run dev Next.js dev server with hot reload
npm run build Production build
npm run start Production build + start (what forensicator.service effectively runs)
npm run workers Runs the background job worker (reports, AI analysis) standalone
npm run prisma:generate Regenerate the Prisma client after a schema change
npm run prisma:migrate Create and apply a new migration (dev only)
npm run prisma:deploy Apply existing migrations (production)
npm run seed-admin Seed a first admin user directly, bypassing the /setup wizard β€” local dev only
npm run lint Lint the codebase

Stack: Next.js 15 (App Router), PostgreSQL via Prisma, Redis + BullMQ for background jobs.


🀝 Contributing

Contributions are welcome β€” see CONTRIBUTING.md for repo layout and testing/PR guidelines. The short version:

  • Open an issue to discuss major changes
  • Submit pull requests with clear descriptions
  • Focus on accuracy, clarity, and usability

Participation is governed by our Code of Conduct. Found a security vulnerability? Please report it privately β€” see SECURITY.md rather than opening a public issue.


πŸ“„ License

Forensicator Core is source-available software licensed under the Business Source License 1.1 (BUSL-1.1).

Copyright Β© 2026 Raptormatics LLC.

In plain terms:

  • You can read, use, self-host, and modify Forensicator Core free of charge β€” including for your own organization's internal digital forensics and incident response work, even commercially.
  • You can't take Forensicator Core (or a modified version of it) and offer it to third parties as a hosted, managed, white-labeled, or otherwise commercially-provided forensics/incident-response product or service without a separate commercial agreement with Raptormatics LLC.
  • Every version automatically converts to the permissive Apache License 2.0 on its stated Change Date (currently January 1, 2030) β€” so this isn't a permanent restriction, just a time-boxed one.

BUSL-1.1 is not an OSI-approved "open source" license (the use restriction above is exactly why), but the source is fully available here, and older versions become genuinely open source automatically over time. See the LICENSE file for the full, authoritative text β€” the summary above is for convenience only and isn't a substitute for reading it, or for your own legal advice if you're unsure whether your intended use is covered.

Third-Party Components

Forensicator Core may include or interact with third-party tools, libraries, or components that are distributed under their own licenses. Those licenses remain applicable to their respective components.


β˜• Documentation

docs.forensicator.io

About

Open-source digital forensics analysis platform for investigating Windows/Linux/MacOS endpoint artifacts, correlating evidence, and identifying suspicious activity. Built to analyze data collected by Live-Forensicator or other raw artifact collectors.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages