Build connection graph
arkime_connectionsBuild a source/destination connection graph to trace lateral movement and map hosts communicating with a suspect IP, returning nodes and links from Arkime session data.
Instructions
Build a source/destination connection graph of who talked to whom.
Returns nodes and links between two fields — useful for tracing lateral
movement or mapping which hosts a suspect IP communicated with. NOTE the
src/dst fields take Arkime *db* names (srcIp, dstIp, dstPort, node) or
the dotted storage paths (source.ip, destination.port), which resolve to
the same graph; the one vocabulary this route rejects is the expression
names arkime_sessions uses in `expression` (ip.src, port.dst). For
distinct field-tuple pairs as text rather than a graph use
arkime_multiunique; for a nested top-N hierarchy use
arkime_spigraphhierarchy. Returns the raw Arkime connections response
(nodes and links).
The graph is built from a bounded slice of the matching sessions rather
than from all of them, and that bound is not a parameter here: measured
on Malcolm v26.07.1, a 24-hour window whose expression matched 6,005,737
sessions produced 10 nodes and 8 links, while the same window held 112
distinct source addresses. Nothing in the response marks the shortfall,
so narrow with expression and a tight window before reading a sparse
graph as "these are the only hosts talking".
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| time_to | No | End time as EPOCH SECONDS (NOT a dateparser string). Empty = now. | |
| dst_field | No | Arkime db field for destination nodes (default dstIp; dstPort graphs by port instead of by host — measured on Malcolm v26.07.1, srcIp/dstPort returned 15 nodes and 11 links against srcIp/dstIp's 10 and 8). Same vocabulary as src_field: db column or dotted storage path, never the exp column. | dstIp |
| src_field | No | Arkime db field for source nodes (default srcIp). Common choices: srcIp, dstIp, dstPort, node — arkime_field_search's db column. The dotted storage path works here too and gives the identical graph: measured on Malcolm v26.07.1 over one 24-hour window, srcIp/dstIp and source.ip/destination.ip both returned 10 nodes and 8 links. What this route will NOT take is the exp column: srcField=ip.src returned HTTP 403 and dstField=port.dst HTTP 500 "TypeError: Cannot read properties of undefined", so the sixteen expression names whose db spelling differs are refused here before the request is sent. | srcIp |
| time_from | No | Start time as EPOCH SECONDS (NOT a dateparser string). Empty = Arkime's recent-only default. | |
| expression | No | Optional Arkime expression syntax to scope the graph. Empty = all sessions. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |