Power BI Phishing Campaign Delivering Rogue ScreenConnect RMM Clients

Phishing links to attacker-built dashboards on the legitimate Power BI domain · browser fingerprinting gate · automatic ScreenConnect installer download · second RMM client on separate infrastructure, first client removed · scheduled-task persistence
Threat
Power BI phishing campaign delivering rogue ScreenConnect RMM clients (no named actor)
Severity
HIGH
Type
Phishing / rogue remote-access tool
Initial Access
Email link to a dashboard on app.powerbi.com, "Download Reference" button
Version
v0.1 · 2026-10-12
Author
HuntPack
Confidence
HIGH (vendor primary retrieved, three press articles corroborate)
01

Executive Summary

Attacker objective: persistent, interactive remote control of a victim's Windows machine, obtained by getting the user to install a legitimate remote-management product that is configured to call back to the attacker. Per Huntress, the campaign began on 2026-09-10 and abuses Microsoft Power BI. A phishing email links to a dashboard that the attacker built on the real app.powerbi.com domain. The dashboard shows a blurred form and a "Download Reference" button.

Because the first link is on a Microsoft domain, the reporting says it slips past Microsoft 365 mail filters and gateways that trust it. The button sends the victim to an attacker-controlled staging site that checks the browser before it allows a download. The reported checks cover browser version, operating system, device characteristics, automation indicators, screen size, iframe context and cloud-provider cookies. Failed checks redirect to a decoy page. The page also embeds a hardcoded Telegram Bot credential and reports victim IP address, geolocation and browser details to it. A visitor who passes the checks receives a ScreenConnect installer instead of a reference document.

The attacker then builds redundancy. The first client connects to a relay on the ScreenConnect vendor cloud. A command file runs PowerShell from a temporary directory, which fetches a second installer from separate attacker infrastructure and removes the first client. A tool named HideUL_x64.exe hides the activity from the user and from security software, and a scheduled task named SCAutoRepairEvery2Min keeps a script running every two minutes. Huntress's point is that removing only the first visible instance can leave another foothold intact.

Attribution: Huntress named no actor and neither does this pack. No source retrieved ties the campaign to a known group.

Highest-value defensive angle: hunt the endpoint, not the email. The Power BI link and the browser fingerprinting are invisible to endpoint telemetry. What the host does see is durable: a ScreenConnect client carrying an instance ID you did not provision (Q1), more than one instance on the same host (Q2), a scheduled task that repeats every two minutes (Q7), and a client talking to a relay outside screenconnect.com (Q9).

Defender priority: a ScreenConnect client is a full remote-control channel, so a hit is a hands-on-keyboard incident, not adware. Check every host for all ScreenConnect instances, not only the one you found, because the campaign deliberately leaves a second client behind. Do not block the vendor's binaries or the whole screenconnect.com domain on the strength of this pack: the hashes and installer names here belong to a legitimate product and ship detect-only.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
1Huntress, "Phishing Campaign Abuses Microsoft Power BI to Deploy Rogue RMMs" (reporting dated 2026-10-07)Vendor primary. Phishing link on Power BI, fingerprinting staging domains, ScreenConnect installer from hamham27 on the vendor cloud, first relay, second infrastructure on the second-stage domain, both client SHA256 values, HideUL_x64.exe, SCAutoRepairEvery2Min running SCAutoFix.ps1, LyN03DvVjUKPrun.cmd.Yes. Basis for every domain and hash. The date comes from the task brief: the retrieved page text carries no date, only "September 2026" for the campaign.
3GBHackers, "Power BI Phishing Campaign Analysis"Adds the 2026-09-10 start date, the /S/ path on the first staging domain, the decoy redirect host, the Telegram Bot reporting, both client instance IDs, and the three guest-access parameter values.Yes. Only snapshot, with Cryptika, that carries the instance IDs. Source for the decoy host together with Cyberpress and Cryptika.
3Cyberpress, "Fake Power BI Documents Trick Users Into Installing Rogue ScreenConnect RMMs"Corroborates the chain and lists the IOC set: both hashes, all eight hosts including the decoy, and the task name. Quotes the description of HideUL_x64.exe as hiding activity from the user and security software.Yes. Second source for every domain.
3Cryptika, "Microsoft Power BI Phishing Campaign Deploys Rogue ScreenConnect RMMs for Persistent Access"Adds the only mention of the ScreenConnect.ClientSetup.msi installer on the second-stage domain, the client instance IDs, the observed variant where a command file launches PowerShell from a temporary directory, downloads a secondary installer and removes the initial ScreenConnect instances, and the filename list.Yes. Sole source for the MSI name and for the first-client removal, so both are flagged single-sourced.
n/aIT Security Guru, "Power BI phishing campaign drops rogue ScreenConnect clients"Not retrieved. The page returned HTTP 403 to both the fetch tool and a direct request.No. Nothing in this pack is attributed to it. The snapshot file records the failure so the gap is visible.

Decisions and discrepancies

  • The press articles relay Huntress. Three of the four retrieved sources restate the vendor report, so they confirm that the indicators are reproduced correctly, not that they were found independently. The pack still limits blocking to indicators that appear in the vendor primary and at least one corroborating snapshot.
  • The decoy host is press-only. The retrieved Huntress text does not list it. It appears in three press snapshots, so it ships as detect and not prevent.
  • What the scheduled task runs is stated two ways. The Huntress text says the task executes SCAutoFix.ps1. GBHackers calls it a concealment script. The pack matches the task and script names without asserting the script's content.
  • Launcher name. LyN03DvVjUKPrun.cmd looks like a randomised prefix plus a fixed suffix. The pack matches the reported value and tells analysts to pivot on SCAutoFix.ps1 if it does not match.
  • Not carried forward. The task brief mentioned filtering for business ISPs and a delayed script-triggered download. No retrieved snapshot contains either statement, so the pack makes neither claim. The snapshots say the download is automatic and that the fingerprint covers the attributes listed in the summary.
03

Hunt Brief & Attack Chain

Hypotheses (ordered by fidelity)

#HypothesisATT&CKConfidenceQueries
H1A host runs a ScreenConnect client with a reported attacker instance ID.T1219HIGHQ1
H2A host executes the reported chain artifacts (HideUL_x64.exe, SCAutoFix.ps1, the launcher, the task name).T1564, T1053.005HIGHQ5, Q7
H3A host has run more than one ScreenConnect instance, which is the signature of the second-client swap.T1219, T1070HIGHQ2, Q6
H4A host resolved a staging, second-stage or decoy domain, or a ScreenConnect client resolved a relay off the vendor cloud.T1071.001, T1219HIGH for the listed domains, MED for the off-cloud relayQ8, Q9
H5A user downloaded or ran a ScreenConnect installer they did not request.T1204.002, T1105MEDQ3, Q4
H6A reported client hash is present on disk or running.T1219HIGH but narrowQ10

Attack chain

StepBehaviorTelemetryHunt angle
1Phishing email with a link to a dashboard on the Power BI domainEmail and URL telemetry (outside endpoint telemetry)Native hunts N1, N2
2Landing dashboard with blurred form and "Download Reference"Browser content (outside endpoint telemetry)Gap. See section 15
3Redirect to a staging domain; fingerprinting; Telegram Bot reporting; decoy redirect on failureDNS lookup with the requesting process (CrowdStrike: DnsRequest. SentinelOne: DNS Resolved. Defender: DeviceEvents, ActionType DnsQueryResponse, confirm in tenant). Fingerprinting logic itself is outside endpoint telemetryQ8
4Automatic download of a ScreenConnect installer from the attacker's vendor-cloud instanceFile written (CrowdStrike: PeFileWritten, NewExecutableWritten. SentinelOne: File Creation. Defender: DeviceFileEvents, ActionType FileCreated)Q4, Q8
5User runs the installer; first client connects to its relayProcess creation with command line, path and parent (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents); DNS lookup as aboveQ1, Q3, Q8, Q10
6Command file launches PowerShell from a temporary directory; second installer fetched; first client removedProcess creation with command line (as above)Q5, Q6
7Second client connects to separate attacker infrastructureDNS lookup with requesting process (as above); process creationQ1, Q2, Q8, Q9
8HideUL_x64.exe hides activityProcess creation (as above)Q5
9Scheduled task runs SCAutoFix.ps1 every two minutesScheduled task created (CrowdStrike: ScheduledTaskRegistered. SentinelOne: Task Register. Defender: DeviceEvents, ActionType ScheduledTaskCreated)Q5, Q7
04

Consolidated IOC Table

Legitimate-tool rule. The two SHA256 values and the ScreenConnect installer names are a legitimate commercial product carrying attacker configuration. They are detect only, whatever the sourcing. Only the five staging and second-stage .site domains are prevent, because each appears in the vendor primary and in all three retrieved press snapshots. The press articles restate the vendor report, so this is corroboration of transcription more than independent discovery.

