Skip to content

Commit 5462f1c

Browse files
authored
Merge branch 'develop' into nterl0k-t1114.003-o365-transport-rule-change
2 parents dfc98cf + 93f33cc commit 5462f1c

10 files changed

+160
-19
lines changed

contentctl.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ apps:
7171
- uid: 833
7272
title: Splunk Add-on for Unix and Linux
7373
appid: Splunk_TA_nix
74-
version: 9.2.0
74+
version: 10.0.0
7575
description: description of app
76-
hardcoded_path: https://attack-range-appbinaries.s3.us-west-2.amazonaws.com/splunk-add-on-for-unix-and-linux_920.tgz
76+
hardcoded_path: https://attack-range-appbinaries.s3.us-west-2.amazonaws.com/splunk-add-on-for-unix-and-linux_1000.tgz
7777
- uid: 5579
7878
title: Splunk Add-on for CrowdStrike FDR
7979
appid: Splunk_TA_CrowdStrike_FDR

data_sources/linux_auditd_add_user.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ configuration: https://github.com/Neo23x0/auditd/blob/master/audit.rules
1010
supported_TA:
1111
- name: Splunk Add-on for Unix and Linux
1212
url: https://splunkbase.splunk.com/app/833
13-
version: 9.2.0
13+
version: 10.0.0
1414
fields:
1515
- msg
1616
- type
@@ -30,4 +30,6 @@ fields:
3030
- UID
3131
- AUID
3232
- ID
33-
example_log: 'type=ADD_USER msg=audit(1722950859.266:6994): pid=1788 uid=0 auid=1000 ses=1 subj=unconfined msg=''op=adding user id=1002 exe="/usr/sbin/useradd" hostname=ar-linux1 addr=? terminal=pts/1 res=success''UID="root" AUID="ubuntu" ID="unknown(1002)"'
33+
example_log: 'type=ADD_USER msg=audit(1722950859.266:6994): pid=1788 uid=0 auid=1000
34+
ses=1 subj=unconfined msg=''op=adding user id=1002 exe="/usr/sbin/useradd" hostname=ar-linux1
35+
addr=? terminal=pts/1 res=success''UID="root" AUID="ubuntu" ID="unknown(1002)"'

data_sources/linux_auditd_execve.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ configuration: https://github.com/Neo23x0/auditd/blob/master/audit.rules
1010
supported_TA:
1111
- name: Splunk Add-on for Unix and Linux
1212
url: https://splunkbase.splunk.com/app/833
13-
version: 9.2.0
13+
version: 10.0.0
1414
fields:
1515
- msg
1616
- type
1717
- msg
1818
- argc
19-
example_log: 'type=EXECVE msg=audit(1723044684.257:15795): argc=3 a0="sudo" a1="LD_PRELOAD=./myfopen.so" a2="./prog"'
19+
example_log: 'type=EXECVE msg=audit(1723044684.257:15795): argc=3 a0="sudo" a1="LD_PRELOAD=./myfopen.so"
20+
a2="./prog"'

data_sources/linux_auditd_path.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ configuration: https://github.com/Neo23x0/auditd/blob/master/audit.rules
1010
supported_TA:
1111
- name: Splunk Add-on for Unix and Linux
1212
url: https://splunkbase.splunk.com/app/833
13-
version: 9.2.0
13+
version: 10.0.0
1414
fields:
1515
- msg
1616
- type
@@ -30,4 +30,6 @@ fields:
3030
- cap_frootid
3131
- OUID
3232
- OGID
33-
example_log: 'type=PATH msg=audit(1723043687.149:14898): item=1 name="/etc/ssh/ssh_config~" inode=1292 dev=103:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=DELETE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 OUID="root" OGID="root"'
33+
example_log: 'type=PATH msg=audit(1723043687.149:14898): item=1 name="/etc/ssh/ssh_config~"
34+
inode=1292 dev=103:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=DELETE cap_fp=0
35+
cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 OUID="root" OGID="root"'

