SMOKE#SCREEN — Fake Adobe and Zoom Updates Installing ScreenConnect RMM

A multi-wave, multi-lure campaign that ends with a genuine ConnectWise-signed ScreenConnect agent beaconing to one of three attacker relays. Windows and macOS.
Threat
SMOKE#SCREEN
Severity
ACTIVE
Type
RMM abuse, remote access
Initial Access
Spearphishing link (T1566.002)
Version
v0.1 · 2026-08-05
Author
HuntPack
Confidence
High (single-vendor primary)
01

Executive Summary

The payload is not malware. It is a real, correctly signed ScreenConnect client, and that is the whole point. SMOKE#SCREEN is an active multi-wave campaign disclosed by Securonix Threat Research on 2026-08-04. The operators rotate social-engineering lures across four themes, fake Zoom updates, fake Adobe updates, business document reviews, and system maintenance utilities, and every path ends the same way: a legitimate ConnectWise ScreenConnect MSI, signed with a valid DigiCert-chained Authenticode certificate, silently installed and beaconing to an attacker-controlled relay.

The investigation began from a single VBScript dropper and led to a live WsgiDAV staging server at 207.174.0.143:8080 that was exposing an open directory listing of 15 payload files. The same host doubles as the primary ScreenConnect relay on port 8041, so one machine both delivers the payload and holds command and control over already-compromised endpoints. Two further relay clusters were identified, each with its own RSA key pair, which is deliberate compartmentalisation rather than sloppiness: burning one relay leaves the other two running.

The toolkit spans several runtimes. An XOR-encrypted VBScript dropper with a flattened state machine and sandbox checks represents the actor at their most cautious. A plain 23-line VBScript creates every process through the WMI Win32_Process class with ShowWindow = 0 to avoid the commonly-flagged WScript.Shell path. A batch file named SystemCheck escalates through UAC, patches AMSI in memory, tears down SmartScreen through the registry, adds Defender exclusions, strips the Mark-of-the-Web with Unlock-File, then installs silently. Compiled .NET loaders built from MemoryLoader.cs run a nine-step Defender destruction sequence that completes within 15 seconds, including Add-MpPreference -ExclusionPath 'C:\', which blinds Defender to the entire filesystem permanently until an administrator reverses it by hand.

The tradecraft arc is the most useful thing in this report for a defender. The actor's newest loader, loader.cs, removed the Defender destruction sequence entirely and replaced it with a deliberate 180-second sleep between MSI installation and service start, carrying the source comment // WAIT 3 MINUTES (Breaks Elastic correlation). That is direct evidence of adversary testing against a named commercial EDR, and it tells you two things: the behavioural Defender-tampering detections were working, and correlation windows shorter than a few minutes are now explicitly targeted. Any detection in your estate that joins an installer to its resulting service inside a 60-second window will miss the current build.

The campaign is cross-platform. A macOS package, ZoomUpdateInstaller.pkg, connects to the same primary relay as the Windows MSIs. Securonix did not identify how the Mac installer was distributed and reported no confirmed macOS infections, so the macOS branch ships here as a hunt, not as an incident indicator.

Defender priority: hash and domain blocking will not carry you here. The actor rotates payload hashes between download sessions, and the final binary is a legitimate signed vendor product that many EDR configurations deliberately scrutinise less. Build the detection around unauthorised instance signals instead: a ScreenConnect client talking to a raw IP rather than a ConnectWise relay domain, a ScreenConnect service appearing on a host outside your sanctioned RMM inventory, and msiexec /qn whose parent is a script host or a browser. Sections 8 and 9 are built on exactly those three.

02

Source Review & Web Hunter Notes

Four sources were fetched and snapshotted verbatim into this pack's source directory. Every atomic indicator shipped in section 10 traces mechanically back to one of those snapshots before publication.

TierSourceKey findingCarry forward
T1Securonix Threat Research, Analyzing SMOKE#SCREEN (Sangwan, Gaikwad, Beardslee)Primary research. The complete kill-chain set, the three relay clusters with ports and payload mapping, all 20 sample hashes, the staging-server inventory, the XOR key and state-machine detail, the Defender destruction sequence, the anti-EDR sleep comment, and the macOS package.Yes
T2The Hacker NewsIndependent write-up of the same Securonix research. Corroborates the staging server, the sandbox process blacklist, the three relay clusters, the Dropbox and Cloudflare Quick Tunnel delivery, and the AMSI, UAC, SmartScreen and Mark-of-the-Web sequence.Yes
T2Security AffairsCorroborates the staging and relay addresses, the file inventory, the 180-second anti-correlation delay, and the detection guidance around Defender tampering and silent MSI installs.Yes
T3AppleInsidermacOS branch. Confirms the ZoomUpdateInstaller.pkg package, the shared infrastructure link, the 15-payload staging server, the three relay clusters with distinct RSA key pairs, and that no Mac distribution method or confirmed Mac infection was identified.Partial

Decisions taken during research

  • Dark Reading was dropped from the citation set. The article was reachable in search results but the page itself returned an empty body to automated retrieval. Nothing was cited from it, and no snapshot was kept, because a source that cannot be snapshotted cannot back an indicator.
  • Two unrelated campaigns were excluded from The Hacker News article. That page carries a second story, a Bitdefender report on fake Xeno Roblox cheat installers delivering the Powercat Java stealer, with its own separate C2 domain. Automated summarisation merged the two. Those indicators belong to a different campaign and appear nowhere in the Securonix primary, so none of them ship here.
  • Cloudflare edge addresses were not shipped. The primary report notes that the Quick Tunnel hostname resolved to Cloudflare IPs during analysis. Those are shared CDN front-ends serving a large share of the public internet, not actor infrastructure.
  • Dropbox was not shipped as a domain indicator. The Zoom phishing page delivers its payload through a Dropbox shared link. Blocking dropbox.com to catch this campaign is not a proportionate control. The specific shared-link path fragment is recorded in section 4 as a proxy-log hunt string instead.
  • Filenames ship as hunt logic, not as blocklist rows. Several payload names are randomised per build (BuYUEVqG.msi, JqbMljCi.msi, NYbiLtvO.exe, zFbJVuiX.exe, lirMkvpf.exe) and the report states explicitly that the actor rotates payload hashes between download sessions. Their hashes ship; the names drive the shape-matching in Q13 rather than an exact-name block.
  • No sanctioned-instance identifier was invented. The primary report documents the ScreenConnect URL parameters e=Access&y=Guest but publishes no attacker instance ID string. Every tuning line that needs your own approved ScreenConnect instance carries a labelled REPLACE_WITH_ placeholder rather than a fabricated value.
  • Nothing ships at prevent or critical severity. All public reporting on this campaign traces to a single vendor investigation. The Hacker News, Security Affairs and AppleInsider are derivative coverage of the Securonix research, not independent telemetry, so the two-independent-source bar for a blocking action is not met.
  • No prompt-injection attempt was found in any fetched page. No source contained text directing an agent to run a command, fetch a further URL, skip a step, or claiming authorisation.

Relationship to the existing library. The HuntPack library already contains ScreenConnect-AsyncRAT-SEO-Hunt.html, covering an SEO-poisoning campaign that delivers ScreenConnect alongside AsyncRAT. The two share tooling and nothing else: different delivery, different infrastructure, different loader artefacts, no macOS branch. This pack deliberately does not restate generic ScreenConnect coverage and focuses on the SMOKE#SCREEN lure chain, its own staging and relay estate, the VBScript, batch and .NET loader artefacts, and the macOS package.

03

Hunt Brief & Attack Chain

Attack chain

#StepTelemetryHunt angle
1Spearphishing link delivers a lure themed on a Zoom update, an Adobe update, a business document, or a system maintenance check. One path is a polished HTML page impersonating a Zoom update notice that auto-starts its download after two seconds without a click.Mail gateway, proxy, DnsRequestQ5. Also proxy hunts in section 7.
2Victim runs the initial-access file: an obfuscated VBScript dropper, a plain WMI-based VBScript, a batch file, or a compiled .NET executable named to impersonate an updater.ProcessRollup2Q12, Q13
3Anti-analysis gate. The obfuscated dropper aborts if physical memory is under 2 GB or if any of wireshark.exe, procmon.exe, vboxservice.exe, vmtoolsd.exe, xenservice.exe or fiddler.exe is running.ProcessRollup2Behavioural only. Noted in section 15 as a gap.
4Security teardown. Depending on build: AMSI patched in memory, UAC re-launch for elevation, SmartScreen registry keys modified with Explorer restarted, Defender exclusions added, WinDefend stopped and disabled, and C:\ added as an exclusion path.ProcessRollup2, RegGenericValueUpdateQ8, Q9, Q10
5Payload fetch from the WsgiDAV staging server on tcp/8080, from a Cloudflare Quick Tunnel, or from a Dropbox shared link. The download uses a Mozilla user-agent to look like browser traffic, and all download logic sits in empty try/catch blocks so failures are silent.NetworkConnectIP4, DnsRequestQ4, Q5, Q6, Q7
6Mark-of-the-Web strip. The Zone.Identifier alternate data stream is removed from the downloaded MSI with Unlock-File before execution.ProcessRollup2Q11
7Silent install. A legitimate ConnectWise-signed ScreenConnect MSI is installed with /qn, often under a masquerade filename such as WindowsExplorerSupport.msi, then deleted from disk.ProcessRollup2Q3, Q13
8Newest builds sleep 180 seconds between install and service start specifically to break EDR correlation windows.ProcessRollup2, CreateServiceQ14
9ScreenConnect service is created and the client connects to its configured relay with e=Access&y=Guest, presenting as a guest access session.CreateService, NetworkConnectIP4Q1, Q2, Q16
10Operator opens a full remote desktop session that is indistinguishable from legitimate IT management activity.NetworkConnectIP4, UserLogonQ1. Detection depends on the relay being unrecognised.
11macOS branch. ZoomUpdateInstaller.pkg installs a ScreenConnect client that connects to the same primary relay.ProcessRollup2 (macOS)Q15

Hunt hypotheses

#HypothesisTechniqueConfidence
H1A ScreenConnect client process on an endpoint is connecting to an IP address or hostname that is not a recognised ConnectWise relay, which means the instance was not provisioned by your IT organisation.T1219High
H2A ScreenConnect service has been created on a host that is not in the sanctioned RMM inventory, or carries an instance identifier that does not match the approved instance.T1543, T1219High
H3msiexec.exe has run with a silent-install flag under a parent that is a script host, a browser, or an update-impersonating executable, rather than under a software-deployment agent.T1218.007High
H4An endpoint contacted the campaign's staging or relay infrastructure directly.T1071.001, T1219High
H5A process ran the Defender destruction sequence, stopping and disabling WinDefend or adding a drive-root exclusion.T1562.001High
H6A script host or browser fetched a payload over tcp/8080 or through a Cloudflare Quick Tunnel, which is the WebDAV staging pattern this actor uses.T1105, T1102Medium
H7AMSI was patched in memory, SmartScreen was disabled through the registry, or the Mark-of-the-Web was stripped from a downloaded installer.T1562.001, T1553.005Medium
H8A ScreenConnect service started several minutes after an MSI install on the same host, a gap wide enough to defeat short EDR correlation windows.T1543, T1497Medium
H9A macOS endpoint installed a package impersonating a Zoom update and now runs a ScreenConnect client.T1204.002, T1219Medium
04

Consolidated IOC Table

Every value below appears verbatim in a saved source snapshot. Severity reflects the single-vendor sourcing described in section 2, so no row is rated for a blocking action.

Infrastructure

TypeValueRoleConfAction
IPv4207.174.0.143WsgiDAV staging server on tcp/8080 and primary ScreenConnect relay on tcp/8041. Dual purpose: payload delivery and C2.HighDetect
IPv4142.202.191.225Secondary ScreenConnect relay on tcp/8041 and tcp/80. Port 80 is a deliberate fallback to bypass egress rules that block non-standard ports.HighDetect
IPv4207.189.11.170Former C# payload hosting, used by the earliest VBScript sample to serve working_payload.cs. Reported offline.MediumDetect
Domainblog.derrspecial-onlinedmin.liveTertiary ScreenConnect relay on tcp/8041. Named to blend in as an administrative portal.HighDetect
Domainsubscription-magnetic-recommended-meat.trycloudflare.comCloudflare Quick Tunnel used for MSI delivery by the compiled .NET loader. Ephemeral by design.MediumDetect
Domaincrestmarkhq.comFormer MSI hosting behind the Cloudflare proxy, used by the second VBScript sample. Reported offline.MediumDetect
URL pathdropbox.com/scl/fi/a0hp9g4w2ddkb3ggnkivx/Dropbox shared-link path hosting Zoomupdateinstaller.msi. Proxy-log hunt string only. The Dropbox domain itself is not an indicator.MediumHunt
URL path/Bin/Shared URL path convention across multiple samples on the staging server. Weak alone, useful when joined to tcp/8080.LowHunt

Sample hashes (SHA-256)

FileSHA-256Role
zoom-update.vbs9161a8f7f07741db06b9f9a87b6ec7f277faf2ae3a3a661d6eb09cec4e12b920XOR-encrypted VBScript dropper with state machine and sandbox checks
RSKAdvGrpSupportingdocuments.vbs35be1b070f06eb313c3cb818c74aa0a9c2d9f39a05621dac4de6cff6067a5d12Plain WMI-based VBScript dropper, business-document lure
SystemCheck31260c37cc442719ac84540f4159dd9d4738575d2ab05e92c751a9b4b5f9b91bSecurity-killing batch file, delivered inside a gzip archive
MemoryLoader.cs371166ebd83e8318b49ba71321396524fbca7dc42fe1ca4badda8af794bf5a59C# loader source, nine-step Defender destruction
loader.cs63c46b3c090a4b1efef146f2f1efc4f93d44f21db21d7825f43e02c3c5c89de6Successor loader source, anti-EDR 180-second sleep
zoom-update.html873011c181d00709fdf66f32bb3cca0c5ff3147d00ef818fef72987a6773ea66Zoom update phishing page, auto-download after two seconds
index.html2423decbfcf820f41bc356547e4e18e61d60c9829421d7121c374dcef88577f7Adobe Flash Player phishing page
AdobeReader_Update.exe433b61c29aefaa5b55fe78063e6ad8597d3835f36e1242d5402ab23e6dc61194Compiled loader, Adobe updater masquerade
NYbiLtvO.exec8695906dcefc64becb3123fa0a8058278c8c2f9c86130956b6b10d49c1a35dcCompiled loader, earlier build without console-hiding code
SystemCheck.exe60c730addd2a15e4213a1d37f55186686976de73a106317b5a258fe0121cfd5cCompiled loader, primary relay
Document-Viewer.exedc8b056dd6eb75df21e9721ac2e340f91bb5e94d5a6ff412d7d0c7539e0f06e2Compiled loader, tertiary relay
zFbJVuiX.exe9d9f3fa5aaf6bc91091873bd7ee04f0cc23e8709e4ad20c61d2779ff1a43c4b4Compiled loader.cs, also seen renamed to Zoomupdateinstaller.exe. 50 MB
BuYUEVqG.msi8e87a734daddd95322b3f18f71eb9275219e244aac4f62b8dc6da6e2e91525e9ScreenConnect MSI, primary relay
Zoomupdateinstaller.msidd23012b4dc29cf7901185ae4fb2d507e737e9ea4d467846eafd6a86b26486bfScreenConnect MSI, Zoom lure
Document-review.msi3cd9b7d583442963261f9985128042bf45d25482efcbf903c9248837cb0d744bScreenConnect MSI, secondary relay
DocumentReview.msi01e4cb3c60fa50b2927daa11f25a3c412549680406fc121a3d1870a9a33f5d38ScreenConnect MSI, secondary relay
ZoomUpdateInstaller.pkgaa84e2ac68f7fc18f4927b89be7b4a7739f2eaf099e489aa0f65c1d3913ce62amacOS package, primary relay
Zoomupdateinstaller.pkg639430a33c0ecdf5a134501788a3a40f065ae4232efc66e1b82eca2b355e0606macOS package, second variant
cloudflared.exe5253e66f1f493c4e13539749f1aa86fd0c61e3072900fec29a44ba046a6d97e2Cloudflare tunnel binary found on the staging server
system.configaefac65c42c0c72ed3e08b32774fa1b902f4fd1d53de189d50f38130cc357764Configuration artefact from the staging server

Behavioural signatures (no atomic value, hunt these instead)

  • XOR key gc1HXjFtHBbC659t, a 16-byte key used by the obfuscated VBScript dropper. Useful for retro-hunting sample repositories, not for endpoint telemetry.
  • State sequence 185, 626, 616, 518, 442, 509, 821 in the flattened VBScript execution path.
  • Sandbox process blacklist: wireshark.exe, procmon.exe, vboxservice.exe, vmtoolsd.exe, xenservice.exe, fiddler.exe, plus an abort if physical memory is under 2 GB.
  • Masquerade filename WindowsExplorerSupport.msi used locally in TEMP while the actual download target was SystemCheck.msi.
  • ScreenConnect session parameters e=Access&y=Guest, the default ConnectWise guest-access configuration.
  • Loader source comment // WAIT 3 MINUTES (Breaks Elastic correlation) with a 180000 ms sleep.
  • MSI component set: Client.dll, ClientService.dll, Core.dll, WindowsClient.exe, WindowsCredentialProvider.dll, all signed to Connectwise, LLC through the DigiCert chain.
  • In-memory compilation via Add-Type -Language CSharp followed by invocation of a HelloWorld.Program entry point, which is deliberate misdirection.
05

Affected Surface & Telemetry Matrix

SurfaceExposureRequired telemetryPriorityGap risk
Windows endpoints with an interactive userPrimary target. All five reconstructed kill chains end here.ProcessRollup2, SyntheticProcessRollup2, CreateService, NetworkConnectIP4, RegGenericValueUpdateCriticalLow. Standard Falcon sensor coverage.
macOS endpointsConfirmed package tied to shared infrastructure. No distribution method or confirmed infection reported.ProcessRollup2, NetworkConnectIP4MediumMedium. Service and registry events do not exist on macOS, so the Windows queries do not port.
Microsoft Defender estateDirectly targeted for destruction by the MemoryLoader.cs build. Exclusion of C:\ is permanent until reversed.ProcessRollup2, Defender operational logCriticalLow, provided command lines are captured.
Egress / web proxyPayload staging over tcp/8080, Cloudflare Quick Tunnels, Dropbox shared links.Proxy logs, DnsRequest, NetworkConnectIP4HighMedium. Non-standard ports are often unlogged by the proxy and only visible on the firewall.
Sanctioned RMM estateThe detection depends entirely on knowing which ScreenConnect instances are yours.InstalledApplication, CreateService, asset inventoryCriticalHigh. Without an RMM inventory, every query in section 8 that keys on unsanctioned instances is unusable.
Mail gatewayAssessed initial access vector is spearphishing with a link.Mail gateway logs, URL rewriting telemetryHighMedium. No sender addresses or subject lines were published.
WebDAV / search-ms handlingThe staging server is a WsgiDAV instance, so WebDAV client activity to an external host is directly relevant.ProcessRollup2, NetworkConnectIP4MediumMedium. WebDAV redirector activity is not always attributable to the initiating process.
06

ATT&CK Mapping

Techniques as published in the primary report, with the query that covers each.

TacticTechniqueObserved behaviourCoverage
Initial AccessT1566.002 Phishing: Spearphishing LinkRotating lures across Zoom, Adobe, business document and system maintenance themes.Q5, section 7
ExecutionT1204.002 User Execution: Malicious FileVictim runs the VBScript, batch file, EXE or macOS package.Q12, Q13, Q15
ExecutionT1047 Windows Management InstrumentationThe second VBScript creates every process through Win32_Process with ShowWindow = 0.Q12
ExecutionT1059.005 VBScriptTwo distinct VBScript droppers.Q12
ExecutionT1059.003 Windows Command ShellSystemCheck batch loader.Q8, Q9, Q10
ExecutionT1059.001 PowerShellDecrypted PowerShell command, in-memory C# compilation via Add-Type, hidden PowerShell for each Defender step.Q8, Q9, Q11
Defense EvasionT1027 Obfuscated Files or InformationHex-encoded XOR cipher, flattened state machine, junk arithmetic that alters the byte signature between builds.Behavioural only
Defense EvasionT1497.001 Sandbox Evasion: System ChecksMemory floor of 2 GB and a six-entry analysis-process blacklist.Gap
Defense EvasionT1562.001 Impair Defenses: Disable or Modify ToolsAMSI patched in memory, WinDefend stopped and disabled, C:\ added as an exclusion path, SmartScreen registry teardown.Q8, Q9, Q10
Defense EvasionT1564.003 Hide Artifacts: Hidden WindowobjShell.Run payload, 0, False, ShowWindow = 0, and P/Invoke console hiding in the compiled loader.Q12
Defense EvasionT1553.005 Mark-of-the-Web BypassZone.Identifier alternate data stream stripped with Unlock-File before install.Q11
Defense EvasionT1548.002 Bypass User Account ControlElevation re-launch through shell.CreateObject("shell.application").Q9
Defense EvasionT1070.004 Indicator Removal: File DeletionInstaller deleted from disk after execution.Q13
Defense EvasionT1036 MasqueradingAdobeReader_Update.exe, WindowsExplorerSupport.msi, SystemCheck, and a HelloWorld namespace as misdirection.Q3, Q13
Defense EvasionT1218.007 System Binary Proxy Execution: MsiexecSilent MSI install of the signed ScreenConnect package.Q3
Defense EvasionT1550 Use Alternate Authentication MaterialValid ConnectWise Authenticode signature reduces EDR scrutiny of the final payload.Q1, Q2, Q16
Command and ControlT1219 Remote Access SoftwareScreenConnect agent beaconing to one of three relays with e=Access&y=Guest.Q1, Q2, Q4, Q16
Command and ControlT1071.001 Application Layer Protocol: Web ProtocolsRelay fallback to tcp/80, Mozilla user-agent on payload downloads.Q4, Q6
Command and ControlT1102 Web ServiceCloudflare Quick Tunnel and Dropbox shared links as delivery channels.Q5, Q6
PersistenceT1543 Create or Modify System ProcessScreenConnect client service installed and started.Q2, Q14
07

Native Audit-Log Hunts

Checks that do not need Falcon telemetry. Run these in parallel with section 8, because several of them cover steps the endpoint sensor cannot see.

Build the RMM inventory first

This is the prerequisite for half the pack. Every unsanctioned-instance query depends on you knowing which ScreenConnect relays and instance identifiers are legitimately yours. Record the answer before running section 8, or the results are unreadable.

# Windows, per host. Enumerate installed ScreenConnect / ConnectWise services
# and the relay each one is configured to reach.
Get-CimInstance Win32_Service |
  Where-Object { $_.Name -match 'ScreenConnect|ConnectWise' } |
  Select-Object Name, DisplayName, PathName, StartMode, State |
  Format-List