TypeValueConfidenceActionContextSnapshots
domainonthegotree.siteHIGHPREVENTSecond-stage RMM infrastructure; hosts the MSI installer per one source01, 03, 04, 05
domaindailylifeproject.siteHIGHPREVENTFingerprinting gateway (path /S/ reported)01, 03, 04, 05
domainburnsworth.siteHIGHPREVENTAlternate staging01, 03, 04, 05
domainessaywritingservice.siteHIGHPREVENTAlternate staging01, 03, 04, 05
domainopenpediatrics.siteHIGHPREVENTAlternate staging01, 03, 04, 05
domaincheck.vykyn.clickMEDDETECTDecoy redirect when a fingerprint check fails. Press snapshots only03, 04, 05
domainhamham27.screenconnect.comHIGHDETECTAttacker's ScreenConnect instance that serves the installer. Subdomain of a legitimate vendor domain01, 03, 04, 05
domaininstance-g01s1n-relay.screenconnect.comHIGHDETECTRelay of the first client. Subdomain of a legitimate vendor domain01, 03, 04, 05
sha2565956f9afb3ba610c38b2cfda88dd15be98783963769a12020c93ce05e749b3c3HIGHDETECTFirst ScreenConnect client. Legitimate vendor binary with attacker config01, 03, 04, 05
sha256f048400c23add8c75abe189393d33c873c02c74eeaf43d47b950c8d643763b35HIGHDETECTSecond ScreenConnect client. Legitimate vendor binary with attacker config01, 03, 04, 05
instance ID2b302081e9e777d0HIGHDETECT (Q1)First client instance. Behavioral match, not an importable IOC03, 05
instance ID43773b3da4ccb17bHIGHDETECT (Q1)Second client instance03, 05
filenameHideUL_x64.exeHIGHDETECT (Q5)Defense-evasion tool01, 04, 05
filenameSCAutoFix.ps1, LyN03DvVjUKPrun.cmdHIGH / MEDDETECT (Q5)Persistence script and launcher. Launcher name may be randomised01, 03, 05
filenameScreenConnect.ClientSetup.exeHIGHDETECT (Q3, Q4)Legitimate installer name; never block01, 05
filenameScreenConnect.ClientSetup.msiMEDDETECT (Q3)Second-stage installer. Single source05
scheduled taskSCAutoRepairEvery2MinHIGHDETECT (Q5, Q7)Runs SCAutoFix.ps1 every two minutes01, 03, 04, 05
parameterILEAYEASAN, PERFECTO, PAPASUPEMEDENRICHGuest-access parameters on installer variants. Single source and not hunted alone: PERFECTO is also an ordinary word03
urlhxxps://app.powerbi.com/view?r=eyJrIjoiNTk0NmViNDktYzM1Yy00MjEwLTkyZTctNGU5ZTJmYzMzYjEwIiwidCI6IjU1YTI4YmU2LTFiYzQtNDIzMS05MTA0LTdkMmFlYTVmMGZhNiJ9MEDHUNT in mail and proxy logsOne reported phishing dashboard. Hosted on a legitimate domain, so it is a URL lookup and never a domain block01
05

Affected Surface & Telemetry Matrix

SurfaceTelemetryPriorityGap
Windows endpoints, interactive usersProcess creation with command line, path and parent (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents)HIGHNone for the processes; instance ID is read from the install path, so confirm the folder naming in your tenant
Windows endpoints, DNSDNS lookup with the requesting process (CrowdStrike: DnsRequest. SentinelOne: DNS Resolved. Defender: DeviceEvents, ActionType DnsQueryResponse, name inside AdditionalFields)HIGHRequesting-process attribution is not populated on every sensor version. Defender has no endpoint DNS table
Windows endpoints, filesExecutable or file written (CrowdStrike: PeFileWritten, NewExecutableWritten. SentinelOne: File Creation. Defender: DeviceFileEvents, ActionType FileCreated)MEDAn MSI is not a PE, so an MSI download is not caught by the file-written query
Windows scheduled tasksScheduled task created (CrowdStrike: ScheduledTaskRegistered. SentinelOne: Task Register, confirm the spelling and fields on a tenant. Defender: DeviceEvents, ActionType ScheduledTaskCreated)HIGHTask fields are sensor-version dependent. The command-line branch covers schtasks but not tasks registered through the Task Scheduler API
Email and linksMail flow and URL click telemetry (Defender for Office 365 or your mail gateway)HIGHOutside endpoint telemetry. See native hunts N1 and N2
Browser content and fingerprintingNoneMEDOutside endpoint telemetry. The Power BI dashboard, the fingerprint checks and the Telegram reporting happen inside the browser and the attacker's pages
Proxy and DNS filterWeb proxy, secure web gateway or DNS resolver logsHIGHNeeded for the URL-level lookup of the Power BI dashboard, which endpoint telemetry cannot see
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery / Control
Initial AccessT1566.002 Spearphishing LinkEmail links to a dashboard on the Power BI domainN1, N2, N4 / I3, S3
ExecutionT1204.002 User Execution: Malicious FileUser runs a ScreenConnect installer obtained through "Download Reference"Q3, Q4 / I1, N3
Defense EvasionT1497 Virtualization/Sandbox EvasionFingerprint checks reject automated and analyst visitors and redirect them to a decoyNone on endpoint (gap) / N3
Command and ControlT1219 Remote Access Tools (T1219.002 Remote Desktop Software in current ATT&CK)Rogue ScreenConnect clients give interactive control. Two instances for redundancyQ1, Q2, Q9, Q10 / I1, I2, N1
Command and ControlT1071.001 Web ProtocolsClients call a vendor-cloud relay and a second-stage domainQ8, Q9 / I2
ExecutionT1059.001 PowerShell, T1059.003 Windows Command ShellCommand file launches PowerShell from a temporary directoryQ5, Q6 / I4
Command and ControlT1105 Ingress Tool TransferScript downloads the second installerQ4, Q6 / I2
Defense EvasionT1070 Indicator RemovalFirst ScreenConnect instance removed after the second is installed (Cryptika only)Q2, Q6
Defense EvasionT1564 Hide ArtifactsHideUL_x64.exe hides activity from the user and security software. Mechanism not publishedQ5
PersistenceT1053.005 Scheduled TaskSCAutoRepairEvery2Min repeats a script every two minutesQ5, Q7 / N2 in section 13
ReconnaissanceT1592 Gather Victim Host InformationBrowser fingerprinting reports OS, browser, IP and geolocation to a Telegram BotNone on endpoint (gap)
07

Native Audit-Log Hunts

These checks need no EDR query language. They cover the email, web and Windows-log layers that endpoint telemetry cannot see.

#SourceCheckWhy
N1Defender for Office 365 advanced hunting, EmailUrlInfo joined to EmailEventsInbound mail whose URL host is app.powerbi.com and whose path starts with /view, from external senders. Review recipients who clicked (UrlClickEvents).Finds the lure itself and the users to interview. Many legitimate Power BI shares exist, so treat as a lead list.
N2Web proxy or secure web gatewayRequests to app.powerbi.com/view?r= followed within minutes by a request to any of the five staging domains or to the second-stage domain from the same client.The Power BI hop is invisible to the endpoint, but the gateway logs it. The staging domains are the high-confidence half.
N3Web proxy or DNS filterAny lookup or request for check.vykyn.click or the other reported hosts. A hit on the decoy host means a visitor failed the fingerprint and did not receive an installer, which tells you the lure reached a user but was filtered.Separates reached-and-filtered from reached-and-infected.
N4Defender for Office 365 or mail gatewaySearch for the reported dashboard URL. After finding recipients, purge the message and block the URL at the gateway.One URL is published. Others will exist, so use it to find the sender and template, not as a complete list.
N5Windows Security logEvent ID 4698 (scheduled task created) where the task name is SCAutoRepairEvery2Min or the action references SCAutoFix.ps1.Persistence evidence that survives if the EDR sensor was tampered with. Needs the Other Object Access Events audit subcategory.
N6Windows System logEvent ID 7045 (service installed) with a service name beginning ScreenConnect Client. Compare the instance ID in the name with your approved list.The client registers as a service, so this gives an install timestamp.
N7Windows Application logMsiInstaller events 11707 (installation completed) and 11724 (removal completed) for ScreenConnect near the same time.An install and a removal of ScreenConnect within minutes is the second-client swap.
08

Hunt Queries: CrowdStrike CQL, SentinelOne PowerQuery and Defender XDR KQL

Show all queries in
Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.

Ten queries. Q1 and Q10 match published indicators. Q2, Q6, Q7 and Q9 are behavioral and survive a changed instance ID, hash or domain, so they are the durable half. Every filename match uses the FileName basename field, so no path slash appears inside a regex. Q10 is detect only and must never become a block, because the hashes belong to a legitimate vendor binary. Run order for a first sweep: Q1, Q5, Q7, Q2, then Q8 and Q9.

