a52751494e
* Convert config header to setup in note field * Parse note field into separate setup and note field with marko gfm * only validate and parse note on elastic authored rules and add CLI description for new DR_BYPASS_NOTE_VALIDATION_AND_PARSE environment variable Co-authored-by: brokensound77 <brokensound77@users.noreply.github.com>
130 lines
5.9 KiB
TOML
130 lines
5.9 KiB
TOML
[metadata]
|
|
creation_date = "2022/02/22"
|
|
maturity = "production"
|
|
updated_date = "2022/05/09"
|
|
|
|
[rule]
|
|
author = ["Elastic"]
|
|
description = """
|
|
Detects when a user account has the servicePrincipalName attribute modified. Attackers can abuse write privileges over a
|
|
user to configure Service Principle Names (SPNs) so that they can perform Kerberoasting. Administrators can also
|
|
configure this for legitimate purposes, exposing the account to Kerberoasting.
|
|
"""
|
|
from = "now-9m"
|
|
index = ["winlogbeat-*", "logs-system.*"]
|
|
language = "kuery"
|
|
license = "Elastic License v2"
|
|
name = "User account exposed to Kerberoasting"
|
|
note = """## Triage and analysis
|
|
|
|
### Investigating User account exposed to Kerberoasting
|
|
|
|
Service Principal Names (SPNs) are names by which Kerberos clients uniquely identify service instances for Kerberos target
|
|
computers.
|
|
|
|
By default, only computer accounts have SPNs, which creates no significant risk, since machine accounts have a default
|
|
domain policy that rotates their passwords every 30 days, and the password is composed of 120 random characters, making
|
|
them invulnerable to Kerberoasting.
|
|
|
|
A user account with an SPN assigned is considered a service account, and is accessible to the entire domain. If any
|
|
user in the directory requests a ticket-granting service (TGS), the domain controller will encrypt it with the secret
|
|
key of the account executing the service. An attacker can potentially perform a Kerberoasting attack with this
|
|
information, as the human-defined password is likely to be less complex.
|
|
|
|
For scenarios where SPNs cannot be avoided on user accounts, Microsoft provides the Group Managed Service Accounts (gMSA)
|
|
feature, which ensures that account passwords are robust and changed regularly and automatically. More information can
|
|
be found [here](https://docs.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/group-managed-service-accounts-overview).
|
|
|
|
Attackers can also perform "Targeted Kerberoasting", which consists of adding fake SPNs to user accounts that they have
|
|
write privileges to, making them potentially vulnerable to Kerberoasting.
|
|
|
|
#### Possible investigation steps
|
|
|
|
- Identify the user account that performed the action and whether it should perform this kind of action.
|
|
- Contact the account owner and confirm whether they are aware of this activity.
|
|
- Investigate if the target account is a member of privileged groups (Domain Admins, Enterprise Admins, etc.).
|
|
- Investigate if tickets have been requested for the target account.
|
|
- Investigate other alerts associated with the user/host during the past 48 hours.
|
|
|
|
### False positive analysis
|
|
|
|
- The use of user accounts as service accounts is a bad security practice and should not be allowed in the domain. The
|
|
security team should map and monitor any potential benign true positive (B-TP), especially if the account is privileged.
|
|
Domain Administrators that define this kind of setting can put the domain at risk as user accounts don't have the same
|
|
security standards as computer accounts (which have long, complex, random passwords that change frequently), exposing
|
|
them to credential cracking attacks (Kerberoasting, brute force, etc.).
|
|
|
|
### Response and remediation
|
|
|
|
- Initiate the incident response process based on the outcome of the triage.
|
|
- Investigate credential exposure on systems compromised or used by the attacker to ensure all compromised accounts are
|
|
identified. Reset passwords for these accounts and other potentially compromised credentials, such as email, business
|
|
systems, and web services. Prioritize privileged accounts.
|
|
- Isolate the involved hosts to prevent further post-compromise behavior.
|
|
- Determine the initial vector abused by the attacker and take action to prevent reinfection through the same vector.
|
|
- Using the incident response data, update logging and audit policies to improve the mean time to detect (MTTD) and the
|
|
mean time to respond (MTTR).
|
|
|
|
## Setup
|
|
|
|
The 'Audit Directory Service Changes' logging policy must be configured for (Success, Failure).
|
|
Steps to implement the logging policy with Advanced Audit Configuration:
|
|
|
|
```
|
|
Computer Configuration >
|
|
Policies >
|
|
Windows Settings >
|
|
Security Settings >
|
|
Advanced Audit Policies Configuration >
|
|
Audit Policies >
|
|
DS Access >
|
|
Audit Directory Service Changes (Success,Failure)
|
|
```
|
|
|
|
The above policy does not cover User objects, so set up an AuditRule using https://github.com/OTRF/Set-AuditRule.
|
|
As this specifies the servicePrincipalName Attribute GUID, it is expected to be low noise.
|
|
|
|
```
|
|
Set-AuditRule -AdObjectPath 'AD:\\CN=Users,DC=Domain,DC=com' -WellKnownSidType WorldSid -Rights WriteProperty -InheritanceFlags Children -AttributeGUID f3a64788-5306-11d1-a9c5-0000f80367c1 -AuditFlags Success
|
|
```
|
|
"""
|
|
references = [
|
|
"https://www.thehacker.recipes/ad/movement/access-controls/targeted-kerberoasting",
|
|
"https://www.qomplx.com/qomplx-knowledge-kerberoasting-attacks-explained/",
|
|
"https://www.thehacker.recipes/ad/movement/kerberos/kerberoast",
|
|
"https://attack.stealthbits.com/cracking-kerberos-tgs-tickets-using-kerberoasting",
|
|
"https://adsecurity.org/?p=280",
|
|
"https://github.com/OTRF/Set-AuditRule",
|
|
]
|
|
risk_score = 73
|
|
rule_id = "0b2f3da5-b5ec-47d1-908b-6ebb74814289"
|
|
severity = "high"
|
|
tags = ["Elastic", "Host", "Windows", "Threat Detection", "Credential Access", "Active Directory"]
|
|
timestamp_override = "event.ingested"
|
|
type = "query"
|
|
|
|
query = '''
|
|
event.action:"Directory Service Changes" and event.code:5136 and winlog.event_data.ObjectClass:"user"
|
|
and winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"
|
|
'''
|
|
|
|
|
|
[[rule.threat]]
|
|
framework = "MITRE ATT&CK"
|
|
[[rule.threat.technique]]
|
|
id = "T1558"
|
|
name = "Steal or Forge Kerberos Tickets"
|
|
reference = "https://attack.mitre.org/techniques/T1558/"
|
|
[[rule.threat.technique.subtechnique]]
|
|
id = "T1558.003"
|
|
name = "Kerberoasting"
|
|
reference = "https://attack.mitre.org/techniques/T1558/003/"
|
|
|
|
|
|
|
|
[rule.threat.tactic]
|
|
id = "TA0006"
|
|
name = "Credential Access"
|
|
reference = "https://attack.mitre.org/tactics/TA0006/"
|
|
|