{
  "technique_id": "T1187",
  "name": "Forced Authentication",
  "priority": "high",
  "status": "draft",
  "version": "0.1.0",
  "last_reviewed": "2026-07-23",
  "generated_by": "SOC Response Atlas by Basyrix",
  "tactics": [
    "Credential Access"
  ],
  "platforms": [
    "Windows"
  ],
  "summary": "Adversaries may gather credential material by invoking or forcing a user to automatically provide authentication information through a mechanism in which they can intercept. The Server Message Block (SMB) protocol is commonly used in Windows networks for authentication and communication between systems for access to resources and file sharing...",
  "soc_recommendation": "Investigate Forced Authentication 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-FA",
      "name": "File Analysis",
      "relationship": "detect",
      "practical_action": "Monitor for File Analysis indicators relevant to this technique.",
      "tooling": [
        "Defender for Endpoint"
      ]
    },
    {
      "id": "D3-FE",
      "name": "File Encryption",
      "relationship": "harden",
      "practical_action": "Apply File Encryption to reduce this technique's viability before an incident occurs.",
      "tooling": [
        "Defender for Endpoint"
      ]
    },
    {
      "id": "D3-FEV",
      "name": "File Eviction",
      "relationship": "evict",
      "practical_action": "Use File Eviction to remove the adversary's foothold once this technique is confirmed.",
      "tooling": [
        "Defender for Endpoint"
      ]
    },
    {
      "id": "D3-CF",
      "name": "Content Filtering",
      "relationship": "isolate",
      "practical_action": "Apply Content Filtering to contain the blast radius once this technique is observed.",
      "tooling": [
        "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 forced authentication 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: \"API - Password Cracking\" -- 42Crunch API protection against password cracking'"
    ]
  },
  "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": "Contain the affected host or account",
      "category": "Containment",
      "risk": "Medium",
      "automation_safe": false,
      "approval_required": true,
      "tool": "Defender for Endpoint / Entra ID",
      "notes": "Requires approval -- confirm malicious intent before isolating a host or disabling an account."
    },
    {
      "name": "Collect and preserve evidence",
      "category": "Investigation",
      "risk": "Low",
      "automation_safe": true,
      "approval_required": false,
      "tool": "Defender for Endpoint",
      "notes": "Safe -- read-only evidence collection."
    }
  ],
  "queries": {
    "kql": [
      {
        "name": "d951d64d-0ecd-4675-8c79-6c870d5f72ac — API - Password Cracking",
        "description": "42Crunch API protection against password cracking' (Source: Microsoft's official Azure-Sentinel Detections (MIT licensed).)",
        "query": "let loginRec = FortyTwoCrunchAPIProtection\n| where TimeGenerated >= ago(5m) \n| project-away NonBlockingMode, SourcePort, DestinationPort, Query, ApiId, RequestHeader, ResponseHeader, Errors, EventType, Uuid\n| where UriPath has \"/api/login?user=\" and Status == 403;\nlet recCount = iff((toscalar(loginRec | count) > 10), 1, 0);\nloginRec | take recCount"
      },
      {
        "name": "73f23aa2-5cc4-4507-940b-75c9092e9e01 — Corelight - Forced External Outbound SMB",
        "description": "Detects SMB requests that originate internally and communicate with an external IP address.' (Source: Microsoft's official Azure-Sentinel Detections (MIT licensed).)",
        "query": "union corelight_conn, corelight_conn_red\n| where local_orig == true\n| where local_resp == false\n| where history hasprefix 'Sh' and service hasprefix 'smb'"
      },
      {
        "name": "424c2aca-5367-4247-917a-5d0f7035e40e — Google DNS - Exchange online autodiscover abuse",
        "description": "Detects possible Exchange online autodiscover abuse.' (Source: Microsoft's official Azure-Sentinel Detections (MIT licensed).)",
        "query": "GCPCloudDNS\n| where Query has_any ('autodiscover.com.br', 'autodiscover.com.cn', 'autodiscover.com.co', 'autodiscover.es', 'autodiscover.fr', 'autodiscover.in', 'autodiscover.it', 'autodiscover.sg', 'autodiscover.uk', 'autodiscover.xyz', 'autodiscover.online')\n| extend DNSCustomEntity = Query, IPCustomEntity = SrcIpAddr"
      }
    ],
    "spl": [],
    "esql": [
      {
        "name": "6756ee27-9152-479b-9b73-54b5bbda301c — Rare Connection to WebDAV Target",
        "description": "(ESQL) Identifies rare connection attempts to a Web Distributed Authoring and Versioning (WebDAV) resource. Attackers may inject WebDAV paths in files or features opened by a victim user to leak their NTLM credentials via forced authentication. (Source: Elastic's official detection-rules repository (Elastic License v2).)",
        "query": "from logs-endpoint.events.process-*, logs-windows.sysmon_operational-*, logs-system.security-*, logs-windows.*, winlogbeat-*, logs-crowdstrike.fdr*, logs-m365_defender.event-* METADATA _id, _version, _index\n| where\n    event.category == \"process\" and\n    event.type == \"start\" and\n    process.name == \"rundll32.exe\" and\n    process.command_line like \"*DavSetCookie*\"\n| keep host.id, process.command_line, user.name, user.id\n// extract domain or IP address from process cmdline\n| grok process.command_line \"\"\"(?<Esql.server_webdav_server>((http|https)://[a-zA-Z0-9-\\.]{1,}\\.[a-zA-Z]{2,3}[@\\/]+)|(\\b(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\b)[@\\/]+)\"\"\"\n// remove sub domains from URL\n| eval Esql.server_webdav_server = REPLACE(Esql.server_webdav_server, \"\"\"((http|https)://[a-zA-Z0-9-]{1,}\\.)\"\"\", \"\")\n| eval Esql.server_webdav_server = REPLACE(Esql.server_webdav_server, \"/\", \"\")\n| where\n    Esql.server_webdav_server is not null and\n    not Esql.server_webdav_server in (\"www.google.com\", \"www.elastic.co\", \"sharepoint.com\", \"live.net\", \"google.com\", \"SHAREPOINT.COM\", \"github.com\") and\n    // excludes private IP ranges\n    not Esql.server_webdav_server rlike \"\"\"(10\\.(\\d{1,3}\\.){2}\\d{1,3}|172\\.(1[6-9]|2\\d|3[0-1])\\.(\\d{1,3}\\.)\\d{1,3}|192\\.168\\.(\\d{1,3}\\.)\\d{1,3})\"\"\"\n| stats\n    Esql.event_count = count(*),\n    Esql.host_id_count_distinct = count_distinct(host.id),\n    Esql.host_id_values = values(host.id),\n    Esql.user_name_values = values(user.name)\n  by Esql.server_webdav_server\n| where\n    Esql.host_id_count_distinct == 1 and Esql.event_count <= 3\n| eval host.id = MV_MIN(Esql.host_id_values), user.name = MV_MIN(Esql.user_name_values), destination.domain = MV_MIN(Esql.server_webdav_server)\n| KEEP host.id, user.name, destination.domain, Esql.*"
      },
      {
        "name": "2d58f67c-156e-480a-a6eb-a698fd8197ff — Potential Kerberos Relay Attack against a Computer Account",
        "description": "(EQL) Detects potential relay attacks by identifying coercion attempts followed by authentication events using a target server's computer account, originating from a different host. This may indicate that an attacker has captured and relayed Kerberos authentication material for the server's computer account to execute code on behalf of the compromised system. (Source: Elastic's official detection-rules repository (Elastic License v2).)",
        "query": "sequence by winlog.computer_name, source.ip with maxspan=5s\n\n/* Filter for an event that indicates coercion against known abused named pipes using an account that is not the host */\n[file where host.os.type == \"windows\" and event.code : \"5145\" and \n    not startswith~(winlog.computer_name, substring(user.name, 0, -1)) and\n    file.name : (\n        \"Spoolss\", \"netdfs\", \"lsarpc\", \"lsass\", \"netlogon\", \"samr\", \"efsrpc\", \"FssagentRpc\",\n        \"eventlog\", \"winreg\", \"srvsvc\", \"dnsserver\", \"dhcpserver\", \"WinsPipe\"\n    )]\n\n/* Detects a logon attempt using the Kerberos protocol resulting from the coercion coming from the same IP address */\n[authentication where host.os.type == \"windows\" and event.code in (\"4624\", \"4625\") and\n    endswith~(user.name, \"$\") and winlog.logon.type : \"network\" and\n    winlog.event_data.AuthenticationPackageName : \"Kerberos\" and\n\n    /* Filter for a machine account that matches the hostname */\n    startswith~(winlog.computer_name, substring(user.name, 0, -1)) and\n\n    /* Verify if the Source IP belongs to the host */\n    not endswith(string(source.ip), string(host.ip)) and\n    source.ip != null and source.ip != \"::1\" and source.ip != \"127.0.0.1\"]"
      }
    ]
  },
  "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": [
    "Forced Authentication 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": "T1187 - Forced Authentication Response Guidance",
    "labels": [
      "mitre",
      "attack",
      "d3fend",
      "secops",
      "basyrix"
    ],
    "sections": [
      "summary",
      "d3fend_mappings",
      "investigation_steps",
      "response_actions",
      "queries",
      "automation",
      "escalation_criteria",
      "false_positive_considerations"
    ]
  }
}