Skip to content

Conversation

@RavenTait
Copy link
Contributor

Details

Detection content around default user agents used by various programs and malware.

4 new detections:
HTTP C2 Framework User Agent
HTTP Malware User Agent
HTTP PUA User Agent
HTTP RMM User Agent

4 new lookups:
Malware User Agents
PUA User Agents
RMM User Agents
Suspicious C2 User Agents

attempting to interact with hosts on the network using known default configurations of command
and control tools.
data_source:
- Splunk Stream HTTP
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we remove Splunk Stream HTTP from here as we have not tested these detections against that dataset.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would also recommend that we create a new story file for these detections.

rba:
message: A known C2 Framework user agent $http_user_agent$ was performing a request from $src$ to $dest$.
risk_objects:
- field: dest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think in this case, the src machine is likely the Victim machine connecting to dest, hence the risk_object would only be src and we can remove dest from risk_object and consider adding dest to threat_object of type ip_address

and src risk_object would also be an ip address in Web logs

- Splunk Stream HTTP
- Suricata
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime
from datamodel=Web by Web.http_user_agent Web.http_method, Web.url, Web.url_length Web.src, Web.dest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to optimize a bit the search can you add a http_user_agent != null or "" so at least we do not get weak logs into the mix so that later we drop them.

And do that for the rest of analytics as well.

earliest_offset: $info_min_time$
latest_offset: $info_max_time$
rba:
message: A known malware user agent $http_user_agent$ was performing a request to $src$.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be RMM related I guess a copy paste typo

@@ -1,6 +1,6 @@
name: HTTP Suspicious Tool User Agent
name: HTTP Scripting Tool User Agent
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renames SUCK in Splunk hence the better approach here (unfortunately) is to deprecate the detection and create a new one with this new name.

I am inclined to think just because this was a relatively new analytic we can get away with just renaming, but would defer to @patel-bhavin on this.

match_type:
- WILDCARD(malware_user_agents)
min_matches: 1
case_sensitive_match: false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think matches have to be case sensitive because we are tagging malware so it has to almost always right.

match_type:
- WILDCARD(c2_user_agent)
min_matches: 1
case_sensitive_match: false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar here because we are tagging C2 default we have to always be right. I suggest using exact match

@nasbench nasbench added this to the v5.20.0 milestone Dec 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants