Entra ID Windows Hello for Business Credential Registered

Identifies the first-seen registration of a Windows Hello for Business (WHfB) credential for a Microsoft Entra ID user from a given source ASN in a tenant, based on a prefixed historic window. Enrollment is commonly part of legitimate onboarding or passwordless rollout and is not inherently malicious. Adversaries who have obtained a token that satisfies fresh (NGC) multi-factor authentication, for example by borrowing an existing WHfB key or passkey, can also enroll their own WHfB credential to establish durable, phishing-resistant persistence that survives password resets and standard session revocation. Correlate first-seen enrollments with the sign-in and device state that preceded them.

Elastic rule (View on GitHub)

  1[metadata]
  2creation_date = "2026/08/07"
  3integration = ["azure"]
  4maturity = "production"
  5updated_date = "2026/08/07"
  6
  7[rule]
  8author = ["Elastic"]
  9description = """
 10Identifies the first-seen registration of a Windows Hello for Business (WHfB) credential for a Microsoft Entra ID user
 11from a given source ASN in a tenant, based on a prefixed historic window. Enrollment is commonly part of legitimate
 12onboarding or passwordless rollout and is not inherently malicious. Adversaries who have obtained a token that satisfies
 13fresh (NGC) multi-factor authentication, for example by borrowing an existing WHfB key or passkey, can also enroll their
 14own WHfB credential to establish durable, phishing-resistant persistence that survives password resets and standard
 15session revocation. Correlate first-seen enrollments with the sign-in and device state that preceded them.
 16"""
 17false_positives = [
 18    """
 19    Legitimate WHfB and passwordless onboarding commonly generate this event, especially for new users or users
 20    enrolling from a new network ASN. This rule fires only on first-seen combinations of tenant, user, and source ASN
 21    over 14 days. Investigate unexpected ASNs, users outside the enrollment population, or enrollments preceded by
 22    anomalous sign-ins.
 23    """,
 24]
 25from = "now-9m"
 26index = ["logs-azure.auditlogs-*"]
 27language = "kuery"
 28license = "Elastic License v2"
 29name = "Entra ID Windows Hello for Business Credential Registered"
 30note = """## Triage and analysis
 31
 32### Investigating Entra ID Windows Hello for Business Credential Registered
 33
 34This is a first-seen (new_terms) signal: a WHfB credential was registered for a tenant/user/source-ASN combination not observed in the prior 14 days. Enrollment is often legitimate onboarding, but adversaries abuse the same action as persistence - after borrowing an existing WHfB key or passkey to satisfy fresh MFA, they enroll their own credential, which survives password resets and ordinary session revocation.
 35
 36### Possible investigation steps
 37- Identify the target (`target_resources.0.user_principal_name`) and initiator (`initiated_by.user.userPrincipalName`), confirm whether WHfB enrollment was expected, and check whether the source ASN is new for that user.
 38- Correlate with `azure.signinlogs` shortly before for a deviceless WHfB/passkey sign-in, device-code flow, or attacker device registration/PRT issuance; an additional credential from a new ASN on an established account is more suspicious. Examine the preceding sign-in's source IP/geo and user agent for automation or hosting/VPS origins.
 39
 40### False positive analysis
 41- First-time WHfB enrollment during onboarding/passwordless rollout is expected; repeat enrollments from the same tenant/user/ASN within 14 days don't fire.
 42- Users traveling or switching ISP/VPN may appear as a new ASN - validate against known networks before treating as suspicious.
 43
 44### Response and remediation
 45- If unauthorized, delete the WHfB credential and any attacker-registered device via Graph or the Entra portal, revoke sessions and refresh tokens (delete devices first, to break device-bound PRT persistence), reset credentials, and re-enroll from a trusted device.
 46- Review the sign-in that authorized the enrollment to determine the initial access vector.
 47"""
 48references = ["https://dirkjanm.io/borrowing-windows-hello-keys/"]
 49risk_score = 21
 50rule_id = "8c6f8cca-f730-4cdd-93a7-d65f087a4116"
 51setup = """#### Required Microsoft Entra ID Audit Logs
 52This rule requires the Azure integration with Microsoft Entra ID Audit logs enabled and collected via Azure Event Hub.
 53"""
 54severity = "low"
 55tags = [
 56    "Domain: Cloud",
 57    "Domain: Identity",
 58    "Platform: Entra ID",
 59    "Use Case: Identity and Access Audit",
 60    "Use Case: Threat Detection",
 61    "Tactic: Persistence",
 62    "Rule Type: New Terms",
 63    "Data Source: Azure",
 64    "Data Source: Microsoft Entra ID",
 65    "Data Source: Microsoft Entra ID Audit Logs",
 66    "Resources: Investigation Guide",
 67]
 68timestamp_override = "event.ingested"
 69type = "new_terms"
 70
 71query = '''
 72data_stream.dataset: "azure.auditlogs" and
 73    azure.auditlogs.operation_name: "Add Windows Hello for Business credential" and
 74    event.outcome: ("Success" or "success") and
 75    azure.tenant_id: * and
 76    azure.auditlogs.properties.initiated_by.user.userPrincipalName: * and
 77    source.as.number: *
 78'''
 79
 80
 81[[rule.threat]]
 82framework = "MITRE ATT&CK"
 83[[rule.threat.technique]]
 84id = "T1098"
 85name = "Account Manipulation"
 86reference = "https://attack.mitre.org/techniques/T1098/"
 87[[rule.threat.technique.subtechnique]]
 88id = "T1098.001"
 89name = "Additional Cloud Credentials"
 90reference = "https://attack.mitre.org/techniques/T1098/001/"
 91
 92
 93
 94[rule.threat.tactic]
 95id = "TA0003"
 96name = "Persistence"
 97reference = "https://attack.mitre.org/tactics/TA0003/"
 98
 99[rule.new_terms]
100field = "new_terms_fields"
101value = [
102    "azure.tenant_id",
103    "azure.auditlogs.properties.initiated_by.user.userPrincipalName",
104    "source.as.number",
105]
106[[rule.new_terms.history_window_start]]
107field = "history_window_start"
108value = "now-14d"

Triage and analysis

Investigating Entra ID Windows Hello for Business Credential Registered

This is a first-seen (new_terms) signal: a WHfB credential was registered for a tenant/user/source-ASN combination not observed in the prior 14 days. Enrollment is often legitimate onboarding, but adversaries abuse the same action as persistence - after borrowing an existing WHfB key or passkey to satisfy fresh MFA, they enroll their own credential, which survives password resets and ordinary session revocation.

Possible investigation steps

  • Identify the target (target_resources.0.user_principal_name) and initiator (initiated_by.user.userPrincipalName), confirm whether WHfB enrollment was expected, and check whether the source ASN is new for that user.
  • Correlate with azure.signinlogs shortly before for a deviceless WHfB/passkey sign-in, device-code flow, or attacker device registration/PRT issuance; an additional credential from a new ASN on an established account is more suspicious. Examine the preceding sign-in's source IP/geo and user agent for automation or hosting/VPS origins.

False positive analysis

  • First-time WHfB enrollment during onboarding/passwordless rollout is expected; repeat enrollments from the same tenant/user/ASN within 14 days don't fire.
  • Users traveling or switching ISP/VPN may appear as a new ASN - validate against known networks before treating as suspicious.

Response and remediation

  • If unauthorized, delete the WHfB credential and any attacker-registered device via Graph or the Entra portal, revoke sessions and refresh tokens (delete devices first, to break device-bound PRT persistence), reset credentials, and re-enroll from a trusted device.
  • Review the sign-in that authorized the enrollment to determine the initial access vector.

References

Related rules

to-top