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.
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 Data Sources
Required Tables
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
References (12)
- https://attack.mitre.org/techniques/T1176/001/
- https://blog.pulsedive.com/rilide-an-information-stealing-browser-extension/
- https://developer.chrome.com/extensions
- https://www.icebrg.io/blog/malicious-chrome-extensions-enable-criminals-to-impact-over-half-a-million-users-and-global-businesses
- https://www.xorrior.com/No-Place-Like-Chrome/
- https://isc.sans.edu/forums/diary/CatchAll+Google+Chrome+Malicious+Extension+Steals+All+Posted+Data/22976/
- https://www.proofpoint.com/uk/blog/threat-insight/ta413-leverages-new-friarfox-browser-extension-target-gmail-accounts-global
- https://www.welivesecurity.com/2017/07/20/stantinko-massive-adware-campaign-operating-covertly-since-2012/
- https://www.microsoft.com/en-us/security/blog/2020/12/10/widespread-malware-campaign-seeks-to-silently-inject-ads-into-search-results-affects-multiple-browsers/
- https://learn.microsoft.com/en-us/deployedge/microsoft-edge-manage-extensions-ref-guide
- https://support.google.com/chrome/a/answer/9296680
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1176/T1176.md
Unlock Pro Content
Get the full detection package for T1176.001 including response playbook, investigation guide, and atomic red team tests.