Dendrite
See every connection. Know every client.
Dendrite is the sensor layer at the heart of every Gen0Sec deployment. It captures every connection on the wire and identifies what's on it — what client made it, what tool sent it, what protocol it used. The fingerprints it produces feed everything else: rules, ML, alerts.
What Dendrite is for
- Identify clients without IPs. JA4+ fingerprints describe the client, not the address. The same tool from a hundred rotating IPs has the same fingerprint.
- The full JA4+ suite. Ten fingerprint types across TCP, TLS, HTTP, SSH, DHCP and X.509 — both halves of each conversation, not just the client side.
- Read TLS plaintext without terminating TLS. Dendrite hooks the library, not the connection, so it sees decrypted bytes with no proxy, no re-encryption and no private keys.
- Linux and Windows. One API across both. The capture backends differ, because the kernels do.
Capture only, by design
Dendrite has no enforcement code, no firewall and no proxy. It observes and parses; consumers like Amygdala and Hillock decide what to do with the events.
That boundary is deliberate and enforced in the code — fingerprint blocking was deliberately removed from Dendrite and lives downstream. A bug in a sensor should cost you visibility, never availability.
The fingerprints
| Type | Covers | Example |
|---|---|---|
JA4 | TLS Client Hello | t13d1516h2_8daaf6152771_e5627efa2ab1 |
JA4S | TLS Server Hello | t1302h2_1301_a56c5b993250 |
JA4T | TCP SYN — the client's stack | 65535_2-4-8-1-3_1460_7 |
JA4TS | TCP SYN-ACK — the server's stack | 65535_2-4-8_1460_0 |
JA4H | HTTP request headers | ge11cr15enus_a1b2c3d4e5f6_… |
JA4L | Latency and distance | 12500_64_407 |
JA4SSH | SSH session behaviour | c14s14_c14s14_c14s14 |
JA4X | X.509 certificate | aae71e8db6d7_b186095e22b6_… |
JA4D | DHCP (IPv4) | disco_8_a1b2c3d4e5f6_000000000000 |
JA4D6 | DHCPv6 | solicit_6_a1b2c3d4e5f6_… |
Every type parses back from its string form and supports wildcard patterns, so a rule can match a family of clients rather than one exact build.
How it captures
Capture backends are selected at build time, so an agent carries only what it uses.
| Platform | Backend | What it gets you |
|---|---|---|
| Linux | AF_PACKET | Works on any kernel, no extra modules. The default |
| Linux | PF_RING | Zero-copy, for high-rate links. Needs pf_ring.ko |
| Linux | TC eBPF | JA4TS, JA4L, JA4S and JA4SSH computed in-kernel |
| Linux | uprobe | TLS plaintext from the process, before it hits the wire |
| Linux | TC egress | Mirrors outbound payloads to Thalamus for inspection |
| Windows | NDIS | Packet capture through the Windows Packet Filter driver |
| Windows | AF_XDP | High-rate capture path |
| Windows | userspace | JA4L handshake tracking, the equivalent of the Linux TC program |
Reading TLS without breaking it
Most tooling sees TLS as opaque, or terminates it and takes on the keys. Dendrite does neither: it attaches to the TLS library inside the process and reads the plaintext the application already has.
| Runtime | How |
|---|---|
| OpenSSL, BoringSSL, LibreSSL | uprobe on SSL_read / SSL_write |
| GnuTLS | uprobe on gnutls_record_recv / gnutls_record_send |
| NSS | uprobe on PR_Read / PR_Write |
Go crypto/tls | uprobe resolved through .gopclntab |
| Java JSSE | JVMTI agent |
.NET SslStream | Covered by the OpenSSL hooks on Linux |
This needs a dynamically linked TLS library. A binary that statically links its TLS stack exposes no symbol to attach to, and Dendrite falls back to wire-level fingerprints for it.
How it fits
Dendrite is the sensor. Everything else in the platform — Cortex's predictions, Amygdala's rules, Cerebellum's correlations — operates on the fingerprints Dendrite produces.
Use cases
- Identify a credential-stuffing tool across rotating IPs by its TLS fingerprint.
- Detect a new bot family by spotting fingerprints with no historic baseline.
- Audit your own client fleet — Dendrite shows you which TLS libraries your services actually negotiate with, and
JA4TStells you what your servers look like from outside. - Inspect application-layer traffic that never appears in cleartext on the wire, without standing up a proxy.
See also
- Synapse documentation — the agent that ships Dendrite
- Cortex — classifies the fingerprints Dendrite emits
- Amygdala — acts on the fingerprints downstream
- Thalamus — inspects the payloads Dendrite mirrors