T1176.001 Google Chronicle · YARA-L

Detect Browser Extensions in Google Chronicle

Adversaries may abuse internet browser extensions to establish persistent access to victim systems. Malicious extensions can be silently installed by modifying Chromium-based browser Preferences or Secure Preferences files while the browser is closed, via Windows Registry extension force-install policies, or through social engineering. Once installed, malicious extensions can steal credentials, cookies, and form data; capture screenshots; exfiltrate data to attacker-controlled servers; or establish command-and-control channels. Threat actors including Kimsuky (TRANSLATEXT), Lumma Stealer, Mispadu, and Grandoreiro have used malicious browser extensions in targeted campaigns.

MITRE ATT&CK

Tactic
Persistence
Technique
T1176 Software Extensions
Sub-technique
T1176.001 Browser Extensions
Canonical reference
https://attack.mitre.org/techniques/T1176/001/

YARA-L Detection Query

Google Chronicle (YARA-L)
yaral
rule t1176_001_browser_extension_file_abuse {
  meta:
    author = "Argus Detection Engineering"
    description = "Detects suspicious non-browser processes writing to Chromium browser extension directories or modifying Preferences files, indicating potential silent extension installation (T1176.001)"
    severity = "HIGH"
    priority = "HIGH"
    mitre_attack_tactic = "Persistence"
    mitre_attack_technique = "T1176.001"
    reference = "https://attack.mitre.org/techniques/T1176/001/"
    false_positives = "Enterprise GPO extension deployment, browser update processes, SCCM or Intune managed extension installation"

  events:
    $e.metadata.event_type = "FILE_CREATION"
    re.regex(
      $e.target.file.full_path,
      `(?i)\\(Google\\Chrome|Microsoft\\Edge|BraveSoftware\\Brave-Browser|Opera Software\\Opera Stable|Chromium)\\User Data\\`
    )
    (
      re.regex($e.target.file.full_path, `(?i)\\Extensions\\`) OR
      re.regex($e.target.file.name, `(?i)^(Preferences|Secure Preferences|manifest\.json|background\.js|content_script\.js|inject\.js)$`)
    )
    NOT re.regex(
      $e.principal.process.file.full_path,
      `(?i)(chrome|msedge|brave|opera|chromium|GoogleUpdate|MicrosoftEdgeUpdate|TextInputHost|explorer)\.exe$`
    )

  condition:
    $e
}

rule t1176_001_browser_extension_forcelist_registry {
  meta:
    author = "Argus Detection Engineering"
    description = "Detects creation or modification of browser extension force-install registry policies used to silently deploy browser extensions without user consent (T1176.001)"
    severity = "HIGH"
    priority = "HIGH"
    mitre_attack_tactic = "Persistence"
    mitre_attack_technique = "T1176.001"
    reference = "https://attack.mitre.org/techniques/T1176/001/"
    false_positives = "Legitimate IT Group Policy applying approved enterprise browser extension policies"

  events:
    $e.metadata.event_type = "REGISTRY_MODIFICATION"
    re.regex(
      $e.target.registry.registry_key,
      `(?i)SOFTWARE\\Policies\\(Google\\Chrome|Microsoft\\Edge|BraveSoftware\\Brave)\\ExtensionInstall(Forcelist|Allowlist)`
    )

  condition:
    $e
}
high severity high confidence

Two Chronicle YARA-L 2.0 rules covering MITRE ATT&CK T1176.001. Rule 1 (t1176_001_browser_extension_file_abuse) triggers on FILE_CREATION events where non-browser processes write to Chromium browser extension directories or critical preference and script files across Chrome, Edge, Brave, Opera, and Chromium profiles. Rule 2 (t1176_001_browser_extension_forcelist_registry) triggers on REGISTRY_MODIFICATION events targeting ExtensionInstallForcelist and ExtensionInstallAllowlist policy keys used to silently force-push extensions. Both rules use UDM field model with YARA-L regex matching.

Data Sources

Google Chronicle SIEMWindows Endpoint Telemetry via Chronicle Forwarder or BindPlaneSysmon via Chronicle ingestion pipeline

Required Tables

UDM Events (FILE_CREATION)UDM Events (REGISTRY_MODIFICATION)

False Positives & Tuning

  • IT administrators deploying sanctioned extensions via Active Directory Group Policy will trigger the registry rule when ExtensionInstallForcelist keys are created — correlate principal.user.userid against known domain admin and GPO management accounts; alert should be reviewed but not suppressed outright as adversaries can also use admin accounts
  • Official browser update agents (GoogleUpdate, MicrosoftEdgeUpdate) writing extension archives to User Data paths during background patching cycles — these are excluded by the NOT regex clause but verify the exclusion pattern covers all update agent binary names present in your environment
  • Corporate endpoint security products performing deep inspection or quarantine operations that touch browser profile paths — validate by correlating principal.process.file.full_path against known EDR and AV vendor installation directories and apply targeted exclusions
Download portable Sigma rule (.yml)

Other platforms for T1176.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 1Silently Install Chrome Extension via Preferences File Modification

    Expected signal: Sysmon Event ID 11: File Create/Modify with TargetFilename ending in '\Google\Chrome\User Data\Default\Preferences', Image=powershell.exe. Sysmon Event ID 1: Process Create for powershell.exe with CommandLine containing 'Preferences' and 'ConvertFrom-Json'. DeviceFileEvents (MDE): FolderPath containing 'Google\Chrome\User Data\Default', FileName='Preferences', InitiatingProcessFileName='powershell.exe'.

  2. Test 2Force-Install Browser Extension via Registry Policy

    Expected signal: Sysmon Event ID 13: Registry Value Set with TargetObject containing 'SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist', Details containing the extension ID and update URL, Image=reg.exe. DeviceRegistryEvents (MDE): RegistryKey containing 'ExtensionInstallForcelist', RegistryValueData='nmmhkkegccagdldgiimedpiccmgmieda;...', InitiatingProcessFileName='reg.exe'.

  3. Test 3Drop Malicious Extension Files to Browser Extension Directory

    Expected signal: Sysmon Event ID 11: Multiple File Create events with TargetFilename in '...Chrome\User Data\Default\Extensions\abcdefghijklmnopabcdefghijklmnop\1.0_0\' for manifest.json, background.js, and content.js, all with Image=powershell.exe. Sysmon Event ID 1: PowerShell process create with CommandLine referencing extension directory and manifest content. DeviceFileEvents (MDE): Multiple records with FolderPath containing 'Extensions\abcdefghijklmnopabcdefghijklmnop', InitiatingProcessFileName='powershell.exe'.

  4. Test 4Enumerate Installed Browser Extensions for Reconnaissance

    Expected signal: Sysmon Event ID 1: PowerShell process create with CommandLine referencing 'Extensions' and 'manifest.json'. DeviceFileEvents (MDE): Multiple FileRead events on manifest.json files in extension directories with InitiatingProcessFileName='powershell.exe'. This test generates lower-confidence telemetry (reads, not writes) suitable for hunting queries rather than high-confidence alerting.

  5. Test 5Install Extension via .CRX File Drop and Chrome Command Line

    Expected signal: Sysmon Event ID 1: PowerShell process create writing manifest.json to TEMP directory. If Chrome launch is executed: Sysmon Event ID 1 for chrome.exe with CommandLine containing '--load-extension' pointing to temp directory. DeviceProcessEvents (MDE): chrome.exe launched with non-standard command line arguments including '--load-extension'. DeviceFileEvents: manifest.json created in %TEMP% by powershell.exe.

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections