By Elliott Hinson, Integrations Engineer, Endace
Working at the Agentic Security Operations Center (SOC) for Splunk .conf26 was a very exciting experience. The strangest part was that I did not spend most of my time doing any of the Tier 1 style SOC analyst work. Sure, there were tickets to close, a few devices trying to phone home to any TOR exit node they could reach, some interesting alerts related to gaming software installed on corporate devices that should not have anything like that, and many other discoveries that my colleagues and I had to take care of.
But the most interesting part to me was the time made available, now that the bulk of the drudge work was offloaded to AI agents. By the time you managed to look at an incident ticket the agent had already done a bunch of data collection that you would have had to do manually, so all we really had to do was assess the evidence provided, make a judgement call on how to proceed, and get back to doing anything more interesting than basic or repetitive triage.
Why be a Tier 1 analyst when you can be a Tier 3 threat hunter?
So, we had all this free time now, how did we spend it? The Event Agentic SOC has three objectives: Protect, Educate, and Innovate. The Educate part was being taken care of by the 30-plus SOC tours that were going on, and now that the agents were making the Protect part of the job less time-consuming, there was plenty of time for us to focus on Innovate during the conference.

One innovation I had the most fun working on was the newly added JA3/4+ style traffic fingerprinting. For readers not familiar with the SOC architecture, I will skip most of it and focus on the parts that matter for JA3/4+ style scanning. The SOC at Splunk .conf26 had three main components that enabled our network fingerprinting innovation work. First, was the incoming SPAN port that mirrored all of the conference traffic, from every subnet and access point, into a single fiber that came into the SOC. This was a twin set of 10Gbit links that pumped terabytes of data into the second of the three core components of the SOC: two EndaceProbe packet capture appliances. These EndaceProbes recorded every single packet that traversed the network from the moment the SPAN was turned on until we shut them down when the conference ended.
The EndaceProbes not only provide massive high-speed storage capacity, and multiple packet capture interfaces, they also support integration with a whole suite of 3rd-party monitoring solutions, and enough onboard compute power and Application Dock™ hosting capacity (think virtual machines) to host a wide range of network monitoring security software, from Snort, to Zeek, to Suricata, and more.
At Splunk .conf26 we thought “why choose between Zeek and Suricata when we can run both”? With both tools generating massive volumes of log data, it all has to go somewhere. Where should it go? If only there was a vendor with robust enough log ingestion systems to keep up with the network speeds our EndaceProbes can operate at? If only there was a vendor with a trusted, reliable search and query system that could sift through massive volumes of logging data to provide a budding threat hunter with all of the intel they needed to really see the big picture?
Oh wait… this is Splunk .conf and Splunk Enterprise Security is the platform!
Splunk + Endace: pairing the wine with the cheese
Splunk and Endace are uniquely synergistic. Splunk searches and bubbles up logs and alerts, and with the Endace Pivot2Vision integration, you can go from the searchability of Splunk logs to the authority and clarity of Endace packets with a single click. While we were tuning the SOC during setup, we took the approach of “turn every single bit of logging and scanning on that we can and separate the signal from the noise later”. After all, Endace was reading every packet, and it could turn that into logs, detections, etc. And Splunk is well known for being able to drink from the firehose. Plus, how often do you get a Splunk Cloud instance with essentially a blank check on how much data you can push into it? So, we opened up the fire hose and let Splunk drink up, and oh boy did it. Splunk has a very rich search and dashboarding interface and a powerful query language that can tear through log data at ridiculous speeds. However, dumping every single bit of data you can get out of your firewall or IDS system into Splunk is both computationally and financially wasteful. That is why it is so important to tune your logs so that you are ingesting useful stuff and skipping the noise.
With the Endace hardware the economics are reversed. You buy an EndaceProbe, put it in your network, and let it fill up with as much packet data as it can hold. It becomes an exercise of “I paid for the whole hard drive, I’m going to use the whole hard drive”. And while EndaceProbes can hold massive pools of packet data and can filter down that data to what you are looking for with the EndaceVision web interface, it can’t hold a candle to the immense power of the Splunk query language. Need to find all the traffic coming from a single IP? EndaceVision. Need to see a specific IP conversation between two hosts? EndaceVision again. Need to look at the exact contents of a specific TCP session that happened 3 days ago? Those EndaceProbes won’t even break a sweat. Need to do a complex query involving multiple lookups, regex across several plain text fields, generating custom columns that are calculated by generating a risk score based on an amalgamation of other plain text fields? That is squarely a Splunk job.
But what if you are looking for something that wouldn’t generate an alert? Not something dangerous, just something odd. Well, that line of questioning leads right into the new traffic fingerprinting work we implemented during this conference.
JA3? JA4? NPF? Whose fingerprints are these?
We just established that it doesn’t make sense to load raw packet data into Splunk. EndaceProbes provide amazingly quick search and data mining of packet data across terabytes of packet data – for both human and AI agents. What they don’t provide is the broader capability that Splunk offers to query across multiple telemetry sources and run complex queries. But, when we pair them, we get an amazing combination that lets us see the 30,000 foot view, and quickly correlate data, as well as being able to dive right down to definitive packet level evidence to understand individual sessions and packet sequences.
An example of the power of combining the full packet recording capability of EndaceProbes with the powerful search, querying and data correlation capability of Splunk, is using EndaceProbes to generate fingerprints from encrypted traffic sessions. You can then configure your Splunk instance to ingest these fingerprint logs so that you can do connection level analysis without having to have all the connection data itself loaded into Splunk.
|
Framework |
Best At |
|
JA3 |
Fingerprinting TLS clients using a simple, widely adopted hash. |
|
JA4 |
Correlating client behavior across multiple protocols and network layers. |
|
Mercury NPF |
Identifying devices and applications from encrypted traffic using rich protocol metadata. |
We ended up going with the JA4+ series of fingerprints because it offered more detection versatility than the older JA3 series of fingerprints. We didn’t employ Cisco’s Mercury NPF to analyze encrypted traffic because there was already an existing Cisco encrypted traffic analysis engine running in the SOC as part of Cisco Secure Firewall Firepower Threat Defense Encrypted Visibility Engine. So, it did not make sense to duplicate this. However, we could have used Mercury NPF via a Zeek plugin if that had not been already available to us.
What is JA4+ fingerprinting?
The list below shows various JA4 style fingerprinting styles. The key takeaway is that different types of fingerprints reveal different types of information about the data traversing the network.
Fingerprinting data can be generated continuously, as traffic is recorded on EndaceProbes, and sent to Splunk where it provides very useful insight into encrypted traffic sessions. Generating this data continuously – rather than relying on a trigger to detect suspected malicious activity and then send a log to Splunk – means you (and your agentic tools) always have the fingerprint data at hand when it’s needed, even when there was no triggered detection. As we’ll see below, this can enable you to do detections and investigations that you might not have initially envisaged would be useful.
|
Fingerprint |
Protocol / Layer |
Purpose |
|
JA4 |
TLS Client |
Identifies client applications and TLS libraries based on |
|
JA |
TLS Server |
Fingerprints TLS server responses and server-side TLS implementations. |
|
JA4H |
HTTP |
Identifies browsers, applications, and tools based on HTTP request behavior and headers. |
|
JA4L |
Network Latency |
Estimates network distance and latency characteristics between hosts. |
|
JA4LS |
Network Latency Server |
Server-side counterpart to JA4L for latency and path analysis. |
|
JA |
X.509 Certificates |
Fingerprints certificate generation patterns to identify common tooling, infrastructure, or certificate issuance behaviors. |
|
JA4SSH |
SSH |
Identifies SSH clients, servers, and automation frameworks from SSH negotiation behavior. |
|
JA4 |
TCP |
Fingerprints TCP/IP stack behavior for operating system and networking stack identification. |
|
JA4TS |
TCP Server |
Server-side TCP stack fingerprinting. |
|
JA4TScan |
TCP Scanning |
Provides TCP fingerprints useful for identifying and classifying scanned hosts and services. |
|
JA4 |
DHCP |
Identifies devices and operating systems from DHCP request characteristics. |
|
JA4D6 |
DHCPv6 |
IPv6 version of DHCP fingerprinting for device identification. |
Now that is a long table! We are going to specifically focus on the JA4SSH fingerprints for brevity, but you can imagine all the fun ways in which you could combine and cross reference these fingerprints to find interesting outliers or even build detections.
A JA4SSH fingerprint looks like this: `c64s64_c31s149_c64s0` which may look like just a string of letters and numbers, but there is actually a lot of information here. Each of the segments delineated by the underscore describes a different SSH behavior that was detected on the wire. `c64s64` is a description of the client and server payload sizes, `c31s149` is the description of the Packet counts and `c64s0` is a description of the ACK behavior. If we decode these a little further into a nice table, we can start to see a clearer pattern.
|
Metric |
Value |
|
Client payload |
|
|
Server payload |
|
|
Client packets |
|
|
Server packets |
|
|
Client ACKs |
|
|
Server ACKs |
|
You can deduce from the balanced size of payloads and the relatively balanced and low size of packets that this is an interactive session. If we saw a lot of unbalanced payload sizes or packet counts, we might suspect that this was a bulk download of some kind, perhaps using something like SCP.
Now suppose we wanted to detect bulk downloads or uploads, and possibly even filter for a specific IP address that might be important on the network? For example, probably no one should be SSHing into the firewall and uploading or downloading large quantities of data. The best part about having fingerprint data available is that with a very small amount of context describing the syntax for these network fingerprinting technologies, the Agentic SOC can pick up on this and use it to find outliers that it would not have thought to look for before.
For example, below is an image of an agent generated Splunk query, searching for any large bulk downloads or uploads:

With a short description of how the fingerprints we had in place could be broken up, the agent could ascertain several instances of large SSH traffic sessions and categorize them by what is probably happening inside that SSH tunnel – using heuristics that would normally not have been available without the fingerprinting data.
It’s always good to double-check your AI’s work! Using the EndaceVision web GUI, we can easily go back and review the SSH traffic from that period… I wonder when this bulk download happened?

What started as a strange-looking JA4SSH fingerprint turned into a hypothesis. The fingerprint suggested behavior more consistent with a bulk transfer than an interactive shell. A quick Splunk search surfaced the candidate traffic. A single Pivot-to-Vision click later, and we were looking at the packet capture that explained exactly what happened. For the curious, the first two spikes in the graph above were a vulnerability demo put on at Splunk .conf26 for training, and the second two large spikes were a user uploading a large amount of encrypted data to a cloud VPS.
This sequence of events is what I found most interesting about working in the Agentic SOC. None of this investigation started with an alert. Nobody woke up that morning wondering what the JA4SSH fingerprints of the conference network looked like. There wasn’t a ticket demanding that the work be completed by the end of the shift. This was curiosity-driven threat hunting enabled by the fact that the repetitive work had already been handled for us.
The agents were closing the loop on the obvious incidents. They were gathering enrichment data. They were collecting context. They were doing the sort of repetitive investigative tasks that traditionally consume the bulk of a Tier 1 analyst’s day. And because of that, analysts were free to spend time asking questions that normally fall into the category of “that would be nice to investigate if I ever had a spare afternoon.”
It turns out, when you free up analysts’ time and give them a chance to dig deeper, spare afternoons can turn into innovations that provide interesting (and useful) results.
Acknowledgements
Our thanks go to the Splunk .conf26 SOC team, led by Jessica Oppenheimer, for the opportunity to integrate EndaceProbes with the Splunk .conf26 Agentic SOC architecture.
The SOC team is a collection of Cisco, Splunk and Endace experts across many domains who were a pleasure to work and innovate with, and we came away with a great appreciation for the power of the Cisco and Splunk tools.
The teams were able to prove out integration innovations and test them in earnest in a real-world environment in preparation for making them generally available to the market.
More from Endace, Splunk and Cisco in the SOC series
Read all about the Agentic Security Operations Center at Splunk .conf26, including an overview from Jessica Oppenheimer, and posts and use cases from Splunk and Cisco SOC team members:
Read about the Endace team’s experience working in the SOC at Splunk .conf26:
- Michael Morris (Endace): Why Full Packet Capture Becomes Mission-Critical in the Agentic SOC
- Andreas Löf: (Endace): Richer Data for the Agentic SOC
- Elliott Hinson (Endace): Letting the Agentic SOC Handle the Drudgery So the Humans Can Dig Deeper
- Richard Marsh (Splunk), Anantha Srinivasan (Endace) and Arunachalam Ganesan (Endace): From Novice to Senior: How an MCP-Enabled Capture Appliance Changes Threat Hunting
- Adam Kilgore (Cisco), Anantha Srinivasan (Endace) and Arunachalam Ganesan (Endace): The Zero-Day Blind Spot: Why Your Agentic SOC needs Retrospective Packet Replay
For more Endace blogs in our SOC series, see here:
https://blog.endace.com/tag/soc/
Cisco Event SOC Website
Visit Cisco’s Event SOC website for full details of the SOC-in-a-Box setup, and download the detailed architecture blueprint and report by Jessica Oppenheimer:
https://www.cisco.com/site/us/en/products/security/event-soc-report.html