# The relay host is embedded in the service image path and in the client
# configuration. Record every distinct value you find across the fleet.

Web proxy and firewall

  • Search proxy logs for the Dropbox shared-link path fragment scl/fi/a0hp9g4w2ddkb3ggnkivx. Dropbox itself is allow-listed in most estates, so the path is the only discriminator.
  • Search for any request to a trycloudflare.com subdomain. Quick Tunnels are ephemeral and have almost no legitimate enterprise use. If your developers do use them, enumerate the sanctioned hostnames and alert on everything else.
  • Firewall: alert on outbound tcp/8041 to any destination. That is the ScreenConnect relay port and it should only ever reach your own approved relay.
  • Firewall: review outbound tcp/8080 from workstations. The staging server runs there, and workstation-initiated 8080 to an external IP is rarely business traffic.

Mail gateway

  • Retro-hunt for messages carrying links to the three infrastructure addresses in section 4, and for attachments with a .vbs or .gzip extension delivered to end users.
  • Search for lure subject patterns around Zoom updates, Adobe updates, document review requests and system maintenance notices in the period since disclosure. No sender addresses or subject lines were published, so this is a shape hunt rather than an exact match.

Microsoft Defender operational log

  • Event ID 5007 records exclusion changes. Any exclusion whose path is a drive root is an incident, not a finding.
  • Event ID 5001 records real-time protection being disabled.
  • Service Control Manager event ID 7040 records WinDefend start-type changes to Disabled.
  • Compare the current exclusion list against your baseline on every host that returned a hit in Q8.

macOS

# Installed package receipts. A Zoom-themed receipt from an unknown authority
# is the macOS branch of this campaign.
pkgutil --pkgs | grep -i -E 'zoom|screenconnect|connectwise'

# Inspect any hit, then list what it wrote to disk.
pkgutil --pkg-info REPLACE_WITH_PACKAGE_ID
pkgutil --files   REPLACE_WITH_PACKAGE_ID

# Launch items pointing at a ScreenConnect client.
ls -la /Library/LaunchAgents /Library/LaunchDaemons ~/Library/LaunchAgents 2>/dev/null
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first. Every "Open in Falcon" button below uses this selection.

Time windows are set in the console, not in the query. None of these queries carry an in-query timeframe filter. Set the range in the Falcon search bar. A suggested starting window is noted on each card.

Three queries need your own values before they will work. Q1, Q2 and Q16 compare against your sanctioned ScreenConnect estate, and no public source can supply that. Each carries a labelled REPLACE_WITH_ placeholder. Fill it from the inventory you build in section 7, or the query will return your legitimate RMM alongside the campaign's.

Q1 · ScreenConnect relay-port egress to a host that is not your relay
CONF HIGHFP LOWCOST LOW

Looks for: outbound traffic on the ScreenConnect relay port. All three SMOKE#SCREEN clusters listen on tcp/8041, and the secondary cluster adds tcp/80 as a firewall-evasion fallback. In an estate with one sanctioned relay this query should return exactly one destination. Every other row is an unsanctioned instance. This is the single highest-value query in the pack because it does not care which lure, which loader, or which payload hash was used. FP: your own relay, if reached by IP. Suggested window: 14 days.

// HUNT: ScreenConnect relay-port egress to an unapproved destination
// MITRE: T1219, T1550 | CONF: high  FP: low  COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: your own sanctioned ScreenConnect relay reached by IP address
// TUNING: put your approved relay address in the exclusion below before scheduling.
// TUNING: if you have no ScreenConnect deployment at all, delete the exclusion line
// TUNING: entirely and treat every row as an incident.
#event_simpleName=/^NetworkConnectIP4$/
| RemotePort=/^(8040|8041)$/
| RemoteAddressIP4!=/^REPLACE_WITH_SANCTIONED_RELAY_IP$/
| groupBy([ComputerName, RemoteAddressIP4, RemotePort],
    function=[
      count(as=Connections),
      min(@timestamp, as=FirstSeen),
      max(@timestamp, as=LastSeen),
      collect([ContextBaseFileName, UserName], limit=10)
    ], limit=20000)
| sort(FirstSeen, order=desc, limit=500)
Q2 · ScreenConnect service created outside the sanctioned instance
CONF HIGHFP MEDCOST LOW

Looks for: the moment a ScreenConnect client service is installed. ConnectWise embeds the instance identifier in the service name and display name, so a service whose identifier is not yours is a foreign instance regardless of how legitimately it is signed. The image path also carries the configured relay, which gives you the destination without waiting for the first beacon. FP: your own RMM rollouts and re-installs. Suggested window: 30 days.

// HUNT: ScreenConnect / ConnectWise service creation, foreign instance identifiers
// MITRE: T1543, T1219 | CONF: high  FP: medium  COST: low
// REQUIRES: CreateService
// FALSE POSITIVES: sanctioned RMM deployment, agent upgrades and repairs
// TUNING: exclude your approved instance identifier, which appears inside both the
// TUNING: service name and the display name, e.g.
// TUNING: | ServiceName!=/REPLACE_WITH_APPROVED_INSTANCE_ID/i
// TUNING: then also exclude your software-deployment service account from UserName.
#event_simpleName=/^CreateService$/
| ServiceDisplayName=/(screenconnect|connectwise)/i
| ServiceName!=/REPLACE_WITH_APPROVED_INSTANCE_ID/i
| table([@timestamp, ComputerName, UserName, ServiceName, ServiceDisplayName, ServiceImagePath], limit=2000)
Q3 · Silent MSI install launched by a script host or browser
CONF HIGHFP MEDCOST LOW

Looks for: msiexec.exe running with a silent-install flag under a parent that has no business installing software. Every SMOKE#SCREEN kill chain passes through this step, and it is the one place where the campaign's use of a legitimate signed MSI stops helping the attacker: the package may be trusted, but wscript.exe or a browser launching a quiet install is not. This is also the strongest Custom IOA candidate in the pack. FP: software-deployment tooling that shells out through cmd or PowerShell. Suggested window: 14 days.

// HUNT: msiexec silent install with a script-host, browser or masquerading parent
// MITRE: T1218.007, T1036 | CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: SCCM, Intune, Chocolatey, PDQ and other deployment agents that
// FALSE POSITIVES: wrap msiexec in cmd.exe or powershell.exe
// TUNING: exclude your deployment agent by grandparent, not by parent, e.g.
// TUNING: | GrandparentBaseFileName!=/^(ccmexec|intunemanagementextension|pdqdeploy)(\.exe)?$/i
// TUNING: and exclude the deployment service account from UserName.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^msiexec(\.exe)?$/i
| CommandLine=/[\-\/](qn|quiet|qb)/i
| ParentBaseFileName=/^(wscript|cscript|powershell|pwsh|cmd|mshta|rundll32|wmiprvse|chrome|msedge|firefox|iexplore|explorer|adobereader_update|systemcheck|document-viewer|zoomupdateinstaller)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, GrandparentBaseFileName, FileName, CommandLine], limit=2000)
Q4 · Contact with SMOKE#SCREEN staging and relay infrastructure
CONF HIGHFP LOWCOST LOW

Looks for: direct network contact with the three published addresses. 207.174.0.143 is both the WsgiDAV payload server on tcp/8080 and the primary relay on tcp/8041, so a hit there tells you which side of the intrusion you are seeing from the port alone. 142.202.191.225 is the secondary relay including its tcp/80 fallback. 207.189.11.170 is reported offline and a hit there means an old sample is still executing. FP: essentially none. Suggested window: 90 days, or as far back as retention allows.

// HUNT: endpoint contact with published SMOKE#SCREEN infrastructure
// MITRE: T1071.001, T1219, T1105 | CONF: high  FP: low  COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: none expected; treat every row as an investigation
// NOTE: port 8080 on the first address is payload staging, 8041 is the relay.
#event_simpleName=/^NetworkConnectIP4$/
| RemoteAddressIP4=/^(207\.174\.0\.143|142\.202\.191\.225|207\.189\.11\.170)$/
| groupBy([ComputerName, RemoteAddressIP4, RemotePort],
    function=[
      count(as=Connections),
      min(@timestamp, as=FirstSeen),
      max(@timestamp, as=LastSeen),
      collect([ContextBaseFileName, UserName], limit=10)
    ], limit=20000)
| sort(FirstSeen, order=desc, limit=500)
Q5 · DNS for campaign domains and Cloudflare Quick Tunnels
CONF HIGHFP MEDCOST LOW

Looks for: the tertiary relay domain, the specific Quick Tunnel hostname the .NET loader referenced, the retired Cloudflare-proxied MSI host, and as a wider net, any trycloudflare.com subdomain. That last clause is the durable part: Quick Tunnels are free, ephemeral and rotate constantly, so the specific hostname will die long before the technique does. FP: developers legitimately use Quick Tunnels to expose local services. Suggested window: 30 days.

// HUNT: DNS resolution of SMOKE#SCREEN domains and any Cloudflare Quick Tunnel
// MITRE: T1071.001, T1102 | CONF: high  FP: medium  COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: developers exposing local services through trycloudflare.com
// TUNING: the three named domains are unambiguous. If the generic Quick Tunnel
// TUNING: clause is noisy, split it into its own scheduled search scoped to
// TUNING: non-engineering OUs, or allow-list your known tunnel hostnames rather
// TUNING: than dropping the clause, since it is the part that survives rotation.
#event_simpleName=/^DnsRequest$/
| DomainName=/(^blog\.derrspecial-onlinedmin\.live$|^subscription-magnetic-recommended-meat\.trycloudflare\.com$|^crestmarkhq\.com$|\.trycloudflare\.com$)/i
| groupBy([ComputerName, DomainName],
    function=[
      count(as=Lookups),
      min(@timestamp, as=FirstSeen),
      max(@timestamp, as=LastSeen),
      collect([ContextBaseFileName, UserName], limit=10)
    ], limit=20000)
| sort(FirstSeen, order=desc, limit=500)
Q6 · Script host or download utility fetching over tcp/8080
CONF MEDFP MEDCOST LOW

Looks for: the WsgiDAV staging pattern after the IP rotates. The actor's staging server ran on tcp/8080 with an open directory listing, and the fetch was performed by a script host or an in-memory PowerShell cradle using a Mozilla user-agent to look like a browser. A workstation script interpreter reaching an external host on 8080 is the durable shape. cloudflared.exe is included because the actor runs it on their own infrastructure and its presence on a workstation is worth a look either way. FP: internal application servers and build agents on 8080. Suggested window: 14 days.

// HUNT: script host or download utility reaching an external host on tcp/8080
// MITRE: T1105, T1102 | CONF: medium  FP: medium  COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: internal app servers, proxies, build agents and test harnesses
// FALSE POSITIVES: that legitimately listen on 8080
// TUNING: exclude RFC1918 destinations first, which removes almost all the noise:
// TUNING: | RemoteAddressIP4!=/^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.)/
// TUNING: then allow-list any external SaaS your estate genuinely reaches on 8080.
#event_simpleName=/^NetworkConnectIP4$/
| RemotePort=/^8080$/
| RemoteAddressIP4!=/^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|127\.)/
| ContextBaseFileName=/^(wscript|cscript|powershell|pwsh|cmd|mshta|rundll32|curl|certutil|bitsadmin|cloudflared|regsvr32)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort], limit=2000)
Q7 · WebDAV and search-ms delivery surface
CONF MEDFP MEDCOST LOW

Looks for: the WebDAV delivery surface that a WsgiDAV staging server exposes. WsgiDAV is a WebDAV implementation, which means the same host can be mounted as a remote share and browsed by Explorer, and can be reached through a search-ms: saved-search URI that renders attacker files inside a native Windows search window. This query hunts the command-line artefacts of that path: search-ms: URIs, the DavWWWRoot redirector token, and UNC paths carrying an explicit port. FP: estates that genuinely use WebDAV shares. Suggested window: 30 days.

// HUNT: search-ms URI and WebDAV redirector artefacts in a command line
// MITRE: T1105, T1566.002, T1204.002 | CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: organisations that use WebDAV shares or SharePoint mapped drives
// FALSE POSITIVES: legitimately; Explorer saved searches also emit search-ms URIs
// TUNING: exclude your own WebDAV and SharePoint hostnames from CommandLine, then
// TUNING: keep only rows where the UNC host is an IP literal rather than a name,
// TUNING: which is what the SMOKE#SCREEN staging server presented as.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(search\-ms:|DavWWWRoot|@8080|@SSL|WebClient)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=2000)
Q8 · Defender destruction sequence
CONF HIGHFP LOWCOST LOW

Looks for: the nine-step Defender teardown that MemoryLoader.cs and its compiled variants execute before any network activity. The report confirms the sequence completes within 15 seconds and leaves the host permanently degraded even when the payload download later fails, so a hit here matters whether or not ScreenConnect was ever installed. Adding C:\ as an exclusion path is the single most severe line: it blinds Defender to the entire filesystem. FP: almost none. A legitimate administrator never excludes a drive root. Suggested window: 90 days.

// HUNT: Defender service teardown and drive-root exclusion
// MITRE: T1562.001 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 with command-line capture
// FALSE POSITIVES: rare. Some AV migration scripts stop WinDefend legitimately;
// FALSE POSITIVES: none of them exclude a drive root.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(Stop\-Service\s+\-Name\s+WinDefend|Set\-Service\s+\-Name\s+WinDefend|Add\-MpPreference\s+\-ExclusionPath|Set\-MpPreference\s+\-DisableRealtimeMonitoring|sc\s+(stop|config)\s+WinDefend)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=2000)
Q9 · AMSI bypass, UAC re-launch and in-memory C# compilation
CONF HIGHFP MEDCOST LOW

Looks for: three evasion primitives this campaign uses together. The SystemCheck batch file patches the amsiInitFailed flag by reflection so AMSI reports initialisation failure and stops scanning for the rest of the session, then re-launches itself elevated through shell.application. Separately, the first VBScript dropper compiles a downloaded C# file entirely in memory with Add-Type -Language CSharp and invokes a deliberately misleading HelloWorld.Program entry point. FP: security research and red-team tooling. Suggested window: 30 days.

// HUNT: AMSI patching, UAC re-launch, and in-memory C# compilation
// MITRE: T1562.001, T1548.002, T1059.001 | CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 with command-line capture
// FALSE POSITIVES: internal red teams, security research hosts, and a small number
// FALSE POSITIVES: of legitimate build tools that use Add-Type -Language CSharp
// TUNING: exclude your red-team and security-research asset group by ComputerName.
// TUNING: the Add-Type clause is the softest of the three. If it is noisy in a
// TUNING: developer estate, drop only that clause and keep the AMSI terms.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(amsiInitFailed|AmsiScanBuffer|AmsiUtils|shell\.application.{0,40}runas|Add\-Type\s+\-Language\s+CSharp|HelloWorld\.Program)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=2000)
Q10 · SmartScreen dismantled through the registry
CONF HIGHFP MEDCOST LOW

Looks for: stage 3 of the SystemCheck batch loader, which disables SmartScreen through two registry locations once it holds administrative rights, then kills and restarts Explorer so the change applies immediately. Both the policy hive and the per-user Explorer Advanced key are covered. FP: hardening or kiosk-imaging scripts that intentionally manage these keys. Suggested window: 30 days.

// HUNT: SmartScreen policy and Explorer Advanced value changes
// MITRE: T1562.001 | CONF: high  FP: medium  COST: low
// REQUIRES: RegGenericValueUpdate
// FALSE POSITIVES: build images, kiosk provisioning and GPO refresh cycles that
// FALSE POSITIVES: legitimately set these values
// TUNING: exclude your imaging and GPO service accounts from UserName, and exclude
// TUNING: your golden-image build hosts by ComputerName. A change on a live user
// TUNING: workstation outside a maintenance window is the row that matters.
#event_simpleName=/^RegGenericValueUpdate$/
| RegValueName=/^(EnableSmartScreen|ShellSmartScreenLevel|SmartScreenEnabled|DisableAntiSpyware|DisableRealtimeMonitoring)$/i
| table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue], limit=2000)
Q11 · Mark-of-the-Web stripped from a downloaded installer
CONF MEDFP MEDCOST LOW

Looks for: removal of the Zone.Identifier alternate data stream immediately before installation. The batch loader uses Unlock-File on the downloaded MSI, which strips the Mark-of-the-Web so Windows treats a file fetched from the internet as if it came from local disk and suppresses the security warning. This is a short, specific step that has very little legitimate use on a user workstation. FP: developer workflows that unblock downloaded modules. Suggested window: 30 days.

// HUNT: Zone.Identifier / Mark-of-the-Web removal before execution
// MITRE: T1553.005, T1070.004 | CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 with command-line capture
// FALSE POSITIVES: developers running Unblock-File on downloaded PowerShell modules
// FALSE POSITIVES: and archive tools that clear the stream on extraction
// TUNING: keep the rows where the target is an .msi or .exe. Unblocking a .ps1 or
// TUNING: .psm1 is ordinary developer behaviour; unblocking an installer that was
// TUNING: downloaded seconds earlier is not. Exclude your developer OU.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(Unlock\-File|Unblock\-File|Zone\.Identifier)/i
| CommandLine=/\.(msi|exe|gzip|zip)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=2000)
Q12 · VBScript and WMI hidden-process launch chain
CONF MEDFP MEDCOST LOW

Looks for: both VBScript droppers at their point of execution. The first runs its decrypted PowerShell through WScript.Shell with the window-style argument set to hidden. The second deliberately avoids WScript.Shell because endpoint tools flag it, and creates every process through the WMI Win32_Process class with ShowWindow = 0 instead, which surfaces as a child of WmiPrvSE.exe. Covering both parents catches the technique regardless of which evasion the sample chose. FP: legacy VBScript automation and WMI-based management tooling. Suggested window: 14 days.

// HUNT: script host or WMI provider spawning an interpreter or installer
// MITRE: T1059.005, T1047, T1564.003 | CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: legacy VBScript logon scripts, WMI-based management platforms,
// FALSE POSITIVES: and inventory agents that spawn PowerShell through WmiPrvSE
// TUNING: exclude your management platform's grandparent process and its service
// TUNING: account. If logon scripts are noisy, restrict to the hidden-window forms
// TUNING: by adding | CommandLine=/(\-w\s+hidden|\-WindowStyle\s+Hidden|ShowWindow)/i
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ParentBaseFileName=/^(wscript|cscript|wmiprvse)(\.exe)?$/i
| FileName=/^(powershell|pwsh|cmd|msiexec|mshta|rundll32|certutil|bitsadmin|regsvr32)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=2000)
Q13 · Randomised-name executable run from a user-writable path
CONF MEDFP HIGHCOST MED

Looks for: the shape that outlives the hashes. The staging server hosted files named BuYUEVqG.msi, JqbMljCi.msi, NYbiLtvO.exe, lirMkvpf.exe and zFbJVuiX.exe: eight characters, mixed case, no dictionary word, executed out of TEMP, Public or Downloads. The report states plainly that the actor rotates payload hashes between download sessions, so name shape plus location is the more durable signal. FP: high by design. Installer bootstrappers and browser download stubs also produce random names in these directories. Treat this as a triage feed, not an alert. Suggested window: 7 days.

// HUNT: eight-character mixed-case executable launched from a user-writable path
// MITRE: T1036, T1204.002, T1070.004 | CONF: medium  FP: high  COST: medium
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: installer bootstrappers, browser update stubs, unpacked archives
// FALSE POSITIVES: and temporary compiler output all produce random names in TEMP
// TUNING: this is a triage feed, never a direct alert. Rank by fleet rarity first,
// TUNING: then join surviving hosts against Q1, Q3 and Q8. Exclude your software
// TUNING: distribution cache path and your developer build hosts by ComputerName.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ImageFileName=/\\(Users\\Public|AppData\\Local\\Temp|Downloads)\\/i
| FileName=/^[A-Za-z]{8}\.(exe|msi)$/
| groupBy([FileName, ImageFileName],
    function=[
      count(aid, distinct=true, as=DistinctHosts),
      count(as=Executions),
      collect([ComputerName, UserName, ParentBaseFileName], limit=25),
      min(@timestamp, as=FirstSeen)
    ], limit=20000)
| DistinctHosts < 5
| sort(FirstSeen, order=desc, limit=300)
Q14 · Anti-EDR delay between MSI install and ScreenConnect service start
CONF MEDFP MEDCOST MED

Looks for: the actor's newest evasion, stated outright in their own source code as // WAIT 3 MINUTES (Breaks Elastic correlation) with a 180000 ms sleep. Correlation rules that require an installer and its resulting service inside a 60-second window no longer fire. This query widens the window instead of narrowing it: group both event types by host, then keep hosts where the two are separated by more than two minutes but less than fifteen. FP: slow legitimate installs on loaded machines. Suggested window: 30 days.

// HUNT: MSI install and ScreenConnect service creation separated by minutes
// MITRE: T1543, T1497, T1218.007 | CONF: medium  FP: medium  COST: medium
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 and CreateService
// FALSE POSITIVES: genuinely slow installs on loaded hosts, and any sanctioned RMM
// FALSE POSITIVES: deployment that stages the package then starts the service later
// TUNING: exclude your approved instance identifier from ServiceDisplayName and
// TUNING: your deployment service account from UserName. Tighten the lower bound
// TUNING: toward 170 seconds to sit right on the actor's hard-coded 180s sleep.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|CreateService)$/
| CommandLine=/msiexec/i or ServiceDisplayName=/(screenconnect|connectwise)/i
| groupBy([ComputerName],
    function=[
      min(@timestamp, as=FirstEvent),
      max(@timestamp, as=LastEvent),
      count(as=Events),
      collect([FileName, ServiceName, ServiceDisplayName, ServiceImagePath, CommandLine], limit=20)
    ], limit=20000)
| GapSeconds := (LastEvent - FirstEvent) / 1000
| GapSeconds > 120
| GapSeconds < 900
| sort(FirstEvent, order=desc, limit=300)
Q15 · macOS fake Zoom update package installation
CONF HIGHFP LOWCOST LOW

Looks for: the macOS branch. Two package variants were recovered, both named to impersonate a Zoom updater, and the primary one connects to the same relay as the Windows MSIs. Securonix did not establish how the Mac installer was distributed and reported no confirmed Mac infections, so treat a hit as a strong lead rather than a confirmed intrusion. Pair this with Q1 and Q4, which are platform-agnostic and will catch the resulting macOS client the moment it beacons. FP: low. A genuine Zoom update does not arrive as a loose .pkg. Suggested window: 90 days.

