Detect Malvertising in Microsoft Sentinel
Adversaries may purchase online advertisements to distribute malware to victims. Ads can be positioned prominently in search results or on popular websites, exploiting user trust in those platforms. Malvertising campaigns frequently spoof legitimate software vendors, tricking users into downloading trojanized installer packages. Because the adversary's infrastructure purchase occurs entirely outside the victim environment, detection must pivot to observable victim-side indicators: browsers spawning unexpected child processes, executable file downloads staged in user-writable directories, and drive-by script execution patterns consistent with clicking a malicious ad.
MITRE ATT&CK
- Tactic
- Resource Development
- Technique
- T1583 Acquire Infrastructure
- Sub-technique
- T1583.008 Malvertising
- Canonical reference
- https://attack.mitre.org/techniques/T1583/008/
KQL Detection Query
// Detect browsers spawning suspicious child processes — primary indicator of malvertising drive-by execution
let Browsers = dynamic(["chrome.exe", "msedge.exe", "firefox.exe", "iexplore.exe", "opera.exe", "brave.exe", "safari.exe"]);
let SuspiciousChildren = dynamic(["powershell.exe", "pwsh.exe", "cmd.exe", "mshta.exe", "wscript.exe", "cscript.exe", "rundll32.exe", "regsvr32.exe", "msiexec.exe", "certutil.exe", "bitsadmin.exe"]);
DeviceProcessEvents
| where Timestamp > ago(24h)
| where InitiatingProcessFileName in~ (Browsers)
| where FileName in~ (SuspiciousChildren)
| extend DownloadPath = iff(FolderPath has_any ("\\Downloads\\", "\\Temp\\", "\\AppData\\Local\\Temp\\"), 1, 0)
| extend NetworkRef = iff(ProcessCommandLine has_any ("http://", "https://", "ftp://"), 1, 0)
| extend EncodedOrDL = iff(ProcessCommandLine has_any ("-enc", "-EncodedCommand", "iex", "DownloadString", "DownloadFile", "WebClient", "Invoke-WebRequest"), 1, 0)
| extend HiddenOrSilent = iff(ProcessCommandLine has_any ("-WindowStyle Hidden", "-w hidden", "/quiet", "/q ", "/silent", "/verysilent"), 1, 0)
| extend SuspicionScore = DownloadPath + NetworkRef + EncodedOrDL + HiddenOrSilent + 1
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
FolderPath, DownloadPath, NetworkRef, EncodedOrDL, HiddenOrSilent, SuspicionScore,
InitiatingProcessFileName, InitiatingProcessCommandLine
| sort by SuspicionScore desc, Timestamp desc Detects victim-side indicators of malvertising attacks using Microsoft Defender for Endpoint DeviceProcessEvents. Monitors browsers (Chrome, Edge, Firefox, IE, Opera, Brave) spawning suspicious child processes — PowerShell, mshta, wscript, cmd, rundll32, regsvr32, msiexec, certutil — which is a high-confidence indicator of drive-by execution after clicking a malvertising link. Assigns a suspicion score based on whether the spawned process launched from a download path, referenced a network URL, used encoded/download cradle patterns, or used silent/hidden execution flags. Score of 1 indicates a browser-child spawn alone; scores of 3+ indicate active payload execution.
Data Sources
Required Tables
False Positives & Tuning
- Browser-based enterprise software portals that use ClickOnce deployment, legitimately spawning msiexec.exe or setup.exe from the browser for internal application installation
- IT administrators downloading and immediately running legitimate signed tools from vendor sites (e.g., Sysinternals, vendor agent MSIs, driver installers)
- Software update helpers where the browser opens a downloaded updater that spawns cmd.exe or PowerShell as part of a legitimate update workflow
- Developer environments where VS Code, IntelliJ, or similar IDEs integrate browser-based workflows that spawn terminal processes
- Browser PDF plugins or media extensions that spawn helper processes from the user's Downloads or Temp folder during document rendering
Other platforms for T1583.008
Testing Methodology
Validate this detection against 4 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.
- Test 1Simulate Browser Spawning PowerShell (Malvertising Drive-by Pattern)
Expected signal: Sysmon Event ID 1: Process Create with Image=powershell.exe, ParentImage=cmd.exe, CommandLine containing '-WindowStyle Hidden'. Sysmon Event ID 11: File Create for malv-test.txt in Temp. Security Event ID 4688 (if command line auditing enabled). PowerShell ScriptBlock Log Event ID 4104 showing Write-Output command.
- Test 2Stage and Execute Trojanized Installer from Downloads Folder
Expected signal: Sysmon Event ID 11: File Create for 7zip-2400-x64.exe in the Downloads folder. Sysmon Event ID 1: Process Create with Image path inside the Downloads folder — anomalous for any legitimate software. Security Event ID 4688 if command line auditing is enabled.
- Test 3HTA Drive-by Execution Simulating Malvertising Redirect
Expected signal: Sysmon Event ID 1: Process Create for mshta.exe with TargetFilename in Temp path. Sysmon Event ID 11: File Create for hta-atomic.txt. Security Event ID 4688 for mshta.exe execution. If launched from a browser parent, the main detection fires on mshta.exe as a SuspiciousChild with DownloadPath=1.
- Test 4PowerShell Download Cradle Spawned from Browser Context (Simulated Raspberry Robin Pattern)
Expected signal: Sysmon Event ID 1: Process Create for powershell.exe, ParentImage=cmd.exe, CommandLine containing 'Net.WebClient' and 'DownloadString'. Sysmon Event ID 3: Network connection attempt to 127.0.0.1:18080 (connection refused, but event still fires). PowerShell ScriptBlock Log Event ID 4104 showing the download cradle code.
References (7)
- https://attack.mitre.org/techniques/T1583/008/
- https://www.spamhaus.com/resource-center/a-surge-of-malvertising-across-google-ads-is-distributing-dangerous-malware/
- https://labs.guard.io/masquerads-googles-ad-words-massively-abused-by-threat-actors-targeting-organizations-gpus-42ae73ee8a1e
- https://www.ic3.gov/Media/Y2022/PSA221221
- https://www.sentinelone.com/blog/breaking-down-the-seo-poisoning-attack-how-attackers-are-hijacking-search-results/
- https://www.bbc.com/news/technology-12891182
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1583.008/T1583.008.md
Unlock Pro Content
Get the full detection package for T1583.008 including response playbook, investigation guide, and atomic red team tests.