Q1 · ScreenConnect Client Carrying a Reported Rogue Instance ID
CONF HIGHFP LOWCOST LOW

Looks for: any process whose image path or command line carries one of the two ScreenConnect client instance IDs named in the reporting. A ScreenConnect client embeds its instance ID in the install folder and service name, so a hit means the attacker's client is or was running on the host. The first ID belongs to the client that was later removed, so a historical hit with no live process still proves exposure.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: An instance ID that appears only in a file path or a service registry value, and never in a process image path or command line, is not captured.
  • PowerQuery assumes: The instance ID appears in the created process image path (the ScreenConnect Client folder name) or in its command line.
  • PowerQuery assumes: src.process.user holds the account that ran the new process.
  • KQL – Defender XDR: A process the sensor did not observe starting is not captured.
  • KQL – Defender XDR assumes: FolderPath holds the full image path of the created process, including the ScreenConnect Client folder name.
// HUNT: ScreenConnect client carrying a reported rogue instance ID (Power BI phishing campaign)
// MITRE: T1219
// CONF: high | FP: low | COST: low | REQUIRES: process creation with image path and command line (ProcessRollup2)
// SOURCE: instance IDs 2b302081e9e777d0 and 43773b3da4ccb17b appear in the GBHackers and Cryptika snapshots
// FALSE POSITIVES: none expected; the instance ID is unique to the attacker's ScreenConnect deployment
// TUNING: none expected; treat every hit as an incident
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ImageFileName=/(2b302081e9e777d0|43773b3da4ccb17b)/i or CommandLine=/(2b302081e9e777d0|43773b3da4ccb17b)/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData, aid], limit=200)
Q2 · Host Running More Than One ScreenConnect Instance Over the Window
CONF HIGHFP MEDCOST MED

Looks for: hosts where ScreenConnect client processes ran under two or more different instance IDs across the search window. The campaign installs a second client on separate infrastructure and then uninstalls the first, so the two instances may never overlap in time. Counting distinct IDs over the window catches the swap that a point-in-time inventory misses. Reporting states that investigating endpoints with multiple RMM clients is the recommended triage. FP: an MSP or helpdesk that migrates between its own ScreenConnect instances will also hit. Exclude hosts whose instance IDs are all in your approved list.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: approximate-analytic, equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The instance ID is not extracted, so the output lists distinct paths rather than IDs.
  • PowerQuery: Hosts that only ever ran the user-session client binary (windowsclient.exe) are not counted.
  • PowerQuery assumes: Each ScreenConnect instance installs into its own folder named ScreenConnect Client followed by the 16-character instance ID in parentheses.
  • PowerQuery assumes: The service binary runs from the same folder as the rest of the instance, so one distinct path is one instance.
  • PowerQuery assumes: estimate_distinct is exact at this cardinality.
  • KQL – Defender XDR: An instance that never started a process the sensor observed is not counted.
  • KQL – Defender XDR assumes: FolderPath holds the full image path, with the instance ID in the ScreenConnect Client folder name.
// HUNT: host that ran more than one ScreenConnect instance (second-client swap)
// MITRE: T1219, T1070
// CONF: high | FP: medium | COST: medium | REQUIRES: process creation with image path (ProcessRollup2). Instance ID read from the image path, validate the folder naming in your tenant
// FALSE POSITIVES: legitimate helpdesk migration between instances; a technician running a second approved ScreenConnect session
// TUNING: add `| InstanceId!=/^(YOUR_APPROVED_ID_1|YOUR_APPROVED_ID_2)$/i` before the groupBy to drop your own approved instances, then keep hosts with two or more remaining IDs
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^ScreenConnect\.(ClientService|WindowsClient)\.exe$/i
| ImageFileName=/ScreenConnect Client \((?<InstanceId>[0-9a-f]{16})\)/i
| groupBy([aid, ComputerName], function=[count(InstanceId, distinct=true, as=InstanceCount), collect([InstanceId]), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)])
| InstanceCount >= 2
| sort(InstanceCount, order=desc, limit=200)
Q3 · ScreenConnect Installer Executed by a User
CONF MEDFP MEDCOST LOW

Looks for: execution of ScreenConnect.ClientSetup.exe, or msiexec.exe installing ScreenConnect.ClientSetup.msi. The first stage is a downloaded installer and the second client was reported as an MSI hosted on the second-stage domain. The installer is a legitimate ConnectWise product carrying attacker configuration, so this query only ever alerts and never blocks. FP: IT helpdesk installing an approved ScreenConnect client. Exclude your approved deployment tool as parent and your approved instance in the command line.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: An installer renamed before it runs is not matched by name.
  • PowerQuery assumes: matches is case-insensitive by default, which reproduces the CQL /i intent.
  • PowerQuery assumes: src.process.user holds the account that ran the new process.
  • KQL – Defender XDR: An installer renamed before it runs is not matched by name.
  • KQL – Defender XDR assumes: The (?i) prefix keeps the regex case-insensitive, reproducing the CQL /i intent.
// HUNT: ScreenConnect installer executed (Power BI phishing campaign delivery)
// MITRE: T1204.002, T1219
// CONF: medium | FP: medium | COST: low | REQUIRES: process creation with command line and parent (ProcessRollup2)
// SOURCE: ClientSetup.exe named in the Huntress snapshot, ClientSetup.msi named only in the Cryptika snapshot
// FALSE POSITIVES: helpdesk and MSP technicians installing an approved ScreenConnect client
// TUNING: exclude ParentBaseFileName values belonging to your software-distribution agent and any CommandLine that contains your approved instance host. Prioritise hits where ParentBaseFileName is a browser or explorer.exe and the image sits in a Downloads or Temp folder
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^ScreenConnect\.ClientSetup\.exe$/i or (FileName=/^msiexec\.exe$/i and CommandLine=/ScreenConnect\.ClientSetup\.msi/i)
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData, aid], limit=200)
Q4 · ScreenConnect Installer Written to Disk
CONF MEDFP MEDCOST LOW

Looks for: the installer landing on disk, which is the moment the "Download Reference" click turns into a file. Fires before the installer runs, so it also catches a download the user abandoned. ContextBaseFileName shows which process wrote it, normally a browser in this campaign. FP: approved helpdesk downloads. Exclude users and hosts in the IT support group.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: File Modification and rename events are not queried, so an installer that appears only through a rename is missed.
  • PowerQuery assumes: tgt.file.path holds the full path of the written file, so the file name is matched after the last path separator.
  • PowerQuery assumes: A download that is written under a temporary name and then renamed is seen only if the sensor emits File Creation for the final name.
  • KQL – Defender XDR: The CQL reads PE-written sensor events; this reads generic file events, so a file the sensor does not report is missed.
  • KQL – Defender XDR assumes: FileName holds the final file name, including a browser duplicate suffix such as (1).
  • KQL – Defender XDR assumes: FileRenamed is the ActionType a browser rename produces; it is attested in Microsoft-owned hunting queries rather than listed on the table page.
// HUNT: ScreenConnect installer written to disk by a browser or other process
// MITRE: T1204.002, T1105
// CONF: medium | FP: medium | COST: low | REQUIRES: file-written telemetry (PeFileWritten, NewExecutableWritten)
// FALSE POSITIVES: helpdesk staff downloading the installer from your own approved instance
// TUNING: exclude the IT support asset group; prioritise hits where ContextBaseFileName is chrome.exe, msedge.exe, firefox.exe or an email client
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| FileName=/^ScreenConnect\.ClientSetup(\s?\(\d+\))?\.exe$/i
| table([@timestamp, ComputerName, UserName, FileName, TargetFileName, ContextBaseFileName, SHA256HashData, aid], limit=200)
Q5 · Reported Chain Artifacts: HideUL_x64, SCAutoFix.ps1, the Launcher .cmd and the Task Name
CONF HIGHFP LOWCOST LOW

Looks for: execution of the defense-evasion tool and the scripts reported in the chain. HideUL_x64.exe is matched by basename. The launcher .cmd name carries what looks like a random prefix, so the query matches the reported value and also the reported SCAutoFix.ps1 and task name in any command line, which survive a renamed launcher.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A launcher script that never appears in a command line is not captured.
  • PowerQuery assumes: src.process.user holds the account that ran the new process.
  • KQL – Defender XDR: A launcher script that never appears in a command line is not captured.
  • KQL – Defender XDR assumes: ProcessCommandLine carries the full command line including script paths.
