merged with develop

This commit is contained in:
Patrick
2023-09-18 08:50:10 +02:00
277 changed files with 6248 additions and 1002 deletions
+1
View File
@@ -127,3 +127,4 @@ bin/docker_detection_tester/test_results/
lookups/APP_ENRICHMENT_CACHE.db.db
lookups/CVE_CACHE.db.db
lookups/REFERENCE_CACHE.db.db
*.code-workspace
@@ -78,6 +78,7 @@ class ObjToYmlAdapter(Adapter):
"id": True,
"eventSchema": True,
"version": True,
"status": True,
"description": True,
"search": True,
"how_to_implement": True,
@@ -1,13 +1,22 @@
name: Attacker Tools On Endpoint
id: a51bfe1a-94f0-48cc-b4e4-16a110145893
version: 2
date: '2021-11-04'
version: 3
date: '2023-08-25'
author: Bhavin Patel, Splunk
type: TTP
datamodel:
- Endpoint
description: This search looks for execution of commonly used attacker tools on an
endpoint.
description: This search looks for the execution of commonly used attacker tools on an
endpoint. These tools, listed in the attacker_tools.csv, include remcom.exe, an open-source
replacement for psexec, pwdump.exe and pwdump2.exe, which are used to dump password hashes
on a Windows system, and nc.exe, an open-source tool used for network communications. Other
tools like wce.exe, used for dumping hashes and executing pass-the-hash and pass-the-ticket
attacks, and cain.exe, used for collecting user credentials and executing attacks, are also
monitored. The search also tracks tools like nmap.exe, an open-source network mapping tool,
and kidlogger.exe, used for collecting keyboard input on a host. The list also includes
tools that are used by attackers to hide in plain sight and look like legitimate Windows
system processes, such as isass.exe and svch0st.exe. The search is designed to provide
comprehensive monitoring of potential threats and unauthorized software on an endpoint.
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime values(Processes.process) as process values(Processes.parent_process)
as parent_process from datamodel=Endpoint.Processes where Processes.dest!=unknown
@@ -39,11 +39,11 @@ tags:
asset_type: Infrastructure
confidence: 60
impact: 30
message: $src_user$ account has rejected multiple Okta pushes.
message: $user$ account has rejected multiple Okta pushes.
mitre_attack_id:
- T1110
observable:
- name: src_user
- name: user
type: User
role:
- Attacker
@@ -53,7 +53,7 @@ tags:
- Splunk Cloud
required_fields:
- _time
- src_user
- user
- src_ip
- eventType
- status
@@ -33,11 +33,11 @@ tags:
asset_type: Infrastructure
confidence: 80
impact: 80
message: $src_user$ account has rejected multiple Okta pushes.
message: $user$ account has rejected multiple Okta pushes.
mitre_attack_id:
- T1110
observable:
- name: src_user
- name: user
type: User
role:
- Attacker
@@ -47,7 +47,7 @@ tags:
- Splunk Cloud
required_fields:
- _time
- src_user
- user
- src_ip
- eventType
- status
@@ -0,0 +1,50 @@
name: Splunk DOS via printf search function
id: 78b48d08-075c-4eac-bd07-e364c3780867
version: 1
date: '2023-08-30'
author: Rod Soto, Eric McGinnis, Splunk
status: production
type: Hunting
data_source: []
description: This hunting search provides information on detecting a vulnerability In Splunk Enterprise versions lower than 8.1.14, 8.2.12, 9.0.6, and 9.1.1, an attacker can use the printf SPL function to perform a denial of service against the Splunk Enterprise instance.
search: '`audit_searches` "*makeresults * eval * fieldformat *printf*" user!="splunk_system_user" search!="*audit_searches*"
| stats count by user splunk_server host search
| convert ctime(*time) |`splunk_dos_via_printf_search_function_filter`'
how_to_implement: This search requires the ability to search internal indexes.
known_false_positives: This search may produces false positives, analyst most focuse in the use of printf conversion function of eval to craft an expression that splunkd cannot interpret correctly causing it to crash.
references:
- https://advisory.splunk.com/
tags:
analytic_story:
- Splunk Vulnerabilities
asset_type: endpoint
confidence: 100
impact: 100
message: Possible denial of service attack against $host$
cve:
- CVE-2023-40594
mitre_attack_id:
- T1499.004
observable:
- name: host
type: Hostname
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 100
required_fields:
- user
- splunk_server
- host
- search
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1499.004/splunk/splunk_printf_abuse.log
source: audittrail
sourcetype: audittrail
custom_index: _audit
@@ -30,7 +30,7 @@ tags:
mitre_attack_id:
- T1189
observable:
- name: User
- name: user
type: User
role:
- Victim
@@ -36,7 +36,7 @@ tags:
mitre_attack_id:
- T1588.004
observable:
- name: Hostname
- name: host
type: Hostname
role:
- Victim
@@ -38,7 +38,7 @@ tags:
mitre_attack_id:
- T1588.004
observable:
- name: Hostname
- name: host
type: Hostname
role:
- Victim
@@ -1,17 +1,13 @@
name: Splunk risky Command Abuse disclosed february 2023
id: ee69374a-d27e-4136-adac-956a96ff60fd
version: 2
date: '2023-02-14'
date: '2023-08-30'
author: Chase Franklin, Rod Soto, Eric McGinnis, Splunk
status: production
type: Hunting
description: In February 2023, Splunk disclosed several vulnerabilities affecting
Splunk Enterprise commands deemed risky. The following hunting search includes the
following commands and versions. Command 'createrss' (versions 8.1.13, 8.2.10),
pivot (8.1.13,8.2.10,9.0.4), display.page.search.patterns.sensitivity(versions below
8.1.13,8.2.10,9.0.4), search_listener, map, collect (8.1.13,8.2.10,9.0.4). For more
information please review Splunk Vulnerabilities Disclosure, February 2023. Link
can be found in reference.
description: This search looks for a variety of high-risk commands throughout
a number of different Splunk Vulnerability Disclosures. Please refer to the
following URL for additional information on these disclosures - https://advisory.splunk.com
data_source: []
search: '| tstats count min(_time) as firstTime max(_time) as lastTime from datamodel=Splunk_Audit.Search_Activity
where Search_Activity.search_type=adhoc Search_Activity.user!=splunk-system-user
@@ -35,6 +31,7 @@ tags:
- CVE-2023-22936
- CVE-2023-22939
- CVE-2023-22940
- CVE-2023-40598
impact: 50
message: Use of risky splunk command $splunk_risky_command$ detected by $user$
mitre_attack_id:
@@ -67,3 +64,9 @@ tests:
source: audittrail
sourcetype: audittrail
custom_index: _audit
- name: True Positive Test runshellscript abuse
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1548/splunk/splunk_runshellscript_abuse.log
source: audittrail
sourcetype: audittrail
custom_index: _audit
@@ -25,9 +25,8 @@ references:
- https://twitter.com/jhencinski/status/1618660062352007174
tags:
analytic_story:
- Compromised User Account
- Azure Active Directory Account Takeover
asset_type: Azure Active Directory
- AWS Identity and Access Management Account Takeover
asset_type: AWS Account
confidence: 80
impact: 80
message: A new virtual device is added to user $identity.user.name$
@@ -2,12 +2,12 @@ name: AWS Exfiltration via Batch Service
id: 04455dd3-ced7-480f-b8e6-5469b99e98e2
version: 1
date: '2023-04-24'
author: ''
author: Bhavin Patel, Splunk
status: production
type: TTP
data_source: []
description: This search looks for events where AWS Batch Service is used for creating a job that could potentially abuse the AWS Bucket Replication feature on S3 buckets. This AWS service can used to transfer data between different AWS S3 buckets and an attacker can leverage this to exfiltrate data by creating a malicious batch job.
search: '`cloudtrail` eventName = JobCreated | stats count min(_time) as firstTime max(_time) as lastTime values(serviceEventDetails.jobArn) as job_arn values(serviceEventDetails.status) as status by src_ip aws_account_id eventName errorCode userAgent| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_exfiltration_via_datasync_task_filter`'
search: '`cloudtrail` eventName = JobCreated | stats count min(_time) as firstTime max(_time) as lastTime values(serviceEventDetails.jobArn) as job_arn values(serviceEventDetails.status) as status by src_ip aws_account_id eventName errorCode userAgent| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_exfiltration_via_datasync_task_filter`'
how_to_implement: You must install splunk AWS add on and Splunk App for AWS. This
search works with AWS CloudTrail logs.
known_false_positives: It is possible that an AWS Administrator or a user has legitimately created this job for some tasks.
@@ -20,14 +20,10 @@ tags:
asset_type: AWS Account
confidence: 80
impact: 80
message: AWS Batch Job is created on account id - $aws_account_id$ by user $user_arn$ from src_ip $src_ip$
message: AWS Batch Job is created on account id - $aws_account_id$ from src_ip $src_ip$
mitre_attack_id:
- T1119
observable:
- name: user_arn
type: User
role:
- Attacker
- name: src_ip
type: IP Address
role:
@@ -23,11 +23,11 @@ tags:
asset_type: EC2 Snapshot
confidence: 80
impact: 80
message: Potential AWS EC2 Exfiltration detected on account id - $aws_account_id$ by user $user_arn$ from src_ip $src_ip$
message: Potential AWS EC2 Exfiltration detected on account id - $aws_account_id$ by user $userName$ from src_ip $src_ip$
mitre_attack_id:
- T1537
observable:
- name: user_arn
- name: userName
type: User
role:
- Attacker
@@ -32,11 +32,7 @@ tags:
mitre_attack_id:
- T1201
observable:
- name: src_ip
type: IP Address
role:
- Attacker
- name: user_arn
- name: user_name
type: User
role:
- Attacker
+2 -2
View File
@@ -13,8 +13,8 @@ description: The following detection identifes when a policy is deleted on AWS.
data_source: []
search: '`cloudtrail` eventName=DeletePolicy (userAgent!=*.amazonaws.com) | stats
count min(_time) as firstTime max(_time) as lastTime values(requestParameters.policyArn)
as policyArn by src eventName eventSource aws_account_id errorCode errorMessage
userAgent eventID awsRegion userIdentity.principalId userIdentity.arn | `security_content_ctime(firstTime)`
as policyArn by src user_arn eventName eventSource aws_account_id errorCode errorMessage
userAgent eventID awsRegion userIdentity.principalId | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `aws_iam_delete_policy_filter`'
how_to_implement: The Splunk AWS Add-on and Splunk App for AWS is required to utilize
this data. The search requires AWS Cloudtrail logs.
@@ -12,7 +12,7 @@ description: Enforcing network-access controls is one of the defensive mechanism
will query the AWS CloudTrail logs to detect users deleting network ACLs.
data_source: []
search: '`cloudtrail` eventName=DeleteNetworkAclEntry requestParameters.egress=false
| fillnull | stats count min(_time) as firstTime max(_time) as lastTime by userName
| fillnull | stats count min(_time) as firstTime max(_time) as lastTime by user_arn
userIdentity.principalId eventName requestParameters.egress src userAgent | `security_content_ctime(firstTime)`|
`security_content_ctime(lastTime)` | `aws_network_access_control_list_deleted_filter`'
how_to_implement: You must install the AWS App for Splunk (version 5.1.0 or later)
@@ -25,17 +25,16 @@ references:
- https://twitter.com/jhencinski/status/1618660062352007174
tags:
analytic_story:
- Compromised User Account
- Azure Active Directory Account Takeover
asset_type: Azure Active Directory
- AWS Identity and Access Management Account Takeover
asset_type: AWS Account
confidence: 80
impact: 80
message: A new virtual device $virtualMFADeviceName$ is added to user $user_arn$
message: A new virtual device $virtualMFADeviceName$ is added to user $user_arn$
mitre_attack_id:
- T1556
- T1556.006
observable:
- name: user_name
- name: user_arn
type: User
role:
- Victim
@@ -2,7 +2,7 @@ name: Azure Active Directory High Risk Sign-in
id: 1ecff169-26d7-4161-9a7b-2ac4c8e61bea
version: 1
date: '2022-07-11'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic triggers on a high risk sign-in against Azure
@@ -10,13 +10,12 @@ description: The following analytic triggers on a high risk sign-in against Azur
sign-in events using heuristics and machine learning to identify potentially malicious
events and categorizes them in three categories high, medium and low.
data_source: []
search: ' `azuread` body.category=UserRiskEvents body.properties.riskLevel=high |
rename body.properties.* as * | stats values(userPrincipalName) by _time, ipAddress,
search: ' `azuread` category=UserRiskEvents properties.riskLevel=high |
rename properties.* as * | stats values(userPrincipalName) as userPrincipalName by _time, ipAddress,
activity, riskLevel, riskEventType, additionalInfo | `azure_active_directory_high_risk_sign_in_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events in your Splunk environment.
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the RiskyUsers and UserRiskEvents log category.
known_false_positives: Details for the risk calculation algorithm used by Identity
Protection are unknown and may be prone to false positives.
@@ -31,7 +30,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 60
message: A high risk event was identified by Identify Protection for user $body.properties.userPrincipalName$
message: A high risk event was identified by Identify Protection for user $userPrincipalName$
mitre_attack_id:
- T1586
- T1586.003
@@ -52,13 +51,13 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.category
- body.properties.riskLevel
- body.properties.userPrincipalName
- body.properties.ipAddress
- body.properties.activity
- body.properties.riskEventType
- body.properties.additionalInfo
- category
- properties.riskLevel
- properties.userPrincipalName
- properties.ipAddress
- properties.activity
- properties.riskEventType
- properties.additionalInfo
risk_score: 54
security_domain: identity
tests:
@@ -2,7 +2,7 @@ name: Azure AD Application Administrator Role Assigned
id: eac4de87-7a56-4538-a21b-277897af6d8d
version: 1
date: '2023-04-25'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
data_source: []
@@ -12,11 +12,11 @@ description: The following analytic identifies the assignment of the Application
been granted access to a resource, such as the ability to create or update User or other objects, then a user assigned to this role could perform those actions while
impersonating the application. This ability to impersonate the applications identity may be an elevation of privilege over what the user can do via their role assignments.
Red teams and adversaries alike may abuse this role to escalate their privileges in an Azure AD tenant.
search: ' `azuread` "body.operationName"="Add member to role" "body.properties.targetResources{}.modifiedProperties{}.newValue"="\"Application Administrator\""
| rename body.properties.* as *
search: ' `azuread` "operationName"="Add member to role" "properties.targetResources{}.modifiedProperties{}.newValue"="\"Application Administrator\""
| rename properties.* as *
| rename targetResources{}.userPrincipalName as userPrincipalName
| rename initiatedBy.user.userPrincipalName as initiatedBy
| stats values(userPrincipalName) by _time, initiatedBy, result, body.operationName
| stats values(userPrincipalName) as userPrincipalName by _time, initiatedBy, result, operationName
| `azure_ad_application_administrator_role_assigned_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
@@ -57,10 +57,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 35
security_domain: endpoint
tests:
@@ -2,7 +2,7 @@ name: Azure AD Authentication Failed During MFA Challenge
id: e62c9c2e-bf51-4719-906c-3074618fcc1c
version: 1
date: '2022-07-14'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: 'The following analytic identifies an authentication attempt event against
@@ -11,12 +11,12 @@ description: 'The following analytic identifies an authentication attempt event
This behavior may represent an adversary trying to authenticate with compromised
credentials for an account that has multi-factor authentication enabled. '
data_source: []
search: ' `azuread` body.category=SignInLogs body.properties.status.errorCode=500121
| rename body.properties.* as * | stats values(userPrincipalName) by _time, ipAddress,
search: ' `azuread` category=SignInLogs properties.status.errorCode=500121
| rename properties.* as * | stats values(userPrincipalName) as userPrincipalName by _time, ipAddress,
status.additionalDetails, appDisplayName, userAgent | `azure_ad_authentication_failed_during_mfa_challenge_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events in your Splunk environment.
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: Legitimate users may miss to reply the MFA challenge within
the time window or deny it by mistake.
@@ -30,7 +30,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 60
message: User $body.properties.userPrincipalName$ failed to pass MFA challenge
message: User $userPrincipalName$ failed to pass MFA challenge
mitre_attack_id:
- T1586
- T1586.003
@@ -52,13 +52,13 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.category
- body.properties.status.errorCode
- body.properties.userPrincipalName
- body.properties.ipAddress
- body.properties.status.additionalDetails
- body.properties.appDisplayName
- body.properties.userAgent
- category
- properties.status.errorCode
- properties.userPrincipalName
- properties.ipAddress
- properties.status.additionalDetails
- properties.appDisplayName
- properties.userAgent
risk_score: 54
security_domain: identity
tests:
@@ -14,11 +14,11 @@ description: The following analytic identifies an Azure AD account with concurre
data_source: []
search: ' `azuread` properties.authenticationDetails{}.succeeded=true category=NonInteractiveUserSignInLogs
| rename properties.* as * | bucket span=5m _time | stats dc(ipAddress) AS unique_ips
values(ipAddress) values(appDisplayName) by _time, userPrincipalName | where unique_ips
values(ipAddress) as ipAddress values(appDisplayName) by _time, userPrincipalName | where unique_ips
> 1 | `azure_ad_concurrent_sessions_from_different_ips_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: A user with concurrent sessions from different Ips may also
represent the legitimate use of more than one device. Filter as needed and/or customize
@@ -13,10 +13,10 @@ description: The following analytic identifies the invitation of an external gue
2022 by security researcher Dirk-Jan during his tall `Backdooring and Hijacking
Azure AD Accounts by Abusing External Identities`
data_source: []
search: '`azuread` "body.operationName"="Invite external user" | rename body.properties.*
search: '`azuread` "operationName"="Invite external user" | rename properties.*
as * | rename targetResources{}.userPrincipalName as userPrincipalName | rename
initiatedBy.user.userPrincipalName as initiatedBy | rename targetResources{}.type
as type | stats values(userPrincipalName) by _time, type, initiatedBy, result, body.operationName
as type | stats values(userPrincipalName) as userPrincipalName by _time, type, initiatedBy, result, operationName
| `azure_ad_external_guest_user_invited_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
@@ -53,10 +53,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 45
security_domain: threat
tests:
@@ -1,6 +1,6 @@
name: Azure AD Global Administrator Role Assigned
id: 825fed20-309d-4fd1-8aaf-cd49c1bb093c
version: 2
version: 3
date: '2022-08-17'
author: Gowthamaraj Rajendran, Mauricio Velazco, Splunk
status: production
@@ -14,14 +14,15 @@ description: The following analytic identifies the assignment of the Azure AD Gl
to gain control of Azure resources. Adversaries and red teams alike may assign this
role to a compromised account to establish Persistence or escalate their privileges in an Azure AD environment.
data_source: []
search: '`azuread` "body.operationName"="Add member to role" "body.properties.targetResources{}.modifiedProperties{}.newValue"="\"Global
Administrator\"" | rename body.properties.* as * | rename targetResources{}.userPrincipalName
as userPrincipalName | rename initiatedBy.user.userPrincipalName as initiatedBy
| stats values(userPrincipalName) by _time, initiatedBy, result, body.operationName
search: '`azuread` operationName="Add member to role" properties.targetResources{}.modifiedProperties{}.newValue="\"Global Administrator\""
| rename properties.* as *
| rename targetResources{}.userPrincipalName as userPrincipalName
| rename initiatedBy.user.userPrincipalName as initiatedBy
| stats values(userPrincipalName) as userPrincipalName by _time, initiatedBy, result, operationName
| `azure_ad_global_administrator_role_assigned_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the AuditLogs log category.
known_false_positives: Administrators may legitimately assign the Global Administrator
role to a user. Filter as needed.
@@ -58,10 +59,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 72
security_domain: threat
tests:
@@ -15,7 +15,7 @@ search: ' `azuread` category= SignInLogs properties.status.errorCode=50126 prope
by userPrincipalName, _time | where failed_attempts > 20 | `azure_ad_high_number_of_failed_authentications_for_user_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: A user with more than 20 failed authentication attempts in
the span of 5 minutes may also be triggered by a broken application.
@@ -13,10 +13,10 @@ description: The following analytic identifies an Ip address failing to authenti
data_source: []
search: ' `azuread` category= SignInLogs properties.status.errorCode=50126 properties.authenticationDetails{}.succeeded=false
| rename properties.* as * | bucket span=5m _time | stats dc(_raw) AS failed_attempts
values(userPrincipalName) by ipAddress, _time | where failed_attempts > 20 | `azure_ad_high_number_of_failed_authentications_from_ip_filter`'
values(userPrincipalName) as userPrincipalName by ipAddress, _time | where failed_attempts > 20 | `azure_ad_high_number_of_failed_authentications_from_ip_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: An Ip address with more than 20 failed authentication attempts
in the span of 5 minutes may also be triggered by a broken application.
@@ -2,7 +2,7 @@ name: Azure AD Multi-Factor Authentication Disabled
id: 482dd42a-acfa-486b-a0bb-d6fcda27318e
version: 1
date: '2022-08-10'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies an attempt to disable multi-factor
@@ -11,14 +11,14 @@ description: The following analytic identifies an attempt to disable multi-facto
and maintain persistence using a valid account. This way the attackers can keep
persistance in the environment without adding new users.
data_source: []
search: '`azuread` body.category=AuditLogs body.operationName="Disable Strong Authentication"
| rename body.properties.* as * | rename targetResources{}.userPrincipalName as
search: '`azuread` category=AuditLogs operationName="Disable Strong Authentication"
| rename properties.* as * | rename targetResources{}.userPrincipalName as
userPrincipalName | rename targetResources{}.type as type | rename initiatedBy.user.userPrincipalName
as initiatedBy | stats values(userPrincipalName) by _time, type, body.operationName,
as initiatedBy | stats values(userPrincipalName) as userPrincipalName by _time, type, operationName,
initiatedBy, result | `azure_ad_multi_factor_authentication_disabled_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the AuditLogs log category.
known_false_positives: Legitimate use case may require for users to disable MFA. Filter
as needed.
@@ -54,10 +54,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 45
security_domain: identity
tests:
@@ -2,7 +2,7 @@ name: Azure AD Multiple Failed MFA Requests For User
id: 264ea131-ab1f-41b8-90e0-33ad1a1888ea
version: 1
date: '2022-08-25'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies multiple failed multi-factor authentication
@@ -18,13 +18,13 @@ description: The following analytic identifies multiple failed multi-factor auth
this technique to bypass multi-factor authentication controls as reported by Mandiant
and others.
data_source: []
search: ' `azuread` body.category=SignInLogs body.properties.status.errorCode=500121
| rename body.properties.* as * | bucket span=10m _time | stats dc(_raw) AS mfa_prompts
values(userPrincipalName) by userPrincipalName, status.additionalDetails, appDisplayName,
search: ' `azuread` category=SignInLogs properties.status.errorCode=500121
| rename properties.* as * | bucket span=10m _time | stats dc(_raw) AS mfa_prompts
values(ipAddress) as ipAddress by userPrincipalName, status.additionalDetails, appDisplayName,
userAgent, _time | where mfa_prompts > 10 | `azure_ad_multiple_failed_mfa_requests_for_user_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: Multiple Failed MFA requests may also be a sign of authentication
or application issues. Filter as needed.
@@ -40,7 +40,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 60
message: Multiple Failed MFA requests for user $body.properties.userPrincipalName$
message: Multiple Failed MFA requests for user $userPrincipalName$
mitre_attack_id:
- T1586
- T1586.003
@@ -52,21 +52,17 @@ tags:
type: User
role:
- Victim
- name: ipAddress
type: IP Address
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- _time
- body.properties.status.errorCode
- body.category
- body.properties.authenticationDetails
- body.properties.userPrincipalName
- body.properties.ipAddress
- properties.status.errorCode
- category
- properties.authenticationDetails
- properties.userPrincipalName
- properties.ipAddress
risk_score: 54
security_domain: identity
tests:
@@ -2,7 +2,7 @@ name: Azure AD Multiple Users Failing To Authenticate From Ip
id: 94481a6a-8f59-4c86-957f-55a71e3612a6
version: 1
date: '2022-07-12'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: Anomaly
description: 'The following analytic identifies one source Ip failing to authenticate
@@ -15,13 +15,15 @@ description: 'The following analytic identifies one source Ip failing to authent
Azure AD tenants can be very different depending on the organization. Users should
test this detection and customize the arbitrary threshold if needed.'
data_source: []
search: ' `azuread` body.category= SignInLogs body.properties.status.errorCode=50126
body.properties.authenticationDetails{}.succeeded= false | rename body.properties.*
as * | bucket span=5m _time | stats dc(userPrincipalName) AS unique_accounts values(userPrincipalName)
as tried_accounts by _time, ipAddress | where unique_accounts > 30 | `azure_ad_multiple_users_failing_to_authenticate_from_ip_filter`'
search: ' `azuread` category=SignInLogs properties.status.errorCode=50126 properties.authenticationDetails{}.succeeded=false
| rename properties.* as *
| bucket span=5m _time
| stats dc(userPrincipalName) AS unique_accounts values(userPrincipalName) as userPrincipalName by _time, ipAddress
| where unique_accounts > 30
| `azure_ad_multiple_users_failing_to_authenticate_from_ip_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: A source Ip failing to authenticate with multiple users is
not a common for legitimate behavior.
@@ -36,7 +38,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 70
message: Source Ip $body.properties.ipAddress$ failed to authenticate with 30 users
message: Source Ip $ipAddress$ failed to authenticate with 30 users
within 5 minutes.
mitre_attack_id:
- T1586
@@ -59,17 +61,17 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.status.errorCode
- body.category
- body.properties.authenticationDetails
- body.properties.userPrincipalName
- body.properties.ipAddress
- properties.status.errorCode
- category
- properties.authenticationDetails
- properties.userPrincipalName
- properties.ipAddress
risk_score: 63
security_domain: identity
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110.003/azuread/azure-audit.log
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110.003/password_spraying_azuread/azuread_signin.log
source: mscs:azure:eventhub
sourcetype: mscs:azure:eventhub
update_timestamp: true
@@ -2,7 +2,7 @@ name: Azure AD New Custom Domain Added
id: 30c47f45-dd6a-4720-9963-0bca6c8686ef
version: 1
date: '2022-09-02'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies the addition of a new custom domain
@@ -19,10 +19,10 @@ description: The following analytic identifies the addition of a new custom doma
persistence and be able to authenticate to Azure AD impersonating any user and bypassing
the requirement to have a valid password and/or perform MFA.
data_source: []
search: ' `azuread` body.operationName="Add unverified domain" "body.properties.result"=success
| rename body.properties.* as * | rename body.callerIpAddress as callerIpAddress
search: ' `azuread` operationName="Add unverified domain" "properties.result"=success
| rename properties.* as * | rename callerIpAddress as callerIpAddress
| rename initiatedBy.user.userPrincipalName as initiatedBy | rename targetResources{}.displayName
as domain | stats values(domain) by _time, initiatedBy, result, body.operationName,
as domain | stats values(domain) by _time, initiatedBy, result, operationName,
callerIpAddress | `azure_ad_new_custom_domain_added_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
@@ -58,11 +58,11 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.operationName
- body.properties.result
- body.callerIpAddress
- body.properties.targetResources{}.displayName
- body.properties.initiatedBy.user.userPrincipalName
- operationName
- properties.result
- callerIpAddress
- properties.targetResources{}.displayName
- properties.initiatedBy.user.userPrincipalName
risk_score: 54
security_domain: threat
tests:
@@ -2,7 +2,7 @@ name: Azure AD New Federated Domain Added
id: a87cd633-076d-4ab2-9047-977751a3c1a0
version: 1
date: '2022-09-02'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies the addition of a new federated domain
@@ -19,10 +19,10 @@ description: The following analytic identifies the addition of a new federated d
persistence and be able to authenticate to Azure AD impersonating any user and bypassing
the requirement to have a valid password and/or perform MFA.
data_source: []
search: ' `azuread` body.operationName="Set domain authentication" "body.properties.result"=success
| rename body.properties.* as * | rename body.callerIpAddress as callerIpAddress
search: ' `azuread` operationName="Set domain authentication" "properties.result"=success
| rename properties.* as * | rename callerIpAddress as callerIpAddress
| rename initiatedBy.user.userPrincipalName as initiatedBy | rename targetResources{}.displayName
as domain | stats values(domain) by _time, initiatedBy, result, body.operationName,
as domain | stats values(domain) by _time, initiatedBy, result, operationName,
callerIpAddress | `azure_ad_new_federated_domain_added_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
@@ -57,11 +57,11 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.operationName
- body.properties.result
- body.callerIpAddress
- body.properties.targetResources{}.displayName
- body.properties.initiatedBy.user.userPrincipalName
- operationName
- properties.result
- callerIpAddress
- properties.targetResources{}.displayName
- properties.initiatedBy.user.userPrincipalName
risk_score: 81
security_domain: threat
tests:
@@ -11,11 +11,11 @@ description: The following analytic identifies the registration of a new Multi F
data_source: []
search: ' `azuread` category=AuditLogs operationName="User registered security info"
properties.operationType=Add | rename properties.* as * | rename targetResources{}.*
as * | stats values(userPrincipalName) by _time, resultDescription, result, callerIpAddress
as * | stats values(userPrincipalName) as userPrincipalName by _time, resultDescription, result, callerIpAddress
| `azure_ad_new_mfa_method_registered_for_user_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the AuditLogs log category.
known_false_positives: Newly onboarded users who are registering an MFA method for
the first time will also trigger this detection.
@@ -2,7 +2,7 @@ name: Azure AD Privileged Authentication Administrator Role Assigned
id: a7da845d-6fae-41cf-b823-6c0b8c55814a
version: 1
date: '2023-04-25'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
data_source: []
@@ -10,11 +10,11 @@ description: The following analytic identifies the assignment of the Privileged
methods for any user in Azure Active Directory, including privileged roles like Global Administrators. Users with this role can change credentials for people who may have access to sensitive
or private information or critical configuration inside and outside of Azure Active Directory. Changing the credentials of a user may mean the ability to assume that users identity and permissions.
Red teams and adversaries alike may abuse this role to escalate their privileges.
search: ' `azuread` "body.operationName"="Add member to role" "body.properties.targetResources{}.modifiedProperties{}.newValue"="\"Privileged Authentication Administrator\""
| rename body.properties.* as *
search: ' `azuread` "operationName"="Add member to role" "properties.targetResources{}.modifiedProperties{}.newValue"="\"Privileged Authentication Administrator\""
| rename properties.* as *
| rename targetResources{}.userPrincipalName as userPrincipalName
| rename initiatedBy.user.userPrincipalName as initiatedBy
| stats values(userPrincipalName) by _time, initiatedBy, result, body.operationName
| stats values(userPrincipalName) as userPrincipalName by _time, initiatedBy, result, operationName
| `azure_ad_privileged_authentication_administrator_role_assigned_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
@@ -51,10 +51,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 50
security_domain: identity
tests:
@@ -2,7 +2,7 @@ name: Azure AD Privileged Role Assigned
id: a28f0bc3-3400-4a6e-a2da-89b9e95f0d2a
version: 1
date: '2022-08-29'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies the assignment of sensitive and privileged
@@ -10,14 +10,14 @@ description: The following analytic identifies the assignment of sensitive and p
may assign these roles to a compromised account to establish Persistence in an Azure
AD environment.
data_source: []
search: ' `azuread` "body.operationName"="Add member to role" | rename body.properties.* as *
search: ' `azuread` "operationName"="Add member to role" | rename properties.* as *
| rename targetResources{}.userPrincipalName as userPrincipalName
| rename initiatedBy.user.userPrincipalName as initiatedBy
| rename targetResources{}.modifiedProperties{}.newValue as roles
| eval role=mvindex(roles,1)
| lookup privileged_azure_ad_roles azureadrole AS role OUTPUT isprvilegedadrole description
| search isprvilegedadrole = True
| stats values(userPrincipalName) by _time, initiatedBy, result, body.operationName, role, description
| stats values(userPrincipalName) as userPrincipalName by _time, initiatedBy, result, operationName, role, description
| `azure_ad_privileged_role_assigned_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
@@ -58,10 +58,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 63
security_domain: audit
tests:
@@ -14,14 +14,16 @@ description: The following analytic identifies the creation of a Service Princip
access may create a Service Principal to establish Persistence and obtain single-factor
access to an Azure AD environment.
data_source: []
search: '`azuread` "body.operationName"="Add service principal" "body.properties.initiatedBy.user.id"=*
| rename body.properties.* as * | rename targetResources{}.displayName as displayName
| rename initiatedBy.user.userPrincipalName as initiatedBy | rename targetResources{}.type
as type | stats values(displayName) by _time, type, initiatedBy, result, body.operationName
search: '`azuread` operationName="Add service principal" properties.initiatedBy.user.id=*
| rename properties.* as *
| rename targetResources{}.displayName as displayName
| rename initiatedBy.user.userPrincipalName as initiatedBy
| rename targetResources{}.type as type
| stats values(displayName) as displayName by _time, type, initiatedBy, result, operationName
| `azure_ad_service_principal_created_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment thorough an EventHub.
Specifically, this analytic leverages the AuditLogs log category.
known_false_positives: Administrator may legitimately create Service Principal. Filter
as needed.
@@ -55,10 +57,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.targetResources{}.displayName
- body.properties.targetResources{}.type
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- properties.targetResources{}.displayName
- properties.targetResources{}.type
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 45
security_domain: threat
tests:
@@ -2,7 +2,7 @@ name: Azure AD Service Principal New Client Credentials
id: e3adc0d3-9e4b-4b5d-b662-12cec1adff2a
version: 2
date: '2022-08-17'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies the addition of new credentials for Service
@@ -16,9 +16,9 @@ description: The following analytic identifies the addition of new credentials f
with privileged access, attackers may also escalate their privileges in an Azure AD environment by adding new credentials and
logging in as the service principal.
data_source: []
search: ' `azuread` body.category=AuditLogs body.operationName="Update application*Certificates
and secrets management " | rename body.* as * | rename properties.* as * | rename
targetResources{}.* as * | stats values(displayName) by _time, initiatedBy.user.userPrincipalName,
search: ' `azuread` category=AuditLogs operationName="Update application*Certificates
and secrets management " | rename * as * | rename properties.* as * | rename
targetResources{}.* as * | stats values(displayName) as displayName by _time, initiatedBy.user.userPrincipalName,
modifiedProperties{}.newValue | `azure_ad_service_principal_new_client_credentials_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
@@ -40,7 +40,7 @@ tags:
asset_type: Azure Active Directory
confidence: 50
impact: 70
message: New credentials added for Service Principal $body.properties.targetResources{}.displayName$
message: New credentials added for Service Principal $properties.targetResources{}.displayName$
mitre_attack_id:
- T1098
- T1098.001
@@ -59,11 +59,11 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.category
- body.operationName
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.targetResources{}.displayName
- body.properties.targetResources{}.modifiedProperties{}.newValue
- category
- operationName
- properties.initiatedBy.user.userPrincipalName
- properties.targetResources{}.displayName
- properties.targetResources{}.modifiedProperties{}.newValue
risk_score: 35
security_domain: threat
tests:
@@ -2,7 +2,7 @@ name: Azure AD Service Principal Owner Added
id: 7ddf2084-6cf3-4a44-be83-474f7b73c701
version: 2
date: '2022-08-30'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies the addition of a new owner for a Service
@@ -15,15 +15,18 @@ description: The following analytic identifies the addition of a new owner for a
and obtain single-factor access to an Azure AD environment. Attackers who are looking to
escalate their privileges by leveraging a Service Principals permissions may also add a new owner.
data_source: []
search: ' `azuread` body.operationName="Add owner to application" | rename body.properties.*
as * | rename initiatedBy.user.userPrincipalName as initiatedBy | rename targetResources{}.userPrincipalName
as newOwner | rename targetResources{}.modifiedProperties{}.newValue as displayName
| eval displayName = mvindex(displayName,1) | where initiatedBy!=newOwner | stats
values(displayName) by _time, initiatedBy, result, body.operationName, newOwner
search: ' `azuread` operationName="Add owner to application"
| rename properties.* as *
| rename initiatedBy.user.userPrincipalName as initiatedBy
| rename targetResources{}.userPrincipalName as newOwner
| rename targetResources{}.modifiedProperties{}.newValue as displayName
| eval displayName = mvindex(displayName,1)
| where initiatedBy!=newOwner
| stats values(displayName) as displayName by _time, initiatedBy, result, operationName, newOwner
| `azure_ad_service_principal_owner_added_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the AuditLogs log category.
known_false_positives: Administrator may legitimately add new owners for Service Principals.
Filter as needed.
@@ -54,11 +57,11 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.operationName
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.targetResources{}.userPrincipalName
- body.properties.targetResources{}.modifiedProperties{}.newValue
- body.propertiesresult
- operationName
- properties.initiatedBy.user.userPrincipalName
- properties.targetResources{}.userPrincipalName
- properties.targetResources{}.modifiedProperties{}.newValue
- properties.result
risk_score: 54
security_domain: audit
tests:
@@ -14,11 +14,11 @@ description: The following analytic identifies an Azure AD account successfully
data_source: []
search: ' `azuread` properties.authenticationDetails{}.succeeded=true category=SignInLogs
| rename properties.* as * | bucket span=5m _time | stats dc(ipAddress) AS unique_ips
values(ipAddress) values(appDisplayName) by _time, userPrincipalName | where unique_ips
values(ipAddress) as ipAddress values(appDisplayName) by _time, userPrincipalName | where unique_ips
> 1 | `azure_ad_successful_authentication_from_different_ips_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: A user with successful authentication events from different
Ips may also represent the legitimate use of more than one device. Filter as needed
@@ -2,7 +2,7 @@ name: Azure AD Successful PowerShell Authentication
id: 62f10052-d7b3-4e48-b57b-56f8e3ac7ceb
version: 1
date: '2022-07-13'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies a successful authentication event against
@@ -11,13 +11,13 @@ description: The following analytic identifies a successful authentication event
and red teams alike will perform enumeration and discovery techniques. One method
of executing these techniques is leveraging the native PowerShell modules.
data_source: []
search: ' `azuread` body.category=SignInLogs body.properties.authenticationDetails{}.succeeded=true
body.properties.appDisplayName="Azure Active Directory PowerShell" | rename body.properties.*
as * | stats values(userPrincipalName) by _time, ipAddress, appDisplayName, userAgent
search: ' `azuread` category=SignInLogs properties.authenticationDetails{}.succeeded=true
properties.appDisplayName="Microsoft Azure PowerShell" | rename properties.*
as * | stats values(userPrincipalName) as userPrincipalName by _time, ipAddress, appDisplayName, userAgent
| `azure_ad_successful_powershell_authentication_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events in your Splunk environment.
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: Administrative users will likely use PowerShell commandlets
to troubleshoot and maintain the environment. Filter as needed.
@@ -32,7 +32,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 60
message: Successful authentication for user $body.properties.userPrincipalName$
message: Successful authentication for user $userPrincipalName$
using PowerShell.
mitre_attack_id:
- T1586
@@ -54,12 +54,12 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.appDisplayName
- body.category
- body.properties.userPrincipalName
- body.properties.ipAddress
- body.properties.appDisplayName
- body.properties.userAgent
- properties.appDisplayName
- category
- properties.userPrincipalName
- properties.ipAddress
- properties.appDisplayName
- properties.userAgent
risk_score: 54
security_domain: identity
tests:
@@ -2,7 +2,7 @@ name: Azure AD Successful Single-Factor Authentication
id: a560e7f6-1711-4353-885b-40be53101fcd
version: 1
date: '2022-07-12'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies a successful authentication event against
@@ -10,13 +10,13 @@ description: The following analytic identifies a successful authentication event
This could be evidence of a missconfiguration, a policy violation or an account
take over attempt that should be investigated
data_source: []
search: ' `azuread` body.category=SignInLogs body.properties.authenticationRequirement=singleFactorAuthentication
body.properties.authenticationDetails{}.succeeded=true | rename body.properties.*
as * | stats values(userPrincipalName) by _time, ipAddress, appDisplayName, authenticationRequirement
search: ' `azuread` category=SignInLogs properties.authenticationRequirement=singleFactorAuthentication
properties.authenticationDetails{}.succeeded=true | rename properties.*
as * | stats values(userPrincipalName) as userPrincipalName by _time, ipAddress, appDisplayName, authenticationRequirement
| `azure_ad_successful_single_factor_authentication_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events in your Splunk environment.
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: Although not recommended, certain users may be required without
multi-factor authentication. Filter as needed
@@ -30,7 +30,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 50
message: Successful authentication for user $body.properties.userPrincipalName$
message: Successful authentication for user $userPrincipalName$
without MFA
mitre_attack_id:
- T1586
@@ -52,12 +52,12 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.category
- body.properties.authenticationRequirement
- body.properties.authenticationDetails
- body.properties.userPrincipalName
- body.properties.ipAddress
- body.properties.appDisplayName
- category
- properties.authenticationRequirement
- properties.authenticationDetails
- properties.userPrincipalName
- properties.ipAddress
- properties.appDisplayName
risk_score: 45
security_domain: identity
tests:
@@ -1,8 +1,8 @@
name: Azure AD Unusual Number of Failed Authentications From Ip
id: 3d8d3a36-93b8-42d7-8d91-c5f24cec223d
version: 1
version: 2
date: '2022-07-11'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: Anomaly
description: 'The following analytic identifies one source Ip failing to authenticate
@@ -21,16 +21,18 @@ description: 'The following analytic identifies one source Ip failing to authent
coverage. A similar analytic following the threshold model is `Azure AD Multiple
Users Failing To Authenticate From Ip`.'
data_source: []
search: ' `azuread` body.category=SignInLogs body.properties.status.errorCode=50126
body.properties.authenticationDetails{}.succeeded= false | rename body.properties.*
as * | bucket span=5m _time | stats dc(userPrincipalName) AS unique_accounts values(userPrincipalName)
as tried_accounts by _time, ipAddress | eventstats avg(unique_accounts) as ip_avg
, stdev(unique_accounts) as ip_std by ipAddress | eval upperBound=(ip_avg+ip_std*3)
| eval isOutlier=if(unique_accounts > 10 and unique_accounts >= upperBound, 1,
0) | where isOutlier = 1 | `azure_ad_unusual_number_of_failed_authentications_from_ip_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events in your Splunk environment.
search: ' `azuread` category=SignInLogs properties.status.errorCode=50126 properties.authenticationDetails{}.succeeded=false
| rename properties.* as *
| bucket span=5m _time
| stats dc(userPrincipalName) AS unique_accounts values(userPrincipalName) as userPrincipalName by _time, ipAddress
| eventstats avg(unique_accounts) as ip_avg, stdev(unique_accounts) as ip_std by ipAddress
| eval upperBound=(ip_avg+ip_std*3)
| eval isOutlier=if(unique_accounts > 10 and unique_accounts >= upperBound, 1,0)
| where isOutlier = 1
| `azure_ad_unusual_number_of_failed_authentications_from_ip_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub.
Specifically, this analytic leverages the SignInLogs log category.
known_false_positives: A source Ip failing to authenticate with multiple users is
not a common for legitimate behavior.
@@ -45,7 +47,7 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 60
message: Possible Password Spraying attack against Azure AD from source ip $body.properties.ipAddress$
message: Possible Password Spraying attack against Azure AD from source ip $ipAddress$
mitre_attack_id:
- T1586
- T1586.003
@@ -67,17 +69,17 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.properties.status.errorCode
- body.category
- body.properties.authenticationDetails
- body.properties.userPrincipalName
- body.properties.ipAddress
- properties.status.errorCode
- category
- properties.authenticationDetails
- properties.userPrincipalName
- properties.ipAddress
risk_score: 54
security_domain: access
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110.003/azuread/azure-audit.log
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110.003/password_spraying_azuread/azuread_signin.log
source: mscs:azure:eventhub
sourcetype: mscs:azure:eventhub
update_timestamp: true
@@ -2,7 +2,7 @@ name: Azure AD User Enabled And Password Reset
id: 1347b9e8-2daa-4a6f-be73-b421d3d9e268
version: 1
date: '2022-08-29'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies an Azure AD user enabling a previously
@@ -10,12 +10,12 @@ description: The following analytic identifies an Azure AD user enabling a previ
represent an adversary who has obtained administrative access and is trying to establish
a backdoor identity within an Azure AD tenant.
data_source: []
search: ' `azuread` (body.operationName="Enable account" OR body.operationName="Reset
password (by admin)" OR body.operationName="Update user") | transaction body.properties.targetResources{}.userPrincipalName
startsWith=(body.operationName="Enable account") endsWith=(body.operationName="Reset
password (by admin)") maxspan=2m | rename body.properties.* as * | rename targetResources{}.userPrincipalName
search: ' `azuread` (operationName="Enable account" OR operationName="Reset password (by admin)"
OR operationName="Update user") | transaction properties.targetResources{}.userPrincipalName
startsWith=(operationName="Enable account") endsWith=(operationName="Reset password (by admin)") maxspan=2m
| rename properties.* as * | rename targetResources{}.userPrincipalName
as userPrincipalName | rename initiatedBy.user.userPrincipalName as initiatedBy
| stats values(body.operationName) values(initiatedBy) by _time, userPrincipalName,
| stats values(operationName) values(initiatedBy) as initiatedBy by _time, userPrincipalName,
result | `azure_ad_user_enabled_and_password_reset_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
@@ -31,17 +31,17 @@ tags:
asset_type: Azure Active Directory
confidence: 90
impact: 50
message: A user account, $displayName$, was enabled and its password reset within
message: A user account, $userPrincipalName$, was enabled and its password reset within
2 minutes by $initiatedBy$
mitre_attack_id:
- T1098
observable:
- name: displayName
type: Other
- name: userPrincipalName
type: User Name
role:
- Victim
- name: initiatedBy
type: User
type: User Name
role:
- Attacker
product:
@@ -50,10 +50,10 @@ tags:
- Splunk Cloud
required_fields:
- _time
- body.operationName
- body.properties.targetResources{}.userPrincipalName
- body.properties.initiatedBy.user.userPrincipalName
- body.properties.result
- operationName
- properties.targetResources{}.userPrincipalName
- properties.initiatedBy.user.userPrincipalName
- properties.result
risk_score: 45
security_domain: identity
tests:
@@ -2,7 +2,7 @@ name: Azure AD User ImmutableId Attribute Updated
id: 0c0badad-4536-4a84-a561-5ff760f3c00e
version: 1
date: '2022-09-02'
author: Mauricio Velazco, Splunk
author: Mauricio Velazco, Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic identifies the modification of the SourceAnchor
@@ -20,12 +20,12 @@ description: The following analytic identifies the modification of the SourceAnc
to Azure AD impersonating any user and bypassing the requirement to have a valid
password and/or perform MFA.
data_source: []
search: ' `azuread` body.operationName="Update user" body.properties.targetResources{}.modifiedProperties{}.displayName=SourceAnchor
| rename body.properties.* as * | rename targetResources{}.userPrincipalName as
search: ' `azuread` operationName="Update user" properties.targetResources{}.modifiedProperties{}.displayName=SourceAnchor
| rename properties.* as * | rename targetResources{}.userPrincipalName as
userPrincipalName | rename initiatedBy.user.userPrincipalName as initiatedBy | rename
body.callerIpAddress as callerIpAddress | rename targetResources{}.modifiedProperties{}.newValue
as modifiedProperties | stats values(userPrincipalName) values(modifiedProperties)
by _time, initiatedBy, callerIpAddress, result, body.operationName | `azure_ad_user_immutableid_attribute_updated_filter`'
callerIpAddress as callerIpAddress | rename targetResources{}.modifiedProperties{}.newValue
as modifiedProperties | stats values(userPrincipalName) as userPrincipalName values(modifiedProperties)
by _time, initiatedBy, callerIpAddress, result, operationName | `azure_ad_user_immutableid_attribute_updated_filter`'
how_to_implement: You must install the latest version of Splunk Add-on for Microsoft
Cloud Services from Splunkbase(https://splunkbase.splunk.com/app/3110/#/details).
You must be ingesting Azure Active Directory events into your Splunk environment.
@@ -31,7 +31,7 @@ tags:
asset_type: AWS Instance
confidence: 60
impact: 70
message: User $user$ is modifying an instance $dest$ for the first time.
message: User $user$ is modifying an instance $object_id$ for the first time.
mitre_attack_id:
- T1078.004
- T1078
@@ -40,10 +40,6 @@ tags:
type: User
role:
- Attacker
- name: dest
type: Endpoint
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
@@ -59,7 +59,7 @@ tags:
type: IP Address
role:
- Attacker
- name: dest
- name: object
type: Endpoint
role:
- Victim
@@ -46,10 +46,10 @@ tags:
mitre_attack_id:
- T1530
observable:
- name: dest
type: Other
- name: remote_ip
type: IP Address
role:
- Other
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
@@ -35,10 +35,10 @@ tags:
mitre_attack_id:
- T1530
observable:
- name: dest
type: Other
- name: src_ip
type: IP Address
role:
- Other
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
@@ -17,9 +17,7 @@ description: The following analytic identifies multiple failed multi-factor auth
and APT29 have leveraged this technique to bypass multi-factor authentication controls
as reported by Mandiant and others.
data_source: []
search: ' `gws_reports_login` event.name=login_failure `gws_login_mfa_methods` | bucket
span=5m _time | stats dc(_raw) AS mfa_prompts values(user) by src_ip, login_challenge_method, _time
| where mfa_prompts >= 10 | `gcp_multiple_failed_mfa_requests_for_user_filter`'
search: "`gws_reports_login` event.name=login_failure `gws_login_mfa_methods` | bucket span=5m _time | stats dc(_raw) AS mfa_prompts values(user) AS user by src_ip, login_challenge_method, _time | where mfa_prompts >= 10 | `gcp_multiple_failed_mfa_requests_for_user_filter`"
how_to_implement: You must install the latest version of Splunk Add-on for Google
Workspace from Splunkbase (https://splunkbase.splunk.com/app/5556) which allows
Splunk administrators to collect Google Workspace event data in Splunk using Google
@@ -38,14 +38,10 @@ tags:
- T1048.003
- T1048
observable:
- name: source.address
type: User
- name: dest_domain
type: IP Address
role:
- Attacker
- name: destination{}.address
type: User
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
@@ -32,14 +32,14 @@ tags:
asset_type: GSuite
confidence: 50
impact: 50
message: tbd
message: Gsuite suspicious calendar invite sent by $email$
mitre_attack_id:
- T1566
observable:
- name: dest
type: Other
- name: email
type: Email Address
role:
- Other
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
@@ -36,11 +36,7 @@ tags:
- T1136.003
- T1136
observable:
- name: ActorIpAddress
type: IP Address
role:
- Attacker
- name: Actor.ID
- name: UserId
type: User
role:
- Attacker
+1 -5
View File
@@ -30,14 +30,10 @@ tags:
mitre_attack_id:
- T1556
observable:
- name: dest
type: Endpoint
role:
- Victim
- name: user
type: User
role:
- Attacker
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
@@ -14,7 +14,7 @@ description: This analytic is to detect a suspicious modification of the active
valid setup installer that creating or modifying this registry.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_value_name= "StubPath" Registry.registry_path = "*\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components*") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid Registry.dest Registry.user
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_value_name= "StubPath" Registry.registry_path = "*\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components*") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid Registry.dest Registry.user
| `drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `active_setup_registry_autostart_filter`'
@@ -43,6 +43,7 @@ tags:
- BITS Jobs
- DarkSide Ransomware
- Living Off The Land
- Flax Typhoon
asset_type: Endpoint
confidence: 70
impact: 70
@@ -38,6 +38,7 @@ tags:
- Living Off The Land
- ProxyNotShell
- CISA AA22-277A
- Flax Typhoon
asset_type: Endpoint
confidence: 100
impact: 90
@@ -45,6 +45,7 @@ tags:
- Living Off The Land
- Azorult
- Data Destruction
- Warzone RAT
asset_type: Endpoint
automated_detection_testing: passed
confidence: 50
@@ -26,6 +26,7 @@ tags:
analytic_story:
- IcedID
- Qakbot
- Warzone RAT
asset_type: Endpoint
confidence: 100
impact: 70
@@ -0,0 +1,63 @@
name: Detect Certify Command Line Arguments
id: e6d2dc61-a8b9-4b03-906c-da0ca75d71b8
version: 1
date: '2023-06-25'
author: Steven Dick
status: production
type: TTP
description: The following analytic identifies when the attacker tool Certify or Certipy are used to enumerate Active Directory Certificate Services (AD CS) environments. The default command line arguments of these tools are similar and perform near identical enumeration or exploitation functions.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process IN ("* find *","* auth *","* request *","* req *","* download *",) AND Processes.process IN ("* /vulnerable*","* /enrolleeSuppliesSubject *","* /json /outfile*","* /ca*", "* -username *","* -u *") by Processes.dest Processes.user Processes.parent_process Processes.process_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `detect_certify_command_line_arguments_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting logs with the process name, parent process, and command-line executions from your endpoints.
known_false_positives: Unknown
references:
- https://github.com/GhostPack/Certify
- https://github.com/ly4k/Certipy
- https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf
tags:
analytic_story:
- Windows Certificate Services
- Ingress Tool Transfer
asset_type: Endpoint
confidence: 90
impact: 100
message: Certify/Certipy arguments detected on $dest$.
mitre_attack_id:
- T1649
- T1105
observable:
- name: dest
type: Hostname
role:
- Victim
- name: process
type: Process
role:
- Attacker
- name: process_name
type: Process Name
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- _time
- Processes.dest
- Processes.user
- Processes.parent_process
- Processes.process_name
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 90
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1649/certify_abuse/certify_esc1_abuse_sysmon.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
update_timestamp: true
@@ -0,0 +1,69 @@
name: Detect Certify With PowerShell Script Block Logging
id: f533ca6c-9440-4686-80cb-7f294c07812a
version: 1
date: '2023-06-25'
author: Steven Dick
status: production
type: TTP
description: The following analytic identifies when the attacker tool Certify is used through an in-memory PowerShell function to enumerate Active Directory Certificate Services (AD CS) environments. The default command line arguments for the binary version of this tools are similar to PowerShell calls and perform near identical enumeration or exploitation functions.
data_source:
- Powershell 4104
search: '`powershell` EventCode=4104 (ScriptBlockText IN ("*find *") AND ScriptBlockText IN ("* /vulnerable*","* -vulnerable*","* /enrolleeSuppliesSubject *","* /json /outfile*")) OR (ScriptBlockText IN (,"*auth *","*req *",) AND ScriptBlockText IN ("* -ca *","* -username *","* -u *")) OR (ScriptBlockText IN ("*request *","*download *") AND ScriptBlockText IN ("* /ca:*"))
| stats count min(_time) as firstTime max(_time) as lastTime list(ScriptBlockText) as command Values(OpCode) as reason values(Path) as file_name values(UserID) as user by _time Computer EventCode
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| eval file_name = case(isnotnull(file_name),file_name,true(),"unknown")
| eval signature = substr(command,0,256)
| rename Computer as dest,EventCode as signature_id
| `detect_certify_with_powershell_script_block_logging_filter`'
how_to_implement: To successfully implement this analytic, you will need to enable PowerShell Script Block Logging on some or all endpoints. Additional setup here https://docs.splunk.com/Documentation/UBA/5.0.4.1/GetDataIn/AddPowerShell#Configure_module_logging_for_PowerShell..
known_false_positives: Unknown, partial script block matches.
references:
- https://github.com/GhostPack/Certify
- https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf
tags:
analytic_story:
- Windows Certificate Services
- Malicious PowerShell
asset_type: Endpoint
confidence: 90
impact: 100
message: Certify arguments through PowerShell detected on $dest$.
mitre_attack_id:
- T1649
- T1059
- T1059.001
observable:
- name: dest
type: Hostname
role:
- Victim
- name: user
type: User Name
role:
- Victim
- name: command
type: Process
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- _time
- ScriptBlockText
- OpCode
- Path
- user
- Computer
- EventCode
risk_score: 90
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1649/certify_abuse/certify_esc1_abuse_powershell.log
source: XmlWinEventLog:Microsoft-Windows-PowerShell/Operational
sourcetype: xmlwineventlog
update_timestamp: true
@@ -44,6 +44,7 @@ tags:
- BlackByte Ransomware
- CISA AA22-264A
- Citrix ShareFile RCE CVE-2023-24489
- Flax Typhoon
asset_type: Endpoint
confidence: 80
impact: 100
@@ -5,7 +5,7 @@ date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
description: this search is to identify modification in registry to disable ETW windows
description: This search is to identify modification in registry to disable ETW windows
feature to evade detections. This technique was seen in several ransomware, RAT
and even APT to impaire defenses of the compromise machine and to be able to execute
payload with minimal alert as much as possible.
@@ -13,7 +13,7 @@ data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\.NETFramework\\ETWEnabled"
Registry.registry_value_data = "0x00000000") BY _time span=1h Registry.registry_path
Registry.registry_value_data = "0x00000000") BY _time span=1h Registry.dest Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_etw_through_registry_filter`'
@@ -32,7 +32,7 @@ tags:
asset_type: Endpoint
confidence: 50
impact: 50
message: Disable ETW Through Registry
message: Disable ETW Through Registry on $dest$
mitre_attack_id:
- T1562.001
- T1562
@@ -35,6 +35,7 @@ tags:
- Suspicious Rundll32 Activity
- Data Destruction
- Volt Typhoon
- Flax Typhoon
asset_type: Endpoint
confidence: 100
impact: 80
@@ -61,6 +61,7 @@ tags:
- Trickbot
- Amadey
- BlackByte Ransomware
- Warzone RAT
asset_type: Endpoint
confidence: 50
impact: 40
@@ -30,6 +30,7 @@ tags:
- XMRig
- Windows Registry Abuse
- Azorult
- Warzone RAT
asset_type: Endpoint
confidence: 80
impact: 90
@@ -33,6 +33,7 @@ tags:
- AgentTesla
- RedLine Stealer
- FIN7
- Warzone RAT
asset_type: Endpoint
confidence: 70
impact: 50
@@ -39,6 +39,7 @@ tags:
- FIN7
- AgentTesla
- CVE-2023-21716 Word RTF Heap Corruption
- Warzone RAT
asset_type: Endpoint
confidence: 80
impact: 80
@@ -44,6 +44,7 @@ tags:
- AgentTesla
- CVE-2023-21716 Word RTF Heap Corruption
- CVE-2023-36884 Office and Windows HTML RCE Vulnerability
- Warzone RAT
asset_type: Endpoint
confidence: 80
impact: 70
@@ -31,6 +31,7 @@ tags:
- Data Destruction
- Hermetic Wiper
- Windows Privilege Escalation
- Flax Typhoon
asset_type: Endpoint
confidence: 90
impact: 80
@@ -34,6 +34,7 @@ tags:
- Data Destruction
- WhisperGate
- BlackByte Ransomware
- Warzone RAT
asset_type: Endpoint
confidence: 60
impact: 60
@@ -59,6 +59,7 @@ tags:
- Malicious PowerShell
- Hermetic Wiper
- Data Destruction
- Flax Typhoon
asset_type: Endpoint
confidence: 100
impact: 80
@@ -34,6 +34,7 @@ tags:
- Windows Defense Evasion Tactics
- Data Destruction
- WhisperGate
- Warzone RAT
asset_type: Endpoint
confidence: 80
impact: 80
@@ -68,6 +68,7 @@ tags:
- Amadey
- Sneaky Active Directory Persistence Tricks
- BlackByte Ransomware
- Warzone RAT
asset_type: Endpoint
confidence: 95
impact: 80
@@ -1,7 +1,7 @@
name: Suspicious Copy on System32
id: ce633e56-25b2-11ec-9e76-acde48001122
version: 1
date: '2021-10-05'
date: '2023-08-17'
author: Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,14 +12,18 @@ description: This analytic is to detect a suspicious copy of file from systemroo
but this is really a anomaly that needs to be check within the network.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name
IN("cmd.exe", "powershell*","pwsh.exe", "sqlps.exe", "sqltoolsps.exe", "powershell_ise.exe")
AND `process_copy` AND Processes.process IN("*\\Windows\\System32\*", "*\\Windows\\SysWow64\\*")
AND Processes.process = "*copy*" by Processes.dest Processes.user Processes.parent_process_name
Processes.process_name Processes.process Processes.process_id Processes.parent_process_id
| `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`|
`suspicious_copy_on_system32_filter`'
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes
where Processes.parent_process_name IN("cmd.exe", "powershell*","pwsh.exe", "sqlps.exe", "sqltoolsps.exe", "powershell_ise.exe")
AND `process_copy` AND Processes.process IN("*\\Windows\\System32\\*", "*\\Windows\\SysWow64\\*")
AND Processes.process = "*copy*"
by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.parent_process_id temp
| `drop_dm_object_name(Processes)`
| eval splitted_commandline=split(process," ")
| eval first_cmdline=lower(mvindex(splitted_commandline,0))
| where NOT LIKE(first_cmdline,"%\\windows\\system32\\%") AND NOT LIKE(first_cmdline,"%\\windows\\syswow64\\%")
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
|`suspicious_copy_on_system32_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information
on process that include the name of the process responsible for the changes from
your endpoints into the `Endpoint` datamodel in the `Processes` node. In addition,
@@ -62,6 +62,7 @@ tags:
- Trickbot
- Amadey
- BlackByte Ransomware
- Warzone RAT
asset_type: Endpoint
confidence: 50
impact: 70
@@ -39,6 +39,7 @@ tags:
- Ransomware
- Masquerading - Rename System Utilities
- Qakbot
- Windows Error Reporting Service Elevation of Privilege Vulnerability
asset_type: Endpoint
confidence: 50
impact: 60
@@ -32,13 +32,13 @@ tags:
asset_type: Endpoint
confidence: 60
impact: 70
message: Unusually long command line $Processes.process_name$ on $dest$
message: Unusually long command line $process_name$ on $dest$
observable:
- name: dest
type: Endpoint
role:
- Victim
- name: Processes.process_name
- name: process_name
type: Process
role:
- Attacker
@@ -44,6 +44,7 @@ tags:
- HAFNIUM Group
- BlackByte Ransomware
- CISA AA22-264A
- Flax Typhoon
asset_type: Endpoint
confidence: 80
cve:
@@ -0,0 +1,76 @@
name: Windows Bypass UAC via Pkgmgr Tool
id: cce58e2c-988a-4319-9390-0daa9eefa3cd
version: 1
date: '2023-07-26'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
data_source:
- Sysmon Event ID 1
description: The following analytic identifies a potentially suspicious execution of the 'pkgmgr' process involving the use of an XML input file for package management.
The 'pkgmgr' process, though deprecated in modern Windows systems, was historically used for managing packages. The presence of an XML input file raises concerns about the nature of the executed command and its potential impact on the system.
Due to the deprecated status of 'pkgmgr' and the involvement of an XML file, this activity warrants careful investigation. XML files are commonly used for configuration and data exchange, making it crucial to ascertain the intentions and legitimacy of the command.
To ensure system security, it is recommended to use up-to-date package management utilities, such as DISM or PowerShell's PackageManagement module, and exercise caution when executing commands involving potentially sensitive operations or files.
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes
where Processes.process_name = pkgmgr.exe Processes.process = "*.xml*" NOT(Processes.parent_process_path IN("*:\\windows\\system32\\*", "*:\\windows\\syswow64\\*", "*:\\Program Files*"))
by Processes.dest Processes.user Processes.parent_process_name Processes.parent_process_path Processes.process_name Processes.process Processes.process_id Processes.parent_process_id Processes.original_file_name
| `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_bypass_uac_via_pkgmgr_tool_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information
on process that include the name of the process responsible for the changes from
your endpoints into the `Endpoint` datamodel in the `Processes` node. In addition,
confirm the latest CIM App 4.20 or higher is installed and the latest TA for the
endpoint product.
known_false_positives: False positives may be present on recent Windows Operating
Systems. Filtering may be required based on process_name. In addition, look for
non-standard, unsigned, module loads into LSASS. If query is too noisy, modify by
adding Endpoint.processes process_name to query to identify the process making the
modification.
references:
- https://asec.ahnlab.com/en/17692/
- https://www.blackberry.com/us/en/solutions/endpoint-security/ransomware-protection/warzone#:~:text=Warzone%20RAT%20(AKA%20Ave%20Maria)%20is%20a%20remote%20access%20trojan,is%20as%20an%20information%20stealer.
tags:
analytic_story:
- Warzone RAT
asset_type: Endpoint
confidence: 30
impact: 30
message: A pkgmgr.exe executed with package manager xml input file on $dest$
mitre_attack_id:
- T1548.002
observable:
- name: user
type: User
role:
- Victim
- name: dest
type: Endpoint
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 9
required_fields:
- _time
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.original_file_name
- Processes.process_name
- Processes.process
- Processes.process_id
- Processes.parent_process_path
- Processes.process_path
- Processes.parent_process_id
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/warzone_rat/pkgmgr_uac_bypass/pkgmgr_create_file.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
@@ -29,6 +29,7 @@ tags:
analytic_story:
- RedLine Stealer
- Amadey
- Warzone RAT
asset_type: Endpoint
confidence: 50
impact: 50
@@ -29,6 +29,7 @@ tags:
analytic_story:
- RedLine Stealer
- Amadey
- Warzone RAT
asset_type: Endpoint
confidence: 70
impact: 70
@@ -33,6 +33,7 @@ tags:
- Windows Defense Evasion Tactics
- Azorult
- Qakbot
- Warzone RAT
asset_type: Endpoint
confidence: 80
impact: 80
@@ -40,6 +40,7 @@ tags:
- IcedID
- Azorult
- Remcos
- Warzone RAT
asset_type: Endpoint
confidence: 50
impact: 80
@@ -0,0 +1,62 @@
name: Windows Mark Of The Web Bypass
id: 8ca13343-7405-4916-a2d1-ae34ce0c28ae
version: 1
date: '2023-08-14'
author: Teoderick Contreras, Splunk
status: production
type: TTP
data_source:
- Sysmon Event ID 23
description: The following analytic identifies a suspicious process that delete mark-of-the-web data stream.
This technique has been observed in various instances of malware and adversarial activities aimed at circumventing
security restrictions within the Windows Operating System, particularly pertaining to files downloaded from the internet.
An example of this scenario is demonstrated by Ave Maria RAT, which attempts to delete this data stream as a means to evade such restrictions.
search: '`sysmon` EventCode=23 TargetFilename = "*:Zone.Identifier"
| stats min(_time) as firstTime max(_time) as lastTime count by user EventCode Image TargetFilename ProcessID Computer | rename Computer as dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_mark_of_the_web_bypass_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting logs with the deleted target file name,
process name and process id from your endpoints. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA.
known_false_positives: unknown
references:
- https://attack.mitre.org/techniques/T1553/005/
- https://github.com/nmantani/PS-MOTW#remove-motwps1
tags:
analytic_story:
- Warzone RAT
asset_type: Endpoint
confidence: 70
impact: 70
message: A mark-of-the-web data stream is deleted on $dest$
mitre_attack_id:
- T1553.005
observable:
- name: user
type: User
role:
- Victim
- name: dest
type: Endpoint
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 49
required_fields:
- EventCode
- TargetFilename
- Computer
- user
- Image
- ProcessID
- _time
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1553.005/mark_of_the_web_bypass/possible-motw-deletion.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
@@ -38,6 +38,7 @@ tags:
- CISA AA22-320A
- Sandworm Tools
- Volt Typhoon
- Flax Typhoon
asset_type: Endpoint
confidence: 100
impact: 100
@@ -0,0 +1,65 @@
name: Windows Modify Registry MaxConnectionPerServer
id: 064cd09f-1ff4-4823-97e0-45c2f5b087ec
version: 1
date: '2023-07-26'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
data_source:
- Sysmon EventID 12
- Sysmon EventID 13
- Sysmon EventID 14
description: The following analytic identifies a suspicious registry modification of Windows max connection per server configuration.
This particular technique has been observed in various threat actors, adversaries, and even in malware such as the Warzone (Ave Maria) RAT.
By altering the max connection per server setting in the Windows registry, attackers can potentially increase the number of concurrent connections
allowed to a remote server. This modification could be exploited for various malicious purposes, including facilitating distributed denial-of-service (DDoS) attacks or enabling more effective lateral movement within a compromised network.
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Registry
where (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\MaxConnectionsPerServer*" OR Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\MaxConnectionsPer1_0Server*") Registry.registry_value_data = "0x0000000a" by Registry.registry_key_name Registry.user Registry.registry_path Registry.registry_value_data Registry.action Registry.dest
| `drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_modify_registry_maxconnectionperserver_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information
on process that include the name of the process responsible for the changes from
your endpoints into the `Endpoint` datamodel in the `Registry` node. Also make sure
that this registry was included in your config files ex. sysmon config to be monitored.
known_false_positives: Administrators may enable or disable this feature that may
cause some false positive.
references:
- https://asec.ahnlab.com/en/17692/
- https://www.blackberry.com/us/en/solutions/endpoint-security/ransomware-protection/warzone#:~:text=Warzone%20RAT%20(AKA%20Ave%20Maria)%20is%20a%20remote%20access%20trojan,is%20as%20an%20information%20stealer.
tags:
analytic_story:
- Warzone RAT
asset_type: Endpoint
confidence: 50
impact: 50
message: A registry modification in max connection per server configuration in $dest$
mitre_attack_id:
- T1112
observable:
- name: dest
type: Endpoint
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 25
required_fields:
- _time
- Registry.registry_key_name
- Registry.registry_path
- Registry.user
- Registry.dest
- Registry.registry_value_name
- Registry.action
- Registry.registry_value_data
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/warzone_rat/maxconnectionperserver/registry_event.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
@@ -40,6 +40,7 @@ tags:
- IcedID
- Azorult
- Remcos
- Warzone RAT
asset_type: Endpoint
confidence: 80
impact: 50
@@ -32,6 +32,7 @@ tags:
analytic_story:
- Qakbot
- Graceful Wipe Out Attack
- Warzone RAT
asset_type: 80
confidence: 80
impact: 80
@@ -32,6 +32,7 @@ references:
tags:
analytic_story:
- Qakbot
- Windows Error Reporting Service Elevation of Privilege Vulnerability
asset_type: Endpoint
confidence: 70
impact: 80
@@ -33,6 +33,7 @@ tags:
- Brute Ratel C4
- Qakbot
- Snake Malware
- Flax Typhoon
asset_type: Endpoint
confidence: 80
impact: 70
@@ -0,0 +1,58 @@
name: Windows SQL Spawning CertUtil
id: dfc18a5a-946e-44ee-a373-c0f60d06e676
version: 1
date: '2023-08-25'
author: Michael Haag, Splunk
status: experimental
type: TTP
data_source:
- Sysmon Event ID 1
description: 'The following analytic detects the use of certutil to download software, a behavior exhibited by the threat actor Flax Typhoon. This actor deploys a VPN connection by downloading an executable file for SoftEther VPN from their network infrastructure using one of several LOLBins, including certutil. The actor then uses the Service Control Manager (SCM) to create a Windows service that launches the VPN connection automatically when the system starts. This behavior allows the actor to monitor the availability of the compromised system and establish an RDP connection. This analytic identifies this behavior by monitoring for the use of certutil in conjunction with the downloading of software. This behavior is worth identifying for a SOC as it indicates a potential compromise of the system and the establishment of a persistent threat. If a true positive is found, it suggests an attacker has gained access to the environment and is attempting to maintain that access, potentially leading to further malicious activities such as data theft or ransomware attacks. Be aware of potential false positives - legitimate uses of certutil in your environment may cause benign activities to be flagged. Upon triage, review the command executed and look for concurrent processes to identify the attack source. This approach helps analysts detect potential threats earlier and mitigate the risks.'
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name IN ("sqlservr.exe", "sqlagent.exe", "sqlps.exe", "launchpad.exe", "sqldumper.exe") `process_certutil` (Processes.process=*urlcache* Processes.process=*split*) OR Processes.process=*urlcache* by Processes.dest Processes.user Processes.parent_process Processes.parent_process_name Processes.process_name Processes.process Processes.process_id Processes.original_file_name Processes.parent_process_id
| `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_sql_spawning_certutil_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. In addition, confirm the latest CIM App 4.20 or higher is installed and the latest TA for the endpoint product.
known_false_positives: The occurrence of false positives should be minimal, given that the SQL agent does not typically download software using CertUtil.
references:
- https://www.microsoft.com/en-us/security/blog/2023/08/24/flax-typhoon-using-legitimate-software-to-quietly-access-taiwanese-organizations/
tags:
analytic_story:
- Flax Typhoon
asset_type: Endpoint
atomic_guid: []
confidence: 100
impact: 90
message: '$process_name$ was launched on $dest$ by $user$. This behavior is uncommon with the SQL process identified.'
mitre_attack_id:
- T1105
observable:
- name: dest
type: Endpoint
role:
- Victim
- name: user
type: User
role:
- Victim
- name: process_name
type: Process
role:
- Target
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 90
required_fields:
- Processes.dest
- Processes.user
- Processes.parent_process
- Processes.parent_process_name
- Processes.process_name
- Processes.process
- Processes.process_id
- Processes.original_file_name
- Processes.parent_process_id
security_domain: endpoint
@@ -0,0 +1,97 @@
name: Windows Steal Authentication Certificates - ESC1 Authentication
id: f0306acf-a6ab-437a-bbc6-8628f8d5c97e
version: 1
date: '2023-05-25'
author: Steven Dick
status: production
type: TTP
description: The following analytic identifies when a suspicious certificate is granted using Active Directory Certificate Services (AD CS) with a Subject Alternative Name (SAN) and then immediately used for authentication. This action alone may not be malicious, however improperly configured certificate templates can be abused to permit privilege escalation and environment compromise due to over permissive settings (AD CS ESC1).
data_source:
- Windows Security 4887
- Windows Security 4768
search: >-
`wineventlog_security` EventCode IN (4887) Attributes="*SAN:*upn*" Attributes="*CertificateTemplate:*"
| stats count min(_time) as firstTime max(_time) as lastTime values(name) as name values(status) as status values(Subject) as ssl_subject values(SubjectKeyIdentifier) as ssl_hash by Computer, EventCode, Requester, Attributes, RequestId
| rex field=Attributes "(?i)CertificateTemplate:(?<object>[^\r\n]+)"
| rex field=Attributes "(?i)ccm:(?<req_src>[^\r\n]+)"
| rex max_match=10 field=Attributes "(?i)(upn=(?<req_user_1>[^\r\n&]+))"
| rex max_match=10 field=Attributes "(?i)(dns=(?<req_dest_1>[^\r\n&]+))"
| rex field=Requester "(.+\\\\)?(?<src_user>[^\r\n]+)"
| rename Attributes as object_attrs, EventCode as signature_id, name as signature, RequestId as ssl_serial, Requester as ssl_subject_common_name
| eval user = lower(coalesce(req_user_1,req_user_2))
| join user
[
| search `wineventlog_security` EventCode=4768 CertThumbprint=*
| rename TargetUserName as user, Computer as auth_dest, IpAddress as auth_src
| fields auth_src,auth_dest,user
]
| eval src = upper(coalesce(auth_src,req_src)), dest = upper(coalesce(auth_dest,req_dest_1,req_dest_2)), risk_score = 90
| eval flavor_text = case(signature_id=="4887", "User account [".'user'."] authenticated after a suspicious certificate was issued for it by [".'src_user'."] using certificate request ID: ".'ssl_serial')
| fields - req_* auth_*
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_steal_authentication_certificates___esc1_authentication_filter`
how_to_implement: To implement this analytic, enhanced Audit Logging must be enabled on AD CS and within Group Policy Management for CS server. See Page 115 of first reference. Recommend throttle correlation by RequestId/ssl_serial at minimum.
known_false_positives: False positives may be generated in environments where administrative users or processes are allowed to generate certificates with Subject Alternative Names for authentication. Sources or templates used in these processes may need to be tuned out for accurate function.
references:
- https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf
- https://github.com/ly4k/Certipy#esc1
- https://pentestlaboratories.com/2021/11/08/threat-hunting-certificate-account-persistence/
tags:
analytic_story:
- Windows Certificate Services
asset_type: Endpoint
confidence: 90
impact: 100
message: Possible AD CS ESC1 authentication on $dest$
mitre_attack_id:
- T1649
- T1550
observable:
- name: src
type: Hostname
role:
- Victim
- name: dest
type: Hostname
role:
- Victim
- name: src_user
type: User Name
role:
- Victim
- name: user
type: User Name
role:
- Victim
- name: ssl_hash
type: Other
role:
- Attacker
- name: ssl_serial
type: Other
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- _time
- Attributes
- Computer
- EventCode
- Requester
- RequestId
- TargetUserName
- Computer
- IpAddress
risk_score: 90
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1649/certify_abuse/certify_esc1_abuse_winsecurity.log
source: XmlWinEventLog:Security
sourcetype: XmlWinEventLog
update_timestamp: true
@@ -0,0 +1,86 @@
name: Windows Suspect Process With Authentication Traffic
id: 953322db-128a-4ce9-8e89-56e039e33d98
version: 1
date: '2023-06-13'
author: Steven Dick
status: production
type: Anomaly
description: >-
This analytic identifies executables running from public or temporary locations that are communicating over windows domain
authentication ports/protocol. The ports/protocols include LDAP(389), LDAPS(636), and Kerberos(88). Authentications from applications
running from user controlled locations may not be malicious, however actors often attempt to access domain resources after initial
compromise from executables in these locations.
data_source:
- Sysmon Event ID 3
search: >-
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime values(All_Traffic.process_id) as process_id
from datamodel=Network_Traffic.All_Traffic where All_Traffic.dest_port IN ("88","389","636")
AND All_Traffic.app IN ("*\\users\\*", "*\\programdata\\*", "*\\temp\\*", "*\\Windows\\Tasks\\*", "*\\appdata\\*", "*\\perflogs\\*")
by All_Traffic.app,All_Traffic.src,All_Traffic.src_ip,All_Traffic.user,All_Traffic.dest,All_Traffic.dest_ip,All_Traffic.dest_port
| `drop_dm_object_name(All_Traffic)`
| rex field=app ".*\\\(?<process_name>.*)$"
| rename app as process
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_suspect_process_with_authentication_traffic_filter`
how_to_implement: >-
To implement this analytic, Sysmon should be installed in the environment and generating network events for
userland and/or known public writable locations.
known_false_positives: >-
Known applications running from these locations for legitimate purposes. Targeting only kerberos (port 88)
may significantly reduce noise.
references:
- Most attacker toolkits offer some degree of interaction with AD/LDAP.
- https://attack.mitre.org/techniques/T1069/002/
- https://book.hacktricks.xyz/network-services-pentesting/pentesting-kerberos-88
tags:
analytic_story:
- Active Directory Discovery
asset_type: Endpoint
confidence: 50
impact: 50
message: The process $process_name$ on $src$ has been communicating with $dest$ on $dest_port$.
mitre_attack_id:
- T1087
- T1087.002
- T1204
- T1204.002
observable:
- name: src
type: Hostname
role:
- Victim
- name: dest
type: Hostname
role:
- Victim
- name: user
type: User Name
role:
- Victim
- name: process_name
type: Other
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- _time
- All_Traffic.app
- All_Traffic.src
- All_Traffic.src_ip
- All_Traffic.user
- All_Traffic.dest
- All_Traffic.dest_ip
- All_Traffic.dest_port
risk_score: 25
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1649/certify_abuse/certify_esc1_abuse_sysmon.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
update_timestamp: true
@@ -0,0 +1,68 @@
name: Windows Unsigned DLL Side-Loading
id: 5a83ce44-8e0f-4786-a775-8249a525c879
version: 1
date: '2023-07-26'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
data_source:
- Sysmon Event ID 7
description: This analysis focuses on detecting potentially malicious unsigned DLLs created in either the c:\windows\system32 or c:\windows\syswow64 folders.
This particular technique was observed in the context of the Warzone (Ave Maria) RAT, where it employed a method known as DLL hijacking (dll-side-loading)
by dropping the "dismcore.dll" to achieve privilege escalation.
DLL hijacking is a stealthy attack technique used by cybercriminals to exploit the way Windows searches and loads DLLs. By placing a malicious DLL with the
same name as one that a legitimate application is expected to load, the attacker can gain unauthorized access and execute malicious code.
In the case of Warzone RAT (Ave Maria), the dropped "dismcore.dll" was intended to deceive the system into loading the rogue DLL instead of the legitimate version,
thereby granting the malware elevated privileges and enabling further compromise of the target system.
Detecting such suspicious DLLs is crucial in preventing privilege escalation attacks and other potential security breaches. Regular security assessments, thorough monitoring,
and implementing security best practices are essential in safeguarding systems from such threats.
search: '`sysmon` EventCode=7 Signed=false OriginalFileName = "-" SignatureStatus="unavailable" ImageLoaded IN ("*:\\windows\\system32\\*", "*:\\windows\\syswow64\\*")
| stats count min(_time) as firstTime max(_time) as lastTime by Image ImageLoaded Signed SignatureStatus OriginalFileName process_name Computer EventCode ProcessId Hashes IMPHASH | rename Computer as dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_unsigned_dll_side_loading_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting logs with the process name and imageloaded executions from your endpoints.
If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA.
known_false_positives: It is possible some Administrative utilities will load dismcore.dll outside of normal system paths, filter as needed.
references:
- https://asec.ahnlab.com/en/17692/
- https://www.blackberry.com/us/en/solutions/endpoint-security/ransomware-protection/warzone#:~:text=Warzone%20RAT%20(AKA%20Ave%20Maria)%20is%20a%20remote%20access%20trojan,is%20as%20an%20information%20stealer.
tags:
analytic_story:
- Warzone RAT
asset_type: Endpoint
confidence: 70
impact: 70
message: An unsigned dll module was loaded on $dest$
mitre_attack_id:
- T1574.002
observable:
- name: dest
type: Endpoint
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 49
required_fields:
- _time
- Image
- ImageLoaded
- Signed
- SignatureStatus
- OriginalFileName
- process_name
- Computer
- EventCode
- ProcessId
- Hashes
- IMPHASH
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/warzone_rat/unsigned_dll_loaded/loaded_unsigned_dll.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
@@ -40,6 +40,7 @@ tags:
- Ryuk Ransomware
- CISA AA22-257A
- Scheduled Tasks
- Windows Error Reporting Service Elevation of Privilege Vulnerability
asset_type: Endpoint
confidence: 100
impact: 70
@@ -0,0 +1,71 @@
name: WinRAR Spawning Shell Application
id: d2f36034-37fa-4bd4-8801-26807c15540f
version: 1
date: '2023-08-29'
author: Michael Haag, Splunk
status: production
type: TTP
data_source:
- Sysmon Event ID 1
description: The following analytic detects the execution of Windows shell processes initiated by WinRAR, specifically looking for instances where WinRAR spawns processes like "cmd.exe", "powershell.exe", "certutil.exe", "mshta.exe", or "bitsadmin.exe". This behavior is worth identifying for a Security Operations Center (SOC) because it is indicative of a spoofing attack exploit, such as the one associated with WinRAR CVE-2023-38831. Cybercriminals exploited this vulnerability to craft ZIP archives with spoofed extensions, hiding the launch of malicious scripts within an archive. When a victim opened the specially crafted archive, it executed the malware, leading to unauthorized access to their broker accounts and enabling the cybercriminals to perform illicit financial transactions and withdraw funds. If a true positive is found, it suggests that an attacker has successfully exploited the vulnerability to execute malicious scripts, leading to unauthorized access, financial loss, and potentially the delivery of additional malicious payloads. The impact of the attack could be severe, involving financial loss, unauthorized access to sensitive accounts, and the potential for further malicious activity such as data theft or ransomware attacks.
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime from datamodel=Endpoint.Processes where Processes.parent_process_name=winrar.exe `windows_shells` OR
Processes.process_name IN ("certutil.exe","mshta.exe","bitsadmin.exe")
by Processes.dest Processes.user Processes.parent_process_name Processes.parent_process Processes.process_name
Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `winrar_spawning_shell_application_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Processes` node. In addition, confirm the latest CIM App 4.20 or higher is installed and the latest TA for the endpoint product.
known_false_positives: Be aware of potential false positives - legitimate uses of WinRAR and the listed processes in your environment may cause benign activities to be flagged. Upon triage, review the destination, user, parent process, and process name involved in the flagged activity. Capture and inspect any relevant on-disk artifacts, and look for concurrent processes to identify the attack source. This approach helps analysts detect potential threats earlier and mitigate the risks.
references:
- https://www.group-ib.com/blog/cve-2023-38831-winrar-zero-day/
- https://github.com/BoredHackerBlog/winrar_CVE-2023-38831_lazy_poc
- https://github.com/b1tg/CVE-2023-38831-winrar-exploit
tags:
analytic_story:
- WinRAR Spoofing Attack CVE-2023-38831
cve:
- CVE-2023-38831
asset_type: endpoint
atomic_guid: []
confidence: 70
impact: 100
message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ attempting to decode a file.
mitre_attack_id:
- T1105
observable:
- name: user
type: User
role:
- Victim
- name: dest
type: Hostname
role:
- Victim
- name: parent_process_name
type: Process
role:
- Parent Process
- name: process_name
type: Process
role:
- Child Process
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 70
required_fields:
- Processes.dest
- Processes.user
- Processes.parent_process
- Processes.process_name
- Processes.process
- Processes.process_id
- Processes.parent_process_id
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1105/atomic_red_team/winrar.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
@@ -0,0 +1,64 @@
name: Adobe ColdFusion Access Control Bypass
id: d6821c0b-fcdc-4c95-a77f-e10752fae41a
version: 1
date: '2023-08-23'
author: Michael Haag, Splunk
status: production
type: TTP
data_source: []
description: The following analytic detects potential exploitation attempts against Adobe ColdFusion vulnerabilities CVE-2023-29298 and CVE-2023-26360. These vulnerabilities pertain to an access control bypass and an arbitrary file read due to deserialization, respectively. By monitoring for requests to specific ColdFusion Administrator endpoints, especially those with an unexpected additional forward slash, the analytic identifies attempts to bypass access controls. Such behavior is crucial for a Security Operations Center (SOC) to identify, as exploitation can grant unauthorized access to ColdFusion administration endpoints, potentially leading to information leakage, brute force attacks, or further exploitation of other vulnerabilities. If a true positive is detected, it indicates a serious security breach where an attacker might have gained privileged access to the ColdFusion environment, potentially leading to data theft or other malicious activities. SOCs must be vigilant in monitoring for these patterns, ensuring timely detection and response to such threats, thus safeguarding the integrity and security of their ColdFusion deployments.
search: '| tstats count min(_time) as firstTime max(_time)
as lastTime from datamodel=Web where Web.url IN ("//restplay*", "//CFIDE/restplay*", "//CFIDE/administrator*", "//CFIDE/adminapi*", "//CFIDE/main*", "//CFIDE/componentutils*", "//CFIDE/wizards*", "//CFIDE/servermanager*","/restplay*", "/CFIDE/restplay*", "/CFIDE/administrator*", "/CFIDE/adminapi*", "/CFIDE/main*", "/CFIDE/componentutils*", "/CFIDE/wizards*", "/CFIDE/servermanager*") Web.status=200
by Web.http_user_agent, Web.status, Web.http_method, Web.url, Web.url_length, Web.src, Web.dest, sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `adobe_coldfusion_access_control_bypass_filter`'
how_to_implement: This detection requires the Web datamodel to be populated from a
supported Technology Add-On like Splunk for Apache, Splunk for Nginx, or Splunk
for Palo Alto.
known_false_positives: This analytic is limited to HTTP Status 200; adjust as necessary. False positives may occur if the URI path is IP-restricted or externally blocked. It's recommended to review the context of the alerts and adjust the analytic parameters to better fit the specific environment.
references:
- https://www.rapid7.com/blog/post/2023/07/11/cve-2023-29298-adobe-coldfusion-access-control-bypass/
tags:
cve:
- CVE-2023-29298
analytic_story:
- Adobe ColdFusion Arbitrary Code Execution CVE-2023-29298 CVE-2023-26360
asset_type: Network
atomic_guid: []
confidence: 50
impact: 90
message: Possible exploitation of CVE-2023-29298 against $dest$.
mitre_attack_id:
- T1190
observable:
- name: dest
type: Hostname
role:
- Victim
- name: src
type: IP Address
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 45
required_fields:
- _time
- Web.http_method
- Web.url
- Web.url_length
- Web.src
- Web.dest
- Web.http_user_agent
- Web.status
- sourcetype
security_domain: network
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/adobe/coldfusion_cve_2023_29298.log
source: suricata
sourcetype: suricata
@@ -0,0 +1,69 @@
name: Adobe ColdFusion Unauthenticated Arbitrary File Read
id: 695aceae-21db-4e7f-93ac-a52e39d02b93
version: 1
date: '2023-08-23'
author: Michael Haag, Splunk
status: production
type: TTP
data_source: []
description: The following analytic detects potential exploitation of the critical Adobe ColdFusion vulnerability, CVE-2023-26360. This flaw, rooted in the deserialization of untrusted data, enables Unauthenticated Arbitrary File Read. Exploitation often targets specific ColdFusion paths, especially related to CKEditor's file manager. \
Our analytic pinpoints exploitation by monitoring web requests to the "/cf_scripts/scripts/ajax/ckeditor/*" path. This focus helps differentiate malicious activity from standard ColdFusion traffic. For SOCs, detecting such attempts is vital given the vulnerability's CVSS score of 9.8, signaling its severity. Successful exploitation can lead to unauthorized data access, further attacks, or severe operational disruptions. \
If a true positive arises, it indicates an active breach attempt, potentially causing data theft, operational disruption, or reputational damage. In essence, this analytic provides a targeted approach to identify attempts exploiting a high-risk ColdFusion vulnerability. While false positives may occur from legitimate accesses, any alerts should be treated as high-priority, warranting immediate investigation to ensure security.
search: '| tstats count min(_time) as firstTime max(_time)
as lastTime from datamodel=Web where Web.url IN ("/cf_scripts/scripts/ajax/ckeditor/*") Web.status=200
by Web.http_user_agent, Web.status Web.http_method, Web.url, Web.url_length, Web.src, Web.dest, sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `adobe_coldfusion_unauthenticated_arbitrary_file_read_filter`'
how_to_implement: This detection requires the Web datamodel to be populated from a
supported Technology Add-On like Splunk for Apache, Splunk for Nginx, or Splunk
for Palo Alto.
known_false_positives: 'In the wild, we have observed three different types of attempts that could potentially trigger false positives if the HTTP status code is not in the query. Please check this github gist for the specific URIs : https://gist.github.com/patel-bhavin/d10830f3f375a2397233f6a4fe38d5c9 . These could be legitimate requests depending on the context of your organization. Therefore, it is recommended to modify the analytic as needed to suit your specific environment.'
references:
- https://www.rapid7.com/db/modules/auxiliary/gather/adobe_coldfusion_fileread_cve_2023_26360/
- https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2023/CVE-2023-26360.yaml
tags:
cve:
- CVE-2023-26360
analytic_story:
- Adobe ColdFusion Arbitrary Code Execution CVE-2023-29298 CVE-2023-26360
asset_type: Network
atomic_guid: []
confidence: 50
impact: 90
message: Possible exploitation of CVE-2023-26360 against $dest$.
mitre_attack_id:
- T1190
observable:
- name: dest
type: Hostname
role:
- Victim
- name: src
type: IP Address
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 45
required_fields:
- _time
- Web.http_method
- Web.url
- Web.url_length
- Web.src
- Web.dest
- Web.http_user_agent
- Web.status
- sourcetype
security_domain: network
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/adobe/cve_2023_29360_coldfusion.log
source: suricata
sourcetype: suricata
@@ -0,0 +1,60 @@
name: Ivanti EPMM Remote Unauthenticated API Access CVE-2023-35082
id: e03edeba-4942-470c-a664-27253f3ad351
version: 1
date: '2023-08-08'
author: Michael Haag, Splunk
status: production
type: TTP
data_source: []
description: 'The following analytic detects potential unauthorized access attempts exploiting CVE-2023-35082 within Ivantis software products. Initially assessed to affect only MobileIron Core versions up to 11.2, further insights revealed its influence extending to Ivanti Endpoint Manager Mobile (EPMM) versions 11.10, 11.9, 11.8, and MobileIron Core 11.7 and below. The vulnerability facilitates unauthorized API access via the specific URI path /mifs/asfV3/api/v2/. The analytic identifies this behavior by monitoring web access logs for this URI pattern coupled with a HTTP 200 response code, signifying successful unauthorized access. \
Such behavior is imperative for a Security Operations Center (SOC) to recognize, as it highlights potential security breaches which, if not addressed, could lead to unauthorized data access, system modifications, or further exploitation. In the event of a true positive, the implications are severe: an attacker might have gained unbridled access to sensitive organizational data or could modify systems maliciously. Be vigilant of potential false positives; benign activities might occasionally match the pattern. During triage, closely scrutinize the source of the access request and its subsequent actions. This analytic aids analysts in early threat detection, allowing for proactive risk mitigation.'
search: '| tstats count min(_time) as firstTime max(_time)
as lastTime from datamodel=Web where Web.url IN ("/mifs/asfV3/api/v2/*") Web.status=200
by Web.http_user_agent, Web.status Web.http_method, Web.url, Web.url_length, Web.src, Web.dest, sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `ivanti_epmm_remote_unauthenticated_api_access_cve_2023_35082_filter`'
how_to_implement: To implement this analytic, a network product similar to Suricata or Palo Alto needs to be mapped to the Web datamodel. Modify accordingly to work with your products.
known_false_positives: Similar to CVE-2023-35078, the path for exploitation indicates that status=200 is required for successful exploitation of the vulnerability. False positives may be present if status=200 is removed from the search. If it is removed,then the search also alert on status=301 and status=404 which indicates unsuccessful exploitation attempts. Analysts may find it useful to hunt for these status codes as well, but it is likely to produce a significant number of alerts as this is a widespread vulnerability.
references:
- https://forums.ivanti.com/s/article/CVE-2023-35082-Remote-Unauthenticated-API-Access-Vulnerability-in-MobileIron-Core-11-2-and-older?language=en_US
- https://github.com/vchan-in/CVE-2023-35078-Exploit-POC/blob/main/cve_2023_35078_poc.py
- https://www.rapid7.com/blog/post/2023/08/02/cve-2023-35082-mobileiron-core-unauthenticated-api-access-vulnerability/
tags:
analytic_story:
- Ivanti EPMM Remote Unauthenticated Access
asset_type: Web Server
cve:
- CVE-2023-35082
atomic_guid: []
confidence: 80
impact: 80
message: Potential CVE-2023-35082 against an Ivanti EPMM appliance on $dest$.
mitre_attack_id:
- T1190
- T1133
observable:
- name: dest
type: Hostname
role:
- Victim
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 64
required_fields:
- _time
- Web.http_method
- Web.url
- Web.url_length
- Web.src
- Web.dest
security_domain: network
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/ivanti/suricata_ivanti_CVE202335082.log
source: suricata
sourcetype: suricata
@@ -0,0 +1,63 @@
name: Ivanti Sentry Authentication Bypass
id: b8e0d1cf-e6a8-4d46-a5ae-aebe18ead8f8
version: 1
date: '2023-08-24'
author: Michael Haag, Splunk
status: production
type: TTP
data_source: []
description: This analytic is designed to detect unauthenticated access to the System Manager Portal in Ivanti Sentry, formerly known as MobileIron Sentry. The vulnerability, designated as CVE-2023-38035, affects all supported versions 9.18, 9.17, and 9.16, as well as older versions. The analytic works by monitoring for changes in the configuration of Sentry and the underlying operating system. Such changes could indicate an attacker attempting to execute OS commands as root. This behavior is of significant concern for a Security Operations Center (SOC) as it presents a substantial security risk, particularly if port 8443, the default port for the System Manager Portal, is exposed to the internet. If the analytic returns a true positive, it suggests that an attacker has gained unauthorized access to the Sentry system, potentially leading to a significant system compromise and data breach. It is important to note that while the issue has a high CVSS score, the risk of exploitation is low for customers who do not expose port 8443 to the internet. The search specifically looks for HTTP requests to certain endpoints ("/mics/services/configservice/*", "/mics/services/*","/mics/services/MICSLogService*") and HTTP status code of 200. Unusual or unexpected patterns in these parameters could indicate an attack.
search: '| tstats count min(_time) as firstTime max(_time)
as lastTime from datamodel=Web where Web.url IN ("/mics/services/configservice/*", "/mics/services/*","/mics/services/MICSLogService*") Web.status=200
by Web.http_user_agent, Web.status Web.http_method, Web.url, Web.url_length, Web.src, Web.dest, sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `ivanti_sentry_authentication_bypass_filter`'
how_to_implement: To implement this analytic, a network product similar to Suricata or Palo Alto needs to be mapped to the Web datamodel. Modify accordingly to work with your products.
known_false_positives: It is important to note that false positives may occur if the search criteria are expanded beyond the HTTP status code 200. In other words, if the search includes other HTTP status codes, the likelihood of encountering false positives increases. This is due to the fact that HTTP status codes other than 200 may not necessarily indicate a successful exploitation attempt.
references:
- https://github.com/horizon3ai/CVE-2023-38035/blob/main/CVE-2023-38035.py
- https://www.horizon3.ai/ivanti-sentry-authentication-bypass-cve-2023-38035-deep-dive/
- https://forums.ivanti.com/s/article/KB-API-Authentication-Bypass-on-Sentry-Administrator-Interface-CVE-2023-38035?language=en_US
tags:
analytic_story:
- Ivanti Sentry Authentication Bypass CVE-2023-38035
cve:
- CVE-2023-38035
asset_type: Network
atomic_guid: []
confidence: 50
impact: 90
message: Possible exploitation of CVE-2023-38035 against $dest$.
mitre_attack_id:
- T1190
observable:
- name: dest
type: Hostname
role:
- Victim
- name: src
type: IP Address
role:
- Attacker
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 45
required_fields:
- Web.http_user_agent
- Web.status
- Web.http_method
- Web.url
- Web.url_length
- Web.src
- Web.dest
- sourcetype
security_domain: network
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/ivanti/ivanti_sentry_CVE_2023_38035.log
source: suricata
sourcetype: suricata
@@ -0,0 +1,70 @@
name: Juniper Networks Remote Code Execution Exploit Detection
id: 6cc4cc3d-b10a-4fac-be1e-55d384fc690e
version: 1
date: '2023-08-29'
author: Michael Haag, Splunk
status: production
type: TTP
data_source: []
description: The following analytic detects the exploitation of a remote code execution vulnerability in Juniper Networks devices. The vulnerability involves multiple steps, including uploading a malicious PHP file and an INI file to the target server, and then executing the PHP code by manipulating the PHP configuration via the uploaded INI file. The analytic specifically looks for requests to /webauth_operation.php?PHPRC=*, which are used to upload the files and execute the code, respectively. This behavior is worth identifying for a SOC because it indicates that an attacker is attempting to exploit the vulnerability to gain unauthorized access to the device and execute arbitrary code. If a true positive is found, it suggests that an attacker has successfully exploited the vulnerability and may have gained control over the device, leading to data theft, network compromise, or other damaging outcomes. Upon triage, review the request parameters and the response to determine if the exploitation was successful. Capture and inspect any relevant network traffic and server logs to identify the attack source. This approach helps analysts detect potential threats earlier and mitigate the risks.
search: '| tstats count min(_time) as firstTime max(_time)
as lastTime from datamodel=Web where Web.url IN ("*/webauth_operation.php?PHPRC=*") Web.status=200
by Web.http_user_agent, Web.status Web.http_method, Web.url, Web.url_length, Web.src, Web.dest, sourcetype
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `juniper_networks_remote_code_execution_exploit_detection_filter`'
how_to_implement: To implement this search, ensure that the Web data model is populated. The search is activated when the Web data model is accelerated. Network products, such as Suricata or Palo Alto, need to be mapped to the Web data model. Adjust the mapping as necessary to suit your specific products.
known_false_positives: Be aware of potential false positives - legitimate uses of the /webauth_operation.php endpoint may cause benign activities to be flagged.The URL in the analytic is specific to a successful attempt to exploit the vulnerability. Review contents of the HTTP body to determine if the request is malicious. If the request is benign, add the URL to the whitelist or continue to monitor.
references:
- https://supportportal.juniper.net/s/article/2023-08-Out-of-Cycle-Security-Bulletin-Junos-OS-SRX-Series-and-EX-Series-Multiple-vulnerabilities-in-J-Web-can-be-combined-to-allow-a-preAuth-Remote-Code-Execution?language=en_US
- https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2023/CVE-2023-36844.yaml
- https://thehackernews.com/2023/08/new-juniper-junos-os-flaws-expose.html
- https://github.com/watchtowrlabs/juniper-rce_cve-2023-36844
- https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/
tags:
analytic_story:
- Juniper JunOS Remote Code Execution
cve:
- CVE-2023-36844
- CVE-2023-36845
- CVE-2023-36846
- CVE-2023-36847
asset_type: Web server
atomic_guid: []
confidence: 80
impact: 90
message: 'This analytic has identified a potential exploitation of a remote code execution vulnerability in Juniper Networks devices on $dest$ on the URL $url$ used for the exploit.'
observable:
- name: dest
type: Hostname
role:
- Victim
- name: url
type: URL String
role:
- Attacker
mitre_attack_id:
- T1190
- T1105
- T1059
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
risk_score: 72
required_fields:
- Web.http_user_agent
- Web.status
- Web.http_method
- Web.url
- Web.url_length
- Web.src
- Web.dest
- sourcetype
security_domain: network
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/juniper/suricata_junos_cvemegazord.log
source: suricata
sourcetype: suricata
@@ -1,6 +1,6 @@
name: Attempted Credential Dump From Registry via Reg exe
id: 14038953-e5f2-4daf-acff-5452062baf03
version: 2
version: 3
date: '2021-11-29'
author: Jose Hernandez, Splunk
status: production

Some files were not shown because too many files have changed in this diff Show More