Skip to content

Crank-Git/ja4monitor

Repository files navigation

ja4monitor

Real-time network monitor that uses JA4+ fingerprinting to identify applications, detect anomalies, and build a baseline of "normal" for your network. Like htop for network fingerprints.

Ships as a single binary.

Quick Start

# Live monitoring (requires root for packet capture)
sudo ja4monitor live eth0

# With BPF filter
sudo ja4monitor live eth0 --filter "port 443"

# JSON output (no TUI, pipe to jq/other tools)
sudo ja4monitor live eth0 --json

# Analyze a PCAP file (no root needed)
ja4monitor analyze capture.pcap

# JSON output from PCAP
ja4monitor analyze capture.pcap --json

# Only specific fingerprint types
ja4monitor analyze capture.pcap --types ja4,ja4t

What It Does

ja4monitor fingerprints every connection on your network using all 9 JA4+ methods:

Type What It Fingerprints
JA4 TLS client application (Chrome vs Firefox vs Cobalt Strike)
JA4S TLS server response
JA4H HTTP client from request headers
JA4T Client OS from TCP SYN (window size, MSS, options)
JA4TS Server from TCP SYN-ACK
JA4L Network latency from handshake timing
JA4X Certificate generation method
JA4SSH SSH session type (shell vs tunnel vs file transfer)
JA4D DHCP client implementation and OS

For each fingerprint, it looks up the FoxIO database to identify known applications and flags:

  • [NEW] First-seen fingerprints (never observed on this network before)
  • [ALERT] Known malicious fingerprints (Cobalt Strike, Sliver, Metasploit, etc.)
  • VPN/tunnel detection via JA4T MSS analysis

Features

  • Live TUI dashboard with real-time connection table
  • PCAP file analysis with zero dependencies (pure Go reader)
  • Learning mode (default 60 minutes): auto-approves fingerprints during learning, then flags new ones
  • Sharded processing for high-throughput networks (configurable, default 4 shards)
  • SQLite persistence for first-seen tracking across restarts
  • JSON output for piping to SIEM, jq, or other tools
  • BPF filters for targeting specific traffic

Install

From source

# With live capture support (requires libpcap-dev)
sudo apt-get install libpcap-dev  # Debian/Ubuntu
go install github.com/Crank-Git/ja4monitor/cmd/ja4monitor@latest

# PCAP-only build (no libpcap needed)
go install -tags pcaponly github.com/Crank-Git/ja4monitor/cmd/ja4monitor@latest

From releases

Download prebuilt binaries from GitHub Releases.

Flags

--filter         BPF filter (e.g., "port 443")
--json           JSON output to stdout (no TUI)
--types          Comma-separated fingerprint types (e.g., "ja4,ja4t")
--db             SQLite database path (default: ~/.ja4monitor/ja4monitor.db)
--learn-duration Learning period in minutes (default: 60, 0=disabled)
--shards         Number of processor shards (default: 4)

Architecture

Capture -> Router -> Sharded Processors -> Connection Tracker -> TUI
                          |                       |
                     ja4plus-go             SQLite Storage
                    (9 fingerprinters)    (batched writes, WAL)

Built on ja4plus-go, an independent Go implementation of all JA4+ fingerprinting methods.

License

BSD-3-Clause. JA4+ methods (except JA4) are under FoxIO License 1.1, which permits internal security monitoring use.

Packages

 
 
 

Contributors

Languages