T1110.001 Google Chronicle · YARA-L

Detect Password Guessing in Google Chronicle

Adversaries with no prior knowledge of legitimate credentials within the system or environment may guess passwords to attempt access to accounts. Without knowledge of the password for an account, an adversary may opt to systematically guess the password using a repetitive or iterative mechanism. An adversary may guess login credentials without prior knowledge of system or environment passwords during an operation by using a list of common passwords. Password guessing may or may not take into account the target's policies on password complexity or use policies that may lock accounts out after a number of failed attempts. Commonly targeted services include SSH, RDP, SMB, LDAP, Kerberos, FTP, MSSQL, MySQL, VNC, and web management portals. Threat actors such as APT28, APT29, Emotet, and tools like CrackMapExec have leveraged this technique extensively.

MITRE ATT&CK

Tactic
Credential Access
Technique
T1110 Brute Force
Sub-technique
T1110.001 Password Guessing
Canonical reference
https://attack.mitre.org/techniques/T1110/001/

YARA-L Detection Query

Google Chronicle (YARA-L)
yaral
rule T1110_001_password_guessing {
  meta:
    author = "Detection Engineering"
    description = "Detects password guessing via high-volume Windows authentication failures (logon failure, Kerberos pre-auth, NTLM) from the same source IP to the same host within a 10-minute window."
    mitre_attack_tactic = "Credential Access"
    mitre_attack_technique = "T1110.001"
    mitre_attack_technique_name = "Brute Force: Password Guessing"
    severity = "MEDIUM"
    priority = "MEDIUM"
    reference = "https://attack.mitre.org/techniques/T1110/001/"
    false_positives = "Service accounts with expired credentials, authorized password audit tools"

  events:
    $e.metadata.event_type = "USER_LOGIN"
    $e.security_result.action = "BLOCK"
    $e.metadata.vendor_name = "Microsoft"
    $e.principal.ip != ""
    not $e.principal.ip = "127.0.0.1"
    not $e.principal.ip = "::1"
    $e.target.user.userid != ""
    not $e.target.user.userid = "-"
    not re.regex($e.target.user.userid, `(?i)^anonymous logon$`)
    $source_ip = $e.principal.ip
    $target_host = $e.target.hostname

  match:
    $source_ip, $target_host over 10m

  condition:
    #e >= 10
}
medium severity high confidence

Chronicle YARA-L 2.0 rule detecting password guessing by counting failed USER_LOGIN events (mapped from Windows Event IDs 4625, 4771, 4776 via UDM normalization) originating from the same source IP targeting the same host within a 10-minute sliding window. Requires 10 or more blocked login attempts to fire.

Data Sources

Google Chronicle UDM - USER_LOGIN eventsWindows Security Event Log ingested via Chronicle forwarder or BindPlaneMicrosoft Active Directory / Windows Server events normalized to Chronicle UDM

Required Tables

UDM entity: USER_LOGIN (security_result.action = BLOCK)

False Positives & Tuning

  • Legitimate users repeatedly failing multi-factor authentication challenges due to misconfigured authenticator apps or expired TOTP codes, generating blocked login events in rapid succession
  • Service accounts running automated ETL jobs or scheduled scripts with credentials that expired mid-execution, causing a burst of authentication failures at predictable job start times
  • IT operations teams running automated runbooks or configuration management tools (e.g., Ansible, Puppet) that include credential validation steps across multiple accounts during system provisioning
Download portable Sigma rule (.yml)

Other platforms for T1110.001


Testing Methodology

Validate this detection against 5 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1RDP Password Guessing with Hydra

    Expected signal: Windows Security Event ID 4625 (Logon Failure) with LogonType=10 (RemoteInteractive) on the target system, source IP matching the attacker host. Multiple failures in rapid succession. Network flow logs showing repeated TCP connections to port 3389 from attacker IP.

  2. Test 2SMB Password Guessing with CrackMapExec

    Expected signal: Windows Security Event ID 4625 (Logon Failure) with LogonType=3 (Network) and SubStatus 0xC000006A (wrong password) on the target DC/server. Event ID 4776 (NTLM validation failure) may also appear. Sysmon Event ID 3 on the attacker host showing outbound connections to port 445.

  3. Test 3SSH Password Guessing using Hydra on Linux

    Expected signal: Linux syslog/auth.log entries: 'Failed password for <user> from <attacker_ip> port <port> ssh2' and 'Invalid user <user> from <attacker_ip>'. Multiple entries in rapid succession from attacker IP. Possible PAM failure events if auditd is configured.

  4. Test 4Windows Local Account Password Guessing via Net Use

    Expected signal: Windows Security Event ID 4625 (Logon Failure) on the target host with LogonType=3 (Network), SubStatus=0xC000006A (wrong password), and source IP matching the test machine. Sysmon Event ID 1 on the attacker machine showing cmd.exe spawning with 'net use' command line. Security Event ID 4648 (logon with explicit credentials) may also appear.

  5. Test 5Azure AD / Office 365 Password Guessing via MSOLSpray

    Expected signal: Azure AD SigninLogs / AADSignInLogs in Microsoft Sentinel: ResultType = 50126 (invalid username or password) or 50053 (account locked out), with repeated entries from same IP. UserAgent reflecting PowerShell/HTTP client. Office 365 Unified Audit Log: UserLoginFailed operation with ClientInfoString showing legacy auth client.

Unlock Pro Content

Get the full detection package for T1110.001 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections