mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
71 lines
3.2 KiB
YAML
71 lines
3.2 KiB
YAML
name: HTTP Malware User Agent
|
|
id: 8c4866e4-f488-4253-8537-7dc4f954c292
|
|
version: 5
|
|
creation_date: '2026-01-06'
|
|
modification_date: '2026-05-13'
|
|
author: Raven Tait, Splunk
|
|
status: production
|
|
type: TTP
|
|
description: This Splunk query analyzes web logs to identify and categorize user agents, detecting various types of malware. This activity can signify possible compromised hosts on the network.
|
|
data_source:
|
|
- Suricata
|
|
search: |-
|
|
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Web
|
|
WHERE Web.http_user_agent != null
|
|
BY Web.http_user_agent Web.http_method, Web.url,
|
|
Web.url_length Web.src, Web.dest
|
|
| `drop_dm_object_name("Web")`
|
|
| lookup malware_user_agents malware_user_agent AS http_user_agent OUTPUT malware
|
|
| where isnotnull(malware)
|
|
| stats count min(firstTime) as first_seen max(lastTime) as last_seen
|
|
BY malware url http_user_agent
|
|
src dest
|
|
| `security_content_ctime(first_seen)`
|
|
| `security_content_ctime(last_seen)`
|
|
| `http_malware_user_agent_filter`
|
|
how_to_implement: To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. For additional filtering, allow list private IP space or restrict by known good.
|
|
known_false_positives: Filtering may be required in some instances depending on legacy system usage, filter as needed.
|
|
references:
|
|
- https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_http_user_agents_list.csv
|
|
drilldown_searches:
|
|
- name: View the detection results for - "$src$"
|
|
search: '%original_detection_search% | search src = "$src$"'
|
|
earliest_offset: $info_min_time$
|
|
latest_offset: $info_max_time$
|
|
- name: View risk events for the last 7 days for - "$src$"
|
|
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$src$") | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
|
|
earliest_offset: 7d
|
|
latest_offset: "0"
|
|
finding:
|
|
title: A known malware user agent $http_user_agent$ was performing a request from $src$.
|
|
entity:
|
|
field: src
|
|
type: system
|
|
score: 50
|
|
threat_objects:
|
|
- field: http_user_agent
|
|
type: http_user_agent
|
|
analytic_story:
|
|
- Lokibot
|
|
- Lumma Stealer
|
|
- Meduza Stealer
|
|
- Crypto Stealer
|
|
- RedLine Stealer
|
|
- Suspicious User Agents
|
|
asset_type: Network
|
|
mitre_attack_id:
|
|
- T1071.001
|
|
product:
|
|
- Splunk Enterprise
|
|
- Splunk Enterprise Security
|
|
- Splunk Cloud
|
|
category: network
|
|
security_domain: network
|
|
tests:
|
|
- name: True Positive Test
|
|
attack_data:
|
|
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1071.001/http_user_agents/suricata_malware.log
|
|
sourcetype: suricata
|
|
source: not_applicable
|
|
test_type: unit
|