Google Workspace Device Registration Burst for Single User

Last updated 15 days ago on 2026-05-15
Created 15 days ago on 2026-05-15

About

Detects bursts of Google Workspace device registration events for the same user, where three or more distinct "google_workspace.device.id" values are emitted in a one-minute window. Although "DEVICE_REGISTER_UNREGISTER_EVENT" fires routinely on session/sync registration and is not a true physical device enrollment, legitimate user activity typically produces fewer than three distinct device IDs in a single minute. A high-cardinality burst is the fingerprint behavior of AiTM phishing-kit relays (Tycoon2FA Google variant, EvilGinx phishlets) and stolen-OAuth-token replay tooling, both of which mint a new session attestation per relay or replay attempt.
Tags
Domain: CloudDomain: IdentityData Source: Google WorkspaceData Source: Google Workspace Device LogsUse Case: Threat DetectionUse Case: Identity and Access AuditTactic: PersistenceTactic: Initial AccessTactic: Credential AccessLanguage: esql
Severity
medium
Risk Score
47
MITRE ATT&CK™

Persistence (TA0003)(external, opens in a new tab or window)

Initial Access (TA0001)(external, opens in a new tab or window)

Credential Access (TA0006)(external, opens in a new tab or window)

False Positive Examples
A user simultaneously enrolling multiple Workspace-aware apps on a new device (e.g., first-time setup of Gmail, Drive, Calendar, and Meet on a new laptop in a short window) may produce three or more distinct device IDs in a minute. Validate by checking whether the burst is tied to a fresh device or onboarding event. Major OS upgrades or Workspace client refreshes that re-attest several apps concurrently may also produce a burst. Cross-reference against the user's known device OS transitions.
License
Elastic License v2(external, opens in a new tab or window)

Definition

Integration Pack
Prebuilt Security Detection Rules
Related Integrations

google_workspace(external, opens in a new tab or window)

Query
text code block:
from logs-google_workspace.device-* | where event.dataset == "google_workspace.device" and event.action == "DEVICE_REGISTER_UNREGISTER_EVENT" and google_workspace.device.account_state == "REGISTERED" and user.email is not null and google_workspace.device.id is not null | eval Esql.bucket_minute = date_trunc(1 minute, @timestamp) | stats Esql.count_distinct_device_id = count_distinct(google_workspace.device.id), Esql.device_id_values = values(google_workspace.device.id), Esql.device_resource_id_values = values(google_workspace.device.resource.id), Esql.device_type_values = values(google_workspace.device.type), Esql.device_model_values = values(google_workspace.device.model), Esql.device_account_state_values = values(google_workspace.device.account_state), Esql.host_os_version_values = values(host.os.version), Esql.event_provider_values = values(event.provider), Esql.event_id_values = values(event.id), Esql.google_workspace_actor_type_values = values(google_workspace.actor.type), Esql.google_workspace_event_type_values = values(google_workspace.event.type), Esql.organization_id_values = values(organization.id), Esql.user_domain_values = values(user.domain), Esql.timestamp_first_seen = min(@timestamp), Esql.timestamp_last_seen = max(@timestamp), Esql.event_count = count(*) by user.id, user.email, user.name, Esql.bucket_minute | where Esql.count_distinct_device_id >= 3 | keep user.id, user.email, user.name, Esql.bucket_minute, Esql.timestamp_first_seen, Esql.timestamp_last_seen, Esql.count_distinct_device_id, Esql.event_count, Esql.device_id_values, Esql.device_resource_id_values, Esql.device_type_values, Esql.device_model_values, Esql.device_account_state_values, Esql.host_os_version_values, Esql.event_provider_values, Esql.event_id_values, Esql.google_workspace_actor_type_values, Esql.google_workspace_event_type_values, Esql.organization_id_values, Esql.user_domain_values

Install detection rules in Elastic Security

Detect Google Workspace Device Registration Burst for Single User in the Elastic Security detection engine by installing this rule into your Elastic Stack.

To setup this rule, check out the installation guide for Prebuilt Security Detection Rules(external, opens in a new tab or window).