SafePay Ransomware: Closed-Group Double Extortion Against Windows Estates

Operator-run ransomware group active since late 2024, entering through valid VPN and RDP credentials. Defensive hunt and harden pack, no exploit code.
Threat
SafePay
Severity
ACTIVE RANSOMWARE
Type
Ransomware · Double extortion
Initial access
Valid VPN / RDP credentials
Version
v0.3 (Draft) · 2026-10-09
Author
HuntPack
Confidence
MEDIUM-HIGH
01

Executive Summary

SafePay is a closed, operator-run double-extortion ransomware group first seen in September to October 2024. Bitdefender, CloudSEK and Picus report it runs no affiliate program and says so on its leak site, though Blackpoint describes it as a private or semi-private operation, so treat the "no RaaS" framing as the majority view rather than settled fact. Its encryptor shares large parts of the leaked LockBit Black codebase, but researchers stress that code lineage does not establish who the operators are.

Tempo is the story. CloudSEK cites 569 leak-site victims across 47 countries as of 2026-09-17, with Germany and the United States dominant, and Halcyon reports a Q2 2026 rebound that more than doubled the prior quarter's claim total. Several vendors report initial access to encryption in 24 hours or less, though the NCC Group and Huntress cases span two to several days.

Hunt value is the Windows endpoint chain. Entry is valid credentials on VPN gateways and RDP (including a FortiGate local-account MFA bypass), help-desk impersonation over Teams, then ShareFinder.ps1, ScreenConnect and the QDoor loader, WinRAR/FileZilla/Rclone staging, Defender tampering, shadow copy deletion, and an encryptor launched with a distinctive -pass= argument, sometimes through regsvr32.exe. Encrypted files get .safepay and each folder gets readme_safepay.txt. NCC Group also saw hypervisors encrypted.

Defender priority: enforce phishing-resistant MFA on every VPN, RDP and local-account path, turn on EDR and Defender tamper protection, and alert on the pre-encryption chain (ShareFinder, archive staging, Defender tamper, service stops). Regsvr32, rundll32, vssadmin, bcdedit, wevtutil, PsExec and AnyDesk are legitimate tools: hunt their arguments and context, never block the binaries.
02

Source Review & Web Hunter Notes

Nine sources were fetched and snapshotted in full (SafePay-Ransomware-Hunt-sources/). First-party incident or malware research carries the weight: NCC Group (incident response, IOCs) and Bitdefender (group profile, hashes). Vendor and aggregator profiles are used for corroboration only.

TierSourceKey findingCarry forward
1NCC Group incident analysis (01)FortiGate local-auth MFA bypass, ScreenConnect service, QDoor soc.dll run via regsvr32 with C2 88.119.167.239:443, 1.exe -pass= -path= -enc=1, shadow/boot commands, hypervisor encryption, full argument table, hashesyes
1Bitdefender group profile (02)Non-RaaS, LockBit Black overlap, ShareFinder, PsExec, WinRAR + FileZilla, 24h pattern, ransom note, SHA256 hashesyes
2ThreatLocker (03)Edge-device and leaked-credential entry, ShareFinder, token impersonation, 10 SHA256 hashes, 4 mutexesyes
2Xcitium ThreatLabs (04)CMSTPLUA UAC bypass, token impersonation, SystemSettingsAdminFlows Defender disable, EDR kill with stolen domain admin rights, MD5/SHA256, IPspartial (aggregates NCC/Bitdefender; EDR-kill claim single-sourced)
2Halcyon threat group page (05)Regsvr32 + CMSTPLUA + SeDebugPrivilege list, security log clearing, hypervisor targeting, 4 C2 IPs, hashes, Q2 2026 reboundpartial
2Red Piranha (06)RDP entry, DllHost.exe CMSTPLUA parent pattern, three IPs, hashpartial
2CloudSEK / Huntress analysis (07)regsvr32.exe /n /i: with -pass=, locker.dll, 8 flags, Teams/Quick Assist lure, 569 victims as of 2026-09-17, detection guidanceyes
2Picus Labs (08)Closed group, CMSTPLUA, regsvr32/rundll32 DLL execution, WinRAR exclusion command, kill listspartial
2Blackpoint Cyber profile PDF (09)Private/semi-private operation, LockBit 3.0 builder lineage, TTP list incl. Regsvr32/Rundll32, T1134.001, T1548.002partial