// HUNT: macOS installer running an update-impersonating package
// MITRE: T1204.002, T1219 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 on macOS sensors
// FALSE POSITIVES: an administrator manually installing a genuine vendor package
// NOTE: Zoom and Adobe both ship in-app updaters. A loose .pkg named after an
// NOTE: update is the anomaly, not the delivery mechanism either vendor uses.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/\.pkg/i
| CommandLine=/(zoomupdateinstaller|zoom.{0,3}update|adobe.{0,3}reader.{0,3}update|screenconnect|connectwise)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=2000)
Q16 · Fleet-wide ScreenConnect client rarity
CONF MEDFP MEDCOST MED

Looks for: ScreenConnect client binaries grouped by their install path, ranked so rare ones surface. A sanctioned deployment lands in one consistent location across hundreds of machines. An attacker-installed instance appears on a handful of hosts, often in a different directory, and frequently under a different user context. This is the discovery query to run first if you do not yet know what your sanctioned estate looks like. FP: pilots, contractors and managed service providers legitimately introduce rare instances. Suggested window: 30 days.

// HUNT: rare ScreenConnect client install paths across the fleet
// MITRE: T1219, T1550 | CONF: medium  FP: medium  COST: medium
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: MSP tooling, contractor laptops, pilot deployments and support
// FALSE POSITIVES: sessions initiated by a vendor with a legitimate business reason
// TUNING: once you know your approved install path, exclude it outright with
// TUNING: | ImageFileName!=/REPLACE_WITH_APPROVED_INSTALL_PATH/i
// TUNING: and raise DistinctHosts above your sanctioned instance's install count.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^(screenconnect\.clientservice|screenconnect\.windowsclient|connectwisecontrol\.client|windowsclient)(\.exe)?$/i
| groupBy([FileName, ImageFileName],
    function=[
      count(aid, distinct=true, as=DistinctHosts),
      count(as=Executions),
      collect([ComputerName, UserName], limit=25),
      min(@timestamp, as=FirstSeen)
    ], limit=20000)
| DistinctHosts < 10
| sort(FirstSeen, order=desc, limit=300)
Q17 · Known SMOKE#SCREEN sample hashes
CONF HIGHFP LOWCOST LOW

Looks for: the published sample set at execution or file-write time. Run it once as a retro-hunt across full retention, then retire it. The primary report is explicit that the actor rotates payload hashes between download sessions, so this decays faster than anything else in the pack. It is included because a hit is unambiguous, not because it will keep firing. FP: none. Suggested window: maximum retention, once.

// HUNT: published SMOKE#SCREEN sample hashes, retro-hunt
// MITRE: T1204.002, T1105 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 / PeFileWritten
// FALSE POSITIVES: none. Any match is the sample itself.
// NOTE: hashes rotate between download sessions. Run once, then rely on Q1-Q3.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten)$/
| in(SHA256HashData, values=[
    "9161a8f7f07741db06b9f9a87b6ec7f277faf2ae3a3a661d6eb09cec4e12b920",
    "35be1b070f06eb313c3cb818c74aa0a9c2d9f39a05621dac4de6cff6067a5d12",
    "31260c37cc442719ac84540f4159dd9d4738575d2ab05e92c751a9b4b5f9b91b",
    "433b61c29aefaa5b55fe78063e6ad8597d3835f36e1242d5402ab23e6dc61194",
    "c8695906dcefc64becb3123fa0a8058278c8c2f9c86130956b6b10d49c1a35dc",
    "60c730addd2a15e4213a1d37f55186686976de73a106317b5a258fe0121cfd5c",
    "dc8b056dd6eb75df21e9721ac2e340f91bb5e94d5a6ff412d7d0c7539e0f06e2",
    "9d9f3fa5aaf6bc91091873bd7ee04f0cc23e8709e4ad20c61d2779ff1a43c4b4",
    "8e87a734daddd95322b3f18f71eb9275219e244aac4f62b8dc6da6e2e91525e9",
    "dd23012b4dc29cf7901185ae4fb2d507e737e9ea4d467846eafd6a86b26486bf",
    "3cd9b7d583442963261f9985128042bf45d25482efcbf903c9248837cb0d744b",
    "01e4cb3c60fa50b2927daa11f25a3c412549680406fc121a3d1870a9a33f5d38",
    "aa84e2ac68f7fc18f4927b89be7b4a7739f2eaf099e489aa0f65c1d3913ce62a",
    "639430a33c0ecdf5a134501788a3a40f065ae4232efc66e1b82eca2b355e0606",
    "5253e66f1f493c4e13539749f1aa86fd0c61e3072900fec29a44ba046a6d97e2"])
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, SHA256HashData], limit=2000)
09

CrowdStrike Custom IOA Recommendations

Three queries are strong enough to promote to a Custom IOA. The rest stay as scheduled hunts because their false-positive profile depends on estate-specific tooling that no rule can guess.

QueryIOA nameRule typeActionWhy it qualifies
Q3DETECT — Silent MSI install from script host or browserProcess CreationDetect (Monitor first)Deterministic parent-child shape. Every SMOKE#SCREEN chain passes through it, and no legitimate deployment agent launches a quiet install from wscript.exe or a browser.
Q8DETECT — Defender service teardown or drive-root exclusionProcess CreationDetectCommand-line match on an action that has no benign form. The drive-root exclusion clause alone justifies promotion. Also catches unrelated intrusions.
Q1DETECT — ScreenConnect relay egress to an unapproved hostNetwork ConnectionMonitor, then DetectHighest strategic value in the pack, but it must run in Monitor until your relay allowlist is confirmed complete. Promote after the five-day gate in section 11.

Alert package for the Q3 IOA

