A newly reported social engineering campaign is impersonating Bank of America to push victims into downloading and executing a malicious script that installs ScreenConnect, the legitimate ConnectWise remote monitoring and management (RMM) platform. Once installed, the attacker-controlled ScreenConnect client gives the adversary full interactive remote access to the compromised host — file transfer, command execution, credential access — along with a resilient persistence mechanism that survives reboots because it registers itself as a legitimate signed service.
This is not a vulnerability exploitation story. No CVE is involved. The attack chain is pure social engineering plus abuse of trusted commercial software — a technique that has become the dominant initial-access-to-persistence pipeline for financially motivated actors over the past two years because it sails through application allow-listing, email filtering, and EDR signature engines that implicitly trust signed binaries.
For defenders, the critical takeaway is this: your controls cannot whitelist RMM tooling by signature alone. ScreenConnect, AnyDesk, TeamViewer, and Splashtop are all dual-use. The question your SOC must answer is not "is this binary malicious?" but "is this RMM installation authorized in my environment?" If you are a financial services firm, an SMB bank customer base, or simply any organization whose users bank with Bank of America, this campaign targets your user population directly.
Technical Analysis
Attack Chain (Defender's View)
Based on the campaign details reported by Infosecurity Magazine, the kill chain follows a pattern we have repeatedly observed in real IR engagements:
-
Lure delivery. Victims receive a phishing communication (email or malicious ad/search result) impersonating Bank of America — typically framed as an account security alert, a required verification, or a document to review. The lure directs the victim to a spoofed page or prompts a direct download.
-
Malicious script download. Instead of a document, the victim receives a script — in campaigns of this type, most commonly a PowerShell (.ps1), JavaScript (.js), VBScript (.vbs), or an HTA/MSI wrapper. The script is staged from an attacker-controlled URL, frequently a compromised legitimate site or a cloud storage/hosting domain to evade reputation filtering.
-
Script execution and RMM staging. The script performs a download-and-execute of the ScreenConnect client installer (commonly named
ScreenConnect.ClientSetup.exe,ScreenConnect.exe, or renamed entirely — e.g.,update.exe,BOA_Verification.exe). Attackers pre-generate the client installer from their own ScreenConnect server instance, so the client is pre-configured to beacon to the attacker's relay out of the box. No interaction from the victim is required after the first execution. -
Service installation and persistence. The ScreenConnect client installs as a Windows service (service name pattern
ScreenConnect Client (<GUID>)), writes its configuration to%PROGRAMFILES(X86)%\ScreenConnect Client (<GUID>)\or, in portable/dropper variants, into%APPDATA%,%LOCALAPPDATA%, or%PROGRAMDATA%, and establishes an outbound TLS session to the attacker's ScreenConnect relay (default ports 8040/8041, or arbitrary attacker-chosen ports). -
Interactive remote access. From here the operator has hands-on-keyboard access: staging credential dumpers, exfiltrating files, deploying additional payloads, and in many observed intrusions, pivoting to ransomware staging within days.
Why This Evades Traditional Controls
- Signed binary. ScreenConnect client binaries are legitimately code-signed by ConnectWise. Antivirus and allow-listing solutions trust them.
- Outbound-only C2. The client initiates all connections outbound over TLS — no inbound firewall rules are tripped, and the traffic blends with ordinary HTTPS.
- Legitimate persistence. The service, registry entries, and scheduled tasks are exactly what a sanctioned install creates. There is no "malware artifact" — only an unauthorized artifact.
- User-initiated execution. Because the victim launches the script, perimeter controls that block drive-by exploitation never fire.
Exploitation Status
This is a confirmed, in-the-wild active campaign as reported by Infosecurity Magazine. There is no CVE and no CISA KEV entry involved — the attack abuses legitimate software functionality, not a software defect. Note that ScreenConnect itself has had critical vulnerabilities in the past; the lesson here is distinct: even a fully patched ScreenConnect server ecosystem does nothing to stop an attacker from abusing the client as an access tool.
Key Observables for Defenders
| Artifact Type | Indicator |
|---|---|
| Process execution | ScreenConnect.ClientSetup.exe, ScreenConnect.ClientService.exe, ScreenConnect.WindowsClient.exe |
| Service naming | ScreenConnect Client (*) with a GUID suffix |
| Install paths | %PROGRAMFILES(X86)%\ScreenConnect Client (*)\, %LOCALAPPDATA%, %APPDATA%, %PROGRAMDATA% |
| Parent process | Script interpreters (powershell.exe, wscript.exe, cscript.exe, mshta.exe) spawning installers |
| Network | Outbound TLS to unknown relays on TCP 8040/8041 or unexpected hosts |
| Registry | Services under HKLM\SYSTEM\CurrentControlSet\Services\ScreenConnect Client (*) |
If ScreenConnect is legitimately used in your environment, scope every rule below by exclusion of your authorized relay hostname and approved install path.
Detection & Response
Sigma Rules
The following rules target the three highest-fidelity observables: unauthorized ScreenConnect installation, script-interpreter-spawned RMM installers, and ScreenConnect persistence outside sanctioned paths. Tune the filter blocks to your authorized RMM inventory before deploying at high level.
---
title: ScreenConnect Client Execution From User-Writable or Non-Standard Path
id: 3f9c1a2e-7b44-4d81-9f6a-2c8e5b1d4a90
status: experimental
description: Detects ScreenConnect client binaries executing from user-writable or non-standard directories, consistent with phishing-delivered RMM staging. ScreenConnect is frequently abused by threat actors for unauthorized remote access and persistence.
references:
- https://www.infosecurity-magazine.com/news/fake-bank-of-america-phishing-scam/
- https://attack.mitre.org/techniques/T1219/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.command_and_control
- attack.t1219
logsource:
category: process_creation
product: windows
detection:
selection_binary:
Image|contains:
- '\ScreenConnect'
- '\ConnectWise'
selection_path:
Image|contains:
- '\AppData\Local\'
- '\AppData\Roaming\'
- '\Users\Public\'
- '\Temp\'
- '\Downloads\'
- '\ProgramData\'
condition: selection_binary and selection_path
falsepositives:
- Portable ScreenConnect sessions legitimately launched from Downloads by helpdesk staff; scope to authorized technician accounts
level: high
---
title: Script Interpreter Spawning RMM Installer or Executable Download
id: 8b2d4f71-3c5a-4e9b-a1d7-6f0c9e2b5a31
status: experimental
description: Detects PowerShell, WScript, CScript, or mshta launching an installer or executable consistent with phishing-delivered script staging of remote access tooling such as ScreenConnect.
references:
- https://www.infosecurity-magazine.com/news/fake-bank-of-america-phishing-scam/
- https://attack.mitre.org/techniques/T1059/
- https://attack.mitre.org/techniques/T1219/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1059.001
- attack.t1219
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
selection_child:
CommandLine|contains:
- 'ScreenConnect'
- 'ClientSetup'
- 'ConnectWise'
condition: selection_parent and selection_child
falsepositives:
- Legitimate software deployment scripts from RMM or endpoint management platforms; filter to known deployment service accounts and paths
level: high
---
title: Unauthorized ScreenConnect Service Installation
id: c51e7a83-9d26-4f48-b3e1-8a4f2d7c6b15
status: experimental
description: Detects installation of a Windows service whose name follows the ScreenConnect Client (GUID) pattern, indicating RMM persistence being established. Should be correlated against an authorized RMM inventory.
references:
- https://www.infosecurity-magazine.com/news/fake-bank-of-america-phishing-scam/
- https://attack.mitre.org/techniques/T1543.003/
- https://attack.mitre.org/techniques/T1219/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.persistence
- attack.t1543.003
- attack.t1219
logsource:
category: service_creation
product: windows
detection:
selection:
ServiceName|contains:
- 'ScreenConnect Client'
ImagePath|contains:
- '\ScreenConnect'
condition: selection
falsepositives:
- Sanctioned ScreenConnect deployment by IT or MSP; maintain an exclusion list of authorized service GUIDs and install hosts
level: critical
KQL — Microsoft Sentinel / Defender
The hunt below surfaces unauthorized ScreenConnect presence across process, service, and network telemetry in a single pass. Run it on a 7-14 day lookback for retro-hunting, then convert the process/service portions into scheduled analytics with your authorized relay exclusion applied.
// Hunt: Unauthorized ScreenConnect RMM installation and C2 activity
// Scope: 14 days | Tune $authorized_relay and $authorized_path before production use
let lookback = 14d;
let authorized_relays = dynamic(["screenconnect.yourmsp.com", "connect.yourdomain.com"]);
let authorized_path_prefixes = dynamic(["C:\\Program Files (x86)\\ScreenConnect Client (AUTHORIZED-GUID)"]);
union isfuzzy=true
(
DeviceProcessEvents
| where TimeGenerated > ago(lookback)
| where FileName has_any ("ScreenConnect", "ClientSetup", "ConnectWise")
or ProcessCommandLine has_any ("ScreenConnect", "ClientSetup", "ConnectWise")
| project TimeGenerated, DeviceName, AccountName, FileName, FolderPath, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256, Evidence="ProcessExecution"
),
(
DeviceNetworkEvents
| where TimeGenerated > ago(lookback)
| where InitiatingProcessFileName has_any ("ScreenConnect", "ConnectWise")
or RemotePort in (8040, 8041)
| where not(RemoteUrl has_any (authorized_relays))
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, RemoteUrl, RemoteIP, RemotePort, Evidence="NetworkC2"
),
(
Event
| where TimeGenerated > ago(lookback)
| where EventID == 7045 // Service installed (via Windows Event ingestion)
| where EventData has "ScreenConnect"
| project TimeGenerated, Computer, RenderedDescription, Evidence="ServiceInstall"
),
(
DeviceFileEvents
| where TimeGenerated > ago(lookback)
| where FolderPath has_any ("\\AppData\\", "\\Users\\Public\\", "\\Temp\\", "\\Downloads\\")
and FileName has_any ("ScreenConnect", "ClientSetup")
| project TimeGenerated, DeviceName, ActionType, FileName, FolderPath, SHA256, InitiatingProcessFileName, Evidence="FileDrop"
)
| order by TimeGenerated desc
Velociraptor VQL
Use this artifact for fleet-wide triage to enumerate ScreenConnect processes, services, and install directories — including renamed or relocated clients. The GUID-based service name makes regex matching essential.
-- Artifact: Hunt.ScreenConnectUnauthorized
-- Enumerates ScreenConnect RMM presence: processes, services, install dirs, and live connections
-- 1. Running ScreenConnect processes (any path)
LET procs = SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(?i)screenconnect|connectwise'
OR CommandLine =~ '(?i)screenconnect|connectwise'
-- 2. ScreenConnect services (GUID-suffixed service names)
LET svcs = SELECT Name, DisplayName, PathName, StartName, State
FROM wmi(query='SELECT Name, DisplayName, PathName, StartName, State FROM Win32_Service',
namespace='root/cimv2')
WHERE Name =~ '(?i)ScreenConnect Client'
OR PathName =~ '(?i)screenconnect'
-- 3. Install directories in standard and user-writable locations
LET files = SELECT FullPath, Mtime, Size
FROM glob(globs=[
'C:/Program Files (x86)/ScreenConnect Client (*)/**',
'C:/Program Files/ScreenConnect Client (*)/**',
'C:/ProgramData/**/ScreenConnect*',
'C:/Users/*/AppData/Local/**/ScreenConnect*',
'C:/Users/*/AppData/Roaming/**/ScreenConnect*'
])
-- 4. Live outbound connections from ScreenConnect processes
LET conns = SELECT Pid, Name, Family, Type, LocalAddr, LocalPort, RemoteAddr, RemotePort, Status
FROM netstat()
WHERE Name =~ '(?i)screenconnect'
SELECT 'process' AS Category, * FROM procs
UNION ALL
SELECT 'service' AS Category, * FROM svcs
Remediation and Verification Script
The following PowerShell runbook enumerates ScreenConnect presence across services, registry, and filesystem, captures evidence to a CSV for IR documentation, and (with -Remove) disables and removes unauthorized instances. Run elevated. Always snapshot evidence before removal on a confirmed IR case.
# Requires: Run as Administrator
# Bank of America phishing / ScreenConnect abuse — triage and removal runbook
param(
[switch]$Remove, # Execute removal actions
[string[]]$AuthorizedServicePrefix = @(), # e.g. 'ScreenConnect Client (YOUR-AUTH-GUID)'
[string]$EvidencePath = "$env:TEMP\ScreenConnect_Triage_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv"
)
$findings = @()
# 1. Enumerate ScreenConnect services (GUID-suffixed names)
$services = Get-CimInstance Win32_Service | Where-Object {
$_.Name -match 'ScreenConnect Client' -or $_.PathName -match '(?i)screenconnect'
}
foreach ($svc in $services) {
$authorized = $false
foreach ($prefix in $AuthorizedServicePrefix) {
if ($svc.Name -like "$prefix*") { $authorized = $true }
}
$findings += [pscustomobject]@{
Type = 'Service'; Name = $svc.Name; Path = $svc.PathName
State = $svc.State; Authorized = $authorized
}
}
# 2. Enumerate ScreenConnect processes
$procs = Get-Process | Where-Object { $_.Name -match '(?i)screenconnect' }
foreach ($p in $procs) {
$findings += [pscustomobject]@{
Type = 'Process'; Name = $p.Name; Path = $p.Path; State = 'Running'; Authorized = $false
}
}
# 3. Check Run keys and common install locations
$runKeys = @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run')
foreach ($key in $runKeys) {
if (Test-Path $key) {
(Get-ItemProperty $key).PSObject.Properties | Where-Object {
$_.Value -match '(?i)screenconnect'
} | ForEach-Object {
$findings += [pscustomobject]@{
Type = 'RunKey'; Name = $_.Name; Path = "$key -> $($_.Value)"; State = 'Persist'; Authorized = $false
}
}
}
}
$findings | Export-Csv -Path $EvidencePath -NoTypeInformation
Write-Host "[+] Evidence written to $EvidencePath"
$findings | Format-Table -AutoSize
# 4. Removal (only when -Remove specified and instance is NOT authorized)
if ($Remove) {
foreach ($svc in ($services | Where-Object { -not ($AuthorizedServicePrefix | ForEach-Object { $svc.Name -like "$_*" }) })) {
Write-Host "[!] Stopping and removing unauthorized service: $($svc.Name)"
Stop-Service -Name $svc.Name -Force -ErrorAction SilentlyContinue
sc.exe delete "$($svc.Name)" | Out-Null
}
foreach ($p in $procs) { Stop-Process -Id $p.Id -Force -ErrorAction SilentlyContinue }
# Clean leftover directories flagged in evidence
$findings | Where-Object { $_.Type -eq 'Service' -and -not $_.Authorized } | ForEach-Object {
$dir = ($_.Path -replace '^"?([^"]*\.exe).*','$1' | Split-Path -Parent)
if ($dir -and (Test-Path $dir)) {
Write-Host "[!] Removing directory: $dir"
Remove-Item -Path $dir -Recurse -Force -ErrorAction SilentlyContinue
}
}
Write-Host "[+] Removal pass complete. Re-run without -Remove to verify."
}
Remediation
Because this campaign abuses legitimate software rather than a patchable vulnerability, remediation is an authorization and control-plane problem, not a patch problem. Prioritize the following:
-
Establish an authoritative RMM allowlist — today. Inventory every RMM tool sanctioned in your environment (vendor, server/relay hostname, install path, service GUID). Everything else is treated as malicious by default. This single control neutralizes the entire technique class.
-
Block unauthorized RMM execution at the endpoint. Use AppLocker, WDAC, or your EDR's application control to restrict ScreenConnect, AnyDesk, TeamViewer, Atera, Splashtop, and similar binaries to your authorized install paths and service accounts only. Microsoft and CISA have jointly published guidance on mitigating RMM abuse (CISA joint advisory "Protecting Against Malicious Use of Remote Monitoring and Management Software") — implement its recommendations as your baseline.
-
Constrain script interpreters for standard users. Enforce PowerShell Constrained Language Mode or signed-script policy on non-admin endpoints, block
wscript.exe/cscript.exe/mshta.exefrom spawning installers, and enable Script Block Logging (Module Logging + ScriptBlockLogging) to retain evidence of download cradles. -
Network egress controls. Alert on or block outbound connections to known RMM relay infrastructure and ScreenConnect default ports (TCP 8040/8041) from endpoints that should never run RMM. Where TLS inspection exists, flag ScreenConnect relay handshakes to non-authorized hosts.
-
Eradicate confirmed compromises as full intrusions, not adware. If ScreenConnect is found installed via this campaign, assume hands-on-keyboard access occurred: review Security event logs (4624/4625, 7045, 1102 log-clear events), hunt for credential dumping artifacts, check for secondary payloads staged during the access window, and rotate credentials for any accounts used on the host. RMM abuse is routinely the precursor to data theft and ransomware — treat dwell time as already spent.
-
User-facing controls against the lure. Warn staff and customers that Bank of America does not distribute "verification" downloads or scripts. Ensure your secure email gateway rewrites and detonates links to newly registered domains, and consider browser isolation for financial-services-related categories during heightened campaign activity.
-
Report and share. Submit phishing samples to your ISAC (FS-ISAC for financial sector) and report impersonation infrastructure to the abused brand's anti-fraud channel. Campaigns of this type recycle lure infrastructure across targets — timely sharing shortens every defender's timeline.
The uncomfortable truth from 15+ years of IR work: the most durable persistence mechanisms we fight are not exotic rootkits — they are legitimate, signed, vendor-supported tools installed by a user's single click. Build your detection around authorization context, and this entire class of attack collapses into a manageable alert queue.
Related Resources
Security Arsenal Incident Response Services AlertMonitor Platform Book a SOC Assessment incident-response Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.