In March 2026, The DFIR Report disclosed a sprawling search engine optimization (SEO) poisoning campaign — tracked as BengalSEO — that has been manipulating Bing search results to push victims toward malware downloads and tech support scam pages. What makes this campaign remarkable is its longevity: the operation has been running out of the Indian state of Rajasthan since at least 2015, allegedly backed by two IT service providers operating under the WeConnect brand. That is more than a decade of industrialized search-result manipulation feeding a malware delivery pipeline, and it is still active today.
This is not a vulnerability you can patch. There is no CVE to track and no vendor advisory to wait on. BengalSEO is a delivery and monetization problem: adversaries are exploiting the trust users place in search engine results to deliver MayaBot malware and route victims into fraudulent tech support schemes that typically escalate into credential theft, remote access tool installation, and direct financial fraud. For defenders, the fight happens at the browser, the endpoint, the proxy, and the help desk. This post breaks down how the campaign works and gives you concrete detection and hardening guidance you can deploy this week.
Technical Analysis
What BengalSEO Is
BengalSEO is not a malware family — it is an infrastructure and tradecraft operation. The operators maintain large networks of websites engineered to rank highly in Bing search results for high-intent queries: free software downloads, printer drivers, banking portals, government forms, streaming services, and technical support keywords. When a victim clicks a poisoned result, one of two things happens:
- Malware delivery (MayaBot): The victim lands on a convincing fake download page — often impersonating legitimate software brands — and downloads a trojanized installer. Execution installs MayaBot, a botnet payload that establishes persistence, beacons to command-and-control (C2) infrastructure, and can serve as a loader for follow-on payloads.
- Tech support scam funnel: The victim is redirected to a scareware page displaying fake virus alerts, often with browser-locking behavior and a fraudulent support phone number. The endgame is social engineering the victim into granting remote access (commonly via legitimate RMM tools like AnyDesk, TeamViewer, or ScreenConnect) or paying for fake remediation services.
Why Bing, and Why It Works
Bing's market share is smaller than Google's, but its demographic skews toward less technical users, and it is the default search engine in Microsoft Edge on millions of enterprise and consumer Windows machines. The BengalSEO operators have spent years identifying gaps in Bing's abuse detection — registering aged domains, building backlink networks, and cycling infrastructure fast enough to stay ahead of takedowns. The campaign's decade-long run tells you the economics work: the cost of disposable domains and SEO labor is trivial compared to the payout from botnet installs and scam conversions.
The Attack Chain From a Defender's Perspective
The observable chain on an endpoint looks like this:
- Search and click: User searches Bing (typically via Edge) for software or support keywords and clicks a poisoned result.
- Redirect chain: The landing page redirects through one or more intermediate domains before presenting the payload page or scam content.
- Download: A trojanized installer (EXE or MSI) is written to the user's Downloads folder, carrying a Mark-of-the-Web (Zone.Identifier) from the untrusted source.
- Execution: The user runs the installer. The browser process (msedge.exe, chrome.exe) is the parent of the installer process, which may in turn spawn msiexec.exe, cmd.exe, or powershell.exe.
- Persistence and C2: MayaBot establishes persistence (commonly Run keys or scheduled tasks) and begins beaconing to its C2 infrastructure.
- Monetization branch (scam path): Alternatively, the victim calls the fraudulent support number and is walked through installing a legitimate RMM tool — which gives the scam operator full remote control under the guise of support.
Exploitation Status
This campaign is confirmed active in the wild and has been for years. Because SEO poisoning abuses legitimate search functionality rather than a software flaw, there is no associated CVE and no CISA KEV entry. The 'patch' is behavioral and architectural: detection engineering, web filtering, application control, and user awareness.
Detection & Response
The highest-fidelity signals for SEO-poisoning-driven malware delivery are: (1) browsers spawning installers or script interpreters, (2) executables launching from user-writable download directories with Mark-of-the-Web, and (3) persistence created by binaries in user-profile paths. The scam path is harder to detect on the wire, but RMM tool installation on endpoints that have no business running them is a strong tripwire.
Sigma Rules
---
title: Browser-Spawned Installer or Script Execution - SEO Poisoning Delivery
id: 3f8a1b72-5c6d-4e9a-b1f2-8d4c6a7e9f01
status: experimental
description: Detects web browsers spawning installers, script interpreters, or command shells, consistent with SEO poisoning / malvertising drive-by downloads such as the BengalSEO campaign delivering MayaBot via trojanized installers.
references:
- https://thehackernews.com/2026/09/bengalseo-poisons-bing-search-results.html
- https://attack.mitre.org/techniques/T1189/
- https://attack.mitre.org/techniques/T1204/002/
author: Security Arsenal
date: 2026/09/24
tags:
- attack.initial_access
- attack.t1189
- attack.t1204.002
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\msedge.exe'
- '\chrome.exe'
- '\firefox.exe'
- '\brave.exe'
selection_child:
Image|endswith:
- '\msiexec.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\cmd.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
condition: selection_parent and selection_child
falsepositives:
- Browser-integrated installers for legitimate software (rare in hardened environments)
- Enterprise software distribution via browser portals
level: high
---
title: Executable Launched From User Downloads Directory
id: 9c2e4d81-7a3b-4f5c-8e6d-1b9a3c5e7f02
status: experimental
description: Detects execution of binaries directly from user Downloads folders, a common final step in SEO poisoning delivery chains where victims are lured into running trojanized installers impersonating legitimate software.
references:
- https://thehackernews.com/2026/09/bengalseo-poisons-bing-search-results.html
- https://attack.mitre.org/techniques/T1204/002/
author: Security Arsenal
date: 2026/09/24
tags:
- attack.execution
- attack.t1204.002
logsource:
category: process_creation
product: windows
detection:
selection:
Image|contains:
- '\Downloads\'
filter_known_updaters:
Image|endswith:
- '\MicrosoftEdgeUpdate.exe'
- '\OneDriveSetup.exe'
condition: selection and not filter_known_updaters
falsepositives:
- Users manually installing legitimate downloaded software - tune with allowlists for approved installers by hash or signer
level: medium
---
title: Persistence via Run Key From User Profile Path
id: 5b7f3a19-2d8e-4c6a-9f1b-4e8d2a6c3b04
status: experimental
description: Detects registry Run key persistence entries pointing to executables in user-writable profile paths (Downloads, AppData, Temp), consistent with MayaBot-style botnet persistence following SEO poisoning delivery.
references:
- https://thehackernews.com/2026/09/bengalseo-poisons-bing-search-results.html
- https://attack.mitre.org/techniques/T1060/
author: Security Arsenal
date: 2026/09/24
tags:
- attack.persistence
- attack.t1060
logsource:
category: registry_set
product: windows
detection:
selection_key:
TargetObject|contains:
- '\Software\Microsoft\Windows\CurrentVersion\Run'
selection_path:
Details|contains:
- '\Downloads\'
- '\AppData\Local\Temp\'
- '\AppData\Roaming\'
- 'C:\Users\Public\'
condition: selection_key and selection_path
falsepositives:
- Legitimate per-user applications persisting from AppData (e.g., Teams, Slack, OneDrive) - filter by signer and known paths
level: high
KQL — Microsoft Sentinel / Defender
This query hunts the full SEO-poisoning delivery chain in Defender data: browsers spawning installers or script interpreters, with the initiating command lines and file hashes surfaced for triage. A second section identifies connections from newly executed download-folder binaries to external infrastructure — a fast way to catch MayaBot's first beacon.
// Stage 1: Browser-spawned installers and script interpreters (SEO poisoning delivery)
let browsers = dynamic(["msedge.exe", "chrome.exe", "firefox.exe", "brave.exe"]);
let children = dynamic(["msiexec.exe", "powershell.exe", "pwsh.exe", "cmd.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe"]);
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName in~ (browsers)
| where FileName in~ (children)
| project TimeGenerated, DeviceName, AccountName,
ParentProcess = InitiatingProcessFileName,
ChildProcess = FileName, ProcessCommandLine,
InitiatingProcessCommandLine, SHA256, ReportId
| sort by TimeGenerated desc;
// Stage 2: Network connections from recently executed binaries in Downloads folders
// (candidate first-beacon / C2 behavior for payloads like MayaBot)
let recent_download_execs =
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where FolderPath has @"\Downloads\"
| summarize FirstExec = min(TimeGenerated) by DeviceName, FileName, FolderPath, SHA256;
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemoteUrl !has_any ("microsoft.com", "bing.com", "windows.com")
or RemoteIPType == "PublicIP"
| join kind=inner recent_download_execs on DeviceName, FileName
| project FirstExec, TimeGenerated, DeviceName, FileName, FolderPath, SHA256,
RemoteIP, RemoteUrl, RemotePort
| sort by FirstExec desc
For the tech support scam branch, hunt for unsanctioned RMM tooling appearing on endpoints — the canonical post-scam-call artifact:
// Unauthorized RMM tool installation - common endgame of tech support scam calls
let rmm_tools = dynamic(["anydesk.exe", "teamviewer.exe", "teamviewer_service.exe",
"screenconnect.clientservice.exe", "rustdesk.exe", "ultraviewer.exe",
"ammyy.exe", "supremo.exe", "splashtop.exe"]);
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName in~ (rmm_tools)
| summarize FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated),
dcount(DeviceName) by FileName, SHA256
| where FirstSeen > ago(14d) // newly appeared in environment
| sort by FirstSeen desc
Velociraptor VQL
Use this hunt artifact to sweep endpoints for executables in Downloads folders that still carry a Mark-of-the-Web Zone.Identifier alternate data stream — the forensic fingerprint of a browser-delivered payload — cross-referenced against persistence keys pointing at user-writable paths.
-- BengalSEO / SEO-poisoning endpoint sweep:
-- Find MOTW-tagged executables in Downloads plus Run-key persistence in user-writable paths
-- Part 1: Executables in Downloads with Mark-of-the-Web (Zone.Identifier ADS)
SELECT FullPath, Size, Mtime,
parse_string_with_regex(string=read_file(path=FullPath + ':Zone.Identifier'),
regex='ZoneId=(\\d)').g1 AS ZoneId
FROM glob(globs='C:/Users/*/Downloads/**/*.exe')
WHERE ZoneId = '3'
-- Part 2: Run-key persistence entries pointing to user-writable locations
SELECT Name, Key.FullPath AS KeyPath,
Data.value AS CommandLine,
Key.Mtime AS ModifiedTime
FROM read_reg_key(globs='HKEY_USERS/*/Software/Microsoft/Windows/CurrentVersion/Run/*')
WHERE CommandLine =~ 'Downloads|AppData\\\\Local\\\\Temp|Users\\\\Public'
For live triage of a suspected MayaBot-infected host, pull the process list and network connections together:
-- Live triage: processes running from user-writable paths with active connections
SELECT Pid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(Downloads|AppData\\\\Local\\\\Temp|Users\\\\Public)'
SELECT Pid, Name, LocalAddr, LocalPort, RemoteAddr, RemotePort, Status
FROM netstat()
WHERE Status = 'ESTABLISHED' AND RemoteAddr !~ '^(10\\.|192\\.168\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.)'
Remediation and Hardening Script
This PowerShell script performs three functions on a Windows fleet: (1) audits endpoints for MOTW-tagged executables sitting in Downloads folders, (2) flags persistence entries in Run keys pointing at user-writable paths, and (3) verifies that Microsoft Defender SmartScreen and Edge SmartScreen are enforced — your first-line control against poisoned download pages. Run it via your RMM or as a scheduled task; ship output to your SIEM.
# BengalSEO / SEO-poisoning audit and hardening script
# Run as SYSTEM or local admin. Outputs JSON findings for SIEM ingestion.
$findings = @()
# --- 1. Audit Downloads folders for internet-sourced executables (MOTW ZoneId=3) ---
Get-ChildItem 'C:\Users\*\Downloads' -Include *.exe,*.msi,*.bat,*.ps1,*.js,*.vbs,*.scr -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
$zone = Get-Content -Path $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue
if ($zone -match 'ZoneId=3') {
$findings += [pscustomobject]@{
Type = 'MOTW_Executable_In_Downloads'
Path = $_.FullName
LastWrite = $_.LastWriteTime
SHA256 = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
}
}
}
# --- 2. Audit Run keys for persistence in user-writable paths ---
$runKeys = @('HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run')
foreach ($key in $runKeys) {
Get-ItemProperty -Path $key -ErrorAction SilentlyContinue | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Value -match 'Downloads|AppData\\Local\\Temp|Users\\Public'
} | ForEach-Object {
$findings += [pscustomobject]@{
Type = 'Suspicious_RunKey_Persistence'
Path = "$key\$($_.Name)"
Command = $_.Value
}
}
}
}
# --- 3. Verify SmartScreen enforcement (Defender + Edge) ---
$smartscreen = Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' -Name EnableSmartScreen -ErrorAction SilentlyContinue
if (-not $smartscreen -or $smartscreen.EnableSmartScreen -ne 1) {
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' -Name EnableSmartScreen -Value 1
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' -Name ShellSmartScreenLevel -Value 'Block'
$findings += [pscustomobject]@{ Type = 'Remediation'; Path = 'SmartScreen'; Command = 'Enforced Block mode' }
}
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Edge' -Force -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Edge' -Name SmartScreenEnabled -Value 1
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Edge' -Name PreventSmartScreenPromptOverride -Value 1
# --- 4. Detect unsanctioned RMM tools (tech support scam indicator) ---
$rmm = @('AnyDesk','TeamViewer','ScreenConnect','RustDesk','UltraViewer','Ammyy','Supremo')
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall' -ErrorAction SilentlyContinue |
Get-ItemProperty | Where-Object { $n = $_.DisplayName; $rmm | Where-Object { $n -match $_ } } |
ForEach-Object {
$findings += [pscustomobject]@{ Type = 'Unsanctioned_RMM_Installed'; Path = 'InstalledSoftware'; Command = $_.DisplayName }
}
$findings | ConvertTo-Json -Depth 3 | Out-File "$env:ProgramData\seo_poisoning_audit_$(Get-Date -Format yyyyMMdd).json"
$findings | Format-Table -AutoSize
Remediation
There is no vendor patch for BengalSEO because there is no exploited software flaw — the remediation is layered defense against a delivery mechanism. Prioritize the following:
Immediate (this week):
- Enforce SmartScreen and reputation-based protection. Ensure Microsoft Defender SmartScreen, Edge SmartScreen, and Defender's Potentially Unwanted Application (PUA) blocking are enabled and set to block — not warn — via GPO or Intune. These controls directly interrupt poisoned download pages and trojanized installers.
- Block execution from Downloads and other user-writable paths. Deploy WDAC or AppLocker rules preventing executables, MSIs, and scripts from running in user-writable directories. This single control breaks the MayaBot delivery chain at step 4.
- Deploy the detection content above. The browser-spawned-installer Sigma rule and the Stage 1/Stage 2 KQL queries should go into your detection stack today; validate against your baseline and allowlist known software distribution tools by signer or hash.
Short term (this month):
- Web filtering for newly registered and low-reputation domains. BengalSEO survives by cycling disposable infrastructure. Category-based filtering (newly registered domains, parked domains, unscored sites) at the proxy or secure web gateway removes the oxygen from SEO poisoning campaigns.
- RMM application control. Inventory every remote access tool legitimately used in your environment, then alert on — or block — everything else. The tech support scam branch of this campaign almost always ends with an AnyDesk/TeamViewer/ScreenConnect install during a phone call.
- User awareness targeting the actual lure. Train users that top search results are not endorsements, that legitimate software should come from vendor sites or internal portals, and that no real vendor initiates support calls or demands remote access from a pop-up. Give the help desk a script for handling users who already called a scam number — those endpoints need triage for RMM installs and credential exposure, fast.
Ongoing:
- Monitor Bing-specific referral telemetry. Because BengalSEO targets Bing, hunt proxy/EDR data for click chains originating from bing.com referrers that terminate in executable downloads or known scam TLDs. Treat a Bing-referred executable download on an endpoint as a triage-worthy event.
- Track DFIR Report follow-on reporting. The DFIR Report's March 2026 disclosure is the primary source for this campaign's infrastructure; subscribe to their feed and ingest published IOCs into your blocklists as they surface.
BengalSEO has survived for over a decade because it monetizes patience and trust rather than technical novelty. The good news: every stage of its delivery chain leaves observable artifacts, and the controls that stop it — application control, reputation filtering, RMM governance, SmartScreen — are defenses you should be running anyway. Close those gaps and this campaign stops being a threat and starts being free detection-validation exercise material.
Related Resources
Security Arsenal Managed SOC Services AlertMonitor Platform Book a SOC Assessment soc-mdr Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.