data_sources/linux_auditd_proctitle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ configuration: https://github.com/Neo23x0/auditd/blob/master/audit.rules
1010
supported_TA:
1111
- name: Splunk Add-on for Unix and Linux
1212
url: https://splunkbase.splunk.com/app/833
13-
version: 9.2.0
13+
version: 10.0.0
1414
fields:
1515
- proctitle
1616
- msg

data_sources/linux_auditd_service_stop.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ configuration: https://github.com/Neo23x0/auditd/blob/master/audit.rules
1010
supported_TA:
1111
- name: Splunk Add-on for Unix and Linux
1212
url: https://splunkbase.splunk.com/app/833
13-
version: 9.2.0
13+
version: 10.0.0
1414
fields:
1515
- msg
1616
- type
@@ -28,4 +28,6 @@ fields:
2828
- res
2929
- UID
3030
- AUID
31-
example_log: 'type=SERVICE_STOP msg=audit(1722957155.494:4802): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=unconfined msg=''unit=atd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success''UID="root" AUID="unset"'
31+
example_log: 'type=SERVICE_STOP msg=audit(1722957155.494:4802): pid=1 uid=0 auid=4294967295
32+
ses=4294967295 subj=unconfined msg=''unit=atd comm="systemd" exe="/usr/lib/systemd/systemd"
33+
hostname=? addr=? terminal=? res=success''UID="root" AUID="unset"'

data_sources/linux_auditd_syscall.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ configuration: https://github.com/Neo23x0/auditd/blob/master/audit.rules
1010
supported_TA:
1111
- name: Splunk Add-on for Unix and Linux
1212
url: https://splunkbase.splunk.com/app/833
13-
version: 9.2.0
13+
version: 10.0.0
1414
fields:
1515
- msg
1616
- type
@@ -20,7 +20,7 @@ fields:
2020
- success
2121
- exit
2222
- a1
23-
- a2
23+
- a2
2424
- a3
2525
- items
2626
- ppid
@@ -51,4 +51,9 @@ fields:
5151
- EGID
5252
- SGID
5353
- FSGID
54-
example_log: 'type=SYSCALL msg=audit(1723035666.627:3663): arch=c000003e syscall=59 success=yes exit=0 a0=556a6d697a58 a1=556a6d68ad00 a2=556a6d69c980 a3=0 items=2 ppid=1300 pid=1301 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=1 comm="lsmod" exe="/usr/bin/kmod" subj=unconfined key="rootcmd" ARCH=x86_64 SYSCALL=execve AUID="ubuntu" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"'
54+
example_log: 'type=SYSCALL msg=audit(1723035666.627:3663): arch=c000003e syscall=59
55+
success=yes exit=0 a0=556a6d697a58 a1=556a6d68ad00 a2=556a6d69c980 a3=0 items=2
56+
ppid=1300 pid=1301 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0
57+
tty=pts1 ses=1 comm="lsmod" exe="/usr/bin/kmod" subj=unconfined key="rootcmd" ARCH=x86_64
58+
SYSCALL=execve AUID="ubuntu" UID="root" GID="root" EUID="root" SUID="root" FSUID="root"
59+
EGID="root" SGID="root" FSGID="root"'
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: O365 Multiple OS Vendors Authenticating From User
2+
id: 3451e58a-9457-4985-a600-b616b0cbfda1
3+
version: 1
4+
date: '2024-12-19'
5+
author: Steven Dick
6+
status: production
7+
type: TTP
8+
description: The following analytic identifies when multiple operating systems are used to authenticate to Azure/EntraID/Office 365 by the same user account over a short period of time. This activity could be indicative of attackers enumerating various logon capabilities of Azure/EntraID/Office 365 and attempting to discover weaknesses in the organizational MFA or conditional access configurations. Usage of the tools like "MFASweep" will trigger this detection.
9+
data_source:
10+
- Office 365 Universal Audit Log
11+
search: |-
12+
`o365_management_activity` Operation IN (UserLoginFailed,UserLoggedIn)
13+
| eval -time = _time
14+
| bin _time span=15m
15+
| stats values(Operation) as signature, values(ErrorNumber) as signature_id, values(OS) as os_name, dc(OS) as os_count, count, min(-time) as firstTime, max(-time) as lastTime by ClientIP, UserId, _time
16+
| where os_count >= 4
17+
| eval src = ClientIP, user = UserId
18+
| `security_content_ctime(firstTime)`
19+
| `security_content_ctime(lastTime)`
20+
| `o365_multiple_os_vendors_authenticating_from_user_filter`
21+
how_to_implement: You must install the Splunk Microsoft Office 365 Add-on and ingest Office 365 management activity events. The thresholds set within the analytic (such as unique OS) are initial guidelines and should be customized based on the organization's user behavior and risk profile. Security teams are encouraged to adjust these thresholds to optimize the balance between detecting genuine threats and minimizing false positives, ensuring the detection is tailored to their specific environment.
22+
known_false_positives: IP or users where the usage of multiple Operating systems is expected, filter accordingly.
23+
references:
24+
- https://attack.mitre.org/techniques/T1110
25+
- https://www.blackhillsinfosec.com/exploiting-mfa-inconsistencies-on-microsoft-services/
26+
- https://sra.io/blog/msspray-wait-how-many-endpoints-dont-have-mfa/
27+
- https://github.com/dafthack/MFASweep/tree/master
28+
drilldown_searches:
29+
- name: View the detection results for - "$user$"
30+
search: '%original_detection_search% | search user = "$user$"'
31+
earliest_offset: $info_min_time$
32+
latest_offset: $info_max_time$
33+
- name: View risk events for the last 7 days for - "$user$"
34+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$user$") starthoursago=168 | 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)`'
35+
earliest_offset: $info_min_time$
36+
latest_offset: $info_max_time$
37+
- name: Investigate logons from $user$
38+
search: '`o365_management_activity` Operation IN (UserLoginFailed,UserLoggedIn) "$user$"'
39+
earliest_offset: $info_min_time$
40+
latest_offset: $info_max_time$
41+
rba:
42+
message: The user account $user$ authenticated with $os_count$ unique operating system types over a short period from $src$.
43+
risk_objects:
44+
- field: user
45+
type: user
46+
score: 60
47+
threat_objects:
48+
- field: src
49+
type: ip_address
50+
tags:
51+
analytic_story:
52+
- Office 365 Account Takeover
53+
asset_type: O365 Tenant
54+
mitre_attack_id:
55+
- T1110
56+
product:
57+
- Splunk Enterprise
58+
- Splunk Enterprise Security
59+
- Splunk Cloud
60+
security_domain: threat
61+
tests:
62+
- name: True Positive Test
63+
attack_data:
64+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110/azure_mfasweep_events/azure_mfasweep_events.log
65+
source: o365
66+
sourcetype: o365:management:activity

detections/endpoint/system_user_discovery_with_query.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: System User Discovery With Query
22
id: ad03bfcf-8a91-4bc2-a500-112993deba87
3-
version: 4
4-
date: '2024-11-13'
3+
version: 5
4+
date: '2025-02-05'
55
author: Mauricio Velazco, Splunk
66
status: production
77
type: Hunting
@@ -17,9 +17,8 @@ data_source:
1717
- Windows Event Log Security 4688
1818
- CrowdStrike ProcessRollup2
1919
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
20-
as lastTime from datamodel=Endpoint.Processes where (Processes.process_name="query.exe")
21-
(Processes.process=*user*) by Processes.dest Processes.user Processes.parent_process
22-
Processes.process_name Processes.process Processes.process_id Processes.parent_process_id
20+
as lastTime from datamodel=Endpoint.Processes where (Processes.process_name="query.exe" OR Processes.original_file_name="query.exe")
21+
AND Processes.process="*user*" AND ((NOT Processes.process="*/server*") OR Processes.process IN ("*/server:localhost*", "*/server:127.0.0.1*")) by Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.process Processes.process_id Processes.parent_process_id
2322
| `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
2423
| `system_user_discovery_with_query_filter`'
2524
how_to_implement: The detection is based on data that originates from Endpoint Detection
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Windows System Remote Discovery With Query
2+
id: 94859172-a521-474f-97ac-4cf4b09634a3
3+
version: 1
4+
date: '2025-02-05'
5+
author: Steven Dick
6+
status: production
7+
type: Anomaly
8+
description: The following analytic detects the execution of `query.exe` with command-line arguments aimed at discovering data on remote devices. It leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names and command-line executions. This activity is significant as adversaries may use `query.exe` to gain situational awareness and perform Active Directory discovery on compromised endpoints. If confirmed malicious, this behavior could allow attackers to identify various details about a system, aiding in further lateral movement and privilege escalation within the network.
9+
data_source:
10+
- Sysmon Event ID 1
11+
- Windows Security Event ID 4688
12+
- CrowdStrike ProcessRollup2
13+
search: |-
14+
| tstats `security_content_summariesonly` values(Processes.process_current_directory) as Processes.process_current_directory values(Processes.process_id) as Processes.process_id values(Processes.process) as Processes.process values(Processes.parent_process_id) as Processes.parent_process_id values(Processes.parent_process) as Processes.parent_process count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where (Processes.process_name="query.exe" OR Processes.original_file_name="query.exe") AND (Processes.process="*/server*") AND NOT Processes.process IN ("*/server:localhost*", "*/server:127.0.0.1*") by Processes.dest Processes.user Processes.process_name Processes.parent_process_name
15+
| `drop_dm_object_name(Processes)`
16+
| `security_content_ctime(firstTime)`
17+
| `security_content_ctime(lastTime)`
18+
| `windows_system_remote_discovery_with_query_filter`
19+
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
20+
known_false_positives: Administrators or power users may use this command for troubleshooting.
21+
references:
22+
- https://attack.mitre.org/techniques/T1033/
23+
drilldown_searches:
24+
- name: View the detection results for - "$dest$" and "$user$"
25+
search: '%original_detection_search% | search dest = "$dest$" user = "$user$"'
26+
earliest_offset: $info_min_time$
27+
latest_offset: $info_max_time$
28+
- name: View risk events for the last 7 days for - "$dest$" and "$user$"
29+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$","$user$") starthoursago=168 | 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)`'
30+
earliest_offset: $info_min_time$
31+
latest_offset: $info_max_time$
32+
- name: Investigate processes on $dest$
33+
search: '| from datamodel:Endpoint.Processes | search dest=$dest$ process_name = $process_name|s$'
34+
earliest_offset: $info_min_time$
35+
latest_offset: $info_max_time$
36+
rba:
37+
message: The user $user$ ran the Query command to enumerate the remote system $dest$
38+
risk_objects:
39+
- field: user
40+
type: user
41+
score: 25
42+
- field: dest
43+
type: system
44+
score: 25
45+
threat_objects:
46+
- field: process_name
47+
type: process_name
48+
tags:
49+
analytic_story:
50+
- Active Directory Discovery
51+
asset_type: Endpoint
52+
mitre_attack_id:
53+
- T1033
54+
product:
55+
- Splunk Enterprise
56+
- Splunk Enterprise Security
57+
- Splunk Cloud
58+
security_domain: endpoint
59+
tests:
60+
- name: True Positive Test
61+
attack_data:
62+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1033/query_remote_usage/query_remote_usage.log
63+
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
64+
sourcetype: XmlWinEventLog

0 commit comments

Comments
 (0)