FieldValue
Scheduled Search nameDETECT — Silent MSI install from script host or browser (SMOKE#SCREEN)
DescriptionFires when msiexec.exe runs with a silent-install flag under a script host, browser, or an executable named to impersonate a software updater. Used by the SMOKE#SCREEN campaign to install a signed ScreenConnect RMM agent without user interaction.
Alert subject[HIGH] Detection: SMOKE#SCREEN — silent MSI install from an unexpected parent
SeverityHigh
EscalationL1 triage, escalate to IR if the resulting service is a ScreenConnect instance that is not in the sanctioned inventory.

Alert body

What fired. A silent Windows Installer execution was observed on HOST-01 with a parent process that does not normally deploy software. In the SMOKE#SCREEN campaign this step installs a genuine, correctly signed ConnectWise ScreenConnect agent, which then beacons to an attacker-controlled relay and hands the operator a full remote desktop session.

Why it matters. The installed package is legitimate signed vendor software, so signature and reputation controls will not stop it and may not even record it as suspicious. The parent process is the discriminator, not the payload.

Triage checklist

  1. Confirm the parent process and the full command line. A parent of wscript.exe, cscript.exe, mshta.exe or a browser is an immediate escalation. A parent of cmd.exe or powershell.exe needs the grandparent checked before you decide.
  2. Identify the MSI path in the command line. TEMP, Public and Downloads are all consistent with this campaign. Note the filename, then check whether it still exists on disk. The loaders delete the installer after execution.
  3. Run Q2 scoped to the host. If a ScreenConnect or ConnectWise service was created within fifteen minutes either side, you have the full chain.
  4. Run Q1 scoped to the host. Any tcp/8041 or tcp/8040 egress to an address that is not your relay confirms an active foothold.
  5. Run Q8 scoped to the host. Check whether Defender was stopped, disabled, or given a drive-root exclusion. If it was, the host is degraded independently of this alert and needs remediation regardless of the outcome.
  6. Check the Defender operational log for event 5007 and confirm the current exclusion list against your baseline.
  7. Pull the user's mail for the preceding 24 hours and look for a lure themed on a Zoom or Adobe update, a document review, or a system maintenance notice.
  8. If a foreign ScreenConnect instance is confirmed, move to section 14 and network-contain the host before removing the agent, so the operator cannot react to the uninstall.

Pivot queries

  • Host-scoped: add | ComputerName=/^HOST-01$/i to Q2, Q4 and Q8 to build the timeline on the affected machine.
  • Estate-wide: run Q16 to find every other host carrying a ScreenConnect client from the same install path.
  • Infrastructure: run Q4 and Q5 across full retention to establish whether this is a first contact or a long-running foothold.
10

Machine-Readable IOC Appendix

Twenty-six atomic indicators, each traced back to a saved source snapshot before publication. Nothing ships at prevent or critical severity, see section 2 for why. Copy each block straight into the tool it names.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
# SMOKE#SCREEN / ScreenConnect RMM abuse. Source: Securonix Threat Research, 2026-08-04.
# No row ships at prevent/critical: all public reporting traces to one vendor investigation.
# --- Staging and ScreenConnect relay infrastructure ---
ipv4,207.174.0.143,detect,high,2027-02-05,SMOKE#SCREEN WsgiDAV staging (8080) and primary ScreenConnect relay (8041),campaign:SMOKESCREEN
ipv4,142.202.191.225,detect,high,2027-02-05,SMOKE#SCREEN secondary ScreenConnect relay (8041 and 80 fallback),campaign:SMOKESCREEN
ipv4,207.189.11.170,detect,medium,2026-11-05,SMOKE#SCREEN former C# payload host (reported offline),campaign:SMOKESCREEN
domain,blog.derrspecial-onlinedmin.live,detect,high,2027-02-05,SMOKE#SCREEN tertiary ScreenConnect relay (8041),campaign:SMOKESCREEN
domain,subscription-magnetic-recommended-meat.trycloudflare.com,detect,medium,2026-11-05,SMOKE#SCREEN Cloudflare Quick Tunnel for MSI delivery (ephemeral),campaign:SMOKESCREEN
domain,crestmarkhq.com,detect,medium,2026-11-05,SMOKE#SCREEN former MSI hosting behind Cloudflare proxy,campaign:SMOKESCREEN
# --- Initial-access scripts and phishing pages ---
sha256,9161a8f7f07741db06b9f9a87b6ec7f277faf2ae3a3a661d6eb09cec4e12b920,detect,high,2027-02-05,zoom-update.vbs XOR-encrypted VBScript dropper,campaign:SMOKESCREEN
sha256,35be1b070f06eb313c3cb818c74aa0a9c2d9f39a05621dac4de6cff6067a5d12,detect,high,2027-02-05,RSKAdvGrpSupportingdocuments.vbs WMI-based dropper,campaign:SMOKESCREEN
sha256,31260c37cc442719ac84540f4159dd9d4738575d2ab05e92c751a9b4b5f9b91b,detect,high,2027-02-05,SystemCheck security-killing batch loader,campaign:SMOKESCREEN
sha256,873011c181d00709fdf66f32bb3cca0c5ff3147d00ef818fef72987a6773ea66,detect,medium,2027-02-05,zoom-update.html Zoom update phishing page,campaign:SMOKESCREEN
sha256,2423decbfcf820f41bc356547e4e18e61d60c9829421d7121c374dcef88577f7,detect,medium,2027-02-05,index.html Adobe Flash Player phishing page,campaign:SMOKESCREEN
# --- Compiled .NET loaders ---
sha256,433b61c29aefaa5b55fe78063e6ad8597d3835f36e1242d5402ab23e6dc61194,detect,high,2027-02-05,AdobeReader_Update.exe compiled loader,campaign:SMOKESCREEN
sha256,c8695906dcefc64becb3123fa0a8058278c8c2f9c86130956b6b10d49c1a35dc,detect,high,2027-02-05,NYbiLtvO.exe compiled loader (earlier build),campaign:SMOKESCREEN
sha256,60c730addd2a15e4213a1d37f55186686976de73a106317b5a258fe0121cfd5c,detect,high,2027-02-05,SystemCheck.exe compiled loader (primary relay),campaign:SMOKESCREEN
sha256,dc8b056dd6eb75df21e9721ac2e340f91bb5e94d5a6ff412d7d0c7539e0f06e2,detect,high,2027-02-05,Document-Viewer.exe compiled loader (tertiary relay),campaign:SMOKESCREEN
sha256,9d9f3fa5aaf6bc91091873bd7ee04f0cc23e8709e4ad20c61d2779ff1a43c4b4,detect,high,2027-02-05,zFbJVuiX.exe compiled loader.cs with 180s anti-EDR sleep,campaign:SMOKESCREEN
# --- ScreenConnect MSI payloads (legitimately ConnectWise-signed) ---
sha256,8e87a734daddd95322b3f18f71eb9275219e244aac4f62b8dc6da6e2e91525e9,detect,high,2027-02-05,BuYUEVqG.msi ScreenConnect payload (primary relay),campaign:SMOKESCREEN
sha256,dd23012b4dc29cf7901185ae4fb2d507e737e9ea4d467846eafd6a86b26486bf,detect,high,2027-02-05,Zoomupdateinstaller.msi ScreenConnect payload,campaign:SMOKESCREEN
sha256,3cd9b7d583442963261f9985128042bf45d25482efcbf903c9248837cb0d744b,detect,high,2027-02-05,Document-review.msi ScreenConnect payload (secondary relay),campaign:SMOKESCREEN
sha256,01e4cb3c60fa50b2927daa11f25a3c412549680406fc121a3d1870a9a33f5d38,detect,high,2027-02-05,DocumentReview.msi ScreenConnect payload (secondary relay),campaign:SMOKESCREEN
# --- macOS branch ---
sha256,aa84e2ac68f7fc18f4927b89be7b4a7739f2eaf099e489aa0f65c1d3913ce62a,detect,high,2027-02-05,ZoomUpdateInstaller.pkg macOS package (primary relay),campaign:SMOKESCREEN
sha256,639430a33c0ecdf5a134501788a3a40f065ae4232efc66e1b82eca2b355e0606,detect,high,2027-02-05,Zoomupdateinstaller.pkg macOS package variant,campaign:SMOKESCREEN
# --- Attacker toolchain artefacts recovered from the staging server ---
sha256,5253e66f1f493c4e13539749f1aa86fd0c61e3072900fec29a44ba046a6d97e2,detect,medium,2027-02-05,cloudflared.exe tunnel binary on attacker staging server,campaign:SMOKESCREEN
sha256,371166ebd83e8318b49ba71321396524fbca7dc42fe1ca4badda8af794bf5a59,no_action,informational,2027-02-05,MemoryLoader.cs C# loader source (not an endpoint artefact),campaign:SMOKESCREEN
sha256,63c46b3c090a4b1efef146f2f1efc4f93d44f21db21d7825f43e02c3c5c89de6,no_action,informational,2027-02-05,loader.cs successor loader source (not an endpoint artefact),campaign:SMOKESCREEN
sha256,aefac65c42c0c72ed3e08b32774fa1b902f4fd1d53de189d50f38130cc357764,no_action,informational,2027-02-05,system.config staging-server artefact,campaign:SMOKESCREEN
# --- NOT shipped, deliberately ---
# dropbox.com  : payload delivery used a Dropbox shared link. Blocking the domain is
#                disproportionate. Hunt the path fragment scl/fi/a0hp9g4w2ddkb3ggnkivx
#                in proxy logs instead.
# Cloudflare edge IPs : shared CDN front-ends, not actor infrastructure.
# Randomised filenames : BuYUEVqG.msi, JqbMljCi.msi, NYbiLtvO.exe, lirMkvpf.exe,
#                zFbJVuiX.exe rotate per build. Their hashes ship; the shape is hunted
#                by Q13 instead of blocklisting the names.
Network blocklistfirewall / proxy / DNS sinkhole
207.174.0.143
142.202.191.225
207.189.11.170
blog.derrspecial-onlinedmin.live
subscription-magnetic-recommended-meat.trycloudflare.com
crestmarkhq.com

# Egress rules worth more than the list above, because they survive rotation:
#   deny outbound tcp/8041 to any destination except your approved relay
#   deny outbound tcp/8040 to any destination except your approved relay
#   alert on outbound tcp/8080 from any workstation to an external address
#   alert on DNS resolution of any *.trycloudflare.com hostname
SHA-256 hash listplain, one per line
9161a8f7f07741db06b9f9a87b6ec7f277faf2ae3a3a661d6eb09cec4e12b920
35be1b070f06eb313c3cb818c74aa0a9c2d9f39a05621dac4de6cff6067a5d12
31260c37cc442719ac84540f4159dd9d4738575d2ab05e92c751a9b4b5f9b91b
873011c181d00709fdf66f32bb3cca0c5ff3147d00ef818fef72987a6773ea66
2423decbfcf820f41bc356547e4e18e61d60c9829421d7121c374dcef88577f7
433b61c29aefaa5b55fe78063e6ad8597d3835f36e1242d5402ab23e6dc61194
c8695906dcefc64becb3123fa0a8058278c8c2f9c86130956b6b10d49c1a35dc
60c730addd2a15e4213a1d37f55186686976de73a106317b5a258fe0121cfd5c
dc8b056dd6eb75df21e9721ac2e340f91bb5e94d5a6ff412d7d0c7539e0f06e2
9d9f3fa5aaf6bc91091873bd7ee04f0cc23e8709e4ad20c61d2779ff1a43c4b4
8e87a734daddd95322b3f18f71eb9275219e244aac4f62b8dc6da6e2e91525e9
dd23012b4dc29cf7901185ae4fb2d507e737e9ea4d467846eafd6a86b26486bf
3cd9b7d583442963261f9985128042bf45d25482efcbf903c9248837cb0d744b
01e4cb3c60fa50b2927daa11f25a3c412549680406fc121a3d1870a9a33f5d38
aa84e2ac68f7fc18f4927b89be7b4a7739f2eaf099e489aa0f65c1d3913ce62a
639430a33c0ecdf5a134501788a3a40f065ae4232efc66e1b82eca2b355e0606
5253e66f1f493c4e13539749f1aa86fd0c61e3072900fec29a44ba046a6d97e2
371166ebd83e8318b49ba71321396524fbca7dc42fe1ca4badda8af794bf5a59
63c46b3c090a4b1efef146f2f1efc4f93d44f21db21d7825f43e02c3c5c89de6
aefac65c42c0c72ed3e08b32774fa1b902f4fd1d53de189d50f38130cc357764
Behavioural signaturesno atomic value, hunt these
XOR key (VBScript dropper)   : gc1HXjFtHBbC659t
VBScript state sequence      : 185, 626, 616, 518, 442, 509, 821
Sandbox process blacklist    : wireshark.exe, procmon.exe, vboxservice.exe,
                               vmtoolsd.exe, xenservice.exe, fiddler.exe
Sandbox memory floor         : aborts if physical memory is under 2 GB
Masquerade MSI name in TEMP  : WindowsExplorerSupport.msi
ScreenConnect session params : e=Access&y=Guest
Anti-EDR sleep               : 180000 ms between MSI install and service start
Loader source comment        : // WAIT 3 MINUTES (Breaks Elastic correlation)
In-memory C# compilation     : Add-Type -Language CSharp
Misdirection entry point     : [HelloWorld.Program]::SayHello()
Staging URL path convention  : /Bin/
Signed MSI component set     : Client.dll, ClientService.dll, Core.dll,
                               WindowsClient.exe, WindowsCredentialProvider.dll
Signer                       : Connectwise, LLC via the DigiCert chain

Do not blocklist the ScreenConnect binaries or the ConnectWise signing certificate. The payload is genuine, currently supported vendor software with a valid DigiCert-chained Authenticode signature. Blocking the publisher would break every legitimate ConnectWise deployment, including possibly your own support tooling, and the actor would simply switch to another RMM product. The controls in section 12 restrict which instances may run and where they may connect, which is the proportionate answer.

11

Detection Validation Gates

Four gates. No query in section 8 is trusted, and no Custom IOA in section 9 moves past Monitor, until it clears all four.

GateWhat it provesHow to clear it
1. Telemetry presentThe events and fields the query needs actually exist in your tenant.Run each query with only its #event_simpleName line and confirm a non-zero result. CreateService in particular is not enabled in every configuration. If it returns nothing, Q2 and Q14 are inoperative and you must fall back to Q16 plus the section 7 service inventory.
2. Sanctioned baseline builtYou know which ScreenConnect instances, relays and install paths are legitimately yours.Run the section 7 inventory across the estate first. Record every distinct relay address, instance identifier and install path. Fill the three REPLACE_WITH_ placeholders in Q1, Q2 and Q16. This gate is the one that fails most often, and skipping it makes half the pack unreadable rather than merely noisy.
3. Benign baseline and exclusionsThe query's noise floor is known before it is scheduled, not discovered afterwards.Run over 30 days of history. For every query rated FP medium or higher, build the exclusion from the // TUNING: line inside the card and re-run until the daily volume is triageable. Q13 is expected to stay noisy and ships as a triage feed, not an alert.
4. Positive testThe query actually fires on the behaviour it claims to detect.On an isolated test host: install any benign MSI silently from a wscript.exe parent (Q3), create a service whose display name contains the string ScreenConnect (Q2), make an outbound connection on tcp/8041 to a lab listener (Q1), and run a Add-MpPreference -ExclusionPath command against a harmless directory (Q8). Confirm each fires. Never test against live campaign infrastructure.

Promotion rule

A Custom IOA moves from Monitor to Detect only after five consecutive business days with zero unexplained hits. Q1 in particular should sit in Monitor until you are confident the relay allowlist is complete, because a missing entry turns your own RMM into a daily false positive and the rule will be muted within a week.

Field confidence

All field names in section 8 were checked against the Falcon data model before publication. One note for your tenant: RegStringValue in Q10 is populated only when the registry value is a string type. SmartScreen values are frequently DWORDs, so treat that column as advisory and rely on RegValueName and RegObjectName for the match itself.

12

Hardening — Tiered & Deployable

The controls below are ordered by deployment friction, not by importance. Every one is anchored to a MITRE mitigation and, where a formal benchmark covers the technology, to that benchmark.

Immediate — deploy this week, no compatibility risk

H1. Deny outbound tcp/8041 and tcp/8040 except to your approved relay. This is the highest-leverage single control against this campaign. All three attacker relay clusters listen on 8041, and the secondary adds tcp/80 as an explicit firewall-evasion fallback, so pair this with H2. MITRE M1037 Filter Network Traffic. CIS Controls v8 4.5, 13.4.

H2. Restrict which destinations may receive RMM traffic at all. Because the secondary relay falls back to tcp/80, a port rule alone is insufficient. Add the three published addresses to the egress deny list and, where you run a forward proxy, restrict remote-support traffic to your approved relay hostname. MITRE M1037. CIS Controls v8 13.4.

H3. Alert on any Defender exclusion whose path is a drive root. Defender event 5007 records exclusion changes. There is no legitimate reason to exclude C:\, and the compiled loader does exactly that. MITRE M1047 Audit. Microsoft Security Baseline for Windows, Defender Antivirus settings.

H4. Build and publish the sanctioned RMM inventory. Not a technical control, but gate 2 in section 11 and half of section 8 depend on it. Record every approved RMM product, instance identifier, relay address and install path. MITRE M1056 Pre-compromise. CIS Controls v8 2.1, 2.3.

Near term — 1 to 4 weeks, pilot on a ring first

H5. Block MSI execution from user-writable directories with AppLocker or WDAC. Every kill chain in this campaign installs from %TEMP%, Downloads or Users\Public. This is the vendor's own first recommendation. Pilot carefully: a minority of legitimate installers genuinely stage to TEMP. MITRE M1038 Execution Prevention. CIS Benchmark for Windows 11 Enterprise, AppLocker sections. Microsoft WDAC guidance.

H6. Disable the Windows Script Host for standard users. Two of the five kill chains begin with a .vbs file that the user double-clicks. If your estate has no remaining VBScript logon-script dependency, turning WSH off removes the entry point completely rather than detecting it. MITRE M1042 Disable or Remove Feature or Program. CIS Benchmark for Windows 11 Enterprise.

H7. Set User Account Control to Always notify and block standard-user elevation. The SystemCheck batch loader relies on the user approving a UAC prompt for a file that looks like a maintenance utility. Setting ConsentPromptBehaviorUser to automatically deny removes the option entirely for non-administrators. MITRE M1052 User Account Control. CIS Benchmark for Windows 11 Enterprise 2.3.17. Microsoft Security Baseline.

H8. Enforce Defender tamper protection and manage exclusions centrally through policy. Tamper protection prevents the Stop-Service WinDefend and Add-MpPreference sequence from succeeding at all. Where Defender is not the primary AV, apply the equivalent tamper protection in your EDR. MITRE M1024 Restrict Registry Permissions, M1018 User Account Management. Microsoft Security Baseline.

H9. Block .vbs, .js, .hta and archive-wrapped script attachments at the mail gateway. The SystemCheck batch file arrived inside a gzip archive specifically so the victim had to decompress it first, which is a common gateway blind spot. Inspect inside archives. MITRE M1049 Antivirus/Antimalware, M1021 Restrict Web-Based Content.

H10. macOS: require packages to be installed through your MDM, and restrict who may run installer. Gatekeeper alone does not help here, because the point of the campaign is that the software is genuinely signed. MITRE M1038, M1033 Limit Software Installation. CIS Benchmark for macOS. Note the macOS distribution method was never established, so this control is precautionary.

Strategic — 1 to 3 months, architectural

H11. Move to an allowlist model for remote-support tooling. One approved RMM product, one approved relay, enforced by WDAC on the endpoint and by egress policy at the perimeter. This campaign is a direct argument for it: the attacker's advantage is entirely that their tool is indistinguishable from a legitimate one. MITRE M1038. CIS Controls v8 2.5, 2.6.

H12. Remove local administrator rights from standard users. The Defender destruction sequence, the SmartScreen registry teardown and the service installation all require elevation. Without it, the aggressive loader variants fail. MITRE M1026 Privileged Account Management. CIS Controls v8 5.4, 6.8.

H13. Extend EDR correlation windows past five minutes for install-to-service chains. The actor's newest loader sleeps 180 seconds specifically to defeat short correlation windows, and named a competing EDR product in the source comment while doing it. Review every correlation rule in your estate that joins an installer to a resulting service or network connection and confirm the window is wider than three minutes. MITRE M1047 Audit. Note best practice, no formal benchmark covers correlation-window sizing.

H14. Deliver software updates only through managed channels, and tell users so. Every lure in this campaign impersonates an update. If your users know that Zoom, Adobe and Windows updates never arrive as a link or a loose installer in their estate, the social-engineering premise collapses. MITRE M1017 User Training, M1051 Update Software.

13

Deployable Playbooks

Raw configuration for the four highest-leverage controls. Every step states its prerequisites, whether a reboot is required, and how to undo it.

Playbook 1 — Block RMM relay egress (H1, H2)

Prerequisites:   Perimeter firewall change window. Confirmed approved relay address
                 from the section 7 inventory. Do NOT deploy without it, or you will
                 break your own support tooling.
Reboot required: No.
Rollback:        Delete the four rules created below. No residual state.

# 1. Deny the ScreenConnect relay ports outbound, except to your approved relay.
#    Order matters: the permit must sit above the deny.
permit tcp any REPLACE_WITH_SANCTIONED_RELAY_IP eq 8041
deny   tcp any any eq 8041 log
deny   tcp any any eq 8040 log

# 2. Deny the three published campaign addresses on every port, because the
#    secondary relay falls back to tcp/80 where a port rule will not catch it.
deny   ip any host 207.174.0.143 log
deny   ip any host 142.202.191.225 log
deny   ip any host 207.189.11.170 log

# 3. Alert-only rule for workstation-initiated tcp/8080 to external addresses.
#    Start in alert mode. Review for two weeks before considering a deny.
alert  tcp WORKSTATION_SUBNETS any eq 8080 log

Playbook 2 — Block MSI execution from user-writable paths (H5)

Prerequisites:   AppLocker or WDAC already enforcing in at least Audit mode.
                 A pilot ring of 20 to 50 representative endpoints.
                 An inventory of legitimate installers that stage to %TEMP%.
Reboot required: No. The Application Identity service must be running and set to
                 Automatic; if you are enabling it for the first time, that service
                 change does require a restart to take effect reliably.
Rollback:        Remove the rules from the GPO and run gpupdate /force. If you enabled
                 the AppIdentity service as part of this, set it back to Manual and
                 reboot. Endpoints revert on the next policy refresh.

# Step 1. Run in AUDIT mode for two weeks first. This is not optional. Some
#         legitimate vendor installers genuinely stage an MSI into %TEMP%.
Set-AppLockerPolicy -XmlPolicy .\smokescreen-audit.xml -Merge

# Step 2. Review the 8003 and 8006 audit events before enforcing.
Get-WinEvent -LogName 'Microsoft-Windows-AppLocker/MSI and Script' |
  Where-Object { $_.Id -eq 8003 -or $_.Id -eq 8006 } |
  Select-Object TimeCreated, Id, Message | Format-List

# Step 3. Policy rule shape: deny Windows Installer files from user-writable
#         locations, allow them from your distribution point and from
#         %WINDIR%\Installer.
#         Denied paths:
#           %OSDRIVE%\Users\*\AppData\Local\Temp\*
#           %OSDRIVE%\Users\*\Downloads\*
#           %OSDRIVE%\Users\Public\*
#         Allowed paths:
#           %WINDIR%\Installer\*
#           REPLACE_WITH_SOFTWARE_DISTRIBUTION_UNC_PATH\*

# Step 4. Enforce only after the pilot ring is clean for 14 days.
Set-AppLockerPolicy -XmlPolicy .\smokescreen-enforce.xml -Merge

Playbook 3 — Defender tamper protection and exclusion hygiene (H3, H8)

Prerequisites:   Microsoft Defender Antivirus is the active AV, or the equivalent
                 tamper control exists in your third-party EDR. Intune or
                 Configuration Manager for central policy.
Reboot required: No.
Rollback:        Set DisableTamperProtection back to 0 through the same policy channel.
                 Note that tamper protection is deliberately hard to disable locally,
                 which is the point; roll back centrally, not on the endpoint.

# Step 1. Confirm current state across the fleet.
Get-MpComputerStatus | Select-Object IsTamperProtected, AntivirusEnabled,
  RealTimeProtectionEnabled, AMServiceEnabled

# Step 2. Audit existing exclusions. Any drive-root entry is an incident.
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath

# Step 3. Remove a drive-root exclusion if one is found.
Remove-MpPreference -ExclusionPath 'C:\'

# Step 4. Confirm the WinDefend service start type was not tampered with.
Get-Service WinDefend | Select-Object Name, Status, StartType
# Expected: Running / Automatic. If Disabled, restore it:
Set-Service -Name WinDefend -StartupType Automatic
Start-Service -Name WinDefend

# Step 5. Enforce tamper protection centrally (Intune: Endpoint security,
#         Antivirus profile, Windows Security experience, TamperProtection = Enabled).
#         Verify afterwards:
Get-MpComputerStatus | Select-Object IsTamperProtected

Playbook 4 — UAC hardening and Windows Script Host removal (H6, H7)

Prerequisites:   Confirm no remaining VBScript or JScript logon-script dependency
                 before disabling WSH. Query your logon scripts and any legacy
                 line-of-business apps first. This one genuinely breaks things
                 if you skip the check.
Reboot required: No for the UAC values (a sign-out is enough). No for WSH.
Rollback:        Set Enabled back to 1 for WSH. Restore ConsentPromptBehaviorUser to 3
                 and EnableLUA to 1. Both revert on the next GPO refresh if you deploy
                 through policy rather than directly.

# Step 1. UAC: prompt administrators for consent on the secure desktop, and deny
#         elevation requests from standard users outright.
$p = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
Set-ItemProperty -Path $p -Name 'ConsentPromptBehaviorAdmin' -Value 2 -Type DWord
Set-ItemProperty -Path $p -Name 'ConsentPromptBehaviorUser'  -Value 0 -Type DWord
Set-ItemProperty -Path $p -Name 'PromptOnSecureDesktop'      -Value 1 -Type DWord
Set-ItemProperty -Path $p -Name 'EnableLUA'                  -Value 1 -Type DWord

# Step 2. Verify SmartScreen was not disabled by the batch loader.
Get-ItemProperty -Path $p -Name 'EnableSmartScreen' -ErrorAction SilentlyContinue
# Expected: 1. If 0 or absent on a host that hit Q10, treat as compromised.
Set-ItemProperty -Path $p -Name 'EnableSmartScreen' -Value 1 -Type DWord

# Step 3. Disable Windows Script Host, machine-wide and per-user.
#         ONLY after the logon-script dependency check above.
New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' `
  -Name 'Enabled' -Value 0 -Type DWord

# Step 4. Confirm. A .vbs double-click should now be refused.
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' -Name Enabled
14

Containment Runbook

Contain the network before you touch the agent. The operator has an interactive remote desktop session. If you uninstall the ScreenConnect client while they are connected, they will see it happen and can re-establish access or escalate to destructive action before you finish. Network containment first, always.

Phase 1 — Isolate

  1. Network-contain the host through Falcon. This preserves your sensor visibility while cutting the operator's session.
  2. Do not power off and do not reboot. The 180-second sleep in the newest loader means a second-stage action may still be pending in memory, and a reboot destroys the evidence of it.
  3. Disable the affected user account and revoke active sessions and refresh tokens. Assume any credential typed or cached during the remote session is compromised.
  4. Push the section 10 network blocklist to the perimeter immediately, so any other compromised host in the estate loses its relay at the same time.
  5. Run Q4 and Q1 estate-wide before proceeding. If more than one host is talking to a relay, treat this as a campaign against your organisation rather than a single victim, and contain all of them in one action.

Phase 2 — Investigate before eradicating

  1. Capture the ScreenConnect service configuration and the relay address from the service image path before removing anything. That is your attribution link to one of the three clusters.
  2. Collect the ScreenConnect session and event logs from the client installation directory. They record when the operator connected and for how long.
  3. Run Q8 and check the Defender exclusion list and WinDefend start type. A host whose Defender was destroyed stays degraded after the RMM agent is gone.
  4. Reconstruct the delivery path with Q3, Q12 and Q13 to identify which lure and which loader variant was used. That tells you what else to look for and whether other users received the same message.
  5. Search the user's mailbox and the gateway for the originating lure, then sweep for the same message across all recipients.

Phase 3 — Eradicate

  1. Stop and delete the foreign ScreenConnect service, then remove its installation directory. Verify no second instance remains, and confirm your sanctioned agent, if any, is untouched.
  2. Restore Defender: re-enable the service, set the start type back to Automatic, remove every attacker-added exclusion, and confirm tamper protection is on.
  3. Restore SmartScreen and UAC values from playbook 4, then confirm with the verification commands in that playbook.
  4. Remove any staged installer still present in TEMP, Public or Downloads, and preserve a copy for analysis first.
  5. Reset credentials for the affected user and for any account whose credentials were used or cached on the host during the exposure window.
  6. Rebuild is the safer choice where the aggressive loader ran. If Q8 shows Defender was stopped, disabled and given a drive-root exclusion, the host was fully blind for the duration and you cannot prove what else executed. Reimage rather than clean.

Phase 4 — Recover and verify

  1. Return the host to the network only after Q1, Q2, Q4 and Q8 all return clean for it.
  2. Monitor the host and the user for 14 days at raised sensitivity. This actor re-lures.
  3. Deploy the immediate-tier controls in section 12 across the estate, not only the affected host.
  4. Complete gate 2 in section 11 if it was not already done. The RMM inventory is what turns this from a one-off cleanup into a durable detection.
  5. Re-run the section 7 fleet-wide service inventory after 30 days to confirm no foreign instance has reappeared.
15

Detection Coverage Map

TechniqueBehaviourCQLIOACoverage
T1566.002Spearphishing link delivering the lureQ5GAP No sender addresses or subject lines were published, so there is nothing atomic to hunt. Covered only by the section 7 mail-gateway shape hunts and by control H14.
T1204.002User runs the VBScript, batch file, EXE or macOS packageQ12, Q13, Q15Partial The execution is visible; the decision to run it is not. Q13 is deliberately a triage feed rather than an alert.
T1497.001Sandbox evasion: 2 GB memory floor and analysis-process blacklistGAP The checks run inside the script before any observable action, and a WMI query for installed processes is indistinguishable from ordinary inventory activity. Not detectable on the endpoint.
T1027XOR encryption, flattened state machine, junk arithmetic between buildsGAP Static-analysis property with no runtime telemetry surface. The XOR key in section 4 is for sample retro-hunting only.
T1059.005 / T1047VBScript droppers, one using WMI Win32_Process to avoid WScript.ShellQ12Good Both parents covered, so the WMI evasion does not help the actor here.
T1059.001PowerShell cradle and in-memory C# compilationQ9, Q8Yes (Q8)Good Depends on command-line capture being enabled, which gate 1 confirms.
T1562.001AMSI patched, WinDefend stopped and disabled, drive-root exclusion, SmartScreen teardownQ8, Q9, Q10Yes (Q8)Good The strongest behavioural cluster in the pack. Note it only covers the older aggressive loader. The current loader.cs build removed this sequence entirely.
T1548.002UAC re-launch through shell.applicationQ9Partial Detected at the command-line surface. Control H7 is the stronger answer because it removes the option for standard users.
T1553.005Zone.Identifier stripped with Unlock-FileQ11Good Narrow and specific. The second command-line clause keeps developer noise out.
T1218.007Silent MSI install of the signed ScreenConnect packageQ3Yes (Q3)Good Best endpoint-only detection in the pack and the recommended first IOA.
T1036Updater masquerades and randomised payload namesQ3, Q13Yes (Q3)Partial Named masquerades are covered by the Q3 parent list. Random names are covered only by shape, at high FP.
T1105 / T1102Payload fetch over tcp/8080, Cloudflare Quick Tunnel, Dropbox shared linkQ4, Q5, Q6, Q7Partial The specific tunnel hostname and staging IP will rotate. The generic trycloudflare.com clause in Q5 and the tcp/8080 shape in Q6 are what survive. Dropbox delivery is covered only by the section 7 proxy hunt.
T1070.004Installer deleted after executionQ13Partial The execution is captured before the deletion, so the process event survives even though the file does not. No dedicated deletion query ships.
T1543ScreenConnect service created and startedQ2, Q14, Q16Good Provided CreateService is enabled in your tenant. If gate 1 shows it is not, this drops to Partial on Q16 alone.
T1219 / T1550ScreenConnect agent beaconing to an attacker relay under a valid signatureQ1, Q4, Q16Yes (Q1)Good Q1 is the durable detection and does not decay with infrastructure rotation, but it is entirely dependent on gate 2. Without the relay allowlist it is unusable.
T1497 (timing)180-second sleep to break EDR correlation windowsQ14Partial Detected by widening rather than narrowing the window. Control H13 is the more important half, because the gap this exploits exists in correlation rules across the whole estate, not just for this campaign.
macOS branchZoomUpdateInstaller.pkg to the primary relayQ15, Q1, Q4Partial Q15 covers installation. Q1 and Q4 are platform-agnostic and cover the resulting beacon. Service and registry queries do not port, and no distribution method was ever established.

Seventeen queries ship. Eight rate CONF high, nine medium, none low. Nine carry an FP risk of medium or higher and each of those carries its exclusion inside the query card rather than only in the prose. One, Q13, is rated FP high and is explicitly a triage feed to be joined against Q1, Q3 and Q8 rather than alerted on directly.

The dominant risk in this pack is not a missing query, it is gate 2. Q1, Q2 and Q16 are the three detections that survive infrastructure rotation, and all three compare against a sanctioned RMM inventory that only your organisation can supply. If that inventory is not built, those queries return your own legitimate ScreenConnect estate mixed indistinguishably with the attacker's, an analyst mutes them within a week, and the pack degrades to hash and IP matching that the actor already defeats by rotating both. Section 7 opens with the inventory step for that reason.

Second structural gap: the current loader is quieter than the one most of section 8 was built for. The Defender destruction cluster, Q8 through Q10, is the highest-fidelity behavioural detection here and the actor removed exactly that behaviour from their newest build after concluding it was being caught. Q1, Q2, Q3, Q14 and Q16 are the queries that still fire against loader.cs. Weight your deployment accordingly rather than assuming the loud sequence will announce the intrusion.

16

Hunt Summary Ticket

TITLE:      SMOKE#SCREEN -- fake Adobe/Zoom update lures installing ScreenConnect RMM
VERSION:    v0.1 -- 2026-08-05
SEVERITY:   High -- active multi-wave campaign, live staging server at disclosure
AUTHOR:     HuntPack

SCOPE:      All Windows endpoints with an interactive user.
            All macOS endpoints (package confirmed, distribution never established).
            Perimeter egress on tcp/8040, tcp/8041, tcp/8080.
            Any estate running ConnectWise ScreenConnect, sanctioned or not.

HYPOTHESIS: A user has been phished with a lure themed on a Zoom update, an Adobe
            update, a business document review, or a system maintenance utility,
            has run a VBScript, batch or .NET loader, and now has a genuine
            ConnectWise-signed ScreenConnect agent installed and beaconing to one
            of three attacker-controlled relays, giving an operator a full remote
            desktop session that is indistinguishable from legitimate IT support.

PREREQ:     Build the sanctioned RMM inventory FIRST (section 7). Q1, Q2 and Q16
            each carry a REPLACE_WITH_ placeholder that only your organisation
            can fill. Running them unfilled returns your own RMM as noise.

QUERIES:    Q1  ScreenConnect relay-port egress, unapproved dest   CONF high  *IOA
            Q2  ScreenConnect service, foreign instance ID         CONF high
            Q3  Silent MSI install from script host or browser     CONF high  *IOA
            Q4  Contact with published campaign infrastructure     CONF high
            Q5  DNS for campaign domains and Quick Tunnels         CONF high
            Q6  Script host fetching over tcp/8080                 CONF med
            Q7  WebDAV and search-ms delivery surface              CONF med
            Q8  Defender destruction sequence                      CONF high  *IOA
            Q9  AMSI bypass, UAC re-launch, in-memory C#           CONF high
            Q10 SmartScreen dismantled via registry                CONF high
            Q11 Mark-of-the-Web stripped before install            CONF med
            Q12 VBScript and WMI hidden-process chain              CONF med
            Q13 Randomised-name EXE from user-writable path        CONF med   FP HIGH
            Q14 Anti-EDR delay, install to service start           CONF med
            Q15 macOS fake Zoom update package                     CONF high
            Q16 Fleet-wide ScreenConnect client rarity             CONF med
            Q17 Known sample hashes (run once, then retire)        CONF high

IOCS:       26 atomic indicators, all traced to saved source snapshots.
            3 IPv4, 3 domains, 20 SHA-256.
            NOT shipped: dropbox.com, Cloudflare edge IPs, randomised filenames.
            Nothing at prevent/critical: single-vendor sourcing.

KEY RISK:   The payload is legitimate, correctly signed vendor software. Hash and
            signature controls do not apply. The actor rotates payload hashes
            between download sessions and has already removed the loud Defender
            destruction sequence from their newest loader after it was detected.
            Build around unauthorised-instance signals, not around the binary.

NEXT STEP:  1. Run the section 7 RMM inventory across the fleet.
            2. Deploy H1 and H2 (relay egress deny) this week.
            3. Run Q4, Q5 and Q17 as a retro-hunt across full retention.
            4. Promote Q3 and Q8 to Custom IOA in Monitor mode.
            5. Fill the placeholders, then schedule Q1, Q2 and Q16.
17

Changelog

v0.1 2026-08-05 Initial build. Seventeen CQL hunt queries, three Custom IOA candidates, 26 atomic indicators traced to four source snapshots, fourteen tiered hardening controls, four deployable playbooks with rollback, and a four-phase containment runbook. Sourced from the Securonix Threat Research primary disclosure of 2026-08-04 plus three corroborating write-ups. Dark Reading was dropped from the citation set because the page returned no retrievable body. Two unrelated indicators that automated summarisation merged in from a separate Bitdefender campaign on the same news page were identified and excluded.
18

References

TierSourceSnapshot
T1Securonix Threat Research, Analyzing SMOKE#SCREEN: Threat Actors Abuse Trusted Software Lures and Cloudflare Tunnels to Deploy ScreenConnect RMM Agents Across Windows and macOS. Shikha Sangwan, Akshay Gaikwad, Aaron Beardslee. 2026-08-04.01-securonix-smokescreen-primary.txt
T2The Hacker News, Fake Adobe and Zoom Updates Install ScreenConnect for Persistent Remote Access. Ravie Lakshmanan. 2026-08-04.02-thehackernews-fake-adobe-zoom-screenconnect.txt
T2Security Affairs, SMOKE#SCREEN Campaign Abuses ScreenConnect to Give Attackers Remote Control Access. 2026-08-04.03-securityaffairs-smokescreen.txt
T3AppleInsider, Fake Zoom update malware campaign expands its reach to macOS. 2026-08-04.04-appleinsider-macos-expansion.txt
RefMITRE ATT&CK: T1566.002, T1204.002, T1047, T1059.001, T1059.003, T1059.005, T1027, T1497.001, T1562.001, T1564.003, T1553.005, T1548.002, T1070.004, T1036, T1218.007, T1550, T1219, T1071.001, T1102, T1543.
RefMITRE mitigations cited in section 12: M1017, M1018, M1021, M1024, M1026, M1033, M1037, M1038, M1042, M1047, M1049, M1051, M1052, M1056.
RefCIS Benchmark for Windows 11 Enterprise; CIS Benchmark for macOS; CIS Controls v8; Microsoft Security Baseline for Windows; Microsoft WDAC and AppLocker documentation.

Source snapshots. The verbatim fetched text of all four cited threat-intelligence sources is stored alongside this pack in SmokeScreen-ScreenConnect-FakeUpdate-Hunt-sources/. Every atomic indicator in section 10 was traced back to those files mechanically before publication. An indicator that could not be traced would have been converted to a behavioural signal or a labelled placeholder rather than shipped.

Generated 2026-08-05 by HuntPack. Defensive use only.