AnalysisType: rule
Filename: okta_support_reset.py
RuleID: "Okta.Support.Reset"
DisplayName: "Okta Support Reset Credential"
Enabled: true
LogTypes:
- Okta.SystemLog
Tags:
- Identity & Access Management
- DataModel
- Okta
- Initial Access:Trusted Relationship
Reports:
MITRE ATT&CK:
- TA0001:T1199
Severity: High
Description: A Password or MFA factor was reset by Okta Support
Reference: https://help.okta.com/en/prod/Content/Topics/Directory/get-support.htm#:~:text=Visit%20the%20Okta%20Help%20Center,1%2D800%2D219%2D0964
Runbook: Contact Admin to ensure this was sanctioned activity
DedupPeriodMinutes: 15
SummaryAttributes:
- eventType
- severity
- p_any_ip_addresses
Tests:
- Name: Support Reset Credential
ExpectedResult: true
Log:
{
"uuid": "12343",
"published": "2021-11-29 18:56:40.014",
"eventType": "user.account.reset_password",
"version": "0",
"severity": "INFO",
"legacyEventType": "core.user.config.user_status.password_reset",
"displayMessage": "Fired when the user's Okta password is reset",
"actor":
{
"alternateId": "system@okta.com",
"displayName": "system@okta.com",
"id": "1111111",
"type": "User",
},
"client":
{
"device": "Computer",
"ipAddress": "1.1.1.1",
"userAgent": { "browser": "CHROME", "os": "Mac OS X" },
"zone": "null",
},
"outcome": { "result": "SUCCESS" },
"target":
[
{
"alternateId": "homer@springfield.gov",
"displayName": "Homer Simpson",
"id": "1111111",
"type": "User",
},
],
"transaction": { "detail": {}, "id": "unknown", "type": "WEB" },
"p_log_type": "Okta.SystemLog",
}
- Name: Reset by Company Admin
ExpectedResult: false
Log:
{
"uuid": "2aaaaaaaaaabbbbbbbbbbbbddddddddddd",
"eventType": "user.account.reset_password",
"version": "0",
"severity": "INFO",
"legacyEventType": "core.user.config.user_status.password_reset",
"displayMessage": "Fired when the user's Okta password is reset",
"actor":
{
"alternateId": "marge@springfield.gov",
"displayName": "Marge Simpson",
"id": "1111",
"type": "User",
},
"client":
{
"device": "Computer",
"geographicalContext":
{
"city": "Springfield",
"country": "United States",
"postalCode": "80014",
"state": "Debated",
},
"ipAddress": "1.1.1.1",
"userAgent":
{
"browser": "CHROME",
"os": "Mac OS X",
"rawUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36",
},
"zone": "null",
},
"outcome": { "result": "SUCCESS" },
"target":
[
{
"alternateId": "homer@springfield.gov",
"displayName": "Homer Simpson",
"id": "1.1.1.1",
"type": "User",
},
],
"transaction": { "detail": {}, "id": "1111", "type": "WEB" },
"p_log_type": "Okta.SystemLog",
}
# ------ paired body: okta_support_reset.py ------
from panther_okta_helpers import okta_alert_context
OKTA_SUPPORT_RESET_EVENTS = [
"user.account.reset_password",
"user.mfa.factor.update",
"system.mfa.factor.deactivate",
"user.mfa.attempt_bypass",
]
def rule(event):
if event.get("eventType") not in OKTA_SUPPORT_RESET_EVENTS:
return False
return (
event.deep_get("actor", "alternateId") == "system@okta.com"
and event.deep_get("transaction", "id") == "unknown"
and event.deep_get("client", "userAgent", "rawUserAgent") is None
and event.deep_get("client", "geographicalContext", "country") is None
)
def title(event):
targets = event.get("target") or []
impacted = next((t for t in targets if t.get("type") == "User"), None) or {}
user = impacted.get("alternateId") or impacted.get("displayName") or "<unknown-user>"
return f"Okta Support Reset Password or MFA for user {user}"
def alert_context(event):
return okta_alert_context(event)