EXPLORE
← Back to Explore
elasticlowTTP

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.

MITRE ATT&CK

persistence

Detection Query

data_stream.dataset: "azure.auditlogs" and
    azure.auditlogs.operation_name: "Add Windows Hello for Business credential" and
    event.outcome: ("Success" or "success") and
    azure.tenant_id: * and
    azure.auditlogs.properties.initiated_by.user.userPrincipalName: * and
    source.as.number: *

Author

Elastic

Created

2026/08/07

Data Sources

AzureEntra ID Audit LogsMicrosoft Entra IDMicrosoft Entra ID Audit Logslogs-azure.auditlogs-*

Tags

Domain: CloudDomain: IdentityPlatform: Entra IDUse Case: Identity and Access AuditUse Case: Threat DetectionTactic: PersistenceRule Type: New TermsData Source: AzureData Source: Entra ID Audit LogsData Source: Microsoft Entra IDData Source: Microsoft Entra ID Audit LogsResources: Investigation Guide
Raw Content
[metadata]
creation_date = "2026/08/07"
integration = ["azure"]
maturity = "production"
updated_date = "2026/09/18"

[rule]
author = ["Elastic"]
description = """
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.
"""
false_positives = [
    """
    Legitimate WHfB and passwordless onboarding commonly generate this event, especially for new users or users
    enrolling from a new network ASN. This rule fires only on first-seen combinations of tenant, user, and source ASN
    over 14 days. Investigate unexpected ASNs, users outside the enrollment population, or enrollments preceded by
    anomalous sign-ins.
    """,
]
from = "now-9m"
index = ["logs-azure.auditlogs-*"]
language = "kuery"
license = "Elastic License v2"
name = "Entra ID Windows Hello for Business Credential Registered"
note = """## 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 = ["https://dirkjanm.io/borrowing-windows-hello-keys/"]
risk_score = 21
rule_id = "8c6f8cca-f730-4cdd-93a7-d65f087a4116"
setup = """#### Required Microsoft Entra ID Audit Logs
This rule requires the Azure integration with Microsoft Entra ID Audit logs enabled and collected via Azure Event Hub.
"""
severity = "low"
tags = [
    "Domain: Cloud",
    "Domain: Identity",
    "Platform: Entra ID",
    "Use Case: Identity and Access Audit",
    "Use Case: Threat Detection",
    "Tactic: Persistence",
    "Rule Type: New Terms",
    "Data Source: Azure",
    "Data Source: Entra ID Audit Logs",
    "Data Source: Microsoft Entra ID",
    "Data Source: Microsoft Entra ID Audit Logs",
    "Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "new_terms"

query = '''
data_stream.dataset: "azure.auditlogs" and
    azure.auditlogs.operation_name: "Add Windows Hello for Business credential" and
    event.outcome: ("Success" or "success") and
    azure.tenant_id: * and
    azure.auditlogs.properties.initiated_by.user.userPrincipalName: * and
    source.as.number: *
'''


[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1098"
name = "Account Manipulation"
reference = "https://attack.mitre.org/techniques/T1098/"
[[rule.threat.technique.subtechnique]]
id = "T1098.001"
name = "Additional Cloud Credentials"
reference = "https://attack.mitre.org/techniques/T1098/001/"



[rule.threat.tactic]
id = "TA0003"
name = "Persistence"
reference = "https://attack.mitre.org/tactics/TA0003/"

[rule.new_terms]
field = "new_terms_fields"
value = [
    "azure.tenant_id",
    "azure.auditlogs.properties.initiated_by.user.userPrincipalName",
    "source.as.number",
]
[[rule.new_terms.history_window_start]]
field = "history_window_start"
value = "now-14d"