T1176.001

Browser Extensions

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.

Microsoft Sentinel / Defender
kusto
let BrowserExtensionPaths = dynamic([
  "\\Google\\Chrome\\User Data\\",
  "\\Microsoft\\Edge\\User Data\\",
  "\\BraveSoftware\\Brave-Browser\\User Data\\",
  "\\Opera Software\\Opera Stable\\",
  "\\Chromium\\User Data\\"
]);
let SuspiciousExtensionWriters = dynamic([
  "powershell.exe", "pwsh.exe", "cmd.exe", "wscript.exe", "mshta.exe",
  "cscript.exe", "regsvr32.exe", "rundll32.exe", "msiexec.exe",
  "certutil.exe", "curl.exe", "wget.exe", "bitsadmin.exe"
]);
// Branch 1: Suspicious process writing to browser extension directories or Preferences files
let Branch1 = DeviceFileEvents
| where Timestamp > ago(24h)
| where FolderPath has_any (BrowserExtensionPaths)
| where FileName in~ ("Preferences", "Secure Preferences", "manifest.json", "background.js", "content_script.js", "inject.js")
  or FolderPath has "\\Extensions\\"
| where InitiatingProcessFileName has_any (SuspiciousExtensionWriters)
| extend DetectionBranch = "SuspiciousProcessWritingExtension"
| project Timestamp, DeviceName, AccountName, ActionType, FolderPath, FileName,
          InitiatingProcessFileName, InitiatingProcessCommandLine, DetectionBranch;
// Branch 2: Browser Preferences/Secure Preferences modified while browser is NOT running
let Branch2 = DeviceFileEvents
| where Timestamp > ago(24h)
| where FolderPath has_any (BrowserExtensionPaths)
| where FileName in~ ("Preferences", "Secure Preferences")
| where InitiatingProcessFileName !in~ ("chrome.exe", "msedge.exe", "brave.exe", "opera.exe", "chromium.exe")
| where InitiatingProcessFileName !in~ ("explorer.exe", "TextInputHost.exe")
| extend DetectionBranch = "PreferencesModifiedOutsideBrowser"
| project Timestamp, DeviceName, AccountName, ActionType, FolderPath, FileName,
          InitiatingProcessFileName, InitiatingProcessCommandLine, DetectionBranch;
// Branch 3: Registry force-install extension policy creation
let Branch3 = DeviceRegistryEvents
| where Timestamp > ago(24h)
| where RegistryKey has_any (
    "SOFTWARE\\Policies\\Google\\Chrome\\ExtensionInstallForcelist",
    "SOFTWARE\\Policies\\Microsoft\\Edge\\ExtensionInstallForcelist",
    "SOFTWARE\\Policies\\BraveSoftware\\Brave\\ExtensionInstallForcelist",
    "SOFTWARE\\Policies\\Google\\Chrome\\ExtensionInstallAllowlist"
  )
| extend DetectionBranch = "RegistryExtensionForceInstall"
| project Timestamp, DeviceName, AccountName, ActionType, RegistryKey, RegistryValueName,
          RegistryValueData, InitiatingProcessFileName, InitiatingProcessCommandLine, DetectionBranch;
// Branch 4: New extension directory created in browser profile
let Branch4 = DeviceFileEvents
| where Timestamp > ago(24h)
| where ActionType == "DirectoryCreated"
| where FolderPath matches regex @"\\(Google\\Chrome|Microsoft\\Edge|BraveSoftware\\Brave-Browser)\\User Data\\[^\\]+\\Extensions\\[a-p]{32}"
| where InitiatingProcessFileName !in~ ("chrome.exe", "msedge.exe", "brave.exe", "chromium.exe")
| extend DetectionBranch = "NewExtensionDirectoryCreated"
| project Timestamp, DeviceName, AccountName, ActionType, FolderPath,
          InitiatingProcessFileName, InitiatingProcessCommandLine, DetectionBranch;
union Branch1, Branch2, Branch3, Branch4
| sort by Timestamp desc
high severity medium confidence

Data Sources

File: File Creation File: File Modification Windows Registry: Windows Registry Key Creation Windows Registry: Windows Registry Key Modification Microsoft Defender for Endpoint

Required Tables

DeviceFileEvents DeviceRegistryEvents

False Positives

  • Enterprise MDM/group policy tools (Intune, SCCM, Workspace ONE) legitimately writing Chrome or Edge extension force-install registry keys for approved extensions like password managers or DLP agents
  • Browser auto-update processes or the Google Update service modifying extension directories during legitimate extension updates
  • IT deployment scripts using PowerShell to pre-install approved browser extensions during device provisioning (e.g., corporate new-hire imaging)
  • Developer workflows where web developers are actively developing and side-loading unpacked extensions in their own browser profiles
  • Security tools or endpoint agents that monitor or back up browser profile data and may trigger on file read/write events in extension directories

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