Decisions and disqualified sources

  • GuidePoint GRIT Q3 2026 report (https://guidepointsecurity.com/blog/ransomware-insights-q3-2026): not cited. The fetched page text contains no SafePay content, so it cannot back any SafePay claim.
  • ransom-db October 2026 analysis (https://www.ransom-db.com/blog/ransomware-threat-landscape-october-2026-analysis): not cited. Returned HTTP 403 to every fetch, nothing could be read or snapshotted.
  • SOCRadar group profile (https://socradar.io/blog/dark-web-profile-safepay-ransomware/): not cited. HTTP 403. Surefire Cyber and Barracuda pages were fetched but yielded no usable SafePay body text and were dropped.
  • The "up roughly 1,300%, 3 to 42 victims in 30 days" figure is NOT stated in any retained source and is not repeated as fact. Retained numbers: 73 claims in June 2025 and 42 in July 2025 (Bitdefender), 569 victims as of 2026-09-17 (CloudSEK), Q2 2026 claims more than doubled quarter on quarter (Halcyon).
  • "Conti-derived TTPs" is not claimed. Sources tie the code to LockBit Black, and some researchers suggest recruits from Conti and Black Basta (CloudSEK, Blackpoint). No Conti-cluster indicators are shipped.
  • No retained page contained instructions directed at an AI agent.
03

Hunt Brief & Attack Chain

Hypotheses are ordered by fidelity. The chain is hands-on-keyboard, so the best hunt window is the staging period before the encryptor runs.

#HypothesisMITREQueryConfidence
H1An encryptor or loader is run with SafePay's -pass= plus path/enc/network flagsT1486, T1218.010Q1, Q2, Q14high
H2Operators map shares with ShareFinder before stagingT1135Q7high
H3Recovery is sabotaged: shadow copies deleted, boot recovery disabledT1490Q3high
H4Defender is disabled through SystemSettingsAdminFlows or Set-MpPreferenceT1562.001Q4medium
H5Data is archived (WinRAR split volumes) and exfiltrated (FileZilla, Rclone)T1560.001, T1048Q8, Q9medium
H6Backup, database and security services are stopped before encryptionT1489Q11medium
H7One stolen account RDPs across many hosts; remote tools appear after a help-desk lureT1021.001, T1219Q12, Q10medium
H8UAC bypass through a COM surrogate; logs cleared afterwardsT1548.002, T1070.001Q6, Q5medium
H9Known SafePay infrastructure is contactedT1071.001Q13high

Attack chain

StepBehavior (source)TelemetryHunt angle
1 AccessValid VPN/RDP credentials; FortiGate local accounts bypassing MFA (NCC, CloudSEK, Halcyon); email bombing then Teams/Quick Assist (CloudSEK, Blackpoint)VPN logs, M365, user logons (Falcon: UserLogon)Native hunts N1, N3, N4; Q12
2 FootholdScreenConnect service, QDoor soc.dll via regsvr32, batch files C:\ProgramData\<digit>.bat (NCC)Process creation and service install (Falcon: ProcessRollup2, CreateService)Q2, Q10, Q14
3 DiscoveryShareFinder.ps1, net view/use (Bitdefender, Xcitium)Process creation (Falcon: ProcessRollup2)Q7
4 Priv-esc / evasionCMSTPLUA UAC bypass, token impersonation with SeDebugPrivilege, Defender disable, EDR kill (Xcitium, Halcyon, CloudSEK)Process creation (Falcon: ProcessRollup2)Q6, Q4, Q11; token abuse is a GAP
5 LateralRDP, SMB admin shares, PsExec, 1.exe pushed to servers (NCC, Bitdefender)User logons, process creation (Falcon: UserLogon, ProcessRollup2)Q12, Q1
6 ExfilWinRAR a -v5g -ed -r ..., FileZilla, Rclone, RDP clipboardProcess creation (Falcon: ProcessRollup2)Q8, Q9
7 ImpactService/process kill, vssadmin, wmic, bcdedit, .safepay, readme_safepay.txt, admin password resets, hypervisor encryptionProcess creation (Falcon: ProcessRollup2)Q11, Q3, Q1; file artifacts and hypervisors via N8, N9
04

Consolidated IOC Table

Prevent was granted only to two hashes that two or more independent sources publish for the SafePay encryptor. Everything else ships as detect or hunt. IPs are perishable and hashes change per build. Onion addresses and attacker email addresses are published by the sources but omitted here as not actionable on endpoints.

TypeValueConfidenceActionContext
sha256a0dc80a37eb7e2716c02a94adc8df9baedec192a77bde31669faed228d9ff526HIGHpreventSafePay encryptor (Bitdefender, ThreatLocker, Xcitium, Halcyon, Red Piranha, CloudSEK)
sha256327b8b61eb446cc4f710771e44484f62b804ae3d262b57a56575053e2df67917HIGHpreventSafePay sample (Bitdefender, ThreatLocker)
sha256921df888aaabcd828a3723f4c9f5fe8b8379c6b7067d16b2ea10152300417eaeMEDdetectsoc.dll QDoor loader from a SafePay intrusion (NCC Group; also listed by ThreatLocker, Halcyon)
sha2566c1d36df94ebe367823e73ba33cfb4f40756a5e8ee1e30e8f0ae55d47e220a6aMEDdetectRunPE bundled DLL (NCC Group, Halcyon)
sha256e79608cf1d6b51324c14bef8883054c1238ed5f080222cc464810e6e14adc346MEDdetectInjected PE (NCC Group only)
sha256 x6fd509df7..., 625abbf8..., 22df7d07..., 12139246..., 241c3b02..., 654c1193..., 96134647... (see grab-csv)MEDdetectThreatLocker sample list, single-sourced
sha107353237350c35d6dc2c8f143b649cd07c71f62bMEDdetect1.exe ransomware binary (NCC Group only)
md5d1f621b82822b544153f6b531e51a611LOWdetectSample MD5 (Xcitium only)
ipv488.119.167.239HIGHdetectQDoor C2 port 443 (NCC Group, Xcitium, Halcyon)
ipv445.91.201.247MEDdetectC2/exfil (Halcyon, Xcitium, Red Piranha)
ipv477.37.49.40MEDdetectC2/exfil (Halcyon, Xcitium, Red Piranha)
ipv480.78.28.63MEDdetectC2/exfil (Halcyon, Xcitium, Red Piranha)
filenamereadme_safepay.txtHIGHhuntRansom note, every vendor
extension.safepayHIGHhuntAppended to encrypted files
filenameShareFinder.ps1 / soc.dll / locker.dll / 1.exeMEDhuntTooling names; generic names, never block
mutexGlobal\DB1D-19B4-5094-D570-9841-E4BC-8ABD-29AA-03BB-84AD-C61B-1355-4FF2-194B-96BD-7E49 (+3 in grab-names)LOWhuntThreatLocker; per-victim mutexes
05

Affected Surface & Telemetry Matrix

SurfaceTelemetryPriorityGap risk
Windows endpoints and serversProcess creation with command line, network connections, user logons (Falcon: ProcessRollup2, NetworkConnectIP4, UserLogon)highLow
VPN / FortiGate / remote gatewaysAppliance auth logs (native)highHigh: outside endpoint telemetry, MFA-bypass config lives here
Active Directory / identityWindows 4624/4625/4720/4724, Identity ProtectionhighMedium
Microsoft 365 (email, Teams)Mail flow, Teams external access audit (native)mediumHigh: lure stage is outside endpoint telemetry
Hypervisors (VMware ESXi and similar)Hypervisor syslog / audit (native)highHigh: no endpoint coverage assumed
Backup infrastructureBackup console audit, VSS statehighMedium
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery / control
Initial AccessT1078, T1133, T1190Valid VPN/RDP creds, FortiGate local-auth MFA bypassN1, Q12, hardening
Initial AccessT1566.004Teams help-desk impersonation after email floodN4
ExecutionT1059.001, T1059.003ShareFinder.ps1, batch files in ProgramDataQ7
PersistenceT1543.003, T1219ScreenConnect service, QDoorQ10, Q14, N5
Privilege EscalationT1548.002CMSTPLUA COM UAC bypassQ6
Privilege EscalationT1134.001Token impersonation, SeDebugPrivilegeGAP (no Falcon event)
Defense EvasionT1218.010 / .011Encryptor and loader through regsvr32 / rundll32Q1, Q2
Defense EvasionT1562.001Defender disabled, EDR/AV killedQ4, Q11
Defense EvasionT1070.001 / .004Log clearing, tool uninstall, self-deleteQ5
DiscoveryT1135ShareFinderQ7
Lateral MovementT1021.001 / .002RDP, SMB admin shares, PsExecQ12, Q1
Collection / ExfilT1560.001, T1048, T1567.002WinRAR, FileZilla, RcloneQ8, Q9
ImpactT1490, T1489, T1486, T1531Shadow/boot, service stop, .safepay, admin password resetsQ3, Q11, Q1, N7
07

Native Audit-Log Hunts

#HuntWhereWhat to look for
N1VPN local-account authFortiGate / gateway logsLocal or LDAP-group logins that skipped MFA; logins from cloud-VPS hostnames (NCC saw a Vultr-hosted vultr-guest device) and default WIN- style hostnames (CloudSEK)
N2RDP from VPN rangesWindows Security 4624 type 10Admin logons to servers users do not normally touch
N3Failed logons for non-existent accountsSecurity 4625 / identity logsSudden failures from a host that just authenticated as admin (CloudSEK)
N4Email flood then external Teams callM365 mail flow, Teams auditSpam burst followed by external-tenant call or Quick Assist session
N5Service installSystem 7045ScreenConnect Client or unexpected user-mode services (NCC)
N6Defender eventsDefender/Operational 5001, 5007Real-time protection disabled or config changed (CloudSEK)
N7Mass admin password resetsSecurity 4723/4724Bulk resets after encryption (T1531, NCC)
N8Ransom note / extension sweepEDR file search, RTRSearch for readme_safepay.txt and *.safepay (no Falcon CQL query is shipped for this, see coverage map)
N9Hypervisor tamperingESXi / hypervisor syslogUnexpected shell or SSH enablement, VM power-off, datastore file changes (NCC, Halcyon)
N10Log clearingSecurity 1102, System 104Cleared logs outside change windows
08

Hunt Queries: CrowdStrike CQL and SentinelOne PowerQuery

Show all queries in
Pick your tenant's cloud first: every "Open in Falcon" button below uses this selection.
Q1 · SafePay encryptor launch flags (-pass= plus path/enc/network)
CONF HIGHFP LOWCOST LOW

Looks for: The encryptor is launched with a mandatory -pass= argument plus -path=, -enc=, -network, -netdrive, -uac or -selfdelete. Sources show it run as an EXE (1.exe -pass= -path= -enc=1) and as a DLL through regsvr32.exe. Matches the argument pattern on any process, so a renamed binary still fires.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The CQL SHA256 column is not projected in this tab; the image path is shown instead.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
  • PowerQuery assumes: The console time picker supplies the 7 day window; the query carries no time predicate.
// HUNT: SafePay encryptor launch flags (-pass= with -path/-enc/-network/-uac)
// MITRE: T1486, T1218.010, T1218.011
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: none known. -pass= alone is common in unrelated tools, so a second SafePay flag is required.
// NOTE: regsvr32.exe and rundll32.exe are legitimate Windows binaries. This matches the argument pattern, never the binary name. Alert only, do not block the binaries.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/\s-pass=\S+/i
| CommandLine=/\s-(path=|enc=|network\b|netdrive\b|uac\b|selfdelete\b)/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, SHA256HashData], limit=200)
Q2 · regsvr32 / rundll32 loading a DLL from a writable path
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: regsvr32.exe or rundll32.exe running a DLL out of ProgramData, Temp, Public or PerfLogs, with the silent /n and /i: switch pattern. NCC Group saw the QDoor soc.dll (DllRegisterServer export) built for regsvr32, and CloudSEK reports the encryptor locker.dll run through regsvr32.exe /n /i:. FP: Software installers and legacy COM registration occasionally use these switches from Temp.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The CQL SHA256 column is not projected in this tab.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
  • PowerQuery assumes: The console time picker supplies the 7 day window.
// HUNT: regsvr32 / rundll32 proxy execution of a DLL in a writable path
// MITRE: T1218.010, T1218.011, T1202
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: installers and legacy COM registration run from Temp
// TUNING: exclude known installer parents (msiexec.exe, vendor setup executables) and signed vendor DLL paths after a 7 day baseline
// NOTE: regsvr32.exe and rundll32.exe are legitimate Windows binaries. Hunt the argument and path context only. Never block the binaries.
#event_simpleName=ProcessRollup2
| FileName=/^(regsvr32|rundll32)\.exe$/i
| CommandLine=/\\(ProgramData|Temp|Users\\Public|PerfLogs)\\\S*\.dll/i
| CommandLine=/(\s.n\s|\s.i:|DllRegisterServer)/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, SHA256HashData], limit=200)
Q3 · Recovery inhibition: shadow copy deletion and boot configuration changes
CONF HIGHFP MEDIUMCOST LOW

Looks for: The encryptor runs vssadmin delete shadows /all /quiet, wmic shadowcopy delete, bcdedit ... bootstatuspolicy ignoreallfailures and bcdedit ... recoveryenabled no. Binaries are stock Windows tools, so the match is on the argument pattern. FP: Backup and imaging software, or an admin pruning shadow copies, can run these. Boot-config changes are rarer.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Shadow copy deletion performed through an API call inside a process that never spawns these binaries is not visible in process-creation telemetry.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
  • PowerQuery assumes: The console time picker supplies the 7 day window.
// HUNT: Shadow copy deletion and boot recovery disabled (SafePay impact stage)
// MITRE: T1490
// CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: backup agents and imaging jobs pruning shadow copies; admins running bcdedit during repair
// TUNING: exclude the backup service account and build/imaging hosts. Do not exclude by binary name.
// NOTE: vssadmin.exe, wmic.exe and bcdedit.exe are legitimate Windows tools. Detect the arguments, never block the binaries.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^(vssadmin|wmic|bcdedit|powershell|pwsh)\.exe$/i
| CommandLine=/(delete\s+shadows|shadowcopy\s+delete|recoveryenabled\s+no|bootstatuspolicy\s+ignoreallfailures|win32_shadowcopy.*delete)/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q4 · Defender tamper via SystemSettingsAdminFlows and Set-MpPreference
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: SafePay disables Microsoft Defender by driving SystemSettingsAdminFlows.exe (a trusted binary) and PowerShell, turning off real-time monitoring, sample submission and the firewall. CloudSEK notes administrators rarely use this path. FP: Admins legitimately set Defender exclusions or toggle protection during software testing.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Defender changes made through registry writes or Group Policy rather than a process are not seen here.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
  • PowerQuery assumes: A literal dollar sign is written as [$] in the regex so it is not read as string interpolation.
// HUNT: Defender protections disabled through SystemSettingsAdminFlows / Set-MpPreference
// MITRE: T1562.001
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: admin troubleshooting; lab and build hosts
// TUNING: exclude named lab hosts and the endpoint-management service account. Keep alerting on server and DC hosts.
#event_simpleName=ProcessRollup2
| (FileName=/^SystemSettingsAdminFlows\.exe$/i or CommandLine=/(Set-MpPreference\s.*-Disable\w+\s+(\$true|1)|advfirewall\s+set\s+\w+\s+state\s+off)/i)
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q5 · Security event log cleared
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Halcyon lists security log clearing and anti-forensics among post-encryption cleanup. This catches wevtutil cl and the PowerShell clear cmdlets. Single-source behavior, so treat as a corroborating signal. FP: Image build pipelines and some admin maintenance clear logs.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Log clearing through the Event Log API from an arbitrary process, or Windows event 1102 itself, is not covered by this process-creation hunt.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
// HUNT: Windows event log clearing (anti-forensics)
// MITRE: T1070.001, T1562.002
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: image build pipelines, scheduled log-rotation scripts
// TUNING: exclude build hosts and the sanctioned log-maintenance account
// NOTE: wevtutil.exe is a legitimate Windows tool. Detect the clear verb, never block the binary.
#event_simpleName=ProcessRollup2
| (FileName=/^wevtutil\.exe$/i CommandLine=/\s(cl|clear-log)\s+\S+/i) or (FileName=/^(powershell|pwsh)\.exe$/i CommandLine=/(Clear-EventLog|Remove-EventLog|ClearLog\()/i)
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q6 · CMSTPLUA-style UAC bypass: dllhost.exe spawning shells or proxy binaries
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: SafePay relaunches itself elevated through the CMSTPLUA COM interface, which surfaces as DllHost.exe as the parent of a script host or proxy-execution binary. Red Piranha and CloudSEK both describe this parent-child pattern. FP: Some enterprise software legitimately uses COM elevation through dllhost.exe.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The query cannot tell a CMSTPLUA elevation from other COM surrogate children; it relies on the baseline exclusions in the tuning note.
  • PowerQuery assumes: On Process Creation events src.process.name is the creating process (dllhost.exe here) and tgt.process.name the new process.
  • PowerQuery assumes: src.process.user holds the account that launched the process.
// HUNT: dllhost.exe parent spawning shells or proxy-execution binaries (COM UAC bypass)
// MITRE: T1548.002
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 (ParentBaseFileName)
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: management agents that elevate through COM surrogates
// TUNING: baseline the child binaries per environment and exclude signed management-agent children
// NOTE: the CMSTPLUA CLSID is not published in the cited sources, so this keys on the parent-child relationship only.
#event_simpleName=ProcessRollup2
| ParentBaseFileName=/^dllhost\.exe$/i
| FileName=/^(cmd|powershell|pwsh|wscript|cscript|mshta|regsvr32|rundll32)\.exe$/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, SHA256HashData], limit=200)
Q7 · ShareFinder network share discovery
CONF HIGHFP LOWCOST LOW

Looks for: ShareFinder.ps1 (Invoke-ShareFinder, PowerTools/PowerView lineage) is SafePay's consistent share-mapping step before staging, reported by ThreatLocker, Bitdefender, Xcitium, Red Piranha and CloudSEK.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: ShareFinder loaded in memory from a script block, with no mention on any command line, is not seen here.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
// HUNT: ShareFinder.ps1 / Invoke-ShareFinder share discovery
// MITRE: T1135, T1059.001
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: red-team and pentest exercises using PowerView
// TUNING: exclude the authorised assessment hosts and accounts for the test window
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(invoke-sharefinder|sharefinder\.ps1)/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q8 · Archive staging with WinRAR split volumes
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Bitdefender, Picus and CloudSEK report WinRAR archiving user data over admin shares with split-volume (-v5g) and long exclusion lists before exfiltration. This matches the a (add) verb with a split-volume switch. FP: Backup and archiving jobs can use split volumes.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Archivers renamed to a different binary name, and archive tools not in the list, are not matched.
  • PowerQuery assumes: src.process.name is the creating process on Process Creation events, which the field model attests.
  • PowerQuery assumes: The console time picker supplies the 7 day window; the query carries no time predicate.
  • PowerQuery assumes: The \\b and \\s regex classes are standard; confirm they behave the same on the tenant's PowerQuery engine.
// HUNT: WinRAR / 7-Zip split-volume archive staging (pre-exfiltration)
// MITRE: T1560.001
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: sanctioned archiving jobs, backup tooling
// TUNING: exclude the backup service account and known archive hosts. Raise priority when the command line contains a UNC path to an admin share.
#event_simpleName=ProcessRollup2
| FileName=/^(winrar|rar|7z|7za|7zg)\.exe$/i
| CommandLine=/\sa\s+(\S+\s+)*-v[0-9]+[kmg]\b/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q9 · Exfiltration tooling: Rclone and FileZilla
CONF MEDIUMFP HIGHCOST LOW

Looks for: SafePay stages data then exfiltrates with FileZilla (often installed, used and uninstalled) or Rclone. Server hosts that have no business running either are the signal. FP: Sanctioned cloud sync, SFTP workflows and admin workstations running FileZilla.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A renamed rclone binary run with a verb other than copy, sync, move or copyto is not matched.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
// HUNT: Rclone / FileZilla execution for data exfiltration
// MITRE: T1048, T1567.002
// CONF: medium  FP: high  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: sanctioned cloud sync, SFTP admin workflows
// TUNING: scope to server hosts and domain controllers first, then exclude named sanctioned transfer hosts and service accounts
#event_simpleName=ProcessRollup2
| (FileName=/^(rclone|filezilla|fzsftp)\.exe$/i or CommandLine=/rclone(\.exe)?"?\s+(copy|sync|move|copyto)\b/i)
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q10 · Remote-access tooling after a help-desk lure (Quick Assist, ScreenConnect, AnyDesk)
CONF LOWFP HIGHCOST LOW

Looks for: SafePay operators install or abuse remote-access tools: ScreenConnect as a service for persistence (NCC Group), AnyDesk (Halcyon), and Quick Assist after email-bombing and Teams help-desk impersonation (CloudSEK, Blackpoint). The tools are legitimate, so this is an inventory-and-baseline hunt, not an alert. FP: Sanctioned RMM and help-desk sessions are common.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Remote-access tools renamed or run from a different binary name are not inventoried.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
  • PowerQuery assumes: min and max over event.time return the first and last execution time.
// HUNT: Remote-access tool execution inventory (Quick Assist / ScreenConnect / AnyDesk)
// MITRE: T1219, T1133
// CONF: low  FP: high  COST: low
// REQUIRES: ProcessRollup2
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: sanctioned RMM, help-desk sessions
// TUNING: exclude the sanctioned RMM vendor and fleet. Investigate first-seen tools on servers and any use following a burst of inbound email or an external Teams call.
// NOTE: these are legitimate products. Hunt, never block on the binary name.
#event_simpleName=ProcessRollup2
| FileName=/^(quickassist|anydesk|screenconnect\.clientservice|screenconnect\.windowsclient)\.exe$/i
| groupBy([ComputerName, UserName, FileName], function=[count(as=Execs), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)], limit=20000)
| sort(FirstSeen, order=desc, limit=200)
Q11 · Security, backup and database service stops before encryption
CONF MEDIUMFP HIGHCOST LOW

Looks for: The encryptor stops VSS, SQL, Veeam, backup and Sophos services and kills database, mail and Office processes. Xcitium also reports operators uninstalling or killing EDR agents with stolen domain admin rights (single source). Matches stop and disable verbs against those service names. FP: Patch windows, backup jobs and maintenance scripts stop these services routinely.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Service stops issued through the Service Control Manager API or WMI without spawning these binaries are not visible.
  • PowerQuery assumes: src.process.user holds the account that launched the process on Process Creation events.
// HUNT: Stop or disable of backup, database and security services (pre-encryption)
// MITRE: T1489, T1562.001
// CONF: medium  FP: high  COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// LOOKBACK: 7d (set with the console time picker)
// FALSE POSITIVES: patch windows, backup jobs, maintenance scripts
// TUNING: exclude change-window hosts and the patching/backup service accounts. Prioritise matches that touch several of these services within minutes.
#event_simpleName=ProcessRollup2
| FileName=/^(net|net1|sc|powershell|pwsh)\.exe$/i
| CommandLine=/(\sstop\s|stop-service|start=\s*disabled)/i
| CommandLine=/(vss|sophos|veeam|backup|gxvss|sqlsvc|msexchange|mssql|sense|windefend|csagent)/i
| table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
Q12 · RDP fan-out: one account to many hosts
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: SafePay moves by RDP and SMB admin shares with stolen domain credentials, and pushes the encryptor to many servers within hours. One account with interactive RDP logons (LogonType 10) to four or more distinct hosts is the pattern. FP: Jump-host users, admins and monitoring accounts.

Validation: static-reviewedEquivalence: approximate-analyticProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Source IP addresses are not collected: src.endpoint.ip.address is documented but unattested. CACHED_REMOTE_INTERACTIVE logons are not counted.
  • PowerQuery assumes: event.login.type value REMOTE_INTERACTIVE corresponds to CQL LogonType 10.
  • PowerQuery assumes: agent.uuid is populated on Login events and identifies the destination endpoint.
  • PowerQuery assumes: Machine accounts are excluded by a trailing dollar sign in the user name.
// HUNT: One account RDP logon to many distinct hosts
// MITRE: T1021.001, T1078
// CONF: medium  FP: medium  COST: medium
// REQUIRES: UserLogon (LogonType 10)
// LOOKBACK: 24h (set with the console time picker)
// FALSE POSITIVES: sanctioned admins, jump hosts, monitoring accounts
// TUNING: exclude named admin accounts and PAM jump hosts, then raise the DistinctHosts threshold to fit your baseline
#event_simpleName=UserLogon
| LogonType=10
| UserName!=/\$$/
| groupBy([UserName], function=[count(aid, distinct=true, as=DistinctHosts), count(as=Logons), collect(RemoteAddressIP4, limit=10), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)], limit=20000)
| DistinctHosts >= 4
| sort(DistinctHosts, order=desc, limit=200)
Q13 · Connections to reported SafePay C2 and exfiltration IPs
CONF HIGHFP LOWCOST LOW

Looks for: Outbound connections to the four IPs reported by Halcyon, with three also in Xcitium and Red Piranha and 88.119.167.239 documented by NCC Group as the QDoor C2 on port 443. Infrastructure is perishable, so confirm each hit with process context.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Retention of IP Connect events in the data lake may be shorter than 30d on some tenants.
  • PowerQuery assumes: On IP Connect events the acting process is src.process.*.
  • PowerQuery assumes: src.process.user holds the account that owns the connecting process.
// HUNT: Outbound connections to reported SafePay infrastructure
// MITRE: T1071.001, T1041
// CONF: high  FP: low  COST: low
// REQUIRES: NetworkConnectIP4
// LOOKBACK: 30d (set with the console time picker)
// FALSE POSITIVES: IP reassignment by hosting providers over time
// TUNING: confirm the initiating process and timing before escalating. Expire stale hits after 6 months.
#event_simpleName=NetworkConnectIP4
| in(field=RemoteAddressIP4, values=["45.91.201.247", "77.37.49.40", "80.78.28.63", "88.119.167.239"])
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort], limit=200)
Q14 · Reported SafePay file hashes (encryptor, QDoor loader, components)
CONF HIGHFP LOWCOST LOW

Looks for: SHA256 matches against the 12 hashes published by ThreatLocker, Bitdefender, NCC Group, Halcyon and CloudSEK. Run in hunt mode over a 90 day window first; hashes churn between builds so a miss is not clearance.

Validation: static-reviewedEquivalence: telemetry-gapProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Process-creation image hashes are not matched in this tab, so a SafePay binary that ran without a file write or module load event in the window is missed. Hunt it on the CQL tab, or use the SentinelOne threat and hash-reputation views.
  • PowerQuery assumes: File and module events carry SHA256 on this tenant; hashes are lowercase hex as stored by the agent.
  • PowerQuery assumes: Retention in the data lake may be shorter than the 90 day CQL window.
// HUNT: SafePay published SHA256 hashes
// MITRE: T1486, T1204.002
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 / PeFileWritten / NewExecutableWritten
// LOOKBACK: 90d (set with the console time picker)
// FALSE POSITIVES: none expected for exact SHA256 matches
// TUNING: none required. A miss is not clearance because hashes change per build.
#event_simpleName=/^(ProcessRollup2|PeFileWritten|NewExecutableWritten)$/
| in(field=SHA256HashData, values=["a0dc80a37eb7e2716c02a94adc8df9baedec192a77bde31669faed228d9ff526", "327b8b61eb446cc4f710771e44484f62b804ae3d262b57a56575053e2df67917", "fd509df74a8d6a9e96762337efd46280ebf8d154c6c5dfbac7b3e8f7bb61f191", "625abbf876f256662f33a88c122bf787edf74b882c35adbd61562b5bd1b2ac27", "921df888aaabcd828a3723f4c9f5fe8b8379c6b7067d16b2ea10152300417eae", "22df7d07369d206f8d5d02cf6d365e39dd9f3b5c454a8833d0017f4cf9c35177", "12139246b8c5232d6d074df37acddc20f0bc233e42ed8eb00dfe2af5d3de3275", "241c3b02a8e7d5a2b9c99574c28200df2a0f8c8bd7ba4d262e6aa8ed1211ba1f", "654c11935448b3229434ec7d9d165a5f135ae4735d35700cffcb3b84f6a0fbc3", "961346470d15d7795c5e35bc90c17d293fba7a8b811f8f5c26a3dc7c971cdc4e", "6c1d36df94ebe367823e73ba33cfb4f40756a5e8ee1e30e8f0ae55d47e220a6a", "e79608cf1d6b51324c14bef8883054c1238ed5f080222cc464810e6e14adc346"])
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, SHA256HashData], limit=200)
09

Detection Rules by Platform

All IOA candidates ship as Detect. The behaviors match legitimate Windows tools, so none are recommended for Prevent. Promote only after a clean baseline.

CrowdStrike: Custom IOA

IOAPatternExclusionsPath
SafePay encryptor flagsProcess CommandLine matches \s-pass=\S+ and one of -path=, -enc=, -network, -netdrive, -uac, -selfdelete (Q1)None expectedDetect only
Recovery inhibitionvssadmin / wmic / bcdedit arguments in Q3Backup service account, imaging hostsDetect only (legitimate tools)
ShareFinderCommandLine contains Invoke-ShareFinder or ShareFinder.ps1 (Q7)Authorised assessment hostsDetect
Defender tamperSystemSettingsAdminFlows.exe or Set-MpPreference -Disable* (Q4)Lab hostsDetect
Falcon IOC Management: only the two multi-source SHA256 hashes carry prevent. Every other indicator is detect.

SentinelOne: custom detection rules

RuleSource queryRun asNotes
SafePay encryptor flagsQ1, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written
Recovery inhibitionQ3, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written
ShareFinderQ7, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written
Defender tamperQ4, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written

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

10

Machine-Readable IOC Appendix

Grouped IOC Quick-Copy

One-click blocks. Every atomic indicator in the CSV traces to a saved source snapshot. Only the two multi-source hashes are set to prevent.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,a0dc80a37eb7e2716c02a94adc8df9baedec192a77bde31669faed228d9ff526,prevent,critical,2027-10-08,SafePay encryptor sample,campaign:SafePay
sha256,327b8b61eb446cc4f710771e44484f62b804ae3d262b57a56575053e2df67917,prevent,high,2027-10-08,SafePay sample,campaign:SafePay
sha256,fd509df74a8d6a9e96762337efd46280ebf8d154c6c5dfbac7b3e8f7bb61f191,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,625abbf876f256662f33a88c122bf787edf74b882c35adbd61562b5bd1b2ac27,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,921df888aaabcd828a3723f4c9f5fe8b8379c6b7067d16b2ea10152300417eae,detect,high,2027-04-08,soc.dll QDoor loader (SafePay intrusion),campaign:SafePay
sha256,22df7d07369d206f8d5d02cf6d365e39dd9f3b5c454a8833d0017f4cf9c35177,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,12139246b8c5232d6d074df37acddc20f0bc233e42ed8eb00dfe2af5d3de3275,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,241c3b02a8e7d5a2b9c99574c28200df2a0f8c8bd7ba4d262e6aa8ed1211ba1f,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,654c11935448b3229434ec7d9d165a5f135ae4735d35700cffcb3b84f6a0fbc3,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,961346470d15d7795c5e35bc90c17d293fba7a8b811f8f5c26a3dc7c971cdc4e,detect,medium,2027-04-08,SafePay sample (ThreatLocker),campaign:SafePay
sha256,6c1d36df94ebe367823e73ba33cfb4f40756a5e8ee1e30e8f0ae55d47e220a6a,detect,medium,2027-04-08,RunPE bundled DLL (SafePay intrusion),campaign:SafePay
sha256,e79608cf1d6b51324c14bef8883054c1238ed5f080222cc464810e6e14adc346,detect,medium,2027-04-08,Injected PE (SafePay intrusion),campaign:SafePay
sha1,07353237350c35d6dc2c8f143b649cd07c71f62b,detect,medium,2027-04-08,SafePay 1.exe ransomware binary,campaign:SafePay
md5,d1f621b82822b544153f6b531e51a611,detect,low,2027-04-08,SafePay sample MD5,campaign:SafePay
ipv4,88.119.167.239,detect,high,2027-01-08,SafePay reported C2 or exfil server,campaign:SafePay
ipv4,45.91.201.247,detect,medium,2027-01-08,SafePay reported C2 or exfil server,campaign:SafePay
ipv4,77.37.49.40,detect,medium,2027-01-08,SafePay reported C2 or exfil server,campaign:SafePay
ipv4,80.78.28.63,detect,medium,2027-01-08,SafePay reported C2 or exfil server,campaign:SafePay
SentinelOne IOC importnot included

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

Behavioral Signaturesdetection logic
regsvr32.exe / rundll32.exe / any process: CommandLine has -pass= plus -path= | -enc= | -network | -netdrive | -uac | -selfdelete
regsvr32.exe /n /i: with a DLL in ProgramData, Temp, Public (legitimate binary: hunt the arguments only)
vssadmin delete shadows | wmic shadowcopy delete | bcdedit recoveryenabled no | bootstatuspolicy ignoreallfailures
SystemSettingsAdminFlows.exe or Set-MpPreference -Disable* before encryption
DllHost.exe as parent of cmd / powershell / regsvr32 / rundll32 (COM UAC bypass)
Invoke-ShareFinder / ShareFinder.ps1 in PowerShell command lines
WinRAR a -v5g ... against \\host\C$\Users, then FileZilla or Rclone, then removal of the tool
net/sc stop of vss, sql, veeam, backup, sophos services in a short burst
One account RDP (LogonType 10) to 4+ distinct hosts in 24h
wevtutil cl Security / Clear-EventLog outside change windows
Files named readme_safepay.txt, extension .safepay
Named Tooling, Files and Mutexeshunt · process / file
readme_safepay.txt          # ransom note
*.safepay                   # encrypted file extension
ShareFinder.ps1             # share discovery (PowerTools / PowerView lineage)
soc.dll                     # QDoor loader, DllRegisterServer export
locker.dll                  # encryptor DLL run via regsvr32 (CloudSEK / Huntress)
1.exe                       # encryptor pushed to servers (NCC Group)
C:\ProgramData\<digit>.bat  # operator batch files
SystemSettingsAdminFlows.exe  # abused to disable Defender (legitimate binary)
WinRAR.exe, 7-Zip, FileZilla, rclone.exe  # staging and exfil (hunt, do not block by name)
ScreenConnect Client service  # persistence (NCC Group)
Global\DB1D-19B4-5094-D570-9841-E4BC-8ABD-29AA-03BB-84AD-C61B-1355-4FF2-194B-96BD-7E49
Global\347F-7B6B-6AFB-3C55-2602-369D-65B9-58A0-16F1-0F42-35DA-0B37-52C3-293C-8975-CAB4
Global\622D-BA6A-4BE9-5D15-5C84-898C-1760-4BAF-2BB1-D7D1-389D-6C01-AAFC-1645-BB6E-DC88
Global\A8D1-50A2-679B-3D55-D639-9810-8679-7409-02EC-EF50-EA87-5641-0086-74B7-A14E-EE4C
Defender / RDP Auditread-only checks
# Verify Defender tamper protection and ASR state (read-only)
Get-MpComputerStatus | Select-Object IsTamperProtected, RealTimeProtectionEnabled
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions
# Remote access exposure
Get-NetFirewallRule -DisplayName "Remote Desktop*" | Select-Object DisplayName, Enabled, Profile
# VPN: confirm no local or LDAP group bypasses MFA (gateway console)
11

Detection Validation Gates

GateRequirementEvidence
1 · Telemetry readyProcess creation with command line, user logons and network connections flowing (Falcon: ProcessRollup2, UserLogon, NetworkConnectIP4); VPN, M365 and hypervisor logs forwarded to a log store7 day event volume per source
2 · Benign baselineRun Q1 to Q14 in hunt mode for 7 days; catalogue sanctioned RMM, Rclone/FileZilla users, backup accounts, patch windowsPer-query exclusion list
3 · Positive testsIn a lab, run a harmless binary with -pass=x -path=C:\test, vssadmin list shadows equivalents, a test Set-MpPreference change on a throwaway VMQ1, Q4 fire as expected
4 · PromotionPromote IOA candidates after 0 unexplained hits over the baseline window; keep all behavior-on-legitimate-tool IOAs at DetectChange record
12

Hardening: Tiered & Deployable

Controls are tied to the access paths in the sources, not to a generic ransomware list. MITRE mitigations in italics; platform guidance named per control.

Immediate · this week · low risk
  • Phishing-resistant MFA on every VPN, RDP gateway and remote-management login, and close the local-account bypass. NCC Group's intrusion came from a FortiGate policy that let local accounts skip MFA. Audit gateway auth policy; no local or LDAP-group path may authenticate without MFA. *M1032, M1042. CIS Controls v8 6.3/6.4; vendor firewall hardening guide.*
  • Remove direct RDP exposure and require NLA. Put RDP behind a gateway or jump host. *M1035, M1042. CIS Windows Benchmark (Remote Desktop Services).*
  • Enable Defender tamper protection and Falcon uninstall/tamper protection, so a signed-in admin cannot disable the sensor or Defender. *M1024, M1038. Microsoft Defender documentation.*
  • Confirm backups are immutable and offline-tested, with backup consoles outside the domain admin trust path. *M1053. CIS Controls v8 11.*
  • Reset and monitor leaked credentials (infostealer and breach exposure). CloudSEK links infostealer infections to 20.5% of SafePay victims with a known domain. *M1027, M1017.*
Near term · 1-4 weeks · pilot first
  • Enable ASR rules in audit, then block the safe ones: advanced ransomware protection and LSASS credential theft move to Block after a clean audit. The PsExec/WMI process-creation rule stays in Audit permanently as a telemetry source, because PsExec is a legitimate admin tool and is never blocked here. *M1040. Microsoft ASR documentation.*
  • Restrict external Teams access and Quick Assist to approved users to blunt the help-desk lure. *M1017, M1042. Microsoft Teams external access guidance.*
  • Application control on servers for unapproved archivers, FileZilla, Rclone and unsanctioned RMM. Control by policy and publisher; do not rely on blocking stock Windows binaries. *M1038. CIS Controls v8 2.5.*
  • LAPS and tiered admin accounts: domain admin credentials must not be usable on workstations or by remote tools. *M1026, M1018. Microsoft privileged access model.*
  • Enable command-line process auditing and larger Security log retention so Q1 to Q12 have data and log clearing is visible. *M1047. CIS Windows Benchmark (Audit Policy).*
Strategic · 1-3 months · architecture
  • Harden the hypervisor tier: dedicated management network, hypervisor lockdown, MFA-backed identity not tied to the production domain. NCC Group and Halcyon report hypervisors encrypted. *M1030, M1032. Hypervisor vendor hardening guide (not a formal benchmark here: best-practice).*
  • Segment so a VPN user cannot reach every share and server, and restrict SMB admin shares between server tiers. *M1030. CIS Controls v8 12.*
  • Ingest VPN, M365 and hypervisor logs into the same hunting platform to close the native-hunt gaps. *M1047.*
13

Deployable Playbooks

PB1 · Defender attack surface reduction (audit first)

Prerequisites: Defender is the active AV, local admin, Intune or GPO not already managing ASR. Reboot required: no. Rollback: set the rule action back to Disabled (0) or remove it with Remove-MpPreference.

# Audit mode first. After a clean 14 days, move ONLY the ransomware and LSASS rules to Block.
# The PsExec/WMI rule stays in Audit (PsExec is a legitimate admin tool).
Add-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c -AttackSurfaceReductionRules_Actions AuditMode   # PsExec and WMI process creation
Add-MpPreference -AttackSurfaceReductionRules_Ids c1db55ab-c21a-4637-bb3f-a12568109d35 -AttackSurfaceReductionRules_Actions AuditMode   # advanced ransomware protection
Add-MpPreference -AttackSurfaceReductionRules_Ids 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 -AttackSurfaceReductionRules_Actions AuditMode   # LSASS credential theft
# Verify
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions
# Rollback
# Remove-MpPreference -AttackSurfaceReductionRules_Ids <rule-guid>

PB2 · Restrict RDP to a jump-host range and require NLA

Prerequisites: confirm the jump-host subnet (the example uses the documentation range 192.0.2.0/24, replace it) and that you have console access. Reboot required: no. Rollback: remove the rule and set UserAuthentication back to its prior value.

# Require Network Level Authentication
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
# Allow RDP only from the jump-host range (replace the example range)
New-NetFirewallRule -DisplayName 'RDP from jump hosts only' -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.0.2.0/24 -Action Allow
Set-NetFirewallRule -DisplayGroup 'Remote Desktop' -Enabled False
# Verify
Get-NetFirewallRule -DisplayName 'RDP from jump hosts only' | Get-NetFirewallAddressFilter
# Rollback
# Remove-NetFirewallRule -DisplayName 'RDP from jump hosts only'; Set-NetFirewallRule -DisplayGroup 'Remote Desktop' -Enabled True

PB3 · Command-line auditing and Security log size

Prerequisites: local admin; storage headroom for a larger Security log. Reboot required: no. Rollback: set ProcessCreationIncludeCmdLine_Enabled to 0 and restore the previous log size.

auditpol /set /subcategory:"Process Creation" /success:enable
New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit' -Name ProcessCreationIncludeCmdLine_Enabled -Value 1 -Type DWord
wevtutil sl Security /ms:1073741824
# Verify
auditpol /get /subcategory:"Process Creation"
wevtutil gl Security
# Rollback
# Set-ItemProperty ... ProcessCreationIncludeCmdLine_Enabled -Value 0; wevtutil sl Security /ms:<previous bytes>

PB4 · Limit external Teams access and Quick Assist

Prerequisites: Teams admin role; business agreement on which partner domains need federation. Reboot required: no. Rollback: set federation back to open and re-add the Quick Assist capability.

# Teams: block unmanaged external federation, then allow-list partners
Set-CsTenantFederationConfiguration -AllowFederatedUsers $false
# Endpoints: remove Quick Assist where it is not sanctioned
Remove-WindowsCapability -Online -Name 'App.Support.QuickAssist~~~~0.0.1.0'
# Verify
Get-CsTenantFederationConfiguration | Select-Object AllowFederatedUsers
Get-WindowsCapability -Online -Name 'App.Support.QuickAssist*'
# Rollback
# Set-CsTenantFederationConfiguration -AllowFederatedUsers $true
# Add-WindowsCapability -Online -Name 'App.Support.QuickAssist~~~~0.0.1.0'

Post-deployment spot-check: re-run Q1 to Q12 over 7 days and confirm the pre-encryption chain would still alert after the ASR rules move to Block.

14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain affected hosts in Falcon but keep them powered on for memory capture; terminate VPN and RDP sessions; disable compromised and recently reset admin accountsSOC / IR leadContainment timestamps; session kill records
Isolate: by platformCrowdStrike: network-contain the host. SentinelOne: network quarantine (Disconnect from Network; confirm the label in your console version). Keep the host powered on for memory capture on all of them.SOC / IR leadContainment timestamps; session kill records
EradicateRemove ScreenConnect/QDoor persistence and operator batch files; reset all credentials the operator touched and revoke tokens (valid credentials survive a rebuild); close the VPN MFA gap; remove staged archives and exfil toolsIR / IT opsCredential rotation log; service and file removal list
RecoverRebuild affected servers and hypervisors from known-good images; restore from immutable backups; validate before reconnecting; re-enable services in orderIT opsRestore test results; integrity checks
PreserveCollect VPN logs, Defender operational logs and command history before reimagingDFIREvidence hash list
NotifyEngage legal and regulators per double-extortion data-theft obligations; check downstream customers if you are a providerLegal / leadershipNotification timeline
Post-incidentPromote validated detections to IOA; run Q1 to Q14 estate-wide; fix the access path that was usedDetection engLessons-learned record
15

Detection Coverage Map

Technique / behaviorCQLIOACrowdStrike coverageSentinelOne
Encryptor launch flags (T1486, T1218)Q1, Q2YesGoodGood, with assumptions
Recovery inhibition (T1490)Q3Yes (Detect)GoodGood, with assumptions
Defender tamper (T1562.001)Q4YesPartialPartial: same limit as CrowdStrike
Log clearing (T1070.001)Q5NoPartialPartial: same limit as CrowdStrike
COM UAC bypass (T1548.002)Q6NoPartial: CLSID not sourcedPartial: same limit as CrowdStrike
Share discovery (T1135)Q7YesGoodGood, with assumptions
Archive staging (T1560.001)Q8NoPartialPartial: same limit as CrowdStrike
Exfil tooling (T1048)Q9NoPartial: sanctioned-use overlapPartial: same limit as CrowdStrike
Remote tools (T1219)Q10NoPartialPartial: same limit as CrowdStrike
Service and EDR kill (T1489)Q11NoPartial: EDR-kill is single-sourcedPartial: same limit as CrowdStrike
RDP fan-out (T1021.001)Q12NoPartialPartial: Q12 approximate
Known C2 / hashesQ13, Q14IOC MgmtGood, perishablePartial: Q14 telemetry gap
Token impersonation / SeDebugPrivilege (T1134.001)NoneNoGAP: no Falcon eventGAP
Ransom note and .safepay file writesNoneNoGAP: no CQL shipped, use N8 and Falcon ransomware preventionGAP
Hypervisor encryptionNoneNoGAP: native hypervisor logsGAP
VPN MFA bypass, Teams lureNoneNoGAP: outside Falcon, N1/N4GAP

Validation gates (s11) apply: baseline for 7 days before promoting any IOA.

16

Hunt Summary Ticket

TITLE:        SafePay Ransomware: Windows Endpoint Hunt (VPN/RDP credential entry to encryption)
SEVERITY:     HIGH (active double-extortion operation)
SCOPE:        Windows endpoints and servers, AD/identity, VPN gateways, M365 Teams, hypervisors
HYPOTHESIS:   An operator with valid VPN/RDP credentials is staging (ShareFinder, archive, exfil,
              Defender tamper) ahead of an encryptor launched with -pass= plus path/enc flags.
QUERIES RUN:  Q1 launch flags | Q2 regsvr32 DLL | Q3 recovery | Q4 Defender | Q5 log clear |
              Q6 COM UAC | Q7 ShareFinder | Q8 archive | Q9 exfil | Q10 RMM | Q11 svc stop |
              Q12 RDP fan-out | Q13 C2 IPs | Q14 hashes  (+10 native hunts)
DATA SOURCES: Process creation, user logons, network connections and PE file writes (Falcon: ProcessRollup2, UserLogon, NetworkConnectIP4, PeFileWritten); VPN, M365,
              hypervisor logs (native)
FINDINGS:     <pending analyst execution>
GAPS:         Token impersonation, ransom-note file writes, hypervisor and VPN/Teams stages have
              no endpoint query. The 1,300% growth claim in the request is unverified.
ACTIONS:      MFA on all remote paths incl. local accounts; tamper protection; ASR audit-to-block;
              promote Q1, Q3, Q7 to Custom IOA (Detect only); prevent only the 2 multi-source hashes.
OWNER:        HuntPack
VERSION:      v0.3 (Draft) - 2026-10-09
17

Changelog

v0.32026-10-09Added SentinelOne detection rules (s9), an isolation row (s14) and a SentinelOne coverage column (s15). The query heading and the telemetry wording now name every platform rather than only CrowdStrike. The queries are unchanged; the notes on Q1, Q2 and Q14 were reworded.
v0.22026-10-08Added a language switch above the queries (CrowdStrike CQL or SentinelOne PowerQuery for every card at once) and a SentinelOne console box. Query content unchanged.
v0.12026-10-08Initial HuntPack: 14 CQL queries, 10 native hunts, 4 IOA candidates, tiered hardening, 4 deployable playbooks, 9 source snapshots. Two multi-source hashes set to prevent; all other indicators detect or hunt. SentinelOne PowerQuery tabs added to Q1-Q14: SIEM Query Rosetta release 0.1.0 (public-beta; static-reviewed translations).
18

References

TierSourceUsed forAccessed
1NCC Group: Weak Passwords Led to (SafePay) RansomwareIncident, IOCs, arguments, commands2026-10-08
1Bitdefender: SafePay, a Non-RaaS GroupProfile, TTPs, hashes2026-10-08
2ThreatLocker: SafePay ransomware explainedHashes, mutexes, TTPs2026-10-08
2Xcitium ThreatLabs: SafePay technical analysisCMSTPLUA, IPs, TTPs2026-10-08
2Halcyon: SafePay threat groupTTP list, IPs, 2026 activity2026-10-08
2Red Piranha: What is SafePay RansomwareDllHost pattern, IPs2026-10-08
2CloudSEK: SafePay Ransomware guideHuntress case, regsvr32 pattern, victim counts2026-10-08
2Picus Labs: Inside SafePayCommand lines, kill lists2026-10-08
2Blackpoint Cyber: SafePay threat profileATT&CK list, lineage2026-10-08

HuntPack v0.3 (Draft) · SafePay Ransomware · Generated 2026-10-09 · Defensive use only. No exploit code or encryptor internals. Contains no victim, company or environment-specific identifiers. Validate field names and tune exclusions in your own tenant before promoting any query to alerting.