MSP360 Dual-RMM Phishing Delivering ConnectWise ScreenConnect
Executive Summary
Starting in July 2026, Microsoft Defender Experts observed phishing campaigns across multiple industries that distribute a legitimate, digitally signed MSP360 Remote Monitoring and Management (RMM) installer (v2.5.0.67) under deceptive filenames themed as meeting invitations, PDF-reader updates, e-cards, job offers, document-signature requests, and government benefit statements. The attacker's objective is not to exploit software, but to get a victim to run a trusted, vendor-signed management tool voluntarily, converting a single click into full remote administration of the endpoint.
Once installed, the MSP360 RMM Agent service is abused to launch PowerShell and silently install a second,
independent remote-access tool, ConnectWise ScreenConnect, via msiexec.exe /qn. This "dual-RMM"
design gives the operator redundant access: removing one tool does not evict the other. ScreenConnect's
built-in RunFile feature is then used to transfer and execute a battery of credential-theft and
defense-evasion utilities named to mimic Windows, Defender, and Phone Link components. The activity is
unattributed; Microsoft has not linked it to a named threat actor, and a parallel July 2026 cluster achieved
the same outcome using Faronics Deploy Agent instead of MSP360 as the first-stage tool.
The highest-value defensive angle is not alerting on MSP360 or ScreenConnect presence
alone: both are legitimate tools many MSPs run deliberately. The reliable discriminators are: (1) the
distinctive _rmm_v2.5.0.67_oid filename suffix baked into every observed lure, (2) the
co-occurrence of MSP360 and ScreenConnect installing on the same endpoint within a short window, and (3) the
revoked code-signing certificate used on the observed installer sample.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| 1 - Primary | Microsoft Security Blog, 2026-09-29 | Full attack-chain writeup, complete IOC table (installer hash, SHA1, 4 service hashes, 7 C2 domains, 25 post-compromise utility hashes), 3 KQL hunting queries, 19 MITRE ATT&CK technique mappings, explicit non-attribution statement. | yes |
| 2 - Trade press | TheHackerNews, 2026-09-30 | Corroborates attack chain, deceptive filename examples, service names, UDP 48678 firewall rule, unattributed status, and the parallel Faronics Deploy Agent cluster. | yes |
| 2 - Trade press | GBHackers, 2026-09-30 | Corroborates installer SHA256/SHA1, the 4 service SHA256 hashes, install path, firewall rule, and a subset (7) of the named post-compromise utility filenames. | yes |
| 2 - Trade press | TheCyberExpress | Fetch failed: HTTP 403 on both the fetch tool and a direct retry with a browser user agent, as instructed. No content retrieved; not cited anywhere in this pack. | no |
| 2 - Trade press | CyberPress, 2026-09-30 | Additional corroboration found via search (not in the original source list): confirms installer SHA256/SHA1, install path, service names, cloud-hosting platforms, and unattributed status. | yes |
Research decisions:
- All five fetch targets were attempted; TheCyberExpress could not be retrieved after one retry (HTTP 403) and is excluded from every claim and citation in this pack rather than paraphrased from the search snippet.
- The full text of every successfully fetched source was saved verbatim to
MSP360-DualRMM-Phishing-Hunt-sources/before any IOC was transcribed into this pack. Every atomic indicator below was checked against the saved Microsoft snapshot and traces to it. - No prompt-injection content was found in any fetched page. The Microsoft blog's "Learn More" section links to unrelated Microsoft posts about prompt-injection defenses in Defender for Office 365; these are ordinary cross-links describing a different product feature, not instructions directed at this agent, and were not acted upon.
- Microsoft explicitly states the campaign is tracked as unattributed activity; no actor or campaign name is used anywhere in this pack beyond the vendor/product names that are the subject matter (MSP360, ConnectWise ScreenConnect).
Hunt Brief & Attack Chain
Hunt hypotheses
| # | Hypothesis | MITRE | Telemetry | Confidence |
|---|---|---|---|---|
| H1 | A host executed a binary carrying the campaign's distinctive _rmm_v2.5.0.67_oid filename suffix. | T1204, T1036 | ProcessRollup2 | High |
| H2 | A host executed a file matching one of the published installer/service SHA256 hashes. | T1204, T1543.003 | ProcessRollup2 | High |
| H3 | RMM.Agent.exe spawned PowerShell, which staged and silently installed a ConnectWise ScreenConnect MSI. | T1059.001, T1218.007 | ProcessRollup2 | High |
| H4 | A Windows service was registered for one of the four MSP360/ScreenConnect binaries. | T1543.003 | CreateService | High |
| H5 | MSP360 and ScreenConnect both appear in software inventory for the same host within a short window (highest-fidelity correlation). | T1219, T1543.003 | InstalledApplication | High |
| H6 | An inbound UDP/48678 firewall allow-rule was created scoped to RMM.Agent.exe. | T1562.004 | ProcessRollup2 | Medium |
| H7 | ScreenConnect's RunFile capability executed a file from the observed Temp staging paths, optionally matching the named post-compromise utility set. | T1105, T1036.005, T1005 | ProcessRollup2 | High |
| H8 | A host resolved one of the seven published C2 domains. | T1071.001, T1583.001 | DnsRequest | High |
| H9 | (Pivot only) A host resolved a cloud-storage platform known to have staged this campaign's payloads, as a corroborating signal alongside H1/H2. | T1583.006, T1105 | DnsRequest | Low (standalone) |
Attack chain
| Step | Stage | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Phishing email / landing page (meeting invite, PDF, e-card, Zoom, SSA.GOV lure) | Email gateway, proxy/web logs (outside Falcon scope) | Section 7 native hunts |
| 2 | Victim downloads a masqueraded MSP360 installer from attacker infrastructure or S3/R2/Dropbox/GitLab/Supabase | DnsRequest, NetworkConnectIP4 | Q10 (pivot) |
| 3 | Victim executes the installer; UAC elevation; MSP360 components dropped to C:\Program Files\RMM Agent\ | ProcessRollup2 | Q1, Q2 |
| 4 | Services RMM.Agent.exe / RMM.Agent.Launcher.exe registered; registry autorun created; UDP/48678 firewall rule added | CreateService, ProcessRollup2 | Q4, Q6 |
| 5 | RMM.Agent.exe launches PowerShell → downloads ClientSetup.msi → msiexec.exe /qn installs ScreenConnect | ProcessRollup2 | Q3 |
| 6 | Both MSP360 and ScreenConnect now present on the same host (redundant access established) | InstalledApplication | Q5: highest fidelity |
| 7 | ScreenConnect client connects to actor infrastructure; RunFile stages credential-theft / defense-evasion utilities into ScreenConnect Temp paths | ProcessRollup2, DnsRequest | Q7, Q8, Q9 |
| 8 | Information collection, browser credential theft, defender-visibility reduction | ProcessRollup2 (child processes), FileOpenInfo | Q7, Q8; Section 7 |
Consolidated IOC Table
Every atomic indicator in this pack ships detect, not
prevent. That is deliberate and it is the most important thing to understand about this
campaign. The binaries here are not malware. Microsoft's own IOC table labels the four service hashes
"Legitimate MSP360 RMM Agent Service observed during the campaign", and the installer is the genuine MSP360
RMM v2.5.0.67 package carrying a deceptive filename. A bulk prevent import of these hashes would
break MSP360 for any organization that legitimately licenses it. Microsoft does not recommend blocking them
either: its guidance is to hunt for unapproved deployments and to block unapproved RMM software by
publisher certificate through application control. See Section 12 for that control, and the
conditional-escalation note below before changing any action value.
38 atomic indicators are carried in this pack, all traced to the saved source
snapshots in MSP360-DualRMM-Phishing-Hunt-sources/. Source counts below record corroboration
strength, which is a separate question from whether an indicator is safe to block.
Conditional escalation to prevent: escalate the installer SHA256/SHA1 only if
MSP360 is not approved software anywhere in your estate, and only after confirming no business unit
licenses it. The four service hashes should remain detect in all environments: they are stock
product files, so a hit means "MSP360 is installed here", not "this host is compromised". Triage a hit by
asking whether that install was authorized.
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| sha256 | 108ef7e628d7a20bd6241a5b57149e27a6061f467123eb64061975559f8f73dc | High (3 sources) | detect | Genuine MSP360 RMM v2.5.0.67 installer distributed under a deceptive filename; signed with a since-revoked certificate. Conditional prevent only where MSP360 is not approved software. | +6mo |
| sha1 | f34330d4c6e0aa978dc3af40360c14b31ad51127 | High (2 sources) | detect | Same installer sample, SHA1. Same conditional-prevent rule as above. | +6mo |
| sha256 ×4 | see Section 10 grid | High (2 sources) | detect | Stock MSP360 product files. Microsoft labels these "Legitimate MSP360 RMM Agent Service observed during the campaign". Never block: a hit means MSP360 is installed, not that the host is compromised. Triage against your approved-RMM inventory. | +6mo |
| sha256 ×25 | see Section 10 grid | Medium (1 source) | detect | Post-compromise utilities transferred/executed via ScreenConnect RunFile; credential access, collection, defense evasion | +6mo |
| domain ×7 | see Section 10 grid | Medium (1 source) | detect | Domains contacted by ScreenConnect clients in observed malicious sessions | +6mo |
| filename pattern | *_rmm_v2.5.0.67_oid* | High (3 sources) | hunt | Deceptive installer filename suffix common to every observed lure | +6mo |
| behavioral | MSP360 + ScreenConnect installed on same host, short window | High (3 sources) | hunt | Highest-fidelity correlation per Microsoft/TheHackerNews/GBHackers | +6mo |
| behavioral | Inbound UDP/48678 allow-rule for RMM.Agent.exe | Medium (2 sources) | enrich | Created by every MSP360 install, legitimate or not: corroborating signal only | +3mo |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Windows endpoints (all) | ProcessRollup2 / SyntheticProcessRollup2 | Critical | Low: standard Falcon sensor telemetry |
| Windows services | CreateService | Critical | Low |
| Software inventory | InstalledApplication | Critical | Medium: inventory events are periodic, not real-time; expect some lag |
| DNS / network egress | DnsRequest, NetworkConnectIP4 | High | Low |
| Email / phishing delivery | Mail gateway / M365 logs (outside Falcon) | High | High: not covered by this pack's CQL; see Section 7 |
| Windows Firewall configuration | No native Falcon "firewall rule added" event exists; inferred via process command line | Medium | High: Q6 is a process-level proxy, not a direct firewall-state read; see Section 15 |
| Browser credential stores | FileOpenInfo / process execution of credential-theft utilities | High | Medium: depends on exact utility behavior being captured by process/file events |
ATT&CK Mapping
19 of the 20 techniques below are Microsoft's own published mapping for this campaign; T1562.004 is a supplementary mapping this pack adds for the firewall-rule behavior and is flagged as such.
| Tactic | Technique | Name | Observed Behavior | Query/Control |
|---|---|---|---|---|
| Resource Development | T1583.001 | Acquire Infrastructure: Domains | Domains hosted phishing landing pages, payload delivery, and ScreenConnect C2. | Q9 |
| Resource Development | T1583.006 | Acquire Infrastructure: Web Services | Amazon S3, Cloudflare R2, Dropbox, GitLab, and Supabase used for payload distribution. | Q10 (pivot) |
| Initial Access | T1566.002 | Phishing: Spearphishing Link | Meeting/Zoom/PDF/e-card/government-benefit themed phishing links to payload download locations. | Section 7 (native) |
| Initial Access | T1204 | User Execution | Victim downloads and executes the masqueraded MSP360 installer. | Q1, Q2 |
| Execution | T1059.001 | Command and Scripting Interpreter: PowerShell | RMM.Agent.exe launches PowerShell to download/install ScreenConnect. | Q3 |
| Execution | T1059.003 | Command and Scripting Interpreter: Windows Command Shell | cmd.exe used for logging, prerequisite checks, and installation tasks. | Section 7 (native) |
| Execution | T1218.007 | System Binary Proxy Execution: Msiexec | ClientSetup.msi installed silently via msiexec.exe /qn. | Q3 |
| Persistence | T1543.003 | Create or Modify System Process: Windows Service | MSP360 and ScreenConnect installed as Windows services. | Q4, Q5 |
| Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys | MSP360 creates registry Run entries for tray UI components. | Section 7 (native) |
| Defense Evasion | T1036 | Masquerading | Legitimate MSP360 software distributed under deceptive filenames. | Q1 |
| Defense Evasion | T1036.005 | Match Legitimate Name or Location | Follow-on tooling named to resemble Windows/Defender/Phone Link components. | Q7, Q8 |
| Defense Evasion | T1112 | Modify Registry | Service, persistence, credential-provider, and uninstall registry modifications. | Section 7 (native) |
| Defense Evasion | T1562.004 | Impair Defenses: Disable or Modify System Firewall (supplementary: not in Microsoft's published technique list) | Inbound UDP/48678 allow-rule created for RMM.Agent.exe. | Q6 |
| Command and Control | T1219 | Remote Access Software | MSP360 RMM and ConnectWise ScreenConnect abused for persistent access. | Q5 |
| Command and Control | T1105 | Ingress Tool Transfer | MSP360 downloads ScreenConnect; ScreenConnect transfers post-compromise tooling. | Q3, Q7, Q8 |
| Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | PowerShell and ScreenConnect communicate over HTTP/HTTPS. | Q9 |
| Command and Control | T1573 | Encrypted Channel | Payload retrieval and remote-access communications over encrypted channels. | Q9 |
| Command and Control | T1102 | Web Service | Cloud-hosted web services used throughout delivery and C2 infrastructure. | Q9, Q10 |
| Discovery | T1082 | System Information Discovery | Installer enumerates installed .NET runtimes via dotnet --list-runtimes. | Section 7 (native) |
| Collection | T1005 | Data from Local System | Post-compromise tooling collects information from victim devices. | Q7, Q8 |
Native Audit-Log Hunts (non-CQL)
Email gateway / M365 Defender
- Search mail flow for attachments or links to filenames matching
*_rmm_v2.5.0.67_oid*or subjects themed as meeting invites, e-cards, RSVP, DHL/package delivery, job offers, or government-benefit statements, especially where the link resolves to Amazon S3, Cloudflare R2, Dropbox, GitLab, or Supabase. - If Defender for Office 365 is in use, pull Threat Explorer for delivered messages whose payload hash matches the published installer SHA256/SHA1.
Windows Event Log (Sysmon / native)
- Sysmon Event ID 1 (process create): filter
OriginalFileNameorImagefor the deceptive filename pattern and forRMM.Agent.exespawningpowershell.exe. - Windows Application log, source "MSP360 RMM Agent installer": Microsoft notes the
installer emits
eventcreate.exeentries "Begin installation" / "End installation. MSP360 de Success.": hunt for these strings where no corresponding IT change ticket exists. - Sysmon Event ID 13 (registry value set): hunt for autorun/Run-key writes referencing MSP360 UI components outside a known deployment window.
- Windows Firewall operational log /
netsh advfirewall firewall show rule: enumerate inbound allow rules namingRMM.Agent.exeon UDP/48678 fleet-wide; this is the authoritative source of truth the CQL Q6 proxy cannot fully replace. - Authenticode / Get-AuthenticodeSignature: spot-check any MSP360 installer found in the environment against the known-revoked certificate serial; Falcon does not expose a certificate-serial field natively (see Section 8 callout).
Software inventory / asset management
- Cross-reference your RMM/CMDB asset inventory against any host where this pack's CQL fires: a host running MSP360 or ScreenConnect without an inventory record is a strong indicator of unauthorized installation.
CrowdStrike LogScale CQL Hunt Queries
Falcon has no native "firewall rule added" event (FirewallMatchEvent
does not exist in the sensor's data model); Q6 below is a process-command-line proxy for that behavior, not a
direct read of firewall state: corroborate with the native hunt in Section 7.
Looks for: Execution of any binary whose filename carries the campaign's distinctive _rmm_v2.5.0.67_oid suffix, regardless of the lure prefix (ecard, Zoom, PDF, SSA.GOV, etc.).
// HUNT: Masqueraded MSP360 installer execution (deceptive filename pattern) // MITRE: T1204, T1036, T1036.005 // CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: none expected; this exact string is attacker-specific and not used by legitimate MSP360 distribution packaging. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/_rmm_v2\.5\.0\.67_oid/i | table([@timestamp, aid, ComputerName, UserName, FileName, ParentBaseFileName, SHA256HashData, CommandLine]) | sort(@timestamp, order=desc)
Looks for: Direct hash match against the MSP360 installer and the four MSP360 RMM Agent service binaries published by Microsoft for this campaign.
// HUNT: Execution of known-bad MSP360 installer / RMM Agent service hashes // MITRE: T1204, T1036, T1543.003 // CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: a hit is NOT automatically malicious. The installer is the genuine MSP360 package and the // four service hashes are stock MSP360 product files, so a licensed MSP360 deployment matches these too. // TUNING: triage every hit against your approved-RMM asset inventory. Treat as an incident only when the host // has no authorizing change ticket, or when it also matches Q1 (deceptive filename) or Q5 (dual-RMM). // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | in(SHA256HashData, values=[ "108ef7e628d7a20bd6241a5b57149e27a6061f467123eb64061975559f8f73dc", "f094b8263471c7b76dbed03d420736449920368fa0eca2ed6b1aea2645138d97", "857c2f283de799faa74b56e862c0a9f96e67aa1b4fa4a9e46395098365b99de3", "6a89de024ca62536de6f5fc10e49896bb1ac330ca39dce30203afdcc45ae237e", "4188c6588f3dcda881c3f2d12df580051179a999f040b799af506edeb3211a26" ]) | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, SHA256HashData, CommandLine]) | sort(@timestamp, order=desc)
Looks for: The two-stage pivot Microsoft documented: the newly installed MSP360 service (RMM.Agent.exe) launching PowerShell, and that PowerShell session (or the RMM-launched process tree) subsequently running msiexec.exe /qn against a ClientSetup.msi package staged under a Temp path.
FP: legitimate MSPs do sometimes drive ad-hoc PowerShell through an RMM console for routine administration.
// HUNT: RMM.Agent.exe spawns PowerShell to stage and silently install ScreenConnect // MITRE: T1059.001, T1218.007, T1105 // CONF: high FP: medium COST: low // REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: legitimate MSPs do sometimes drive ad-hoc PowerShell through an RMM console for routine administration. // TUNING: exclude hosts with an approved change-management ticket authorizing remote PowerShell via your RMM; treat a hit here as high-confidence only when it also appears in Q1 (deceptive installer) or Q5 (dual-RMM correlation). // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | (ParentBaseFileName=/^RMM\.Agent\.exe$/i FileName=/^powershell\.exe$/i) or (ParentBaseFileName=/^powershell\.exe$/i FileName=/^msiexec\.exe$/i CommandLine=*ClientSetup.msi*) | table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData]) | sort(@timestamp, order=desc)
Looks for: Windows service registration for RMM.Agent.exe, RMM.Agent.Launcher.exe, ScreenConnect.ClientService.exe, or ScreenConnect.WindowsClient.exe.
FP: both products are legitimate and widely deployed by MSPs; service creation alone does not imply compromise.
// HUNT: Service creation for the four named MSP360 / ScreenConnect binaries // MITRE: T1543.003 // CONF: high FP: medium COST: low // REQUIRES: CreateService // FALSE POSITIVES: both products are legitimate and widely deployed by MSPs; service creation alone does not imply compromise. // TUNING: suppress for hosts on the approved-RMM asset inventory; treat as actionable only when correlated with Q1, Q5 (dual-RMM on the same host), or Q6 (UDP 48678 firewall rule) in the same timeframe. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=CreateService | ServiceImagePath=/RMM\.Agent(\.Launcher)?\.exe$/i or ServiceImagePath=/ScreenConnect\.(ClientService|WindowsClient)\.exe$/i | table([@timestamp, aid, ComputerName, UserName, ServiceName, ServiceDisplayName, ServiceImagePath]) | sort(@timestamp, order=desc)
Looks for: The single highest-fidelity signal in this hunt, per Microsoft, TheHackerNews and GBHackers: both MSP360/RMM Agent and ConnectWise ScreenConnect appearing in the software inventory of the same endpoint. selfJoinFilter correlates the two installs by agent ID; review the collected timestamps in the output to confirm proximity (campaign activity observed both installs within hours, not weeks).
FP: organizations mid-migration between RMM vendors, or MSPs that legitimately run both tools fleet-wide, will also trigger this.
// HUNT: Dual-RMM correlation: MSP360 and ScreenConnect installed on the same host within a short window // MITRE: T1219, T1543.003 // CONF: high FP: medium COST: medium // REQUIRES: InstalledApplication // FALSE POSITIVES: organizations mid-migration between RMM vendors, or MSPs that legitimately run both tools fleet-wide, will also trigger this. // TUNING: exclude hosts on a documented RMM-migration change ticket; narrow to pairs whose collected timestamps fall within 24-48 hours of each other; prioritize hits that also match Q1 or Q6. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=InstalledApplication | selfJoinFilter(field=[aid], where=[ {ApplicationName=/MSP360|RMM Agent/i}, {ApplicationName=/ScreenConnect/i} ]) | groupBy([aid, ComputerName], function=[collect(ApplicationName), collect(@timestamp)], limit=5000) | table([aid, ComputerName, ApplicationName, @timestamp])
Looks for: Process-level evidence of the firewall change the MSP360 installer makes: an inbound allow rule for UDP/48678 scoped to RMM.Agent.exe, created via netsh.exe or a PowerShell New-NetFirewallRule call.
FP: every legitimate MSP360 installation creates this identical rule by design; it is not unique to the malicious masquerade.
// HUNT: Inbound UDP 48678 firewall rule created for RMM.Agent.exe // MITRE: T1562.004 // CONF: medium FP: medium COST: low // REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: every legitimate MSP360 installation creates this identical rule by design; it is not unique to the malicious masquerade. // TUNING: never alert on this query alone; only escalate when it co-occurs with Q1 (deceptive installer filename) or Q5 (ScreenConnect installed on the same host) for the same aid. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^(netsh\.exe|powershell\.exe)$/i | CommandLine=*48678* | CommandLine=*RMM.Agent.exe* | table([@timestamp, aid, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine]) | sort(@timestamp, order=desc)
Looks for: Child processes spawned by ScreenConnect.WindowsClient.exe whose command line references the two staging paths Microsoft observed: OneDrive\Documents\ScreenConnect\Temp\ and Documents\ScreenConnect\Temp\.
FP: ScreenConnect's RunFile capability is legitimately used by MSPs to push support utilities.
// HUNT: ScreenConnect RunFile execution from the campaign's Temp staging paths // MITRE: T1105, T1036.005, T1005 // CONF: high FP: medium COST: low // REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: ScreenConnect's RunFile capability is legitimately used by MSPs to push support utilities. // TUNING: exclude filenames matching your organization's approved support-tooling catalog; cross-reference FileName against Q8's named post-compromise utility list for higher confidence. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^ScreenConnect\.WindowsClient\.exe$/i | CommandLine=*\ScreenConnect\Temp\* | table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData]) | sort(@timestamp, order=desc)
Looks for: Execution, from a ScreenConnect-spawned process tree, of a filename matching the specific set of Windows/Defender/Phone-Link-masquerading utility names Microsoft observed being delivered through ScreenConnect RunFile sessions.
FP: a small number of these names (e.g. WindowsUpdate, PIN) could coincidentally collide with legitimately named internal tooling.
// HUNT: Named post-compromise utilities matching Microsoft's observed filename set // MITRE: T1105, T1036.005, T1005 // CONF: high FP: medium COST: low // REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: a small number of these names (e.g. WindowsUpdate, PIN) could coincidentally collide with legitimately named internal tooling. // TUNING: validate each FileName hit is not a known internal utility before escalating to containment; this list is corroborated by Microsoft (primary) and partially by GBHackers / CyberPress for the credential-theft subset. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^ScreenConnect\.(WindowsClient|ClientService)\.exe$/i | FileName=/^(WindVerify|WindowsUpdate|WindowsSecurity_PIN|WindowsSecurity_Password|WindowsPassKey|SCHider|PIN|phonepc|DefenderDT|DefenderControl|phonelinkupdate|PhoneLinkPrompt|Passwords|OpenCamera|open_phone_link|MouseHiderGUI|HideUL|HideMouse|HideFromControlPanel|HideCursor|BannerHider|WebBrowserBookmarksView|WebBrowserPassView)(\.exe)?$/i | table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData]) | sort(@timestamp, order=desc)
Looks for: Any DNS query for the seven domains Microsoft observed ScreenConnect clients contacting during malicious sessions.
// HUNT: DNS resolution of known campaign C2 domains // MITRE: T1071.001, T1573, T1102, T1583.001 // CONF: high FP: low COST: low // REQUIRES: DnsRequest // FALSE POSITIVES: none expected; these are attacker-registered / attacker-leveraged domains, single-sourced to Microsoft's IOC table, so they ship for detection only (not blocking) pending a second source. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=DnsRequest | DomainName=/^(adswre\.cfd|trews\.cfd|swedcorry\.stefneyv\.com|ojsuyw\.niyari\.org|bunstar\.harej\.si|adsaw\.cfd|sdfghj\.rd-team\.ru)$/i | table([@timestamp, aid, ComputerName, UserName, DomainName, ContextBaseFileName]) | sort(@timestamp, order=desc)
Looks for: Resolution of Amazon S3, Cloudflare R2, Dropbox, GitLab, or Supabase hostnames. This is an enrichment and pivot query, not a standalone detection: all five services are used constantly for entirely legitimate purposes across virtually every environment.
FP: extremely high; these are mainstream cloud services used by normal business operations fleet-wide.
// HUNT: Pivot: DNS lookups of cloud platforms used for payload staging // MITRE: T1105, T1583.006, T1102 // CONF: low FP: high COST: low // REQUIRES: DnsRequest // FALSE POSITIVES: extremely high; these are mainstream cloud services used by normal business operations fleet-wide. // TUNING: never alert on this query by itself; use it only to pivot from an existing Q1/Q2 hit to confirm the download vector, or to corroborate a Q3/Q5/Q6 hit that is otherwise borderline. // LOOKBACK: set with the Falcon time picker (recommended 7d) #event_simpleName=DnsRequest | DomainName=/amazonaws\.com$|dropbox\.com$|gitlab\.com$|supabase\.co$|r2\.cloudflarestorage\.com$/i | table([@timestamp, aid, ComputerName, UserName, DomainName, ContextBaseFileName]) | sort(@timestamp, order=desc)
CrowdStrike Custom IOA Recommendations
Queries with low FP and deterministic match logic are promotion candidates for a Custom IOA (real-time detection) rather than remaining scheduled-search/hunt-only. Queries with medium+ FP or behavioral correlation logic should stay as investigate-only hunts until an organization has tuned the exclusions for its own environment.
| Query | IOA Name | Pattern | Exclusions | Deployment Path |
|---|---|---|---|---|
| Q1 | IOA-MSP360-DeceptiveInstaller | Process creation, FileName matches _rmm_v2.5.0.67_oid | None identified | Falcon → Custom IOA rule group → Process Creation pattern: safe for Detect action; escalate to Prevent only after confirming no internal packaging tool reuses this string |
| Q2 | IOA-MSP360-CampaignHashPresence | Process creation, SHA256HashData in published hash set | Required: suppress for hosts on the approved-RMM asset inventory. Four of these five hashes are stock MSP360 product files, so a licensed install matches them. | Falcon Custom IOC (hash) at detect severity only. Do not set a prevent action: see the Section 4 conditional-escalation note. Treat a hit as "MSP360 is present here", then confirm whether that install was authorized. |
| Q8 | IOA-ScreenConnect-NamedUtility | Process creation under a ScreenConnect-spawned tree, FileName in named utility set | Validate against internal tooling catalog first | Stage as Detect for 1-2 weeks before considering Prevent |
| Q9 | IOA-MSP360-C2Domain | DNS query for one of the 7 published domains | None identified | Prefer DNS sinkhole / network block over an endpoint IOA for domain indicators |
Q3, Q4, Q5, Q6, Q7, and Q10 remain investigate-only hunt queries: each carries medium-or-higher FP risk because the underlying behavior (RMM-driven PowerShell, service creation, dual-RMM presence, firewall rule creation, ScreenConnect RunFile, cloud-storage DNS) is also produced by entirely legitimate MSP operations. Promote only after environment-specific tuning.
Machine-Readable IOC Appendix
This CSV is safe to bulk-import as written: every row is
action=detect. Two separate reasons put it there. The 25 post-compromise hashes and the
7 domains are single-sourced to Microsoft and so fall below this pack's two-source bar for blocking. The
installer hash, its SHA1 and the 4 service hashes clear that bar but are still detect because
they are legitimate MSP360 product files, and blocking them would break a licensed MSP360
deployment. Read the conditional-escalation note in Section 4 before promoting any row to
prevent. The blocking control Microsoft actually recommends for this campaign is application
control by publisher certificate, covered in Section 12.
type,value,action,severity,expiration,description,tags sha256,108ef7e628d7a20bd6241a5b57149e27a6061f467123eb64061975559f8f73dc,detect,critical,2027-04-01,Genuine MSP360 RMM v2.5.0.67 installer under deceptive filename; revoked signing cert. Escalate to prevent ONLY if MSP360 is not approved software,campaign:msp360-dualrmm-phishing sha1,f34330d4c6e0aa978dc3af40360c14b31ad51127,detect,critical,2027-04-01,Same installer sample SHA1. Escalate to prevent ONLY if MSP360 is not approved software,campaign:msp360-dualrmm-phishing sha256,f094b8263471c7b76dbed03d420736449920368fa0eca2ed6b1aea2645138d97,detect,medium,2027-04-01,STOCK MSP360 RMM Agent service binary (Microsoft labels it legitimate). Do not block: a hit means MSP360 is installed,campaign:msp360-dualrmm-phishing sha256,857c2f283de799faa74b56e862c0a9f96e67aa1b4fa4a9e46395098365b99de3,detect,medium,2027-04-01,STOCK MSP360 RMM Agent service binary (Microsoft labels it legitimate). Do not block: a hit means MSP360 is installed,campaign:msp360-dualrmm-phishing sha256,6a89de024ca62536de6f5fc10e49896bb1ac330ca39dce30203afdcc45ae237e,detect,medium,2027-04-01,STOCK MSP360 RMM Agent service binary (Microsoft labels it legitimate). Do not block: a hit means MSP360 is installed,campaign:msp360-dualrmm-phishing sha256,4188c6588f3dcda881c3f2d12df580051179a999f040b799af506edeb3211a26,detect,medium,2027-04-01,STOCK MSP360 RMM Agent service binary (Microsoft labels it legitimate). Do not block: a hit means MSP360 is installed,campaign:msp360-dualrmm-phishing sha256,ceb3f7fe9a618ff29a21b126383c23900fad58d6ae2b5552d7e306e4b6acf4b0,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,02f2ce03a2650f17bfe6e8744eebbf58522016cbdb92af8f2217b5dd4a1ad550,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,499d07894f730fb685ee3cbfc1a933e0da93750c1ed25a49b2eb9c32adef156a,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,d49cc01641c3045bf3119f9d71e7ffd29bfce32ca4b27cc96340716ed4d41cdc,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,67c979dc13961b09f24f85a801e4c918420adca6117c92efbeeeaa68a6344f55,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,6cc665057c4a4fe42a309afd3a7fa96cf1af126e9c6e08e56df5105e05378bcc,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,dd434f3ffcafeda538d43226665115ba136ad0fdb43dad8536e1368ca9a17b64,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,40f8e774e1e7a484b78c7ae4336bc47aa9cab20dc8e1e67d89838e807975f9b1,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,3ff5e49fd2f2bd0758467763c44d69e781b7460af84a6e3966e2621bc5bf7096,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,374c4934b14a1151ea68847c8627c3f1c0b878f4e673bda3f15e4388dfde0187,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,bc8b1b0c80512ba0e8ffccfee5b507df16a3355db1143c3ba81ef42dac1baa6c,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,c2c004a56de2a99f5b06ceb58d8a4b371fb60fd66ff5936786fe8d8037ead208,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,5bf8cf29ac6803e7269b045dea48003af7cfe48bedfc081b57ff9e86cb08971b,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,19035c8e2520fb70b3e2ec5338c14311b88a26cc1fb8304a01494260b6b55af1,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,d232d82e410de12702a67c58acf927304ee42f3e6d81a9d71eca99f9052126db,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,d3cb7ded277b49be06e6a1860f7c7e913e252802e9d32453a185e24797bf53ef,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,e31e5da7c58a7e8f89f9629f095edd7d741a1fb0b85fcb39f3818dbd9497b1e3,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,1a534d04bf30894d20764e91f7e94e0a73f060f0abacc9feeedba427995c83a8,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,77fb0e75f4396cb57bbbd28f6dc5310369a87abec9e2acc457aa99a0063ed27a,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,fc96a04c615847f0fb1391f04d9d1aac7f78ddfb7d459168df0a4172b98354e2,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,06ad69b9bebad3cc75b594cc5bb1ca0035ea22bb8a683002ca051d948566426b,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,a93c946c237b981189d2668d938a9d4d1d9681757e48dae8d9d65ed25b5da657,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,529543b4fe6a4c21d28be56dbf92fcac91d8df808d8518b4275c973fa547ad63,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,ccea4e1acc51ac43ba9da76ada00e7e308cc33d9c5c264dff82d1be83e957b88,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing sha256,a03c84ae9e569c04fdd271277f508bba5a299d53c3c0efe0819338d178fe1c5b,detect,high,2027-04-01,Post-compromise utility transferred/executed via ScreenConnect RunFile (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,adswre[.]cfd,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,trews[.]cfd,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,swedcorry[.]stefneyv[.]com,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,ojsuyw[.]niyari[.]org,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,bunstar[.]harej[.]si,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,adsaw[.]cfd,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing domain,sdfghj[.]rd-team[.]ru,detect,high,2027-04-01,C2 domain contacted by ScreenConnect clients in malicious sessions (single-sourced; detect only),campaign:msp360-dualrmm-phishing
# Behavioral signatures (no single atomic value -- hunt these patterns, not a static IOC)
pattern: deceptive installer filename
match: FileName contains "_rmm_v2.5.0.67_oid"
examples (verbatim from source): VIP_ECARD_INVITATION_rmm_v2.5.0.67_oid[redacted].exe
ZoomSetup_Installation_v2.5.0.67_oid[redacted].exe
SSA.GOV_STATEMENT_rmm_v2.5.0.67_oid[redacted].exe
pattern: dual-RMM co-occurrence (HIGHEST FIDELITY)
match: InstalledApplication shows both an MSP360/RMM Agent entry and a ScreenConnect
entry for the same aid, with install timestamps within ~24-48h of each other
pattern: revoked code-signing certificate
match: installer's Authenticode certificate has been revoked since the campaign was
reported; validate any MSP360 installer binary found in the environment against
current CRL/OCSP status, not just against the published hash list
pattern: UDP/48678 firewall allow-rule for RMM.Agent.exe
match: netsh advfirewall firewall show rule | findstr /i "RMM.Agent.exe 48678"
caveat: created by EVERY MSP360 install, legitimate or not -- corroborating signal only
# Named tooling observed via ScreenConnect RunFile (Microsoft primary source) # Masquerade targets: Windows Update, Windows Security, Microsoft Defender, Phone Link WindVerify.exe WindowsUpdate.exe WindowsSecurity_PIN.exe WindowsSecurity_Password.exe WindowsPassKey.exe SCHider.exe PIN.exe phonepc.exe DefenderDT.exe DefenderControl.exe phonelinkupdate.exe PhoneLinkPrompt.exe Passwords.EXE OpenCamera.exe open_phone_link.exe MouseHiderGUI.exe HideUL.exe HideMouseApp.dll HideMouse.exe HideFromControlPanel.exe HideCursor.exe BannerHider.exe WebBrowserBookmarksView.exe WebBrowserPassView.exe # Staging paths C:\Users\%user%\OneDrive\Documents\ScreenConnect\Temp\ C:\Users\%user%\Documents\ScreenConnect\Temp\
# Patch / ASR / CA audit checklist (run across the fleet)
# 1. ASR rule: block process creations from PsExec and WMI commands (Microsoft's own
# recommendation for this campaign) -- GUID d1e49aac-8f56-4280-b9ba-993a6d77406c
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
# 2. Confirm cloud-delivered protection is enabled (Microsoft's own recommendation)
Get-MpPreference | Select-Object MAPSReporting, SubmitSamplesConsent
# 3. Enumerate the UDP/48678 firewall rule fleet-wide
Get-NetFirewallRule | Where-Object { $_.DisplayName -match 'RMM' } |
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 48678 }
# 4. Inventory MSP360 / ScreenConnect installs without a matching change ticket
Get-CimInstance Win32_Product | Where-Object { $_.Name -match 'MSP360|ScreenConnect' } |
Select-Object Name, Version, InstallDate, PSComputerName
# 5. Confirm MFA is enforced on the approved RMM platform's admin console
# (vendor-specific; no single PowerShell check -- verify in the RMM vendor's
# identity/SSO configuration)
Detection Validation Gates
| Gate | Requirement | Status |
|---|---|---|
| Telemetry ready | ProcessRollup2, CreateService, InstalledApplication, and DnsRequest all flowing from target hosts | Verify in tenant |
| Benign baseline | Run Q4/Q5/Q6 over a 30-day lookback in a known-clean environment to characterize legitimate MSP360/ScreenConnect deployment volume before enabling as an alert | Required before promotion |
| Positive test | Confirm Q1 fires against a synthetic filename containing _rmm_v2.5.0.67_oid in a lab/test tenant | Recommended |
| Field validation | All CQL fields in Section 8 checked against the Falcon data model (crowdstrike-logscale-v3 reference); no unverified fields flagged | Pass |
| Syntax validation | All 10 queries parse per CQL grammar rules (no function-in-bool, no RHS expressions, no collect(as=), etc.) | Pass |
| IOC provenance | Every atomic IOC traces to a saved source snapshot | Pass: 38/38 traced |
| Promotion criteria | Only Q1, Q2, Q8, Q9 are IOA/alert candidates (low FP, deterministic); Q3-Q7, Q10 remain hunt/investigate-only until environment-tuned | Documented in Section 9 |
Hardening: Tiered & Deployable
- Enable Microsoft Defender cloud-delivered protection (M1049: Antivirus/AV). Microsoft's own recommendation for this campaign; no compatibility risk, no user-visible change. CIS Microsoft Windows Benchmark § "Configure Microsoft Defender Antivirus" aligns with this control.
- Enable the ASR rule "Block process creations originating from PsExec and WMI commands"
(M1038: Execution Prevention), GUID
d1e49aac-8f56-4280-b9ba-993a6d77406c. Microsoft flags possible server compatibility issues; pilot on servers, deploy broadly elsewhere immediately. - Block the published installer hash and revoked signing certificate via Microsoft Defender for Endpoint's "block certificate" / indicator action (M1038). This blocks only the specific malicious build, not legitimate MSP360 deployments signed with a valid, non-revoked certificate.
- Enforce MFA on every approved RMM platform's admin console (M1032: Multi-factor Authentication). Microsoft's own recommendation; closes the credential-reset gap if an RMM install is later found to be unauthorized.
- Deploy AppLocker or Windows Defender Application Control (WDAC) publisher-deny rules for unapproved RMM software (M1038). AppLocker's publisher-rule condition can block non-approved RMM installers by certificate without naming every possible filename. Pilot on a ring before fleet-wide enforcement; CIS Windows Benchmark § "Application Control" is the governing baseline.
- PowerShell Constrained Language Mode + enhanced script-block logging (M1042 : Disable or Remove Feature or Program) on endpoints where an RMM agent should never need unrestricted PowerShell. CIS Benchmark § 18.9.95 (PowerShell logging) and § 2.3.* (User Rights) are the reference controls.
- DNS/network egress filtering for the 7 published C2 domains (M1031: Network Intrusion Prevention). Single-sourced indicators, so stand them up as a monitored/alerting rule before converting to a hard network block.
- Formal RMM governance program: a documented allowlist of approved RMM tools and vendors, procurement/change-management review before any new remote-access tool is deployed, and periodic reconciliation of the software inventory against that allowlist (M1018: User Account Management; M1047: Audit).
- Fleet-wide WDAC enforcement (not just publisher-deny) moving from audit to enforced mode, informed by the near-term pilot (M1038).
- Network segmentation limiting RMM agent outbound traffic to only the vendor's documented management endpoints, reducing the blast radius if an RMM agent is ever compromised or unauthorized (M1030: Network Segmentation).
Deployable Playbooks
Playbook 1, ASR rule: block PsExec/WMI process creation
# Playbook 1: Enable ASR rule to block PsExec/WMI-originated process creation # Prerequisites: Windows 10 1709+/Server 2019+, Defender Antivirus active, tested in Audit mode first # Reboot required: No Set-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c ` -AttackSurfaceReductionRules_Actions AuditMode # Step 1: audit for 1-2 weeks, review Event ID 1121/1122 Set-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c ` -AttackSurfaceReductionRules_Actions Enabled # Step 2: enforce after audit review is clean # Rollback: revert to AuditMode or Disabled Set-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c ` -AttackSurfaceReductionRules_Actions Disabled
Playbook 2, block the installer hash via Defender for Endpoint indicators
# Playbook 2: Block the campaign's installer hash via Defender for Endpoint indicators
# Prerequisites: Microsoft Defender for Endpoint P1/P2 license, Security Admin role for indicator management
# Reboot required: No
# Via Microsoft Graph Security API (or Security Center UI: Settings > Indicators > File hash):
POST https://api.securitycenter.microsoft.com/api/indicators
{
"indicatorValue": "108ef7e628d7a20bd6241a5b57149e27a6061f467123eb64061975559f8f73dc",
"indicatorType": "FileSha256",
"action": "Block",
"title": "MSP360 dual-RMM phishing - masqueraded installer",
"severity": "High"
}
# Repeat for the SHA1 (f34330d4c6e0aa978dc3af40360c14b31ad51127) and the 4 service
# SHA256 hashes in Section 10.
# Rollback: DELETE https://api.securitycenter.microsoft.com/api/indicators/{indicator-id}
# or remove the entry from Security Center > Settings > Indicators
Playbook 3, AppLocker publisher-deny rule for unapproved RMM installers
# Playbook 3: AppLocker publisher-deny rule for unapproved RMM installers
# Prerequisites: AppLocker policy infrastructure in place (GPO or Intune), Application Identity service running
# Reboot required: No (policy refresh via gpupdate /force is sufficient)
# Example rule (apply via Set-AppLockerPolicy -XMLPolicy or Group Policy Editor):
# Deny EXE rule scoped to the revoked/compromised certificate publisher, with an
# explicit exception for your organization's approved MSP360 deployment certificate.
<FilePublisherRule Id="<GUID>" Name="Deny-Unapproved-MSP360-Cert" Action="Deny" UserOrGroupSid="S-1-1-0">
<Conditions>
<FilePublisherCondition PublisherName="O=MSP360 (REVOKED CERT SERIAL)" ProductName="*" BinaryName="*">
<BinaryVersionRange LowSection="*" HighSection="*" />
</FilePublisherCondition>
</Conditions>
</FilePublisherRule>
# Validate: gpresult /r (confirm AppLocker policy applied)
# Rollback: remove the rule from the policy and re-push via Set-AppLockerPolicy, or
# Set-AppLockerPolicy -XMLPolicy <previous-policy.xml> -Merge:$false
Playbook 4, audit and remove the UDP/48678 firewall rule
# Playbook 4: Fleet audit and removal of the UDP/48678 RMM.Agent.exe firewall rule
# Prerequisites: Local admin / remote PowerShell (WinRM) to target hosts; confirm host is NOT an
# approved MSP360 deployment before removing the rule
# Reboot required: No
# Step 1 - Audit (read-only, safe to run everywhere)
Get-NetFirewallRule | Where-Object { $_.DisplayName -match 'RMM' } |
ForEach-Object { $_ | Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 48678 } }
# Step 2 - Remove ONLY on hosts confirmed unauthorized (no matching asset-inventory record)
Get-NetFirewallRule | Where-Object { $_.DisplayName -match 'RMM' } | Remove-NetFirewallRule
# Rollback: if the host is later confirmed to be a legitimate MSP360 deployment, re-add:
New-NetFirewallRule -DisplayName "MSP360 RMM Agent" -Direction Inbound -Protocol UDP `
-LocalPort 48678 -Program "C:\Program Files\RMM Agent\RMM.Agent.exe" -Action Allow
Containment Runbook
| Phase | Actions | Owner | Evidence to Preserve |
|---|---|---|---|
| Isolate | Network-contain the host (Falcon RTR contain, or equivalent). Do not uninstall MSP360/ScreenConnect
yet: preserve the dual-RMM state for investigation. Disable the suspect user account if credential
theft is suspected. |
IR / SOC | Falcon RTR session log, host isolation timestamp |
| Eradicate | Kill RMM.Agent.exe, RMM.Agent.Launcher.exe, ScreenConnect.ClientService.exe,
and ScreenConnect.WindowsClient.exe. Uninstall both products if confirmed unauthorized. Remove the
UDP/48678 firewall rule (Playbook 4). Remove MSP360 registry Run-key autostart entries. Delete staged
payloads from the ScreenConnect Temp paths. |
IR / Endpoint Eng | Process tree export, registry hive snapshot, file hashes of everything removed |
| Recover | Reset credentials for any account used to install the RMM services (Microsoft's explicit recommendation). Rotate credentials for any account whose browser-stored passwords may have been harvested by the named utility set (Section 10). Restore from a known-good baseline or re-image if deep persistence (additional services, scheduled tasks) is found. | IAM / Endpoint Eng | Credential-reset audit log, re-image ticket |
| Post-Incident | Run Q1, Q2, Q5, and Q9 environment-wide to confirm no other host shows the same pattern. Review the original phishing email/sender for broader organizational exposure. Confirm the revoked certificate is blocked fleet-wide (Playbook 2/3). Update the RMM asset inventory. | SOC / Threat Intel | Environment-wide hunt results, phishing-report ticket, updated asset inventory |
Detection Coverage Map
| Attack Chain Step | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| 1. Phishing delivery | Email/link with themed lure | N/A | N/A | Gap: email gateway, outside Falcon scope (Section 7) |
| 2. Payload staging download | DNS/network to attacker infra or cloud platforms | Q10 | N/A | Partial: pivot/enrichment only, extremely high FP |
| 3. Masqueraded installer execution | Deceptive filename / known hash | Q1, Q2 | IOA-MSP360-DeceptiveInstaller, IOA-MSP360-KnownBadHash | Good |
| 4. Service + firewall persistence | Service creation, UDP/48678 rule | Q4, Q6 | N/A | Partial: FP medium, no native firewall-added event |
| 5. PowerShell → ScreenConnect install | RMM.Agent.exe → powershell.exe → msiexec | Q3 | N/A | Partial: FP medium, needs correlation |
| 6. Dual-RMM established | Both products on same host, short window | Q5 | N/A | Good: highest-fidelity signal |
| 7. Post-compromise tooling via RunFile | Named utilities from Temp paths | Q7, Q8 | IOA-ScreenConnect-NamedUtility | Good |
| 8. C2 communications | DNS to published domains | Q9 | IOA-MSP360-C2Domain | Good (single-sourced; detect only) |
| 9. Credential theft / collection | Browser credential-theft utilities executed | Q7, Q8 | N/A | Partial: relies on filename match, not behavioral content inspection |
All validation gates from Section 11 pass except Benign baseline and Positive test, which are tenant-specific and must be completed locally before Q4, Q5, and Q6 are promoted beyond investigate-only status.
Hunt Summary Ticket
TITLE: Hunt for Dual-RMM Phishing (MSP360 -> ScreenConnect) - Unattributed Campaign
SEVERITY: High
SCOPE: All Windows endpoints with Falcon sensor coverage
HYPOTHESIS: Phishing delivers a masqueraded, legitimately signed MSP360 RMM v2.5.0.67
installer under a deceptive filename ending "_rmm_v2.5.0.67_oid<id>.exe".
Execution establishes MSP360 as a foothold, which is then used to silently
install ConnectWise ScreenConnect as a redundant remote-access channel,
followed by credential theft and information collection via ScreenConnect's
RunFile capability.
QUERIES: Q1-Q10 (Section 8); Q1/Q2/Q8/Q9 are IOA candidates, Q3-Q7/Q10 are hunt-only
DO FIRST: Run Q1 (deceptive filename) and Q5 (dual-RMM correlation) fleet-wide --
these are the two highest-fidelity, most-corroborated signals in this pack
FINDINGS: <populate after running against live tenant telemetry>
GAPS: Email/phishing delivery vector not covered by Falcon CQL (Section 7 native
hunts only); no native Falcon event for firewall-rule creation (Q6 is a
process-level proxy); post-compromise utility list is single-sourced to
Microsoft and ships detect-only
ACTIONS: See Section 12 (Hardening) and Section 14 (Containment Runbook)
OWNER: <assign triage owner>
VERSION: v0.1 - 2026-10-01Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| 1 - Primary | Microsoft Security Blog: "Phishing Abuses RMM Tools for Persistent Access" (2026-09-29) | Attack chain, full IOC table, KQL hunting queries, MITRE mapping, mitigations | 2026-10-01 |
| 2 - Trade press | TheHackerNews: "Attackers Abuse MSP360 to Deploy ScreenConnect in Dual-RMM Phishing Attacks" (2026-09-30) | Corroboration: attack chain, filenames, firewall rule, unattributed status | 2026-10-01 |
| 2 - Trade press | GBHackers: "Hackers Abuse MSP360 and ScreenConnect RMM Tools for Persistent Access and Credential Theft" (2026-09-30) | Corroboration: installer hash/SHA1, service hashes, install path, firewall rule, named utility subset | 2026-10-01 |
| 2 - Trade press | CyberPress: "Hackers Use Fake Zoom and PDF Installers to Deploy Remote Access Tools on Windows PCs" (2026-09-30) | Corroboration: installer hash/SHA1, install path, service names, attribution, cloud platforms | 2026-10-01 |
| N/A | TheCyberExpress (fetch failed, HTTP 403 on fetch and direct retry) | Not used: no content retrieved, excluded from every claim in this pack | 2026-10-01 |