What researchers initially assessed as a Canada-focused phishing operation — built around Canada Revenue Agency (CRA) tax-form lures — has been unmasked as something significantly larger. ANY.RUN's analysis connected 601 individual cases to a single coordinated campaign spanning 46 countries, with roughly 45% of observed activity directed at the United States, making US organizations the operation's primary geographic target.
The tradecraft here is one I've watched mature over the past several years across dozens of IR engagements: rather than dropping a custom implant that endpoint tools will flag, the operators socially engineer victims into installing legitimate Remote Monitoring and Management (RMM) software. Once the RMM agent is installed, the attackers inherit everything the tool was designed to give an IT administrator — remote desktop control, file transfer, command execution, and persistence — all signed, all trusted, and all invisible to most antivirus engines.
This is not a theoretical risk. RMM abuse is now a standard initial-access and persistence mechanism for both financially motivated actors and ransomware affiliates. If your SOC does not have an explicit allowlist-driven detection posture for RMM tooling, you are blind to one of the most reliable intrusion vectors of 2025–2026.
Technical Analysis
What We Know About the Campaign
- Scale: 601 cases linked by ANY.RUN to the broader operation, across 46 countries.
- Targeting: ~45% of observed activity associated with the United States; Canada originally appeared to be the focus due to the lure theme.
- Lure: Fraudulent CRA tax forms — a classic tax-season social engineering hook that pressures victims into opening attachments or following links under the guise of refunds, reassessments, or compliance deadlines.
- Payload strategy: Delivery of legitimate RMM tooling rather than conventional malware, giving operators durable, trusted remote access.
Why RMM Abuse Works — The Defender's View of the Attack Chain
- Delivery: Phishing email carrying a tax-themed lure (CRA branding for Canadian victims, localized equivalents elsewhere). The lure directs the victim to download what appears to be a tax document viewer, form filler, or "secure document portal client."
- Execution: The victim runs an installer for an RMM agent (commonly abused families include ConnectWise ScreenConnect, AnyDesk, TeamViewer, Atera, Splashtop, and similar). The binary is digitally signed by the legitimate vendor — application whitelisting and AV verdicts pass cleanly.
- Establishment: The agent beacons to the vendor's cloud infrastructure, registering the endpoint under an attacker-controlled tenant. From the network's perspective, this is outbound TLS to a reputable SaaS domain — indistinguishable from sanctioned IT use.
- Access & follow-on: The operator connects interactively or stages follow-on payloads via the RMM's file transfer and remote shell capabilities. In ransomware affiliate playbooks, this is frequently followed by credential theft, lateral movement, and eventual exfiltration and encryption.
The critical defensive insight: every stage of this chain uses legitimate, signed, widely deployed software. Signature-based controls are structurally incapable of catching it. The detection surface is behavioral and contextual — who installed the tool, where it landed, and whether your organization actually sanctions it.
Exploitation Status
This is confirmed active, in-the-wild activity — not a proof of concept. 601 linked cases across 46 countries constitutes a mature, operationalized campaign. There is no CVE associated with this activity; it exploits trust in legitimate software and human behavior, not a software flaw. Accordingly, no vendor patch exists — remediation is architectural: allowlisting, detection engineering, and user hardening.
Detection & Response
The detections below are engineered around the highest-fidelity, lowest-noise signals for RMM abuse. The governing principle I apply on every engagement: your RMM allowlist is the detection. If you have not formally inventoried which RMM tools your IT department authorizes, do that first — every rule below becomes dramatically sharper once "unexpected" is defined.
Sigma Rules
---
title: Unauthorized RMM Tool Execution
description: Detects execution of commonly abused remote monitoring and management tools. Tune the filter section against your organization's sanctioned RMM/remote access stack. High-fidelity when combined with an RMM allowlist.
author: Security Arsenal
date: 2026/09/15
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith:
- '\anydesk.exe'
- '\screenconnect.client.exe'
- '\screenconnect.windowsclient.exe'
- '\teamviewer.exe'
- '\teamviewer_service.exe'
- '\atera_agent.exe'
- '\splashtop_streamer.exe'
- '\sr_manager.exe'
- '\nable_agent.exe'
- '\rmm.exe'
- '\rustdesk.exe'
- '\ultraviewer.exe'
- '\netop.exe'
- '\dwrcs.exe'
- '\lmsvc.exe'
- '\logmein.exe'
filter_sanctioned_paths:
Image|startswith:
- 'C:\Program Files\YourSanctionedRMM\'
- 'C:\Program Files (x86)\YourSanctionedRMM\'
condition: selection_img and not filter_sanctioned_paths
falsepositives:
- IT-sanctioned remote support tooling — maintain and enforce the allowlist filter
level: high
---
title: RMM Installer Dropped in User-Writable Directory
description: Detects RMM-related executables written to user-writable locations (Downloads, Temp, AppData, Public), a hallmark of socially engineered installs where victims are lured into running the agent themselves rather than IT deploying it via standard channels.
author: Security Arsenal
date: 2026/09/15
status: experimental
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\Downloads\'
- '\AppData\Local\Temp\'
- '\AppData\Roaming\'
- 'C:\Users\Public\'
- 'C:\ProgramData\Microsoft\Crypto\'
selection_name:
TargetFilename|contains:
- 'anydesk'
- 'screenconnect'
- 'teamviewer'
- 'atera'
- 'splashtop'
- 'rustdesk'
- 'ultraviewer'
- 'netsupport'
- 'logmein'
selection_ext:
TargetFilename|endswith:
- '.exe'
- '.msi'
condition: selection_path and selection_name and selection_ext
falsepositives:
- Users self-installing IT-approved remote tools — enforce deployment via software distribution instead
level: high
---
title: Phishing Lure Masquerading as Tax Document Installer
description: Detects execution of installers from user directories whose filenames mimic tax or revenue-agency documents — consistent with CRA tax-form lure tradecraft observed in this campaign.
author: Security Arsenal
date: 2026/09/15
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection_path:
Image|contains:
- '\Downloads\'
- '\AppData\Local\Temp\'
- 'C:\Users\Public\'
selection_name:
Image|contains:
- 'cra'
- 'tax'
- 'refund'
- 'revenue'
- 't4'
- 'w2'
- 'w-2'
- '1099'
- 'irs'
selection_ext:
Image|endswith:
- '.exe'
- '.msi'
- '.scr'
- '.bat'
- '.cmd'
condition: selection_path and selection_name and selection_ext
falsepositives:
- Rare — legitimate tax software is typically installed to Program Files by an administrator, not run from Downloads
level: critical
KQL — Microsoft Sentinel / Defender for Endpoint
This hunt surfaces RMM agent execution alongside network beacons to RMM vendor infrastructure, pivoted on devices where the process was launched from a user-writable path — the signature of a socially engineered install versus a managed deployment.
// Hunt: RMM tooling executed from user-writable paths + outbound RMM vendor connections
// Scope: last 14 days. Tune RmmVendors/RmmBinaries to your environment's allowlist.
let RmmBinaries = dynamic(["anydesk.exe","screenconnect.client.exe","screenconnect.windowsclient.exe","teamviewer.exe","atera_agent.exe","splashtop_streamer.exe","rustdesk.exe","ultraviewer.exe","logmein.exe","netsupport.exe","sr_manager.exe","dwrcs.exe"]);
let RmmVendorDomains = dynamic(["anydesk.com","screenconnect.com","connectwise.com","teamviewer.com","atera.com","splashtop.com","rustdesk.com","ultraviewer.net","logmein.com","netsupportsoftware.com"]);
let SuspiciousProcs =
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName in~ (RmmBinaries)
| where FolderPath has_any ("\\Downloads\\","\\AppData\\","\\Users\\Public\\","\\Temp\\")
| project DeviceId, DeviceName, ProcTime=TimeGenerated, FileName, FolderPath,
ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine,
AccountName, SHA256;
SuspiciousProcs
| join kind=leftouter (
DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemoteUrl has_any (RmmVendorDomains)
| project DeviceId, NetTime=TimeGenerated, RemoteUrl, RemoteIP, RemotePort, InitiatingProcessFileName
) on DeviceId
| where isnotempty(RemoteUrl) or isnotempty(FileName)
| summarize FirstSeen=min(ProcTime), LastSeen=max(ProcTime),
RmmProcesses=make_set(FileName), CommandLines=make_set(ProcessCommandLine),
VendorConnections=make_set(RemoteUrl), RemoteIPs=make_set(RemoteIP),
LaunchedBy=make_set(InitiatingProcessFileName), Users=make_set(AccountName)
by DeviceName
| order by FirstSeen desc
Run the second stage as an email pivot if you ingest Defender for Office 365 — hunting tax-themed lures that preceded the installs:
// Hunt: Tax-themed phishing lures (CRA/IRS/refund) delivered in the same window
EmailEvents
| where TimeGenerated > ago(14d)
| where Subject has_any ("CRA","Canada Revenue","tax refund","tax reassessment","T4","W-2","W2","1099","IRS","refund status")
or AttachmentFileNames has_any ("cra","tax","refund","revenue","t4","w2","1099","irs")
| where MalwareFilterVerdict !~ "Malware" // the lure is often a link, not a payload — AV-clean
| project TimeGenerated, SenderFromAddress, SenderMailFromAddress, RecipientEmailAddress,
Subject, AttachmentFileNames, Urls, DeliveryAction, ThreatTypes
| order by TimeGenerated desc
Velociraptor VQL
For IR scoping or a proactive fleet sweep, this artifact inventories RMM binaries on disk, checks for their persistence as services or Run keys, and correlates with live network connections — the triage package I would collect on any host flagged by the rules above.
-- Artifact: RMM abuse triage — running RMM processes, persistence, and connections
-- Scope with a hunt across the fleet; export results per host for case evidence.
-- 1. Running RMM processes with command lines and owners
LET procs = SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(?i)(anydesk|screenconnect|teamviewer|atera|splashtop|rustdesk|ultraviewer|logmein|netsupport)'
OR CommandLine =~ '(?i)(anydesk|screenconnect|teamviewer|atera|splashtop|rustdesk|ultraviewer|logmein|netsupport)'
-- 2. RMM binaries on disk outside Program Files (user-writable staging)
LET staged = SELECT FullPath, Size, Mtime, Ctime
FROM glob(globs=['C:/Users/*/Downloads/**/*anydesk*.exe',
'C:/Users/*/Downloads/**/*screenconnect*.exe',
'C:/Users/*/Downloads/**/*teamviewer*.exe',
'C:/Users/*/Downloads/**/*rustdesk*.exe',
'C:/Users/*/Downloads/**/*ultraviewer*.exe',
'C:/Users/*/AppData/**/*anydesk*.exe',
'C:/Users/*/AppData/**/*screenconnect*.exe',
'C:/Users/Public/**/*.exe'])
WHERE FullPath =~ '(?i)(anydesk|screenconnect|teamviewer|atera|splashtop|rustdesk|ultraviewer|logmein)'
OR FullPath =~ '(?i)Users/Public'
-- 3. Persistence: services registered for RMM agents
LET services = SELECT Name, DisplayName, PathName, StartMode, State
FROM wmi(query='SELECT Name, DisplayName, PathName, StartMode, State FROM Win32_Service',
namespace='root/cimv2')
WHERE PathName =~ '(?i)(anydesk|screenconnect|teamviewer|atera|splashtop|rustdesk|ultraviewer|logmein|netsupport)'
SELECT * FROM procs
UNION ALL
SELECT NULL AS Pid, NULL AS Ppid, 'STAGED_FILE' AS Name, FullPath AS Exe,
format(format='Size=%d Mtime=%v', args=[Size, Mtime]) AS CommandLine,
'' AS Username, Ctime AS CreateTime FROM staged
Note: if your Velociraptor deployment restricts wmi() in hunts, split section 3 into a separate artifact — the staged-file and process data alone are sufficient for initial triage.
Remediation & Hardening Script
This PowerShell script (run elevated, per host or via your RMM/GPO/Intune — yes, use your sanctioned RMM to kill the rogue ones) inventories installed RMM tooling, flags anything not on your allowlist, terminates unauthorized agents, removes their services, and reports findings for case tracking.
#Requires -RunAsAdministrator
# Security Arsenal — Unauthorized RMM Audit & Removal
# 1) Populate $SanctionedRmm with YOUR approved tool names before running.
# 2) Run with -ReportOnly first. Review output. Then rerun without it to remediate.
param([switch]$ReportOnly)
$SanctionedRmm = @('datto','kaseya') # <-- EDIT: names of your approved RMM(s), lowercase
$KnownRmmPatterns = @('anydesk','screenconnect','connectwise','teamviewer','atera',
'splashtop','rustdesk','ultraviewer','logmein','netsupport',
'dameware','dwrcs','n-able','nble','gotomypc','zoho','ammyy')
$Report = @()
function Test-Sanctioned([string]$Name) {
foreach ($ok in $SanctionedRmm) { if ($Name.ToLower() -like "*$ok*") { return $true } }
return $false
}
Write-Host "[*] Auditing running processes..." -ForegroundColor Cyan
Get-Process | Where-Object {
$p = $_.ProcessName.ToLower()
($KnownRmmPatterns | Where-Object { $p -like "*$_*" }) -and -not (Test-Sanctioned $p)
} | ForEach-Object {
$Report += [pscustomobject]@{Type='Process'; Name=$_.ProcessName; Path=$_.Path; Action=''}
Write-Host "[!] Unauthorized RMM process: $($_.ProcessName) ($($_.Path))" -ForegroundColor Red
if (-not $ReportOnly) { Stop-Process -Id $_.Id -Force -ErrorAction SilentlyContinue; $Report[-1].Action='Terminated' }
}
Write-Host "[*] Auditing services..." -ForegroundColor Cyan
Get-CimInstance Win32_Service | Where-Object {
$n = ($_.Name + $_.DisplayName + $_.PathName).ToLower()
($KnownRmmPatterns | Where-Object { $n -like "*$_*" }) -and -not (Test-Sanctioned $n)
} | ForEach-Object {
$Report += [pscustomobject]@{Type='Service'; Name=$_.Name; Path=$_.PathName; Action=''}
Write-Host "[!] Unauthorized RMM service: $($_.Name) -> $($_.PathName)" -ForegroundColor Red
if (-not $ReportOnly) {
Stop-Service -Name $_.Name -Force -ErrorAction SilentlyContinue
sc.exe delete $_.Name | Out-Null
$Report[-1].Action='Stopped+Deleted'
}
}
Write-Host "[*] Auditing installed programs..." -ForegroundColor Cyan
$uninstall = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $uninstall -ErrorAction SilentlyContinue | Where-Object {
$d = "$($_.DisplayName)".ToLower()
($KnownRmmPatterns | Where-Object { $d -like "*$_*" }) -and -not (Test-Sanctioned $d)
} | ForEach-Object {
$Report += [pscustomobject]@{Type='InstalledApp'; Name=$_.DisplayName; Path=$_.InstallLocation; Action='Manual uninstall required'}
Write-Host "[!] Unauthorized RMM installed: $($_.DisplayName)" -ForegroundColor Red
}
Write-Host "[*] Auditing staged binaries in user-writable paths..." -ForegroundColor Cyan
Get-ChildItem 'C:\Users\*\Downloads','C:\Users\Public' -Recurse -Include *.exe,*.msi -ErrorAction SilentlyContinue |
Where-Object { $n=$_.Name.ToLower(); $KnownRmmPatterns | Where-Object { $n -like "*$_*" } } |
ForEach-Object {
$Report += [pscustomobject]@{Type='StagedFile'; Name=$_.Name; Path=$_.FullName; Action=''}
Write-Host "[!] Staged RMM installer: $($_.FullName)" -ForegroundColor Red
if (-not $ReportOnly) { Remove-Item $_.FullName -Force -ErrorAction SilentlyContinue; $Report[-1].Action='Deleted' }
}
$out = "$env:ProgramData\RMM_Audit_$(Get-Date -Format yyyyMMdd_HHmmss).csv"
$Report | Export-Csv $out -NoTypeInformation
Write-Host "[*] Report written to $out — $($Report.Count) finding(s). Preserve for IR case evidence." -ForegroundColor Green
Remediation
Because this campaign exploits trust and behavior rather than a patchable flaw, remediation is a control-maturity exercise. These are the actions I'd put in the client report, in priority order:
- Establish and enforce an RMM allowlist (this week). Inventory every remote access tool legitimately used by IT, MSPs, and vendors. Everything not on that list is detect-on-sight. Implement via AppLocker or Windows Defender Application Control (WDAC) policy — deny-by-default for unsigned/unapproved remote access binaries. For most mid-size environments, an AppLocker executable rule permitting only your sanctioned agent path (
C:\Program Files\<YourRMM>\) neutralizes this entire attack class. - Deploy the detections above. The Sigma rules and KQL hunts are designed for allowlist tuning — without that tuning step, they fire on your own IT department. Spend the two hours to tune them; it is the difference between a high-fidelity alert and a rule your analysts disable in a week.
- Block or alert on RMM vendor domains at the egress layer for non-sanctioned tools. Your proxy/SWG should alert on connections to anydesk.com, screenconnect.com, rustdesk.com, etc., from any host not running your approved agent. Attackers register endpoints under their own tenants, so domain reputation will not save you — your own egress policy has to.
- Harden the mail and web channel against tax-themed lures. The campaign's lures are frequently link-based rather than attachment-based, which is why they pass malware filters. Ensure URL rewriting/click-time protection is enabled, flag external senders impersonating government agencies (CRA, IRS), and add DMARC enforcement on your own domain so your brand isn't weaponized in lookalike campaigns.
- User awareness targeted at this exact lure. CRA/IRS/tax-refund themes are seasonal and recurring — the same operation that used Canadian tax branding will localize IRS and state-franchise lures for its US-heavy target set. Brief help desk and finance staff specifically: government tax agencies do not distribute software or ask you to install a client to view a document.
- If you find an unauthorized RMM agent, treat it as an incident, not a cleanup task. An installed RMM agent means a human operator may have had interactive access. Pull triage (the VQL above), review the agent's connection logs and vendor-tenant telemetry where available, hunt for credential access and lateral movement from that host, and rotate credentials for any user who was active on the machine. Removing the binary without scoping is how a nuisance finding becomes a ransomware detonation 30 days later.
- Monitor CISA and vendor channels. RMM abuse is tracked under MITRE ATT&CK T1219 (Remote Access Software) and T1566 (Phishing). While no CVE is associated with this campaign, CISA has repeatedly flagged RMM abuse in joint advisories; subscribe to CISA alerts and your sanctioned RMM vendor's security bulletins for tenant-abuse reporting mechanisms.
The strategic takeaway for CISOs: your adversaries have industrialized the abuse of tools your own IT teams trust. The 45% US targeting share means this is not a Canadian tax story — it is a North American enterprise access story. The organizations that come out ahead of this are the ones that treated "which remote access tools do we allow" as a security control rather than an IT convenience question.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.