{
  "technique_id": "T1558",
  "name": "Steal or Forge Kerberos Tickets",
  "priority": "high",
  "status": "complete",
  "version": "0.1.0",
  "last_reviewed": "2026-07-23",
  "generated_by": "SOC Response Atlas by Basyrix",
  "tactics": [
    "Credential Access"
  ],
  "platforms": [
    "Linux",
    "macOS",
    "Windows"
  ],
  "summary": "Adversaries may attempt to subvert Kerberos authentication by stealing or forging Kerberos tickets to enable [Pass the Ticket](https://attack.mitre.org/techniques/T1550/003). Kerberos is an authentication protocol widely used in modern Windows domain environments. In Kerberos environments, referred to as “realms”, there are three basic participants: client, service, and Key Distribution Center (KDC)...",
  "soc_recommendation": "Investigate Steal or Forge Kerberos Tickets activity in the context of Credential Access: confirm scope, affected host/identity, and whether it matches expected administrative behaviour before deciding this is benign.",
  "d3fend_mappings": [
    {
      "id": "D3-UGLPA",
      "name": "User Geolocation Logon Pattern Analysis",
      "relationship": "detect",
      "practical_action": "Monitor for User Geolocation Logon Pattern Analysis indicators relevant to this technique.",
      "tooling": [
        "Defender for Endpoint"
      ]
    },
    {
      "id": "D3-CH",
      "name": "Credential Hardening",
      "relationship": "harden",
      "practical_action": "Apply Credential Hardening to reduce this technique's viability before an incident occurs.",
      "tooling": [
        "Entra ID"
      ]
    },
    {
      "id": "D3-CR",
      "name": "Credential Revocation",
      "relationship": "evict",
      "practical_action": "Use Credential Revocation to remove the adversary's foothold once this technique is confirmed.",
      "tooling": [
        "Entra ID"
      ]
    },
    {
      "id": "D3-NTF",
      "name": "Network Traffic Filtering",
      "relationship": "isolate",
      "practical_action": "Apply Network Traffic Filtering to contain the blast radius once this technique is observed.",
      "tooling": [
        "Sentinel",
        "Defender for Endpoint"
      ]
    }
  ],
  "investigation_steps": {
    "microsoft": [
      "Review Defender for Endpoint / Defender XDR alerts and timeline for the affected host or identity.",
      "Check Sentinel analytics rules and incidents correlated with this technique.",
      "Review Entra ID sign-in and audit logs if the technique involves an identity or cloud resource."
    ],
    "generic": [
      "Confirm whether the observed steal or forge kerberos tickets activity matches expected administrative or application behaviour.",
      "Identify the host, account, or resource where the activity occurred and its business criticality.",
      "Check for related alerts before and after this activity to reconstruct the broader intrusion timeline.",
      "Real detection reference: \"Kerberoasting - Abnormal RC4 Service Ticket Requests\" -- Flags an account requesting an unusually high number of Kerberos service tickets using weak RC4 encryption, a hallmark of Kerberoasting."
    ]
  },
  "evidence_to_collect": [
    "Host or resource affected",
    "Account or identity involved",
    "Timestamp of the activity",
    "Related process, file, or network artifact",
    "Any preceding or follow-on alerts"
  ],
  "response_actions": [
    {
      "name": "Reset passwords for ALL targeted service accounts — use 30+",
      "category": "Response",
      "risk": "Medium",
      "automation_safe": false,
      "approval_required": true,
      "tool": "See investigation guide",
      "notes": "Reset passwords for ALL targeted service accounts — use 30+ char random passwords"
    },
    {
      "name": "Convert service accounts to Group Managed Service Accounts (",
      "category": "Response",
      "risk": "Low",
      "automation_safe": false,
      "approval_required": true,
      "tool": "See investigation guide",
      "notes": "Convert service accounts to Group Managed Service Accounts (gMSA) — auto-rotating passwords"
    },
    {
      "name": "Remove unnecessary SPNs from high-privilege accounts",
      "category": "Response",
      "risk": "Low",
      "automation_safe": false,
      "approval_required": true,
      "tool": "See investigation guide"
    },
    {
      "name": "Enforce AES-only Kerberos via GPO — disable RC4",
      "category": "Response",
      "risk": "Medium",
      "automation_safe": false,
      "approval_required": true,
      "tool": "See investigation guide"
    }
  ],
  "queries": {
    "kql": [
      {
        "name": "GEN-CA-002 — Kerberoasting - Abnormal RC4 Service Ticket Requests",
        "description": "Flags an account requesting an unusually high number of Kerberos service tickets using weak RC4 encryption, a hallmark of Kerberoasting. (Source: Bell Integration baseline detection library, mapped via sub-technique T1558.003.)",
        "query": "let lookback = 1d;\nlet ticketThreshold = 10;\nSecurityEvent\n| where TimeGenerated >= ago(lookback)\n| where EventID == 4769\n| where TicketEncryptionType == \"0x17\"\n| where ServiceName !endswith \"$\"\n| where AccountType == \"User\"\n| summarize\n    StartTime = min(TimeGenerated),\n    EndTime = max(TimeGenerated),\n    TicketRequestCount = count(),\n    DistinctServices = dcount(ServiceName),\n    Services = make_set(ServiceName, 50)\n    by TargetUserName, IpAddress\n| where TicketRequestCount >= ticketThreshold and DistinctServices >= 3\n| project StartTime, EndTime, TargetUserName, IpAddress, TicketRequestCount, DistinctServices, Services\n| extend timestamp = StartTime, AccountCustomEntity = TargetUserName, IPCustomEntity = IpAddress\n| order by TicketRequestCount desc"
      },
      {
        "name": "21ab3f52-6d79-47e3-97f8-ad65f2cb29fb — Alsid Golden Ticket",
        "description": "Searches for Golden Ticket attacks' (Source: Microsoft's official Azure-Sentinel Detections (MIT licensed), mapped via sub-technique T1558.001.)",
        "query": "afad_parser\n| where MessageType == 2 and Codename == \"Golden Ticket\"\n| extend HostName = tostring(split(Host, '.', 0)[0]), DnsDomain = tostring(strcat_array(array_slice(split(Host, '.'), 1, -1), '.'))"
      },
      {
        "name": "2a3b4c5d-6e7f-4a0b-8c1d-2e3f4a5b6c12 — Pathlock TDnR - Kerberos Keytab Changes",
        "description": "Detects changes to Kerberos keytab configuration in SAP, forwarded by Pathlock Threat Detection and Response. Modifications to Kerberos settings may indicate credential theft, SSO bypass attempts, or persistent access mechanisms leveraging Kerberos delegation. (Source: Microsoft's official Azure-Sentinel Detections (MIT licensed).)",
        "query": "Pathlock_TDnR_CL\n| where DataSource == \"CHANGEDOC_KERBEROS\"\n| project TimeGenerated, Sysid, DataSource, Eventid, Instance, Hostname, Bname,\n          Tcode, Report, Area, Subid, SrcIp, DestIp, AffectedUser, LogLine,\n          MsgType, MsgId, MsgNo, MessageV1, MessageV2, MessageV3, MessageV4, CentralTs"
      }
    ],
    "spl": [],
    "esql": [
      {
        "name": "ad88231f-e2ab-491c-8fc6-64746da26cfe — Kerberos Cached Credentials Dumping",
        "description": "(EQL) Identifies the use of the Kerberos credential cache (kcc) utility to dump locally cached Kerberos tickets. Adversaries may attempt to dump credential material in the form of tickets that can be leveraged for lateral movement. (Source: Elastic's official detection-rules repository (Elastic License v2).)",
        "query": "process where host.os.type == \"macos\" and event.type in (\"start\", \"process_started\") and\n  process.name == \"kcc\" and\n  process.args like~ \"copy_cred_cache\""
      },
      {
        "name": "16904215-2c95-4ac8-bf5c-12354e047192 — Potential Kerberos Attack via Bifrost",
        "description": "(EQL) Identifies use of Bifrost, a known macOS Kerberos pentesting tool, which can be used to dump cached Kerberos tickets or attempt unauthorized authentication techniques such as pass-the-ticket/hash and kerberoasting. (Source: Elastic's official detection-rules repository (Elastic License v2).)",
        "query": "process where host.os.type == \"macos\" and event.type in (\"start\", \"process_started\") and\n process.args like~ \"-action\" and\n (\n  process.args like~ (\"-kerberoast\", \"askhash\", \"asktgs\", \"asktgt\", \"s4u\") or\n  (process.args like~ \"-ticket\" and process.args like~ \"ptt\") or\n  (process.args like~ \"dump\" and process.args in~ (\"tickets\", \"keytab\"))\n )"
      }
    ]
  },
  "automation": {
    "safe": [
      "Add recommendation as Sentinel incident comment.",
      "Run enrichment queries.",
      "Create ServiceNow SecOps task."
    ],
    "approval_required": [
      "Contain or disable the affected host/account.",
      "Any change to production configuration."
    ]
  },
  "escalation_criteria": [
    "Steal or Forge Kerberos Tickets activity observed on a privileged account or critical system.",
    "Activity follows or precedes other suspicious behaviour in the same investigation.",
    "Automated triage cannot confidently rule out malicious intent."
  ],
  "false_positive_considerations": [
    "Legitimate administrative or maintenance activity matching this pattern.",
    "Approved security testing or red team exercise.",
    "Known benign software producing similar telemetry."
  ],
  "confluence": {
    "title": "T1558 - Steal or Forge Kerberos Tickets Response Guidance",
    "labels": [
      "mitre",
      "attack",
      "d3fend",
      "secops",
      "basyrix"
    ],
    "sections": [
      "summary",
      "d3fend_mappings",
      "investigation_steps",
      "response_actions",
      "queries",
      "automation",
      "escalation_criteria",
      "false_positive_considerations"
    ]
  }
}