// HUNT: reported chain artifacts HideUL_x64 / SCAutoFix.ps1 / launcher cmd / SCAutoRepairEvery2Min
// MITRE: T1564, T1059.001, T1059.003, T1053.005
// CONF: high | FP: low | COST: low | REQUIRES: process creation with command line (ProcessRollup2)
// SOURCE: all four names appear in the Huntress snapshot
// FALSE POSITIVES: none expected
// TUNING: none expected; the launcher .cmd name may be randomised per host, so pivot on SCAutoFix.ps1 if it does not match
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^HideUL_x64(\.exe)?$/i or CommandLine=/(HideUL_x64|SCAutoFix\.ps1|LyN03DvVjUKPrun|SCAutoRepairEvery2Min)/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData, aid], limit=200)
Q6 · Command Shell or PowerShell Scripting a ScreenConnect Install or Removal
CONF MEDFP MEDCOST LOW

Looks for: the second-stage behavior: a command file launches PowerShell from a temporary directory, which downloads the second installer and removes the first ScreenConnect instance. The query finds cmd, PowerShell or msiexec command lines that mention ScreenConnect together with a script file, a download verb or an uninstall verb. It does not depend on any of the reported file names, so it survives renaming. FP: RMM deployment scripts and software-distribution tooling. Exclude their parent processes.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A script that reaches ScreenConnect through a variable and never names it in the command line is not captured.
  • PowerQuery assumes: src.process.user holds the account that ran the new process.
  • KQL – Defender XDR: A script that reaches ScreenConnect through a variable and never names it in the command line is not captured.
  • KQL – Defender XDR assumes: ProcessCommandLine carries the full command line.
// HUNT: cmd / PowerShell / msiexec scripting a ScreenConnect install or removal (second-client swap)
// MITRE: T1059.001, T1059.003, T1105, T1070
// CONF: medium | FP: medium | COST: low | REQUIRES: process creation with command line and parent (ProcessRollup2)
// SOURCE: Cryptika snapshot describes command files running PowerShell from temporary directories, downloading secondary installers and removing the first client
// FALSE POSITIVES: sanctioned RMM deployment or cleanup scripts
// TUNING: exclude ParentBaseFileName values of your deployment agent and command lines containing your approved instance host; prioritise hits where the script path is under a Temp or AppData folder
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^(cmd|powershell|pwsh|msiexec)\.exe$/i
| CommandLine=/ScreenConnect/i
| CommandLine=/(\.cmd|\.ps1|downloadfile|downloadstring|invoke-webrequest|iwr\s|start-bitstransfer|uninstall|win32_product|remove-item)/i
| table([@timestamp, ComputerName, UserName, FileName, CommandLine, ParentBaseFileName, aid], limit=200)
Q7 · Scheduled Task Named in the Reporting, or a Two-Minute ScreenConnect Task
CONF HIGHFP MEDCOST LOW

Looks for: the persistence step. The first branch matches the reported task name SCAutoRepairEvery2Min and its script. The second branch is behavioral: a schtasks command that creates a task repeating every two minutes and mentions ScreenConnect, which survives a renamed task. The task-registration event and its TaskName field are sensor-version dependent, so the command-line branches carry the query if they are empty. FP: only the generic two-minute branch can fire on benign monitoring tasks, and it requires the word ScreenConnect in the command line. Tune that branch to your approved instance.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: telemetry-gapProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The scheduled-task registration branch of the CQL (a task name field on a registration event) is not covered.
  • PowerQuery: A task created through an API or a task XML import, rather than a schtasks command line, is missed.
  • PowerQuery assumes: src.process.user holds the account that ran the new process.
  • KQL – Defender XDR: The scheduled-task registration branch of the CQL (a task name field on a registration event) is not covered.
  • KQL – Defender XDR: A task created through an API or a task XML import, rather than a schtasks command line, is missed.
  • KQL – Defender XDR assumes: ProcessCommandLine carries the full schtasks arguments.
// HUNT: scheduled task SCAutoRepairEvery2Min or a two-minute task tied to ScreenConnect
// MITRE: T1053.005
// CONF: high | FP: medium | COST: low | REQUIRES: ScheduledTaskRegistered (⚠ validate in tenant), ProcessRollup2
// SOURCE: task name SCAutoRepairEvery2Min and SCAutoFix.ps1 appear in the Huntress snapshot
// FALSE POSITIVES: the generic branch can match an admin-created repeating task that mentions an approved ScreenConnect path
// TUNING: for the generic branch exclude CommandLine values containing your approved instance host or deployment script path
#event_simpleName=/^(ScheduledTaskRegistered|ProcessRollup2|SyntheticProcessRollup2)$/
| TaskName=/SCAutoRepairEvery2Min/i or CommandLine=/(SCAutoRepairEvery2Min|SCAutoFix\.ps1)/i or (FileName=/^schtasks\.exe$/i and CommandLine=/ScreenConnect/i and CommandLine=/[^a-z]sc\s+minute/i and CommandLine=/[^a-z]mo\s+2(\s|$)/i)
| table([@timestamp, ComputerName, UserName, FileName, TaskName, CommandLine, ParentBaseFileName, aid], limit=200)
Q8 · Reported Campaign Domain Sweep (DNS)
CONF HIGHFP LOWCOST MED

Looks for: retrospective exposure to the eight reported hosts: the two attacker ScreenConnect instance names, the second-stage RMM domain, the four staging domains and the decoy redirect. Matches are anchored so a longer unrelated domain cannot match, and the ScreenConnect names are matched as exact hostnames, never as the whole vendor domain. Perishable, so run it across 30 days now.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A lookup the sensor does not report, such as DNS over HTTPS inside a browser, is not captured.
  • PowerQuery assumes: event.dns.request holds the queried name; the vendor field docs name dns.request instead, so confirm which is populated with the readiness test.
  • PowerQuery assumes: src.process.name holds the requesting process on a DNS event.
  • KQL – Defender XDR: A lookup the sensor does not report, such as DNS over HTTPS inside a browser, is not captured.
  • KQL – Defender XDR assumes: DnsQueryResponse is attested in Microsoft-owned hunting queries rather than listed on the table page.
  • KQL – Defender XDR assumes: AdditionalFields carries the queried name under DnsQueryString or QueryName; the readiness test shows which key your tenant populates.
// HUNT: reported campaign domain sweep (staging, second-stage RMM, attacker ScreenConnect instances, decoy)
// MITRE: T1071.001, T1219, T1583.001
// CONF: high | FP: low | COST: medium | REQUIRES: DNS lookup with requesting process (DnsRequest)
// SOURCE: hosts from the Huntress, GBHackers, Cyberpress and Cryptika snapshots (the decoy host is in the three press snapshots only)
// FALSE POSITIVES: none expected; a user investigating the campaign may resolve the domains deliberately
// TUNING: none expected; treat a hit on a staging domain as an executed lure and check Q3 and Q4 on the same aid
#event_simpleName=DnsRequest
| DomainName=/^(hamham27|instance-g01s1n-relay)\.screenconnect\.com$/i or DomainName=/(^|\.)(onthegotree|dailylifeproject|burnsworth|essaywritingservice|openpediatrics)\.site$/i or DomainName=/^check\.vykyn\.click$/i
| groupBy([ComputerName, aid, DomainName, ContextBaseFileName], function=[count(as=Lookups), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)])
| sort(LastSeen, order=desc, limit=200)
Q9 · ScreenConnect Client Resolving a Relay Outside screenconnect.com
CONF MEDFP MEDCOST MED

Looks for: the second client, which reporting ties to separate attacker infrastructure on the second-stage domain rather than the vendor cloud. A ScreenConnect client process resolving any name that is not under screenconnect.com means a self-hosted or attacker-hosted relay. This finds relays that are not in the published list, so it is the durable half of the domain coverage. The requesting-process field on DNS events is not populated on every sensor version. FP: organizations that run their own self-hosted ScreenConnect server. Exclude that relay domain.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: approximate-analytic, equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Only one sample host is shown per resolved name, not the full host list the CQL collects.
  • PowerQuery assumes: event.dns.request holds the queried name; the vendor field docs name dns.request instead, so confirm which is populated with the readiness test.
  • PowerQuery assumes: src.process.name holds the requesting process on a DNS event.
  • KQL – Defender XDR: A lookup the sensor does not report, such as DNS over HTTPS inside a browser, is not captured.
  • KQL – Defender XDR assumes: DnsQueryResponse is attested in Microsoft-owned hunting queries rather than listed on the table page.
  • KQL – Defender XDR assumes: AdditionalFields carries the queried name under DnsQueryString or QueryName; the readiness test shows which key your tenant populates.
// HUNT: ScreenConnect client resolving a relay outside screenconnect.com (second client on separate infrastructure)
// MITRE: T1219, T1071.001
// CONF: medium | FP: medium | COST: medium | REQUIRES: DnsRequest with ContextBaseFileName populated (⚠ validate in tenant)
// SOURCE: Cyberpress and GBHackers snapshots tie the second client to the second-stage domain
// FALSE POSITIVES: your own self-hosted ScreenConnect relay; clients resolving certificate or time services
// TUNING: exclude your self-hosted relay domain with `| DomainName!=/(^|\.)YOUR_RELAY_DOMAIN$/i`; ignore well-known Microsoft and certificate hostnames after baselining
#event_simpleName=DnsRequest
| ContextBaseFileName=/^ScreenConnect\.(ClientService|WindowsClient)\.exe$/i
| DomainName!=/(^|\.)screenconnect\.com$/i
| groupBy([DomainName], function=[count(aid, distinct=true, as=Hosts), count(as=Lookups), collect([ComputerName]), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)])
| sort(Hosts, order=desc, limit=200)
Q10 · Reported ScreenConnect Client SHA256 Sweep (Detect Only)
CONF HIGHFP LOWCOST LOW

Looks for: the two reported client hashes in process creation and file-written events. Both are ConnectWise ScreenConnect client binaries carrying attacker configuration, so they are a legitimate commercial product and the pack ships them as detect only. A different build of the same client with a different configuration will have a different hash, so a clean result here proves little. Q1 and Q9 are the durable coverage.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptions, telemetry-gapProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A copy of the client rebuilt with a different configuration has a different hash and is not matched.
  • PowerQuery assumes: tgt.process.image.sha256 and tgt.file.sha256 are populated on your tenant; confirm with the readiness test.
  • PowerQuery assumes: Both hashes are the legitimate vendor binary, so a hit shows the tool is present, not that it is malicious.
  • KQL – Defender XDR: The file-written half of the CQL is not covered; run the same hashes against the file events table to cover it.
  • KQL – Defender XDR: A tenant where SHA256 is unpopulated returns nothing from this query.
  • KQL – Defender XDR assumes: SHA256 is populated for process-creation rows on your tenant; Microsoft documents it as often unpopulated.
// HUNT: reported ScreenConnect client SHA256 sweep (legitimate vendor binary, detect only)
// MITRE: T1219
// CONF: high | FP: low | COST: low | REQUIRES: SHA256HashData on process and file-written events
// SOURCE: both hashes appear in the Huntress, Cyberpress and Cryptika snapshots (first client and second client)
// FALSE POSITIVES: none expected for these exact hashes
// TUNING: none expected; never convert this to a block, the binary is a legitimate product
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten)$/
| in(field=SHA256HashData, values=["5956f9afb3ba610c38b2cfda88dd15be98783963769a12020c93ce05e749b3c3", "f048400c23add8c75abe189393d33c873c02c74eeaf43d47b950c8d643763b35"])
| table([@timestamp, ComputerName, UserName, #event_simpleName, FileName, ImageFileName, CommandLine, SHA256HashData, aid], limit=200)
09

Detection Rules by Platform

Three queries are specific enough to promote from hunt to Custom IOA. All three are Monitor / detect only. The pack recommends no IOA that blocks ScreenConnect or any other legitimate binary. The only blocking in this pack is domain-level, in IOC Management, for the five staging and second-stage domains.

CrowdStrike: Custom IOA

IOA nameFromRule group / typePatternExclusionsAction
RogueScreenConnect, Reported Instance IDPromote Q1Process Creation (Windows)Image path or command line contains 2b302081e9e777d0 or 43773b3da4ccb17bNoneDetect: High
RogueScreenConnect, Chain ArtifactsPromote Q5Process Creation (Windows)Image HideUL_x64.exe, or command line contains SCAutoFix.ps1 or SCAutoRepairEvery2MinNoneDetect: High
RogueScreenConnect, Two-Minute TaskPromote Q7Process Creation (Windows)Image schtasks.exe; command line contains SCAutoRepairEvery2Min or SCAutoFix.ps1None for the named branchDetect: High

Deployment path

  1. Endpoint security → Configuration → Custom IOA rule groups. Create a group for this campaign and attach it to a pilot prevention policy.
  2. Create each rule in Monitor (detect-only) and leave it for one business week.
  3. Do not raise any rule to Block. The rules name a legitimate installer's family, schtasks.exe, and a sanctioned product's instance folder. If you want to restrict ScreenConnect, do it by allow-listing your own instance (section 12, I2), not by blocking on this campaign's names.
  4. Import the domain rows from section 10 into IOC Management. The five staging domains import as prevent; everything else imports as detect.

Investigate-only queries

  • Q2, Q3, Q4, Q6, Q9: run as scheduled searches to a hunt queue. They depend on a baseline of your own approved remote-support use.
  • Correlation is where fidelity lives. A host that hits Q3 or Q4 and then Q2 or Q7 within 24 hours should escalate regardless of the individual ratings.

SentinelOne: custom detection rules

RuleSource queryRun asNotes
RogueScreenConnect, Reported Instance IDQ1, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written
RogueScreenConnect, Chain ArtifactsQ5, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written
RogueScreenConnect, Two-Minute TaskQ7, PowerQuery tabHunt only until the gap is closedQ7 is only an approximation here. Partial pivot on process creation only: the reported task name or script in a command line, or schtasks creating a two-minute task that names ScreenConnect. The CQL also reads a scheduled-task registration event, which has no attested SentinelOne equivalent here.. This pack's own text mentions a baseline or pilot; follow it as written

Create the rule with POST /web/api/v2.1/cloud-detection/rules, queryType: "scheduled" and queryLang: "2.0", with the query in data.scheduledParams.query. Use 2.0 operator spellings: a rule written with the 1.0 token ContainsCIS was accepted and never fired on a tenant. The API does not warn, so lint the body before deploying.

Microsoft Defender: custom detection rules

RuleSource queryRun asNotes
RogueScreenConnect, Reported Instance IDQ1, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself. This pack's own text mentions a baseline or pilot; follow it as written
RogueScreenConnect, Chain ArtifactsQ5, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself. This pack's own text mentions a baseline or pilot; follow it as written
RogueScreenConnect, Two-Minute TaskQ7, KQL – Defender XDR tabHunt only until the gap is closedQ7 is only an approximation here. Partial pivot on process creation only: the reported task name or script in a command line, or schtasks creating a two-minute task that names ScreenConnect. The CQL also reads a scheduled-task registration event, which is a separate Defender table action and is left out.. This pack's own text mentions a baseline or pilot; follow it as written

Q2, Q3, Q4, Q6, Q8, Q9 and Q10 stay a hunt in this pack, not a rule. A rule can generate only 150 alerts per run. Continuous (NRT) frequency needs a single table and no comment lines, so delete the generated comment header from the query first.

10

Machine-Readable IOC Appendix

Read before importing: ten rows. The five .site domains import as prevent with severity critical. They sit in the vendor primary and all three retrieved press snapshots, but the press snapshots restate the vendor report, and some of these names look like ordinary sites (an attacker may have registered or compromised them). Confirm none is a business domain you use before enabling prevent. The two screenconnect.com hostnames, the decoy host and both SHA256 values import as detect. Do not add screenconnect.com itself, and do not add any ScreenConnect installer name or the vendor client hashes as prevent.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
domain,onthegotree.site,prevent,critical,2027-04-12,Second-stage RMM infrastructure,campaign:powerbi-phishing-rogue-screenconnect
domain,dailylifeproject.site,prevent,critical,2027-04-12,Fingerprinting gateway and staging,campaign:powerbi-phishing-rogue-screenconnect
domain,burnsworth.site,prevent,critical,2027-04-12,Alternate staging,campaign:powerbi-phishing-rogue-screenconnect
domain,essaywritingservice.site,prevent,critical,2027-04-12,Alternate staging,campaign:powerbi-phishing-rogue-screenconnect
domain,openpediatrics.site,prevent,critical,2027-04-12,Alternate staging,campaign:powerbi-phishing-rogue-screenconnect
domain,check.vykyn.click,detect,high,2027-04-12,Decoy redirect for failed fingerprint (press snapshots only),campaign:powerbi-phishing-rogue-screenconnect
domain,hamham27.screenconnect.com,detect,high,2027-04-12,Attacker ScreenConnect instance serving installer,campaign:powerbi-phishing-rogue-screenconnect
domain,instance-g01s1n-relay.screenconnect.com,detect,high,2027-04-12,First client relay,campaign:powerbi-phishing-rogue-screenconnect
sha256,5956f9afb3ba610c38b2cfda88dd15be98783963769a12020c93ce05e749b3c3,detect,medium,2027-04-12,First ScreenConnect client (legitimate vendor binary with attacker config),campaign:powerbi-phishing-rogue-screenconnect
sha256,f048400c23add8c75abe189393d33c873c02c74eeaf43d47b950c8d643763b35,detect,medium,2027-04-12,Second ScreenConnect client (legitimate vendor binary with attacker config),campaign:powerbi-phishing-rogue-screenconnect
Microsoft Defender indicators CSVSettings, Endpoints, Indicators, Import: audit and block
indicatorType,indicatorValue,action,title,description,expirationTime,severity,recommendedActions,rbacGroups,category,mitretechniques,GenerateAlert
DomainName,onthegotree.site,Block,Second-stage RMM infrastructure,Second-stage RMM infrastructure,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,dailylifeproject.site,Block,Fingerprinting gateway and staging,Fingerprinting gateway and staging,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,burnsworth.site,Block,Alternate staging,Alternate staging,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,essaywritingservice.site,Block,Alternate staging,Alternate staging,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,openpediatrics.site,Block,Alternate staging,Alternate staging,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,check.vykyn.click,Audit,Decoy redirect for failed fingerprint,Decoy redirect for failed fingerprint (press snapshots only),2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,hamham27.screenconnect.com,Audit,Attacker ScreenConnect instance serving installer,Attacker ScreenConnect instance serving installer,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,instance-g01s1n-relay.screenconnect.com,Audit,First client relay,First client relay,2027-04-12T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,5956f9afb3ba610c38b2cfda88dd15be98783963769a12020c93ce05e749b3c3,Audit,First ScreenConnect client,First ScreenConnect client (legitimate vendor binary with attacker config),2027-04-12T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,f048400c23add8c75abe189393d33c873c02c74eeaf43d47b950c8d643763b35,Audit,Second ScreenConnect client,Second ScreenConnect client (legitimate vendor binary with attacker config),2027-04-12T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True

Column names and allowed values are from Microsoft's documented parameter table. Prevent rows import as Block, without remediation; network indicators cannot use BlockAndRemediate. Check each expirationTime before importing: an indicator whose date has passed is already expired. Download the sample CSV from the Import page to confirm the column order before a bulk import. Each file takes at most 500 indicators. Learn describes the import per entity type, so if a mixed file is rejected, split it by indicatorType. An imported indicator does nothing unless the matching Advanced features are on (for example Custom network indicators and Allow or block file).

SentinelOne IOC importnot included

This pack does not ship a SentinelOne import block: the import format could not be verified against SentinelOne's own documentation. Export a sample from your console and the block can be added with confidence.

Behavioral Signaturesdurable, outlives the indicators
Rogue ScreenConnect via Power BI phishing - behavioral signatures

B1  ScreenConnect client whose instance ID is not in your approved list
B2  One host running or having run two or more ScreenConnect instance IDs in the window
B3  ScreenConnect installer (.exe or .msi) written by a browser, then run by the same user
B4  cmd.exe or powershell.exe mentioning ScreenConnect together with a script file,
    a download verb or an uninstall verb, from a Temp or AppData path
B5  Scheduled task repeating every two minutes whose action mentions ScreenConnect or a
    repair script
B6  ScreenConnect client process resolving a relay that is not under screenconnect.com
B7  HideUL_x64.exe, SCAutoFix.ps1 or SCAutoRepairEvery2Min anywhere in a command line
B8  Inbound mail with a link to a view path on the Power BI domain from an external sender

LOW-SPECIFICITY (never hunt alone): ScreenConnect.ClientSetup.exe / .msi, the words
PERFECTO and ILEAYEASAN / PAPASUPE, the Power BI domain itself
KEY INSIGHT: the second client survives removal of the first, so check every host for ALL instances
Named Artifactscontext for triage
Client instance IDs : 2b302081e9e777d0 (first), 43773b3da4ccb17b (second)
Client process      : ScreenConnect.ClientService.exe (instance ID in the name)
Installers          : ScreenConnect.ClientSetup.exe, ScreenConnect.ClientSetup.msi (second stage)
Evasion tool        : HideUL_x64.exe
Persistence script  : SCAutoFix.ps1 (run by task SCAutoRepairEvery2Min every 2 minutes)
Launcher            : LyN03DvVjUKPrun.cmd (name may be randomised)
Guest parameters    : ILEAYEASAN, PERFECTO, PAPASUPE (single source, enrich only)
Phishing URL        : hxxps://app.powerbi.com/view?r=eyJrIjoiNTk0NmViNDktYzM1Yy00MjEwLTkyZTctNGU5ZTJmYzMzYjEwIiwidCI6IjU1YTI4YmU2LTFiYzQtNDIzMS05MTA0LTdkMmFlYTVmMGZhNiJ9
Staging path        : dailylifeproject.site/S/  and  decoy path check.vykyn.click/E/
Attribution         : none (Huntress named no actor)
Control Auditverify hardening state
# ScreenConnect client services present on this host (read-only)
Get-CimInstance Win32_Service | Where-Object { $_.Name -like 'ScreenConnect Client*' } | Select-Object Name, State, PathName
# The reported persistence task?
Get-ScheduledTask -TaskName 'SCAutoRepairEvery2Min' -ErrorAction SilentlyContinue
# ASR rules configured (Defender)
(Get-MpPreference).AttackSurfaceReductionRules_Ids
# PowerShell script block logging on?
Get-ItemProperty 'HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Name EnableScriptBlockLogging -ErrorAction SilentlyContinue
11

Detection Validation Gates

Work these in order. A query that has not cleared gate 2 has no business being an alert.

GateWhat to proveHowPass criteria
G1 · Telemetry readyThe events each query depends on arrive in your tenantRun each event filter alone over 24h with count(): process creation with command line and image path (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents), DNS lookup with the requesting process (CrowdStrike: DnsRequest. SentinelOne: DNS Resolved. Defender: DeviceEvents DnsQueryResponse), file written (CrowdStrike: PeFileWritten, NewExecutableWritten) and scheduled task created (CrowdStrike: ScheduledTaskRegistered). Check that ContextBaseFileName is populated on DNS events (Q9) and that the ScreenConnect install folder carries the instance ID (Q2).Non-zero counts and the named fields populated.
G2 · Benign baselineYou know what normal ScreenConnect use looks likeRun Q2, Q3, Q4, Q6 and Q9 across 30 days and list every instance ID, relay domain and installer in use. Approve the legitimate ones.Every recurring hit is explained and excluded, or escalated.
G3 · Positive testThe query fires on the behavior it claims to detectOn an isolated test host in a change window: create a scheduled task named SCAutoRepairEvery2Min whose action is a harmless cmd /c exit (Q7); copy cmd.exe to a file named HideUL_x64.exe in a temp folder and run it (Q5). Do not install a real rogue client or fetch any attacker file.The matching query fires.
G4 · Negative testYour exclusions did not blind the queryRe-run G3 with tuning exclusions applied, and confirm your approved ScreenConnect instance does not hit Q1, Q2 or Q9.Test events still fire; approved use stays quiet.
G5 · PromotionSafe to alertCustom IOA in Monitor mode for one business week on a pilot policy.Zero unexplained detections.
G6 · Response readinessThe team can act on a hitTabletop the section 14 runbook.Analyst can state the "find every instance before removing any" rule without prompting.
12

Hardening: Tiered

Controls are ordered by leverage against this chain. The campaign needs three things: a user who can install software, an RMM client that is allowed to run and reach any relay, and no one watching which RMM instances exist. Each control removes one of them.

Immediate: deploy this week

I1 · Stop standard users from installing remote-access software

The chain ends in a user running an installer. Without local admin rights, the installer cannot register the client service. Where users must install software, route it through an approval flow.
Authority: MITRE M1038 (Execution Prevention), M1026 (Privileged Account Management). CIS Controls v8 2.5 (Allowlist Authorized Software) and 5.4 (Restrict Administrator Privileges). Verify: a standard user cannot run a test MSI that installs a service. Risk: medium, may surface shadow IT.

I2 · Inventory every RMM and approve an instance allowlist

You cannot tell a rogue ScreenConnect client from yours without a list of your own instance IDs and relay hostnames. Run the read-only inventory (P1), build the list, then use it to tune Q1, Q2, Q3 and Q9.
Authority: MITRE M1047 (Audit), M1038. CIS Controls v8 2.1 (Establish Software Inventory). Verify: P1 output reconciled with the approved list. Risk: low.

I3 · Alert on external mail linking to Power BI view pages

Audit-mode transport rule (P3) plus the Defender for Office hunt N1 show who received the lure. Audit first, because legitimate external Power BI sharing exists.
Authority: MITRE M1017 (User Training), M1021 (Restrict Web-Based Content). Microsoft Exchange Online mail flow rule documentation. best-practice, no formal benchmark for this specific lure. Verify: test message from an external mailbox appears in the audit log. Risk: low in audit mode.

I4 · Turn on PowerShell script block and module logging

The second stage runs PowerShell from a temporary directory. Without logging, what it downloaded and removed is not recoverable.
Authority: MITRE M1047; CIS Microsoft Windows benchmark PowerShell logging guidance. Verify: Event 4104 appears after a test command. Risk: low, plan for log volume.

Near term: 1 to 4 weeks, pilot first

N1 · Restrict ScreenConnect to your own instance at the proxy and DNS layer

Permit only your approved instance hostnames, and alert on any other host under screenconnect.com. Do not block the whole vendor domain if you use it. Load the five prevent domains from section 10 into the same filter.
Authority: MITRE M1031 (Network Intrusion Prevention), M1021. best-practice, no formal benchmark for per-instance allowlisting. Verify: a lookup of a non-approved instance hostname is logged or refused. Risk: medium.

N2 · Attack surface reduction rules in audit, then block

Enable the rule that blocks executables that do not meet a prevalence, age or trusted-list test (it targets freshly downloaded installers) and the rule against obfuscated scripts, in audit mode for a week (P2). Confirm both GUIDs against Microsoft Learn before deployment.
Authority: MITRE M1040 (Behavior Prevention on Endpoint); Microsoft Defender ASR rules reference. audit first Risk: medium, the prevalence rule can flag internal tools.

N3 · Browser download controls for executables from uncategorised sites

Web content filtering for newly registered and uncategorised domains cuts off the staging step, since all four staging domains and the decoy are throwaway names.
Authority: MITRE M1021. Microsoft Defender for Endpoint web content filtering documentation. best-practice, no formal benchmark Risk: medium, expect help-desk tickets.

Strategic: 1 to 3 months

S1 · Application control that allows only your RMM

WDAC or AppLocker policy that permits remote-management tools signed for, or configured for, your instance only. Application control is the only control here that stops a freshly built rogue client with a new hash. Authority: MITRE M1038, M1045 (Code Signing). Deploy in audit mode first. Risk: high, needs ownership.

S2 · One approved remote-support platform with SSO and MFA

Reduce the number of tools users see as normal, so an unexpected ScreenConnect prompt is itself a signal. Authority: MITRE M1032 (Multi-factor Authentication), M1017. best-practice, no formal benchmark

S3 · User guidance aimed at this exact lure

No document needs a "Download Reference" button that installs software, and a shared dashboard from outside should not ask for a download. Put that in the next awareness cycle, and give users a one-click report button. Authority: MITRE M1017.

13

Deployable Playbooks

Test every playbook on a pilot ring before fleet deployment. Each lists its prerequisites, reboot requirement and rollback. P4 is a response action: it preserves evidence before it changes anything and only touches the instance IDs you list.

P1 · Read-only RMM and persistence inventory

# Prerequisites: local administrator on the host being checked; read-only, safe on any host.
# Reboot required: no
# Rollback: none required, this script only reads and lists

# 1. ScreenConnect client services (instance ID is part of the name)
Get-CimInstance Win32_Service | Where-Object { $_.Name -like 'ScreenConnect Client*' } |
  Select-Object Name, State, StartMode, PathName

# 2. ScreenConnect install folders
Get-ChildItem 'C:\Program Files*' -Directory -Filter 'ScreenConnect Client*' -ErrorAction SilentlyContinue |
  Select-Object FullName, CreationTime

# 3. The reported persistence task
Get-ScheduledTask | Where-Object { $_.TaskName -eq 'SCAutoRepairEvery2Min' -or $_.Actions.Arguments -match 'SCAutoFix' } |
  Select-Object TaskName, TaskPath, State

# 4. Reported script and tool names in temporary locations
Get-ChildItem $env:TEMP, 'C:\Windows\Temp' -Recurse -Include 'SCAutoFix.ps1','HideUL_x64.exe','*run.cmd' -ErrorAction SilentlyContinue |
  Get-FileHash -Algorithm SHA256 | Format-Table Hash, Path -AutoSize

P2 · ASR rules in Audit mode

# Prerequisites: Microsoft Defender Antivirus active; confirm both GUIDs against Microsoft Learn first.
# Reboot required: no
# Rollback: Remove-MpPreference -AttackSurfaceReductionRules_Ids $ids   (or set the action to Disabled)

# 01443614-...: block executables unless they meet a prevalence, age or trusted-list criterion
# 5beb7efe-...: block execution of potentially obfuscated scripts
$ids = '01443614-cd74-433a-b99e-2ecdc07bfc25', '5beb7efe-fd9a-4556-801d-275e5ffc04cc'
Add-MpPreference -AttackSurfaceReductionRules_Ids $ids -AttackSurfaceReductionRules_Actions AuditMode, AuditMode

# Verify
(Get-MpPreference).AttackSurfaceReductionRules_Ids

P3 · Exchange Online: audit external mail linking to Power BI view pages

# Prerequisites: Exchange Online PowerShell connected as a mail-flow administrator.
# Reboot required: no
# Rollback: Remove-TransportRule -Identity 'Audit external Power BI view links'
# Limit: matches URL text in the message body. A link hidden behind button text may not match, so pair with hunt N1.

New-TransportRule -Name 'Audit external Power BI view links' `
  -FromScope NotInOrganization `
  -SubjectOrBodyMatchesPatterns 'app\.powerbi\.com/view\?r=' `
  -Mode Audit -SetAuditSeverity Medium

# Verify
Get-TransportRule -Identity 'Audit external Power BI view links' | Format-List Name, Mode, State

P4 · Contain rogue ScreenConnect instances (preserve, then disable)

# Prerequisites: run on an already network-isolated host as local administrator.
#   $RogueIds must hold ONLY instance IDs you have confirmed are not yours (P1 reconciled with the approved list).
#   Isolation first (section 14). This script disables, it does not uninstall, so evidence stays on disk.
# Reboot required: no
# Rollback: Set-Service -Name $svc.Name -StartupType Automatic; Start-Service -Name $svc.Name
#           Enable-ScheduledTask -TaskName 'SCAutoRepairEvery2Min'

$RogueIds = @('2b302081e9e777d0','43773b3da4ccb17b')   # add any other confirmed rogue ID from P1
$Evidence = Join-Path $env:SystemDrive 'IR-Evidence'
New-Item -ItemType Directory -Path $Evidence -Force | Out-Null

# 1. Preserve: service config, task XML, install folder listing
Get-CimInstance Win32_Service | Where-Object { $_.Name -like 'ScreenConnect Client*' } |
  Export-Clixml (Join-Path $Evidence 'screenconnect-services.xml')
Export-ScheduledTask -TaskName 'SCAutoRepairEvery2Min' -ErrorAction SilentlyContinue |
  Out-File (Join-Path $Evidence 'SCAutoRepairEvery2Min.xml')

# 2. Disable the task first so it cannot repair the client
Disable-ScheduledTask -TaskName 'SCAutoRepairEvery2Min' -ErrorAction SilentlyContinue

# 3. Stop and disable only the confirmed rogue instances
foreach ($id in $RogueIds) {
  Get-Service | Where-Object { $_.Name -like "ScreenConnect Client ($id)*" } | ForEach-Object {
    Stop-Service -Name $_.Name -Force
    Set-Service  -Name $_.Name -StartupType Disabled
  }
}

# Verify
Get-Service | Where-Object { $_.Name -like 'ScreenConnect Client*' } | Select-Object Name, Status, StartType
14

Containment Runbook

Sequencing rule: the attacker has an interactive channel, so assume hands-on-keyboard access and a second foothold. Find every ScreenConnect instance on the host before you remove any, and do not let endpoint work delay credential and session resets for the user.

PhaseActionsOwnerEvidence to capture
Triage
0 to 15 min
Confirm which query fired. Identify the user, host and the time of the installer download. Check whether Q1, Q2 and Q7 also fired on the same aid. Pull the user's mail for the Power BI lure (N1, N4). SOC L1 Process tree; triggering query output; aid and ComputerName; lure message ID
Isolate
15 to 30 min
Network-contain the host in Falcon. Do not power it off. Run P1 to list every ScreenConnect instance and the task, and save the output before changing anything. SOC L2 Containment timestamp; P1 output; services and task export (P4 step 1)
Isolate: by platformCrowdStrike: network-contain the host. SentinelOne: network quarantine (Disconnect from Network; confirm the label in your console version). Microsoft Defender: Isolate device (full network isolation).SOC L2Containment timestamp; P1 output; services and task export (P4 step 1)
Scope Run Q1, Q2, Q5, Q7 and Q8 across 30 days for other hosts. Block the five staging domains (section 10) and pivot on all eight hosts in DNS and proxy logs. Remember the first client may already be gone, so a missing first instance does not mean a clean host. Threat hunter List of affected hosts and users; first-seen times per host
Credentials and sessions
parallel with Isolate
Treat everything the user was signed into on that host as exposed. Reset passwords, revoke sessions and refresh tokens, re-register MFA where applicable, and review sign-ins from new locations after the install time. Review any privileged tool opened during the exposure window. IAM / SOC L2 Reset timestamps; sign-in review; list of admin tools used on the host
Eradicate After evidence is saved, disable the task and the rogue services (P4), then remove the client installs, SCAutoFix.ps1, the launcher and HideUL_x64.exe. Reimage if you cannot account for every change the attacker made, since the evasion tool's behavior is not published. Endpoint team Task XML; service export; hashes of removed files; reimage decision
Recover and harden Return the host after credentials are reset. Roll out section 12 Immediate controls and the instance allowlist. Re-run Q1, Q2 and Q7 against the host seven days later. Endpoint / Security engineering Change tickets; clean follow-up run
15

Detection Coverage Map

TechniqueBehaviorCQLIOAHardeningCrowdStrike coverageSentinelOneDefender XDR
T1566.002Phishing link on the Power BI domainNoneNoI3, S3GAP (outside endpoint telemetry; native hunts N1, N2, N4 only)GAPGAP
T1497 / T1592Browser fingerprinting, analyst redirect, Telegram reportingNoneNoN3GAP (runs in the browser and on attacker pages, outside endpoint telemetry)GAPGAP
T1204.002 / T1105Installer downloaded and runQ3, Q4NoI1, N2PARTIAL (MSI download is not a PE write; legitimate installs share the pattern)Partial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1219Rogue ScreenConnect client, reported instance IDsQ1, Q10Yes (Q1)I2, S1GOOD (published values only)Good, with assumptionsPartial: Q10 telemetry gap
T1219 / T1070Second client and removal of the firstQ2, Q6NoI2, N1, S1GOOD for the swap; baseline needed for approved usePartial: Q2 approximateGood, with assumptions
T1071.001Staging, second-stage and relay domainsQ8, Q9IOC MgmtN1, N3GOOD (perishable); off-cloud relay is PARTIAL where DNS lacks process attributionPartial: Q9 approximateGood, with assumptions
T1059.001 / T1059.003Command file launching PowerShell from a temporary directoryQ5, Q6Yes (Q5)I4, N2PARTIAL (launcher name may be randomised)Partial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1564HideUL_x64.exe hides activityQ5YesS1PARTIAL (detects the tool's name; the hiding mechanism is not published and not hunted)Partial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1053.005Scheduled task every two minutesQ7Yes (Q7)S1GOOD (command-line branch covers schtasks; API-registered tasks need the task event)Partial: Q7 telemetry gapPartial: Q7 telemetry gap

Gap summary

  • The Power BI landing page and the browser fingerprinting are off-endpoint. Neither produces a signal an endpoint sensor can see. Coverage starts at the staging domain lookup (Q8) and the installer write (Q4). Email and proxy logs (N1 to N4) are the only way to see the lure.
  • Hashes are a narrow signal. A rebuilt client with different configuration has a different hash. Q1, Q2, Q7 and Q9 are what remain useful when indicators rotate.
  • Instance ID extraction depends on folder naming. Q2 reads the ID from the image path. If your tenant stores the client elsewhere, Q2 returns nothing, so confirm in gate G1.
  • The hiding mechanism and the script content are not published. The pack matches names and never asserts what they do.
  • A decoy hit is not a compromise. A visitor who fails the fingerprint check is redirected and gets no installer, so a Q8 hit on the decoy host proves the lure reached a user, not that a host was compromised.

Validation: gates G1 to G6 in section 11 govern promotion. No query proceeds to alert before clearing G2, and none is recommended for Block.

16

Hunt Summary Ticket

TITLE:      Power BI phishing campaign - rogue ScreenConnect RMM clients, second-client swap, task persistence
SEVERITY:   High - Huntress reporting dated 2026-10-07, campaign first seen 2026-09-10; no named actor
SCOPE:      All Windows endpoints with interactive users and any user able to install software.
            Priority: hosts that received external mail linking to a Power BI view page.

HYPOTHESIS: A user followed an emailed link to an attacker-built dashboard on the Power BI domain,
            clicked "Download Reference", passed a browser fingerprint on a staging site and received
            a ScreenConnect installer. A first client connected to a vendor-cloud relay. A command file
            and PowerShell then installed a second client on separate infrastructure, removed the first,
            hid activity with HideUL_x64.exe and created a task that repeats every two minutes.

QUERIES:    Q1  Reported rogue instance ID                      CONF high | FP low  | COST low
            Q2  Host with 2+ ScreenConnect instances            CONF high | FP med  | COST med
            Q3  ScreenConnect installer executed                CONF med  | FP med  | COST low
            Q4  ScreenConnect installer written                 CONF med  | FP med  | COST low
            Q5  HideUL / SCAutoFix / launcher / task name       CONF high | FP low  | COST low
            Q6  cmd/PS scripting a ScreenConnect swap           CONF med  | FP med  | COST low
            Q7  SCAutoRepairEvery2Min / 2-minute task           CONF high | FP med  | COST low
            Q8  Reported domain sweep (DNS)                     CONF high | FP low  | COST med
            Q9  ScreenConnect client to off-cloud relay         CONF med  | FP med  | COST med
            Q10 Client SHA256 sweep (detect only)               CONF high | FP low  | COST low

DO FIRST:   1. Q1, Q5 and Q7 across 30 days (high fidelity, near-zero FP)
            2. Q2 to find hosts that ran more than one instance
            3. Q8 retrospective sweep (perishable)
            4. P1 inventory on any hit host, BEFORE removing anything
            5. Native hunts N1 and N2 for the lure and the users who clicked

FINDINGS:   [ ] Q1 hits: ______    [ ] Q2 hits: ______    [ ] Q5 hits: ______
            [ ] Q7 hits: ______    [ ] Q8 hits: ______
            [ ] Hosts with 2+ query hits in 24h (auto-escalate): ______
            [ ] Users requiring credential and session reset: ______

GAPS:       - Power BI landing page, fingerprinting and Telegram reporting are outside endpoint telemetry
            - Email and proxy logs are the only view of the lure (native hunts N1 to N4)
            - Hashes and instance IDs rotate; behavioral queries Q2, Q6, Q7, Q9 carry the durable coverage
            - HideUL_x64.exe mechanism and SCAutoFix.ps1 content are not published
            - Decoy host and MSI name are press-only; one outlet (IT Security Guru) was not retrievable

ACTIONS:    [ ] Promote Q1, Q5, Q7 to Custom IOA (Monitor mode, pilot policy, 1 week)
            [ ] Import the section 10 CSV into Falcon IOC Management (5 prevent domains, 5 detect)
            [ ] Build the approved ScreenConnect instance list (P1) and tune Q2, Q3, Q9
            [ ] Deploy Immediate hardening: I1 install rights, I2 inventory, I3 mail audit, I4 PS logging
            [ ] Confirm DNS process attribution and instance-folder naming (gate G1)

OWNER:      ______________________
VERSION:    v0.1 - 2026-10-12
17

Changelog

v0.1 2026-10-12 Initial draft. Built from the Huntress report and the GBHackers, Cyberpress and Cryptika coverage of it. Ten CQL hunt queries, ten IOC Management rows (five staging and second-stage domains as prevent, five detect including both client hashes), no attribution. The two client hashes and the ScreenConnect installer names ship detect only because they belong to a legitimate commercial product. IT Security Guru could not be retrieved (HTTP 403) and nothing is attributed to it. Two statements in the task brief (business-ISP filtering, delayed script-triggered download) were not found in any retrieved source and are not claimed. SentinelOne PowerQuery and Microsoft Defender KQL tabs added to Q1-Q10: SIEM Query Rosetta release 0.1.0 (public-beta; static-reviewed translations).
18

References

TierSourceUsed forAccessed
1Huntress: Phishing Campaign Abuses Microsoft Power BI to Deploy Rogue RMMsVendor primary: chain, staging domains, hashes, scheduled task, tool names2026-10-12
3GBHackers: Power BI Phishing Campaign AnalysisStart date, decoy host, instance IDs, Telegram reporting, guest parameters2026-10-12
3Cyberpress: Fake Power BI Documents Trick Users Into Installing Rogue ScreenConnect RMMsIOC list corroboration, description of the evasion tool2026-10-12
3Cryptika: Microsoft Power BI Phishing Campaign Deploys Rogue ScreenConnect RMMsMSI installer, first-client removal, client instance IDs, filename list2026-10-12
n/aIT Security Guru: Power BI phishing campaign drops rogue ScreenConnect clientsNot retrieved (HTTP 403). Listed for completeness. Nothing in this pack is attributed to it2026-10-12
refMITRE ATT&CKTechnique IDs in section 6 and mitigation M-numbers in section 122026-10-12
refMicrosoft Learn: Attack surface reduction rules referenceConfirm ASR rule GUIDs before deployment2026-10-12

Provenance statement. Every domain, hash, instance ID, filename and task name in this pack is reproduced from the saved source snapshots. The ScreenConnect install-folder naming used by Q2, the Windows event IDs in section 7 and the ASR rule GUIDs come from general product and Microsoft documentation knowledge, not from the campaign sources, and are marked to validate in your tenant. Indicators from other ScreenConnect or RMM-abuse campaigns are deliberately excluded.