Detection rules › Panther

Okta Password Accessed

Severity
medium
Group by
actor.alternateId
Entities
domain_names, emails, ip_addresses
Log types
Okta.SystemLog
Tags
Okta, Credential Access:Unsecured Credentials
Reference
https://help.okta.com/en-us/content/topics/apps/apps_revealing_the_password.htm
Source
github.com/panther-labs/panther-analysis

User accessed another user's application password

MITRE ATT&CK coverage

TacticTechniques
Credential AccessT1552 Unsecured Credentials

Rule body yaml

AnalysisType: rule
Filename: okta_password_accessed.py
RuleID: "Okta.PasswordAccess"
DisplayName: "Okta Password Accessed"
Enabled: true
LogTypes:
  - Okta.SystemLog
Tags:
  - Okta
  - Credential Access:Unsecured Credentials
Reports:
  MITRE ATT&CK:
    - TA0006:T1552
Severity: Medium
Description: >
  User accessed another user's application password
Reference: https://help.okta.com/en-us/content/topics/apps/apps_revealing_the_password.htm
Runbook: >
  Investigate whether this was authorized access.
Tests:
  - Name: User accessed their own password
    ExpectedResult: false
    Log:
      {
        "actor":
          {
            "alternateId": "eric.montgomery@email.com",
            "displayName": "Eric Montgomery",
            "id": "XXXXXXXXXXXXXXXX",
            "type": "User",
          },
        "authenticationContext":
          { "authenticationStep": 0, "externalSessionId": "XXXXXXXXXXXXXXXXX" },
        "client":
          {
            "device": "Mobile",
            "geographicalContext":
              {
                "country": "Iceland",
                "geolocation": { "lat": 81.09596, "lon": -10.30578 },
                "state": "Colorado",
              },
            "ipAddress": "218.56.201.220",
            "userAgent":
              {
                "browser": "CHROME",
                "os": "Android 1.x",
                "rawUserAgent": "Mozilla/5.0 (Linux; Android 11; ONEPLUS A6013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36",
              },
            "zone": "null",
          },
        "debugContext": { "debugData": "" },
        "eventType": "application.user_membership.show_password",
        "legacyEventType": "app.generic.show.password",
        "outcome": { "result": "SUCCESS" },
        "p_any_domain_names": ["."],
        "p_any_emails": ["eric.montgomery@email.com"],
        "p_any_ip_addresses": ["218.56.201.220"],
        "p_log_type": "Okta.SystemLog",
        "published": "2022-09-09 04:26:09.792",
        "request":
          {
            "ipChain":
              [
                {
                  "geographicalContext":
                    {
                      "country": "Iceland",
                      "geolocation": { "lat": 81.0959, "lon": -104.9868 },
                    },
                  "ip": "218.56.201.220",
                  "version": "V4",
                },
              ],
          },
        "securityContext":
          {
            "asNumber": 940252,
            "asOrg": "t-mobile",
            "domain": ".",
            "isProxy": false,
            "isp": "t-mobile usa  inc.",
          },
        "severity": "INFO",
        "target":
          [
            {
              "alternateId": "eric.montgomery@email.com",
              "displayName": "Eric Montgomery",
              "id": "16442344346b2385",
              "type": "AppUser",
            },
            {
              "alternateId": "Application2",
              "displayName": "Application2",
              "id": "16442ew83428795",
              "type": "AppInstance",
            },
            {
              "alternateId": "eric.montgomery@email.com",
              "displayName": "Eric Montgomery",
              "id": "16325kd349753",
              "type": "User",
            },
          ],
        "transaction":
          { "detail": {}, "id": "XXXXXXXXXXXXXXXX", "type": "WEB" },
        "uuid": "XXXXXXXXXXXXXXXX",
        "version": "0",
      }
  - Name: User accessed another user's password
    ExpectedResult: true
    Log:
      {
        "actor":
          {
            "alternateId": "eric.montgomery@email.com",
            "displayName": "Eric Montgomery",
            "id": "XXXXXXXXXXXXXXXX",
            "type": "User",
          },
        "authenticationContext":
          { "authenticationStep": 0, "externalSessionId": "XXXXXXXXXXXXXXXXX" },
        "client":
          {
            "device": "Mobile",
            "geographicalContext":
              {
                "country": "Iceland",
                "geolocation": { "lat": 81.0959, "lon": -10.30578 },
                "state": "Colorado",
              },
            "ipAddress": "218.56.201.220",
            "userAgent":
              {
                "browser": "CHROME",
                "os": "Android 1.x",
                "rawUserAgent": "Mozilla/5.0 (Linux; Android 11; ONEPLUS A6013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36",
              },
            "zone": "null",
          },
        "debugContext": { "debugData": "" },
        "eventType": "application.user_membership.show_password",
        "legacyEventType": "app.generic.show.password",
        "outcome": { "result": "SUCCESS" },
        "p_any_domain_names": ["."],
        "p_any_emails": ["eric.montgomery@email.com"],
        "p_any_ip_addresses": ["218.56.201.220"],
        "p_log_type": "Okta.SystemLog",
        "published": "2022-09-09 04:26:09.792",
        "request":
          {
            "ipChain":
              [
                {
                  "geographicalContext":
                    {
                      "country": "Iceland",
                      "geolocation": { "lat": 81.09596, "lon": -10.30578 },
                    },
                  "ip": "218.56.201.220",
                  "version": "V4",
                },
              ],
          },
        "securityContext":
          {
            "asNumber": 124526,
            "asOrg": "t-mobile",
            "domain": ".",
            "isProxy": false,
            "isp": "t-mobile usa  inc.",
          },
        "severity": "INFO",
        "target":
          [
            {
              "alternateId": "vanessajohns@email.com",
              "displayName": "Vanessa Johns",
              "id": "0uat6tr9otyvdJbBM696",
              "type": "AppUser",
            },
            {
              "alternateId": "Application3",
              "displayName": "Application3",
              "id": "0oas6wl204Dn3gG5D696",
              "type": "AppInstance",
            },
            {
              "alternateId": "vanessajohns@email.com",
              "displayName": "Vanessa Johns",
              "id": "XXXXXXXXXXXXXXXX",
              "type": "User",
            },
          ],
        "transaction":
          { "detail": {}, "id": "XXXXXXXXXXXXXXXX", "type": "WEB" },
        "uuid": "XXXXXXXXXXXXXXXX",
        "version": "0",
      }
  - Name: User accessed their own password - 2
    ExpectedResult: false
    Log:
      {
        "actor":
          {
            "alternateId": "john.doe@emaildomain.com",
            "displayName": "John Doe",
            "id": "00u3nwfjxxxxxxxxxxxx",
            "type": "User",
          },
        "authenticationContext":
          { "authenticationStep": 0, "externalSessionId": "XXXXXXXXXXXXXXXXX" },
        "client":
          {
            "device": "Mobile",
            "geographicalContext":
              {
                "country": "Iceland",
                "geolocation": { "lat": 81.09596, "lon": -10.30578 },
                "state": "Colorado",
              },
            "ipAddress": "218.56.201.220",
            "userAgent":
              {
                "browser": "CHROME",
                "os": "Android 1.x",
                "rawUserAgent": "Mozilla/5.0 (Linux; Android 11; ONEPLUS A6013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36",
              },
            "zone": "null",
          },
        "debugContext": { "debugData": "" },
        "eventType": "application.user_membership.show_password",
        "legacyEventType": "app.generic.show.password",
        "outcome": { "result": "SUCCESS" },
        "published": "2024-03-27 13:17:41.835000000",
        "severity": "INFO",
        "securityContext":
          {
            "asNumber": 940252,
            "asOrg": "t-mobile",
            "domain": ".",
            "isProxy": false,
            "isp": "t-mobile usa  inc.",
          },
        "target":
          [
            {
              "alternateId": "John Doe",
              "displayName": "John Doe",
              "id": "00u3nwfjxxxxxxxxxxxx",
              "type": "AppUser",
            },
            {
              "alternateId": "Software",
              "displayName": "On The Fly App",
              "id": "11u3nwfjxxxxxxxxxxxx",
              "type": "AppInstance",
            },
            {
              "alternateId": "john.doe@emaildomain.com",
              "displayName": "John Doe",
              "id": "00u3nwfjxxxxxxxxxxxx",
              "type": "User",
            },
          ],
        "transaction":
          { "detail": {}, "id": "XXXXXXXXXXXXXXXX", "type": "WEB" },
        "uuid": "XXXXXXXXXXXXXXXX",
        "version": "0",
      }

Detection logic

Condition

eventType eq "application.user_membership.show_password"

This rule also runs imperative logic the parser cannot express as a filter; the conditions above are the structured part it could extract.

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
eventTypeeq
  • application.user_membership.show_password

Output fields

Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.

FieldSource
alternateIdactor.alternateId