Cruciferra — Crypter-as-a-Service with EDR Blinding

Hunting the loader, not the customer: BYOVD EDR termination, indirect syscalls, API/IAT unhooking, COM Elevation Moniker UAC bypass, and a tweaked Process Ghosting chain shared across a dozen unrelated commodity-malware crews.
Threat
Cruciferra (crypter service)
Severity
ACTIVE MaaS
Type
Crypter / loader · defense evasion
Initial Access
Email → archive → EXE+DLL side-load
Version
v0.1 · 2026-07-29
Author
HuntPack
Confidence
High (single Tier-1 primary, 3 corroborating)
01

Executive Summary

Cruciferra is a subscription crypter, not a campaign. Proofpoint published the authoritative technical analysis on 2026-07-20. The service has been sold on underground forums (advertised on exploit[.]in as "the underground's most lethal crypter") since autumn 2025 at $450 to $2,000 USD per month, tiered by feature set. It is written in Mono, it is used by multiple unrelated criminal crews, and its only job is to get somebody else's payload to run without an EDR ever getting a clean look at it.

The attacker objective is visibility denial. Before a single byte of payload touches memory, Cruciferra reads a clean ntdll.dll off disk to build indirect syscall stubs, repairs the Import Address Table, unhooks user-mode API hooks, and — where it can — drops a vulnerable signed kernel driver and uses DeviceIoControl to terminate the security agent's own processes. It then escalates via the COM Elevation Moniker if it is not already elevated, writes a Run-key, suppresses Windows toast and balloon notifications so the user never sees a warning, decodes the payload out of the PE .reloc section with a custom Base16 alphabet, and executes it through a Process Ghosting variant that additionally patches ZwQueryVirtualMemory and neuters NtManageHotPatch so the ghosted image cannot be validated.

The highest-value defensive angle is the driver. Every other stage of this chain is deliberately engineered to be unobservable from user mode. The BYOVD stage is not: loading a kernel driver is a kernel-mediated, logged, and blockable event, and Cruciferra ships a small, enumerable set of eight vulnerable helper drivers. Hunt and block there first, then work outward to the artefacts the crypter cannot hide because they are persisted by the OS on its behalf: the Run value named putty, the notification-suppression registry trio, and the archive-borne EXE+DLL side-loading pair.

Payloads seen behind it: Agent Tesla, AsyncRAT / DCRAT, DarkCloud Stealer, Formbook, XLoader, PhantomStealer, Remcos, Snake Keylogger, ValleyRAT (Winos4.0), XWorm, and zgRAT. Because the crypter is shared, a Cruciferra hit tells you very little about who is in the environment and a great deal about what will happen next: a commodity RAT or stealer with credential-theft and follow-on-access intent.

Scope note. One named customer, the Chinese-linked actor TA4922, ran tax-themed lures against Indian taxpayers between April and June 2026 (tracked elsewhere as Operation DragonReturn, and already covered by OperationDragonReturn-Hunt in this library). That campaign is referenced here only as evidence of the service's customer base. Everything in this pack targets Cruciferra's own loader behaviours so it fires regardless of which crew bought the build or what lure they used.

Defender priority: deploy the Microsoft vulnerable-driver blocklist and ASR rule 56a863a9-875e-4185-98a7-b882c64b5ce5 ("Block abuse of exploited vulnerable signed drivers") in Block mode today, and hunt Q1/Q2/Q3 for the eight named helper drivers across the last 90 days. If Cruciferra has already run with the BYOVD stage successful, your EDR telemetry for that host is untrustworthy for the window in question and the host must be triaged from kernel-side and network evidence, not from agent process telemetry.

02

Source Review & Web Hunter Notes

TierSourceKey findingCarry forward
TIER 1Proofpoint Threat Insight, 2026-07-20 — "Unpacking Cruciferra"Full technical analysis: DLL side-loading entry, decoy exports, console-window hiding, function unhooking, BYOVD driver table with 8 SHA256 hashes, 9 named indirect syscalls, IAT repair, notification-suppression registry keys, COM Elevation Moniker UAC bypass, Run value putty, .reloc payload storage with custom Base16 alphabet, 90+ polymorphic crypto routines, Process Ghosting variant with ZwQueryVirtualMemory patching and NtManageHotPatch neutering, payload family list, and the campaign IOC table.Yes — every atomic IOC and every behavioural signature in this pack traces to this source.
TIER 2The Hacker News, 2026-07-27Independent restatement of the Proofpoint findings; adds the explicit link that the TA4922 activity is the same set Seqrite Labs tracks as Operation DragonReturn, and confirms the SSA-themed XWorm/AdaptixC2 and bed-bug/guest-complaint zgRAT campaigns.Partial — used for the scoping decision and the cross-link to the existing DragonReturn pack. No unique IOCs.
TIER 2eSecurity PlanetCorroborates pricing, the emergence date, the evasion stack, and the payload families. Adds no primary telemetry.Partial — corroboration only.
TIER 2SecurityOnline / Daily CyberSecurity, 2026-07-27Corroborates GoFlyDrv.sys being the driver used to terminate security processes; contributes the useful defender framing that the PE File Version Information fields (random-word Copyright / Product / Description) are a hunting handle.Partial — the PE-metadata hunt in §7 is derived from this plus the Proofpoint "Tracking Cruciferra" section.

Research decisions

  • Scoped to the crypter, deliberately. The Proofpoint IOC table is dominated by TA4922 payload URLs on low-cost TLDs (.gu.cc, .love, .live) and Tax-Number archive hashes. Those are DragonReturn campaign artefacts and are excluded here to avoid duplicating an existing pack and to keep this pack useful against the other Cruciferra customers.
  • Infrastructure IOCs kept are the non-TA4922 ones only: the XWorm and zgRAT C2s and the two staging hosts from the SSA and guest-complaint campaigns. Both staging hosts look like compromised legitimate sites (one serves out of a WordPress wp-includes path), so they ship as hunt and not prevent.
  • Perishability. Proofpoint observed a freshly packed sample uploaded to VirusTotal every few minutes on 2026-07-09. Sample hashes are therefore near-worthless as a standing block; the driver hashes and the behavioural signatures are the durable half of this pack and should outlive the infrastructure by a year or more.
  • No exploit or offensive detail is reproduced. The syscall and ghosting sequence is described only to the depth needed to name the telemetry it leaves behind.

Source snapshots for every citation are saved alongside this pack in Cruciferra-Crypter-Hunt-sources/. Every atomic indicator in §10 was traced back to that saved text mechanically before publication.

03

Hunt Brief & Attack Chain

Attack chain

#StepTelemetryHunt angle
1Email lure with a link or PDF-embedded link; occasionally a zipped LNK. Themes: government tax authority, social-security correspondence, guest complaint.Mail gateway, proxy, DnsRequestNative mail-gateway hunt (§7 N1). Not CQL-addressable on the endpoint alone.
2Victim downloads a ZIP / RAR / VHD containing a legitimate signed executable plus a malicious DLL.ZipFileWritten, PeFileWritten, browser child processesQ4 — process executing out of an archive-extraction or Downloads path with an adjacent DLL.
3User runs the EXE; the paired DLL (containing Cruciferra, with hundreds to thousands of decoy exports) is side-loaded and the EXE calls into it.ProcessRollup2, PeFileWrittenQ4. Module-load telemetry is not a queryable Falcon event, so the side-load is inferred from the co-located pair and the launch path.
4Environment checks (sandbox / analyst VM), console-window hiding via a retry loop that walks the process tree and calls ShowWindow(SW_HIDE) on ConsoleWindowClass windows.None reliableGAP — user-mode-only, no sensor-visible artefact. Documented in §15.
5API and IAT unhooking; indirect syscalls built from a clean on-disk ntdll.dll.None from user modeGAP — this is the stage designed to blind the sensor. Detect it indirectly by the absence of expected telemetry around a confirmed Q1/Q2 driver hit.
6BYOVD: a vulnerable signed helper driver is dropped and loaded; DeviceIoControl IOCTLs terminate security processes found by name in the process list. GoFlyDrv.sys is the one Proofpoint calls out for this.PeFileWritten, NewExecutableWritten, DriverLoad, Windows Event ID 3033/3063, Sysmon EID 6Q1, Q2, Q3 — the highest-fidelity detection in this pack.
7If not already elevated, UAC bypass via the COM Elevation Moniker.ProcessRollup2 with dllhost.exe parentQ7.
8Persistence: Software\Microsoft\Windows\CurrentVersion\Run value named putty.AsepValueUpdateQ5 — narrow, near-zero-FP, and durable.
9Notification suppression: PushNotifications\ToastEnabled, Explorer\Advanced\Balloon, Explorer\Advanced\ShowInfoTip.RegGenericValueUpdate, AsepValueUpdateQ6 — weak alone, strong as a cluster on one host in one minute.
10Payload decoded from the PE .reloc section using Base16 with a custom alphabet; drivers and payload unpacked into a simple internal file structure with random-word or unreadable filenames.PeFileWritten, NewExecutableWritten into user TempQ8 — extensionless or random-name PE written under AppData\Local\Temp.
11Process Ghosting: temp file marked for pending deletion via NtSetInformationFile, payload written, NtCreateSection with SEC_IMAGE, handle closed so the OS deletes the file while the section survives, suspended process created, section mapped via NtMapViewOfSection, thread context redirected to the payload entry point. Plus ZwQueryVirtualMemory hook patching and NtManageHotPatch neutering.Partial: the staging write in step 10 is visible; the execution itself is engineered not to beQ8 plus §7 N4 (memory-region-without-backing-file sweep). Marked PARTIAL in §15.
12Commodity RAT or stealer runs: keylogging, credential and browser-data theft, C2 beacon (often dynamic DNS or a bare IP on a high port).DnsRequest, NetworkConnectIP4Q9, Q10.

Hunt hypotheses (ordered by fidelity)

#HypothesisMITREFalcon eventsExpected FP sourcesConf
H1A Cruciferra-packed loader has dropped one of eight known vulnerable helper drivers to disk in order to terminate security processes.T1068, T1562.001PeFileWritten, NewExecutableWrittenLegitimate vendor installers for MSI Afterburner (NTIOLib_X64.sys), Lenovo tooling (LnvMSRIO.sys), and Huawei PC Manager (HwOs2Ec.sys).HIGH
H2One of the published Cruciferra driver or loader hashes is present on an endpoint.T1068, T1027.002ProcessRollup2, PeFileWritten, DriverLoad, ImageHashNone — exact-hash match.HIGH
H3A known-vulnerable helper driver was actually loaded into the kernel, meaning the BYOVD stage succeeded and EDR telemetry for that host is suspect.T1068DriverLoadSame vendor tooling as H1, on hosts that legitimately run it.HIGH
H4An executable launched from an archive-extraction or Downloads path side-loaded a co-located DLL.T1574.002, T1204.002ProcessRollup2, PeFileWrittenPortable apps, developer tooling, IT self-service installers run from Downloads.MEDIUM
H5Registry Run persistence was written under the value name putty pointing at something that is not PuTTY.T1547.001AsepValueUpdateA user or admin manually adding a genuine PuTTY autostart (rare — PuTTY does not install one).HIGH
H6Windows notification suppression keys were modified in a short burst on a single host.T1112, T1562.001RegGenericValueUpdate, AsepValueUpdateKiosk/digital-signage build scripts, privacy-hardening GPOs, some VDI gold-image tooling.MEDIUM
H7A process in a user-writable path was spawned by dllhost.exe, consistent with COM Elevation Moniker UAC bypass.T1548.002ProcessRollup2Legitimate COM out-of-process servers; some installer and shell-extension behaviour.MEDIUM
H8An extensionless or random-named PE was staged in AppData\Local\Temp immediately before a short-lived process appeared, consistent with ghost-section staging.T1055, T1140PeFileWritten, NewExecutableWrittenInstaller bootstrappers, update agents, some browser and Office temp handling.MEDIUM
H9An endpoint resolved one of the published Cruciferra-linked C2 or staging hostnames.T1071.001, T1105DnsRequestNone for the C2s; the two staging hosts are likely compromised legitimate sites and may have benign traffic.HIGH
H10A post-crypter RAT is beaconing to the published C2 IP or to dynamic-DNS infrastructure from a process running out of a user-writable path.T1071.001, T1568.002NetworkConnectIP4, DnsRequestDynamic DNS is used legitimately by home-lab, remote-support, and some IoT tooling.MEDIUM
04

Consolidated IOC Table

All values below appear verbatim in the Proofpoint analysis snapshot saved with this pack. TA4922 / Operation DragonReturn campaign infrastructure is deliberately excluded — see the existing OperationDragonReturn-Hunt pack.

BYOVD helper drivers (durable — the core of this pack)

TypeValueConfActionContextExpiry
filename + sha256Core64.sys
17aae57cf6255c7eb169bf62ea67376d9708976eb7831f8cdd0ea38bdcb37dc4
HIGHdetectVulnerable helper driver dropped by Cruciferra for BYOVD EDR tampering.2027-01-29
filename + sha256GoFlyDrv.sys
2fdfdd13a0c548bb68c9d5aa8599a9265d4659da3e237fe7a42ac6ac06b9a06a
HIGHdetectThe driver Proofpoint names as most often abused; used with DeviceIoControl IOCTLs to terminate security processes.2027-01-29
filename + sha256HwOs2Ec.sys
c4e93449453cf67c5d5605bb8f425207a738a242fdb432d720acc32faa74926c
HIGHdetectAlternate BYOVD helper driver. Also ships with legitimate OEM PC-management tooling — validate before blocking.2027-01-29
filename + sha256LnvMSRIO.sys
c5b1e9aafc8f2b4ab05effc00fd43f3114b9ef1d592a086c952793ac4e299809
HIGHdetectAlternate BYOVD helper driver. OEM-adjacent — validate on managed laptop fleets before blocking.2027-01-29
filename + sha256MemoryInformer.sys
7887e919555fb5948c217556ba149392a72982b1bc427d3db779db9dcbf09ee8
HIGHdetectAlternate BYOVD helper driver.2027-01-29
filename + sha256NTIOLib_X64.sys
09bedbf7a41e0f8dabe4f41d331db58373ce15b2e9204540873a1884f38bdde1
HIGHdetectAlternate BYOVD helper driver. Also shipped by overclocking utilities — expect benign hits on engineering and gaming builds.2027-01-29
filename + sha256ProcessMonitorDriver.sys
5b4f59236a9b950bcd5191b35d19125f60cfb9e1a1e1aa2e4f914b6745dde9df
HIGHdetectAlternate BYOVD helper driver.2027-01-29
filename + sha256selfprot.sys
c46e907886e2158cbc453e767183aecf07887b5ac8848f19684451883d69f5f0
HIGHdetectAlternate BYOVD helper driver.2027-01-29

Non-TA4922 Cruciferra infrastructure and samples (perishable)

TypeValueConfActionContextExpiry
sha2563f31aee0948d16f8d64bf6bec69a4331099993e502b11bfc56b2c0112024489dHIGHpreventCruciferra / zgRAT archive from the late-June guest-complaint campaign (photo295825092412.zip).2027-01-29
domaingatuso[.]duckdns[.]orgHIGHdetectXWorm C2 behind a Cruciferra loader (SSA-themed campaign, May 2026).2027-01-29
domain0zbqnac1t4dv2t2wuodv1m[.]comHIGHdetectzgRAT C2 behind a Cruciferra loader (June 2026).2027-01-29
ipv4:port89.34.90.99 : 56001HIGHdetectzgRAT C2 on a non-standard high port. Alert on the IP; treat the port as corroboration only.2027-01-29
domaindigital-magicians[.]comMEDIUMhuntStaged the Cruciferra / zgRAT archive. Presents as a compromised legitimate site — hunt, review, then decide on blocking.2026-10-29
domainalmacensantangel[.]comMEDIUMhuntServed the Cruciferra / XWorm RAR out of a WordPress wp-includes path — almost certainly a compromised legitimate site.2026-10-29

Behavioural indicators (no expiry — these are the pack's real value)

TypeValueConfActionContext
registry valueHKCU\Software\Microsoft\Windows\CurrentVersion\Run → value name puttyHIGHdetectCruciferra's default persistence value name. Genuine PuTTY does not create a Run entry.
registry value...\CurrentVersion\PushNotificationsToastEnabledMEDIUMhuntSuppresses Windows/Defender/SmartScreen toast notifications.
registry value...\CurrentVersion\Explorer\AdvancedBalloon, ShowInfoTipMEDIUMhuntSuppresses classic Security Center balloons and infotips.
PE structurePayload stored in the .reloc section, Base16-encoded with the custom alphabet PQRSTUVWXYZ[\]^_HIGHenrichStrong YARA / reverse-engineering handle for confirming a sample is Cruciferra-packed.
PE metadataRandomly generated Copyright / Product / Description strings of two to four stitched pseudo-words (Proofpoint's example: "2026 Colpoplastric Semipreactical Group")MEDIUMhuntTriage handle for sweeping suspect binaries offline — see §7 N5.
syscall setNtProtectVirtualMemory, NtCreateSection, NtMapViewOfSection, NtCreateTransaction, NtRollbackTransaction, NtOpenKey, NtSetValueKey, NtClose, NtSetInformationFileHIGHenrichThe indirect-syscall stub set resolved from a clean on-disk ntdll. Useful for sandbox and memory-forensics rules, not for EDR queries (that is the point of the technique).
05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
Windows endpoints — kernel driver loadingFalcon DriverLoad; Windows CodeIntegrity/Operational EID 3033 & 3063; Sysmon EID 6CRITICALLow — kernel-mediated and hard for user-mode malware to suppress. This is the surface to invest in.
Windows endpoints — file writes to user-writable pathsPeFileWritten, NewExecutableWritten, ZipFileWrittenHIGHMedium — visible until the BYOVD stage succeeds, after which agent telemetry for the host is suspect.
Windows endpoints — process execution and lineageProcessRollup2, SyntheticProcessRollup2HIGHMedium-high — Process Ghosting is specifically designed so the executing image has no scannable on-disk backing file.
Windows endpoints — autostart and registryAsepValueUpdate, RegGenericValueUpdateHIGHLow — the OS persists these on the malware's behalf, which is why they survive the evasion stack.
Windows endpoints — user-mode API integrityNone available from the sensorMEDIUMGAP — unhooking, IAT repair and indirect syscalls leave no queryable artefact. Compensate with kernel-side controls (HVCI, ELAM, sensor tamper protection) rather than detection.
Network egressDnsRequest, NetworkConnectIP4; proxy and firewall logsHIGHMedium — payload C2 rotates fast; dynamic-DNS and bare-IP-on-high-port patterns are the durable shape.
Email gatewayAttachment and URL verdicts, archive and disk-image handling, PDF link extractionCRITICALMedium — the whole chain starts here and archives/VHDs are the delivery container of choice.
IdentityUserLogon, downstream credential use after a stealer payloadMEDIUMMedium — matters for the second-stage impact, not for detecting the crypter itself.
06

ATT&CK Mapping

TacticTechniqueObserved behaviourQuery / control
Initial AccessT1566.002 — Phishing: Spearphishing LinkTax-authority, social-security, and guest-complaint lures with links in the body or inside a PDF attachment.§7 N1 · §12 mail-gateway controls
ExecutionT1204.002 — User Execution: Malicious FileVictim runs the signed EXE out of an extracted archive.Q4
ExecutionT1106 — Native APIIndirect syscalls resolved from a clean on-disk ntdll copy.GAP — mitigate, do not detect
Defense EvasionT1027.002 — Obfuscated Files: Software PackingThe entire service. 90+ polymorphic crypto routines assembled from Keccak, Feistel, SPECK-128/256, Threefish-256 and ARX components.Q2 · §7 N5
Defense EvasionT1140 — Deobfuscate / Decode Files or InformationPayload decoded from the PE .reloc section using Base16 with a custom alphabet.Q8 · §7 N5
Defense Evasion / Persistence / Priv EscT1574.002 — Hijack Execution Flow: DLL Side-LoadingArchive contains a legitimate EXE plus the Cruciferra DLL; the EXE calls the malicious export.Q4
Defense EvasionT1497 — Virtualization / Sandbox EvasionEnvironment checks plus thousands of decoy exports that never reach the real code.GAP
Defense EvasionT1562.001 — Impair Defenses: Disable or Modify ToolsAPI/IAT unhooking, and BYOVD-driven termination of security processes via DeviceIoControl.Q1 · Q2 · Q3 · §12 ASR + driver blocklist
Privilege EscalationT1068 — Exploitation for Privilege EscalationVulnerable signed kernel driver loaded to gain kernel-level primitives.Q1 · Q2 · Q3
Privilege Escalation / Defense EvasionT1548.002 — Abuse Elevation Control Mechanism: Bypass UACCOM Elevation Moniker used to auto-elevate without a consent prompt.Q7 · §13 playbook 3
PersistenceT1547.001 — Registry Run Keys / Startup FolderCurrentVersion\Run value named putty.Q5
Defense EvasionT1112 — Modify RegistryToastEnabled, Balloon, ShowInfoTip flipped to suppress user-visible warnings.Q6
Defense EvasionT1564.003 — Hide Artifacts: Hidden WindowPersistent thread loop hides ConsoleWindowClass windows across the process tree.GAP
Defense EvasionT1055 — Process Injection (Process Ghosting; closest published sub-technique is T1055.013, Process Doppelgänging)Pending-delete temp file, SEC_IMAGE section, suspended host process, mapped ghost section, redirected thread context — plus ZwQueryVirtualMemory patching and NtManageHotPatch neutering.Q8 · §7 N4 · PARTIAL
Defense EvasionT1553.005 — Subvert Trust Controls: Mark-of-the-Web BypassVHD delivery in the SSA-themed campaign strips MOTW from the contents.§13 playbook 5
Command and ControlT1071.001 · T1568.002 — Application Layer Protocol / Dynamic Resolution: DNSPayload C2 over HTTP(S) and dynamic-DNS hostnames, or a bare IP on a non-standard high port.Q9 · Q10
Command and ControlT1105 — Ingress Tool TransferSome builds download the payload from a staging server rather than carrying it in .reloc; the LNK variant pulls a ZIP after fingerprinting.Q9 · Q10
07

Native Audit-Log Hunts (non-CQL)

These cover the surfaces Falcon telemetry does not reach, and give you a second, independent opinion on the BYOVD stage — which matters precisely because the BYOVD stage is aimed at the EDR agent.

N1 · Mail gateway — archive and disk-image delivery

Search the last 90 days for inbound mail carrying, or linking to, .zip, .rar, .7z, .vhd, .vhdx, .img or .iso where the archive contains an executable, and for PDF attachments containing outbound links to newly registered or low-cost TLDs. Pivot on the three known lure themes: tax authority, social security correspondence, and guest / customer complaint with "evidence" links.

N2 · Windows Code Integrity log — driver load attempts

Read Microsoft-Windows-CodeIntegrity/Operational: EID 3033 (a driver failed validation) and EID 3063 (a driver was blocked by policy). If the Microsoft vulnerable-driver blocklist is enabled, a blocked Cruciferra BYOVD attempt lands here even when the endpoint agent has already been degraded.

Get-WinEvent -FilterHashtable @{
    LogName = 'Microsoft-Windows-CodeIntegrity/Operational'
    Id      = 3033,3063
    StartTime = (Get-Date).AddDays(-90)
} -ErrorAction SilentlyContinue |
  Select-Object TimeCreated, Id, Message |
  Sort-Object TimeCreated -Descending

N3 · Sysmon EID 6 — driver load with signature status

Where Sysmon is deployed, EID 6 gives you the loaded driver's image path, hashes, Signature and SignatureStatus — the signer detail Falcon does not publish as a queryable field. Filter for the eight helper-driver names and for any driver loading out of a non-System32\drivers path.

N4 · Offline memory sweep — ghosted image sections

On a host with a confirmed Q1/Q2/Q3 hit, do not rely on the live agent. Acquire memory and look for committed image-backed regions whose backing FILE_OBJECT is marked for delete or no longer resolves, and for a process whose main image path does not exist on disk. Volatility's malfind plus a ldrmodules cross-check will surface a mapped image absent from all three PEB lists.

N5 · Offline PE triage — Cruciferra packing handles

For suspect binaries pulled from an incident: check for (a) a .reloc section that is far larger than its relocation table needs to be, (b) an export table with hundreds or thousands of entries pointing at junk, and (c) File Version Information whose Copyright / Product / Description are stitched pseudo-words. Any two of the three is a strong Cruciferra call.

Get-ChildItem -Path 'C:\Users' -Include *.dll,*.exe -Recurse -ErrorAction SilentlyContinue |
  ForEach-Object {
      $v = $_.VersionInfo
      [pscustomobject]@{
          Path      = $_.FullName
          Company   = $v.CompanyName
          Product   = $v.ProductName
          Copyright = $v.LegalCopyright
          Signed    = (Get-AuthenticodeSignature $_.FullName).Status
      }
  } |
  Where-Object { $_.Signed -ne 'Valid' -and $_.Copyright -match '^\d{4} \w{8,} \w{8,}' }

N6 · Registry sweep — persistence and notification suppression

$hits = @()
$hits += Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -ErrorAction SilentlyContinue |
         Select-Object -Property putty -ErrorAction SilentlyContinue
$hits += Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\PushNotifications' -Name ToastEnabled -ErrorAction SilentlyContinue
$hits += Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name Balloon,ShowInfoTip -ErrorAction SilentlyContinue
$hits
08

CrowdStrike LogScale CQL Hunt Queries

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

None of these queries carry an in-query time filter. Set the window with the Falcon console time picker — the intended lookback is recorded as a // LOOKBACK: comment in each query. Start at 90 days for Q1 to Q3 and 30 days for the rest.

Q1 · BYOVD helper driver written to disk
CONF HIGHFP MEDIUMCOST LOW

Looks for: any of the eight helper drivers Proofpoint documented being dropped to disk. Cruciferra unpacks the driver from its own .reloc payload blob, so the writing process is usually the side-loaded host EXE running out of a user path — not an installer under Program Files. FP: three of the eight names ship with legitimate vendor tooling — NTIOLib_X64.sys with MSI Afterburner and related overclocking utilities, LnvMSRIO.sys with Lenovo system tools, HwOs2Ec.sys with OEM PC-manager software. Judge on the writing process and path, not the driver name alone.

// HUNT: Cruciferra BYOVD helper driver written to disk
// MITRE: T1068, T1562.001 | CONF: high  FP: medium  COST: low
// REQUIRES: PeFileWritten / NewExecutableWritten
// LOOKBACK: 90d (set in the console time picker)
// FALSE POSITIVES: MSI Afterburner (NTIOLib_X64.sys), Lenovo system tooling
//   (LnvMSRIO.sys), OEM PC-manager suites (HwOs2Ec.sys) legitimately install these.
// TUNING: exclude writes whose ContextBaseFileName is a known signed installer for
//   those suites, and exclude hosts in the engineering/overclocking asset group.
//   Do NOT exclude by driver name alone — GoFlyDrv.sys has no benign fleet use.
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| TargetFileName=/\\(Core64|GoFlyDrv|HwOs2Ec|LnvMSRIO|MemoryInformer|NTIOLib_X64|ProcessMonitorDriver|selfprot)\.sys$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData])
| sort(@timestamp, order=desc, limit=500)
Q2 · Known Cruciferra driver and loader hashes
CONF HIGHFP LOWCOST LOW

Looks for: exact SHA256 matches on the eight published helper drivers plus the one non-TA4922 Cruciferra-packed loader archive. Exact-hash matching, so a hit is a hit — but remember the crypter repacks constantly (a fresh build every few minutes on 2026-07-09), so a clean result here proves nothing and Q1/Q3 to Q8 carry the real coverage.

// HUNT: Cruciferra published SHA256 set (8 BYOVD drivers + 1 packed loader)
// MITRE: T1068, T1027.002 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 / PeFileWritten / NewExecutableWritten / ImageHash
// LOOKBACK: 90d (set in the console time picker)
// FALSE POSITIVES: none — exact hash match. A hit on an OEM driver hash still
//   means that exact vulnerable build is present and should be removed.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten|ImageHash)$/
| SHA256HashData=/^(17aae57cf6255c7eb169bf62ea67376d9708976eb7831f8cdd0ea38bdcb37dc4|2fdfdd13a0c548bb68c9d5aa8599a9265d4659da3e237fe7a42ac6ac06b9a06a|c4e93449453cf67c5d5605bb8f425207a738a242fdb432d720acc32faa74926c|c5b1e9aafc8f2b4ab05effc00fd43f3114b9ef1d592a086c952793ac4e299809|7887e919555fb5948c217556ba149392a72982b1bc427d3db779db9dcbf09ee8|09bedbf7a41e0f8dabe4f41d331db58373ce15b2e9204540873a1884f38bdde1|5b4f59236a9b950bcd5191b35d19125f60cfb9e1a1e1aa2e4f914b6745dde9df|c46e907886e2158cbc453e767183aecf07887b5ac8848f19684451883d69f5f0|3f31aee0948d16f8d64bf6bec69a4331099993e502b11bfc56b2c0112024489d)$/i
| table([@timestamp, aid, ComputerName, UserName, SHA256HashData, FileName, ImageFileName, TargetFileName, CommandLine])
| sort(@timestamp, order=desc, limit=500)
Q3 · BYOVD helper driver actually loaded into the kernel
CONF HIGHFP MEDIUMCOST LOW

Looks for: the load event rather than the write. A hit here means the BYOVD stage succeeded and the attacker had a kernel primitive available to terminate security processes. Treat every hit as a containment trigger, not a triage queue item — and treat that host's subsequent agent telemetry as unreliable. FP: the same three OEM/overclocking drivers as Q1, on hosts that genuinely run that software; those will load at boot from System32\drivers, whereas a Cruciferra load follows a fresh write into a user-writable path minutes earlier.

// HUNT: Cruciferra BYOVD helper driver loaded (kernel primitive obtained)
// MITRE: T1068, T1562.001 | CONF: high  FP: medium  COST: low
// REQUIRES: DriverLoad
// LOOKBACK: 90d (set in the console time picker)
// FALSE POSITIVES: OEM and overclocking utilities load NTIOLib_X64.sys,
//   LnvMSRIO.sys and HwOs2Ec.sys at boot from the System32 drivers directory.
// TUNING: exclude loads where ImageFileName sits under \Windows\System32\drivers\
//   AND the same aid shows the driver present for more than 30 days. Correlate every
//   surviving hit against a Q1 write on the same aid within the preceding hour.
#event_simpleName=/^DriverLoad$/
| ImageFileName=/\\(Core64|GoFlyDrv|HwOs2Ec|LnvMSRIO|MemoryInformer|NTIOLib_X64|ProcessMonitorDriver|selfprot)\.sys$/i
| groupBy([aid, ComputerName, ImageFileName, SHA256HashData], function=[count(as=Loads), min(@timestamp, as=FirstLoad), max(@timestamp, as=LastLoad)], limit=500)
| sort(FirstLoad, order=desc, limit=200)
Q4 · Archive-borne EXE side-loading a co-located DLL
CONF MEDIUMFP HIGHCOST MEDIUM

Looks for: the Cruciferra entry point — an executable launched by a browser, mail client, or archive tool out of a Downloads / Desktop / archive-extraction path. Falcon does not expose module-load telemetry, so the side-load itself is inferred from the launch context; pair every hit with a PeFileWritten lookup for a .dll written to the same directory in the preceding minutes. FP: high — portable apps, developer tooling and IT self-service installers all run from Downloads. This is a stack-and-review hunt, never an alert.

// HUNT: EXE launched from an archive-extraction or Downloads path (side-load entry)
// MITRE: T1574.002, T1204.002 | CONF: medium  FP: high  COST: medium
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// LOOKBACK: 30d (set in the console time picker)
// FALSE POSITIVES: portable utilities, developer toolchains, self-service installers,
//   and any org that ships software to users as a ZIP.
// TUNING: exclude ImageFileName values on your approved portable-app allowlist and
//   exclude the software-packaging and developer asset groups. Then rank what is left
//   by rarity of ImageFileName across the fleet — Cruciferra host EXEs are one-offs.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ParentBaseFileName=/^(explorer\.exe|winrar\.exe|7zFM\.exe|7zG\.exe|Bandizip\.exe|PeaZip\.exe|OUTLOOK\.EXE|msedge\.exe|chrome\.exe|firefox\.exe)$/i
| ImageFileName=/\\Users\\[^\\]+\\(Downloads|Desktop|OneDrive[^\\]*\\Downloads|AppData\\Local\\Temp\\(Rar\$[^\\]+|7z[^\\]+|Temp\d+_[^\\]+))\\[^\\]+\.exe$/i
| groupBy([ImageFileName, ParentBaseFileName], function=[count(as=Runs), count(aid, distinct=true, as=Hosts), collect([ComputerName, UserName, CommandLine])], limit=500)
| sort(Hosts, order=asc, limit=200)
Q5 · Run-key persistence under the value name "putty"
CONF HIGHFP LOWCOST LOW

Looks for: Cruciferra's default persistence value name. Genuine PuTTY is a portable SSH client that does not create a Run entry, so this is one of the narrowest and most durable signals in the pack. The second stage widens the same hunt to any Run value pointing at a user-writable path, which catches builds that changed the value name.

// HUNT: Cruciferra Run-key persistence (value name "putty")
// MITRE: T1547.001 | CONF: high  FP: low  COST: low
// REQUIRES: AsepValueUpdate / RegGenericValueUpdate
// LOOKBACK: 90d (set in the console time picker)
// FALSE POSITIVES: essentially none — PuTTY does not install an autostart entry.
//   Widen the RegValueName filter to /^[a-z]{4,10}$/i to catch renamed builds; that
//   variant is noisier and should be reviewed rather than alerted.
#event_simpleName=/^(AsepValueUpdate|RegGenericValueUpdate)$/
| RegObjectName=/\\Microsoft\\Windows\\CurrentVersion\\Run$/i
| RegValueName=/^putty$/i
| table([@timestamp, aid, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue])
| sort(@timestamp, order=desc, limit=500)
Q6 · Windows notification suppression cluster
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: the three notification-suppression values Cruciferra flips so the victim never sees a Defender or SmartScreen warning. Any one alone is weak; two or more on the same host is the signal, which is what the Distinct filter enforces. FP: kiosk and digital-signage build scripts, privacy-hardening GPOs, and VDI gold-image tooling legitimately set all three.

// HUNT: Cruciferra notification-suppression registry cluster
// MITRE: T1112, T1562.001 | CONF: medium  FP: medium  COST: low
// REQUIRES: RegGenericValueUpdate / AsepValueUpdate
// LOOKBACK: 30d (set in the console time picker)
// FALSE POSITIVES: kiosk / signage provisioning, privacy-hardening GPOs, VDI
//   gold-image build scripts, and some OEM "clean desktop" utilities.
// TUNING: exclude your imaging and VDI build asset groups, and exclude hosts whose
//   hits all land inside a known provisioning window. What remains is a single user
//   endpoint flipping two or three of these in the same minute — that is the pattern.
#event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate)$/
| RegObjectName=/\\Microsoft\\Windows\\CurrentVersion\\(PushNotifications|Explorer\\Advanced)$/i
| RegValueName=/^(ToastEnabled|Balloon|ShowInfoTip)$/i
| groupBy([aid, ComputerName, UserName], function=[count(RegValueName, distinct=true, as=Distinct), count(as=Hits), collect([RegValueName, RegObjectName])], limit=500)
| test(Distinct >= 2)
| sort(Distinct, order=desc, limit=200)
Q7 · COM Elevation Moniker UAC bypass
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: a child process running out of a user-writable path whose parent is dllhost.exe — the COM surrogate that services an Elevation Moniker request. Legitimate auto-elevating COM servers exist, but they overwhelmingly execute out of System32 or Program Files, not Downloads or AppData. FP: some installers, shell extensions and OEM updaters stage into AppData and are surrogate-hosted; baseline the parent CommandLine CLSID before alerting.

// HUNT: COM Elevation Moniker UAC bypass — user-path child of dllhost.exe
// MITRE: T1548.002 | CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// LOOKBACK: 30d (set in the console time picker)
// FALSE POSITIVES: OEM updaters, shell extensions and some installers legitimately
//   run surrogate-hosted out of AppData.
// TUNING: baseline the CLSID in the dllhost.exe parent CommandLine over 30 days and
//   exclude the CLSIDs that appear on more than 5 percent of the fleet. Then exclude
//   signed updater ImageFileName values you have already vetted.
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ParentBaseFileName=/^dllhost\.exe$/i
| ImageFileName=/\\Users\\[^\\]+\\(Downloads|Desktop|AppData\\(Local|Roaming))\\/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, ParentProcessId_decimal, ImageFileName, CommandLine, SHA256HashData])
| sort(@timestamp, order=desc, limit=500)
Q8 · Ghost-payload staging: extensionless PE in user Temp
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: the one stage of Process Ghosting that is still observable. Before the file handle is closed and the OS deletes the backing file, the payload has to be written, and Falcon sees that write. Cruciferra names these from stitched random words or unreadable UTF-16, and they typically carry no extension. FP: installer bootstrappers, update agents and some browser/Office temp handling also write extensionless PEs into Temp. Rank by rarity of the writing process across the fleet — the benign writers are common, the Cruciferra host EXE is a one-off.

// HUNT: Process Ghosting staging — extensionless / random-named PE in user Temp
// MITRE: T1055, T1140 | CONF: medium  FP: medium  COST: medium
// REQUIRES: PeFileWritten / NewExecutableWritten
// LOOKBACK: 30d (set in the console time picker)
// FALSE POSITIVES: installer bootstrappers (setup / msiexec chains), update agents,
//   and some browser and Office temporary-file handling.
// TUNING: exclude ContextBaseFileName values that write these on more than 20 hosts
//   (that is your benign installer and updater population), then review what is left.
//   Pivot every survivor to Q1 and Q7 on the same aid within a 10-minute window.
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| TargetFileName=/\\Users\\[^\\]+\\AppData\\Local\\Temp\\[A-Za-z0-9]{6,64}$/i
| groupBy([ContextBaseFileName], function=[count(as=Writes), count(aid, distinct=true, as=Hosts), collect([ComputerName, UserName, TargetFileName])], limit=500)
| sort(Hosts, order=asc, limit=200)
Q9 · DNS resolution of Cruciferra C2 and staging hosts
CONF HIGHFP LOWCOST LOW

Looks for: the four published non-TA4922 hostnames — two payload C2s and two staging hosts. The two staging hosts present as compromised legitimate sites, so a hit there is a strong lead but not automatically malicious traffic; the two C2s are dedicated attacker infrastructure and a hit is an incident.

// HUNT: DNS to published Cruciferra-linked C2 / staging hosts (non-TA4922 set)
// MITRE: T1071.001, T1105 | CONF: high  FP: low  COST: low
// REQUIRES: DnsRequest / SuspiciousDnsRequest
// LOOKBACK: 90d (set in the console time picker)
// FALSE POSITIVES: none for the two C2 hostnames. digital-magicians.com and
//   almacensantangel.com look like compromised legitimate sites, so a resolution
//   there may be ordinary browsing — confirm the requesting process before escalating.
#event_simpleName=/^(DnsRequest|SuspiciousDnsRequest)$/
| DomainName=/^(gatuso\.duckdns\.org|0zbqnac1t4dv2t2wuodv1m\.com|digital-magicians\.com|almacensantangel\.com)$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, DomainName, RequestType])
| sort(@timestamp, order=desc, limit=500)
Q10 · Post-crypter RAT beacon — known C2 IP and dynamic DNS
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: the second half of the incident. The crypter is a delivery layer; what actually matters is the RAT that follows. This catches the one published C2 IP and the durable shape around it — dynamic-DNS egress from a process running out of a user-writable path. FP: dynamic DNS has legitimate use in home-lab, remote-support and some IoT tooling, so the process-path condition is doing most of the work here.

// HUNT: RAT beacon behind a Cruciferra loader — known C2 IP or dynamic-DNS egress
// MITRE: T1071.001, T1568.002 | CONF: medium  FP: medium  COST: medium
// REQUIRES: NetworkConnectIP4 / DnsRequest
// LOOKBACK: 30d (set in the console time picker)
// FALSE POSITIVES: duckdns.org and similar dynamic-DNS providers are used
//   legitimately by remote-support tooling, home labs and some IoT devices.
// TUNING: exclude approved remote-support agents by ContextBaseFileName, and exclude
//   any dynamic-DNS hostname that has resolved on more than 10 hosts for over 60 days
//   (that is sanctioned tooling, not a commodity RAT).
#event_simpleName=/^(NetworkConnectIP4|DnsRequest)$/
| (RemoteAddressIP4="89.34.90.99" or DomainName=/\.(duckdns|no-ip|ddns|hopto|serveo)\.(org|net|com|info|biz)$/i)
| ContextBaseFileName=/\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, DomainName, RemoteAddressIP4, RemotePort_decimal])
| sort(@timestamp, order=desc, limit=500)

CQL review notes. All ten queries use verified Falcon data-model field names and carry no in-query time filter, so nothing breaks on the console's time picker. Two caveats worth knowing before you deploy: (1) DriverLoad in Q3 requires the sensor's kernel-driver telemetry to be flowing into your NG-SIEM repo — confirm with #event_simpleName=/^DriverLoad$/ | head(10) before trusting an empty result. (2) Q4 and Q8 are rarity hunts and are sorted ascending by host count on purpose: the interesting rows are at the top because they are rare, not because they are frequent.

09

CrowdStrike Custom IOA Recommendations

Three of the ten queries are strong enough to promote to Custom IOAs. The rest stay Investigate-only. Deploy every IOA in Detect for two weeks first, review the hit set, then move to Prevent.

IOARule typePatternExclusionsSeverityPromote from
BLOCK — Vulnerable helper driver dropped to a user pathFile CreationFile path regex .*\\Users\\.*\\(Core64|GoFlyDrv|HwOs2Ec|LnvMSRIO|MemoryInformer|NTIOLib_X64|ProcessMonitorDriver|selfprot)\.sysNone needed once the path is constrained to a user profile — legitimate vendor installers write to System32\drivers, not Users.CRITICALQ1
DETECT — Cruciferra Run-key persistenceRegistry Operation (value name)Key \CurrentVersion\Run, value name putty, value data pointing outside Program FilesExclude any host in the group where an admin has documented a genuine PuTTY autostart.HIGHQ5
DETECT — Surrogate-hosted user-path executionProcess CreationParent image dllhost.exe; child image path regex .*\\Users\\.*\\(Downloads|Desktop|AppData\\(Local|Roaming))\\.*\.exeExclude the vetted OEM-updater and shell-extension CLSIDs identified during the Q7 baseline.HIGHQ7

Deliberately not promoted

  • Q4 and Q8 — rarity hunts with high benign volume. Promoting either would generate an unmanageable detection stream in any environment that distributes software as archives.
  • Q6 — the notification-suppression cluster is a good corroborator but fires on legitimate imaging and VDI provisioning. Keep it as a scheduled search that feeds context onto other detections.
  • Q2, Q9, Q10 — atomic-indicator hunts. These belong in Falcon IOC Management (see §10), not in a Custom IOA, because IOC Management handles expiry and bulk update and an IOA does not.

Deployment path: Falcon console → Endpoint security → Custom IOA rule groups → create a Windows rule group named Cruciferra-Crypter, add the three rules above, assign to a pilot prevention policy, then widen. Custom IOAs require the Falcon Prevent or Insight module; without them, run the three as scheduled searches with alerting instead.

10

Machine-Readable IOC Appendix

Fourteen atomic indicators, every one traced back to the saved Proofpoint source snapshot before publication. The behavioural and driver blocks below are the durable half — use those when the hashes have aged out.

Falcon IOC Management CSVbulk import · 14 indicators
type,value,action,severity,expiration,description,tags
sha256,17aae57cf6255c7eb169bf62ea67376d9708976eb7831f8cdd0ea38bdcb37dc4,detect,high,2027-01-29,Cruciferra BYOVD helper driver Core64.sys,crypter:Cruciferra|ttp:T1068
sha256,2fdfdd13a0c548bb68c9d5aa8599a9265d4659da3e237fe7a42ac6ac06b9a06a,detect,high,2027-01-29,Cruciferra BYOVD helper driver GoFlyDrv.sys used to terminate security processes,crypter:Cruciferra|ttp:T1562.001
sha256,c4e93449453cf67c5d5605bb8f425207a738a242fdb432d720acc32faa74926c,detect,high,2027-01-29,Cruciferra BYOVD helper driver HwOs2Ec.sys,crypter:Cruciferra|ttp:T1068
sha256,c5b1e9aafc8f2b4ab05effc00fd43f3114b9ef1d592a086c952793ac4e299809,detect,high,2027-01-29,Cruciferra BYOVD helper driver LnvMSRIO.sys,crypter:Cruciferra|ttp:T1068
sha256,7887e919555fb5948c217556ba149392a72982b1bc427d3db779db9dcbf09ee8,detect,high,2027-01-29,Cruciferra BYOVD helper driver MemoryInformer.sys,crypter:Cruciferra|ttp:T1068
sha256,09bedbf7a41e0f8dabe4f41d331db58373ce15b2e9204540873a1884f38bdde1,detect,high,2027-01-29,Cruciferra BYOVD helper driver NTIOLib_X64.sys,crypter:Cruciferra|ttp:T1068
sha256,5b4f59236a9b950bcd5191b35d19125f60cfb9e1a1e1aa2e4f914b6745dde9df,detect,high,2027-01-29,Cruciferra BYOVD helper driver ProcessMonitorDriver.sys,crypter:Cruciferra|ttp:T1068
sha256,c46e907886e2158cbc453e767183aecf07887b5ac8848f19684451883d69f5f0,detect,high,2027-01-29,Cruciferra BYOVD helper driver selfprot.sys,crypter:Cruciferra|ttp:T1068
sha256,3f31aee0948d16f8d64bf6bec69a4331099993e502b11bfc56b2c0112024489d,prevent,critical,2027-01-29,Cruciferra-packed zgRAT loader archive,crypter:Cruciferra|payload:zgRAT
domain,gatuso.duckdns.org,detect,high,2027-01-29,XWorm C2 behind a Cruciferra loader,crypter:Cruciferra|payload:XWorm
domain,0zbqnac1t4dv2t2wuodv1m.com,detect,high,2027-01-29,zgRAT C2 behind a Cruciferra loader,crypter:Cruciferra|payload:zgRAT
ipv4,89.34.90.99,detect,high,2027-01-29,zgRAT C2 on port 56001 behind a Cruciferra loader,crypter:Cruciferra|payload:zgRAT
domain,digital-magicians.com,hunt,medium,2026-10-29,Likely-compromised site staging a Cruciferra zgRAT archive - review before prevent,crypter:Cruciferra|stage:delivery
domain,almacensantangel.com,hunt,medium,2026-10-29,Likely-compromised WordPress staging a Cruciferra XWorm archive - review before prevent,crypter:Cruciferra|stage:delivery
Behavioural signaturesno expiry
# Cruciferra loader behaviours — durable, survive repacking
# Persistence
HKCU\Software\Microsoft\Windows\CurrentVersion\Run  value name: putty
# Notification suppression (2+ of these on one host in one minute)
HKCU\Software\Microsoft\Windows\CurrentVersion\PushNotifications      ToastEnabled
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced      Balloon
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced      ShowInfoTip
# Privilege escalation
parent dllhost.exe  ->  child EXE under \Users\*\(Downloads|Desktop|AppData\(Local|Roaming))
# Payload staging (Process Ghosting)
PE written to \Users\*\AppData\Local\Temp\ with no file extension, then deleted
# Packing handles (offline triage)
payload stored in the PE .reloc section, Base16 with alphabet PQRSTUVWXYZ[\]^_
export table with hundreds-to-thousands of decoy exports pointing at junk code
File Version Info Copyright/Product/Description built from stitched pseudo-words
# Indirect syscall stub set resolved from a clean on-disk ntdll
NtProtectVirtualMemory NtCreateSection NtMapViewOfSection NtCreateTransaction
NtRollbackTransaction NtOpenKey NtSetValueKey NtClose NtSetInformationFile
# Anti-EDR extras layered on Process Ghosting
ZwQueryVirtualMemory hook patched to return sanitised results
NtManageHotPatch neutered to stop kernel validation of the ghosted image section
BYOVD driver namesblocklist / WDAC input
# Vulnerable helper drivers Cruciferra drops for BYOVD EDR tampering.
# GoFlyDrv.sys is the one named for terminating security processes.
# The other three marked OEM also ship with legitimate vendor software —
# validate fleet usage before moving from detect to block.
Core64.sys
GoFlyDrv.sys
HwOs2Ec.sys              # OEM PC-manager software also ships this
LnvMSRIO.sys             # OEM laptop tooling also ships this
MemoryInformer.sys
NTIOLib_X64.sys          # OEM overclocking utilities also ship this
ProcessMonitorDriver.sys
selfprot.sys
# Verify the Microsoft vulnerable-driver blocklist is actually on:
#   Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
#   reg query "HKLM\SYSTEM\CurrentControlSet\Control\CI\Config" /v VulnerableDriverBlocklistEnable
Hardening audit one-linersrun before you hunt
# 1. Is the vulnerable-driver blocklist on?
(Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard).SecurityServicesRunning

# 2. Is ASR "Block abuse of exploited vulnerable signed drivers" in Block mode?
#    GUID 56a863a9-875e-4185-98a7-b882c64b5ce5 — value 1 means Block
$p = Get-MpPreference
for ($i = 0; $i -lt $p.AttackSurfaceReductionRules_Ids.Count; $i++) {
    '{0} = {1}' -f $p.AttackSurfaceReductionRules_Ids[$i], $p.AttackSurfaceReductionRules_Actions[$i]
}

# 3. Is HVCI / Memory Integrity enforced?
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity' -Name Enabled

# 4. Is UAC set to always prompt on the secure desktop?
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLUA,ConsentPromptBehaviorAdmin,PromptOnSecureDesktop

# 5. Can users still mount ISO/VHD by double-clicking?
Get-ItemProperty 'HKLM:\SOFTWARE\Classes\Windows.IsoFile\shell\mount' -ErrorAction SilentlyContinue
11

Detection Validation Gates

Gate 1 — Telemetry ready

  • #event_simpleName=/^DriverLoad$/ | head(10) returns rows. If it does not, Q3 is dead in your tenant and Q1/Q2 carry the whole BYOVD detection.
  • #event_simpleName=/^AsepValueUpdate$/ | head(10) returns rows with RegValueName populated. If RegValueName is empty, Q5 and Q6 will silently return nothing.
  • #event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/ | head(10) returns rows with ContextBaseFileName populated — Q1 and Q8 both group on it.
  • Registry and file telemetry are policy-gated in some Falcon deployments. Confirm the sensor policy for your pilot group has both enabled before concluding a hunt came back clean.

Gate 2 — Benign baseline

  • Run Q1 and Q3 with the driver-name filter removed and group by driver name over 90 days. That is your legitimate driver population; the three OEM names should dominate and should sit under System32\drivers.
  • Run Q4 and Q8 for 30 days and record the top 20 ContextBaseFileName and ImageFileName values. Those are your exclusions. Anything appearing on one or two hosts is what you are actually hunting.
  • Run Q7 and record every CLSID appearing in the dllhost.exe parent CommandLine. Anything on more than 5 percent of the fleet is sanctioned COM, not an elevation bypass.
  • Q5 should return zero rows in a healthy environment. If it returns anything at all, treat it as a finding, not a baseline.

Gate 3 — Positive tests (lab only, never production)

  • In an isolated VM, create HKCU\...\CurrentVersion\Run value putty pointing at a benign EXE in AppData. Q5 must fire within the sensor's registry flush interval.
  • Set ToastEnabled, Balloon and ShowInfoTip in one script run. Q6 must return that host with Distinct of 2 or 3.
  • Write a benign extensionless PE into %LOCALAPPDATA%\Temp under a random 8-character name. Q8 must return the writing process.
  • Do not attempt to reproduce the BYOVD, unhooking or ghosting stages. Validate Q1 to Q3 by copying one of the named driver files (without loading it) into a user path and confirming Q1 fires.

Gate 4 — Promotion criteria

  • An IOA moves from Detect to Prevent only after 14 days with zero unexplained hits and a documented exclusion list.
  • The Q1-derived file-creation IOA is the exception: it is safe to deploy directly in Prevent because the user-profile path constraint excludes every legitimate installer behaviour.
  • The two hunt-action staging domains in §10 stay at hunt until someone confirms the sites are still compromised. Blocking a recovered legitimate site is a self-inflicted outage.
12

Hardening — Tiered

Cruciferra's entire design assumes it gets to run user-mode code that can rewrite its own view of the OS. Detection buys you an alert after the fact; the controls below remove the capability. They are ordered by leverage, not by effort.

Immediate — deploy this week
  • Enable the Microsoft vulnerable-driver blocklist. This is the single highest-leverage control against the entire BYOVD stage and it costs nothing on modern Windows. MITRE M1051 / M1038; Microsoft Windows Security Baseline; CIS Microsoft Windows Benchmark "Device Guard" section. Verify with the Win32_DeviceGuard query in §10.
  • Set ASR rule 56a863a9-875e-4185-98a7-b882c64b5ce5 ("Block abuse of exploited vulnerable signed drivers") to Block. Complements the blocklist by catching drivers that are vulnerable but not yet listed. MITRE M1038; Microsoft Defender ASR baseline. No reboot, no user-visible change.
  • Harden UAC against the COM Elevation Moniker path. Set ConsentPromptBehaviorAdmin to 2 (Prompt for consent on the secure desktop) and confirm EnableLUA and PromptOnSecureDesktop are 1. Auto-elevation without a prompt is what the moniker abuses. MITRE M1052; CIS Windows Benchmark 2.3.17.x; MS Security Baseline.
  • Block executable content in inbound archives and disk images at the mail gateway. Quarantine .vhd, .vhdx, .iso and .img outright — there is no ordinary business reason to receive one by email, and they exist in this chain specifically to strip Mark-of-the-Web. Extract and inspect ZIP/RAR/7z contents, and follow links inside PDF attachments. MITRE M1049 / M1021.
Near term — 1 to 4 weeks, pilot first
  • Enable HVCI / Memory Integrity fleet-wide. Kernel-mode code integrity is what turns "vulnerable driver loaded" into "vulnerable driver refused". Pilot on a hardware-representative ring first — older third-party drivers are the usual compatibility casualty. MITRE M1050 / M1038; MS Security Baseline; DISA Windows 10/11 STIG.
  • Deploy a WDAC policy including the Microsoft recommended driver block rules, in audit mode first, then enforced. This gives you a policy you control rather than only the vendor blocklist, and it is where you add the eight names from §10. MITRE M1038 / M1045.
  • AppLocker or WDAC rules denying execution from user-writable pathsDownloads, Desktop, AppData\Local\Temp and archive-extraction directories. This kills the side-load entry point outright. Expect friction with portable tooling; pilot with the developer and engineering groups and build the allowlist from the Q4 baseline. MITRE M1038; CIS Windows Benchmark; MS Security Baseline.
  • Disable double-click mounting of ISO and VHD for standard users via GPO or by removing the shell mount verb. Removes the Mark-of-the-Web bypass used in the SSA-themed campaign. MITRE M1042. ⚠ best-practice, no formal benchmark entry — Microsoft documents the mechanism but no CIS control covers it directly.
  • Turn on Falcon sensor tamper protection and require an uninstall token. A BYOVD process-kill is not an uninstall, but tamper protection plus ELAM raises the cost and generates its own telemetry when attempted. MITRE M1018 / M1024; vendor hardening guide.
Strategic — 1 to 3 months
  • Move to full application allowlisting (WDAC in enforced mode, or Smart App Control on eligible builds). Cruciferra depends entirely on an unsigned or attacker-supplied DLL being loadable next to a signed EXE; allowlisting by publisher removes that. MITRE M1038 / M1045; NIST SP 800-167.
  • Credential Guard and RunAsPPL for LSASS. Does not stop the crypter, but blunts the payload: nearly every family Cruciferra delivers is a credential or browser-data stealer. MITRE M1043 / M1028; MS Security Baseline; CIS Windows Benchmark.
  • Remove local administrator rights from standard users. The COM Elevation Moniker bypass only matters where the user is already a member of the local Administrators group. Without that, the whole privilege-escalation stage fails closed. MITRE M1026; CIS Control 5/6.
  • Egress control for endpoints. Force endpoint web traffic through an inspecting proxy and deny direct outbound to arbitrary high ports — the published zgRAT C2 in §4 talks on port 56001, which no business application needs. MITRE M1037; CIS Control 13.
  • Phishing-resistant MFA and conditional access on everything the stealers can reach. The realistic end state of a Cruciferra infection is stolen credentials, and stolen credentials only matter where a password alone still works. MITRE M1032; NIST SP 800-63B.
13

Deployable Playbooks

Raw, working configuration for the five highest-leverage controls. Every step carries prerequisites, reboot impact and a rollback — deploy nothing here without reading the rollback first.

Playbook 1 — Enable the Microsoft vulnerable-driver blocklist

Prerequisites: Windows 10 1809 or later / Windows 11 / Server 2019 or later; local administrator; Secure Boot recommended. Reboot required: yes, one reboot to take effect. Rollback: set the same value to 0 and reboot — documented in step 3 below.

#  1. Confirm current state
Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard |
    Select-Object SecurityServicesConfigured, SecurityServicesRunning, CodeIntegrityPolicyEnforcementStatus

#  2. ENABLE the Microsoft vulnerable-driver blocklist
New-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CI\Config' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CI\Config' `
                 -Name 'VulnerableDriverBlocklistEnable' -Value 1 -Type DWord
#     Reboot required. After reboot, blocked loads land in
#     Microsoft-Windows-CodeIntegrity/Operational as Event ID 3063.

#  3. ROLLBACK (if a business-critical driver is blocked)
#     Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CI\Config' `
#                      -Name 'VulnerableDriverBlocklistEnable' -Value 0 -Type DWord
#     Reboot. Prefer replacing the offending driver over disabling the blocklist —
#     turning this off restores the exact capability Cruciferra depends on.

#  4. VERIFY after reboot
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-CodeIntegrity/Operational'; Id=3063} `
             -MaxEvents 20 -ErrorAction SilentlyContinue | Select-Object TimeCreated, Message

Playbook 2 — ASR: block abuse of exploited vulnerable signed drivers

Prerequisites: Microsoft Defender Antivirus in active mode with real-time protection on; Windows 10 1803 or later. If Defender is in passive mode behind a third-party AV, ASR rules do not apply — use the WDAC route in Playbook 4 instead. Reboot required: no. Rollback: set the rule action to Disabled (step 3); takes effect immediately, no reboot.

#  1. AUDIT first — run for 7 days, review Defender Operational Event ID 1121/1122
Add-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 `
                 -AttackSurfaceReductionRules_Actions AuditMode

#  2. ENFORCE — move to Block once the audit set is clean
Set-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 `
                 -AttackSurfaceReductionRules_Actions Enabled

#     Optional: also block executable content dropped from mail and webmail clients,
#     which closes the delivery half of this chain.
#     Set-MpPreference -AttackSurfaceReductionRules_Ids be9ba2d9-53ea-4cdc-84e5-9b1eeee46550 `
#                      -AttackSurfaceReductionRules_Actions Enabled

#  3. ROLLBACK
#     Set-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 `
#                      -AttackSurfaceReductionRules_Actions Disabled

#  4. VERIFY
$p = Get-MpPreference
for ($i = 0; $i -lt $p.AttackSurfaceReductionRules_Ids.Count; $i++) {
    '{0} = {1}' -f $p.AttackSurfaceReductionRules_Ids[$i], $p.AttackSurfaceReductionRules_Actions[$i]
}

Playbook 3 — Harden UAC against COM Elevation Moniker auto-elevation

Prerequisites: local administrator or GPO edit rights; communicate to users first, because they will start seeing consent prompts they did not see before. Reboot required: yes for EnableLUA changes; the consent-behaviour values apply at next logon. Rollback: restore the captured prior values from step 1 (the script writes them to disk before changing anything).

$key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'

#  1. CAPTURE current values for rollback — do this first, always
Get-ItemProperty -Path $key -Name EnableLUA,ConsentPromptBehaviorAdmin,PromptOnSecureDesktop,EnableInstallerDetection |
    Export-Clixml -Path "$env:ProgramData\uac-rollback.xml"

#  2. APPLY
Set-ItemProperty -Path $key -Name 'EnableLUA'                 -Value 1 -Type DWord
Set-ItemProperty -Path $key -Name 'ConsentPromptBehaviorAdmin'-Value 2 -Type DWord   # prompt for consent on secure desktop
Set-ItemProperty -Path $key -Name 'PromptOnSecureDesktop'     -Value 1 -Type DWord
Set-ItemProperty -Path $key -Name 'EnableInstallerDetection'  -Value 1 -Type DWord

#     GPO equivalent: Computer Configuration - Windows Settings - Security Settings -
#     Local Policies - Security Options - "User Account Control: Behavior of the
#     elevation prompt for administrators in Admin Approval Mode" = Prompt for consent
#     on the secure desktop.

#  3. ROLLBACK
#     $old = Import-Clixml "$env:ProgramData\uac-rollback.xml"
#     Set-ItemProperty -Path $key -Name 'ConsentPromptBehaviorAdmin' -Value $old.ConsentPromptBehaviorAdmin
#     Set-ItemProperty -Path $key -Name 'PromptOnSecureDesktop'      -Value $old.PromptOnSecureDesktop
#     Reboot if EnableLUA was changed.

#  4. VERIFY
Get-ItemProperty -Path $key -Name EnableLUA,ConsentPromptBehaviorAdmin,PromptOnSecureDesktop

Playbook 4 — Deny execution from archive-extraction and user Temp paths (AppLocker)

Prerequisites: Application Identity service (AppIDSvc) set to Automatic; AppLocker requires Windows Enterprise or Education SKUs; build the allowlist from the Q4 and Q8 baselines before enforcing. Reboot required: no, but AppIDSvc must be started. Rollback: remove the rule from the AppLocker policy and re-import, or set enforcement back to AuditOnly — both take effect at the next policy refresh with no reboot.

#  1. PREREQUISITE — start the enforcement service
Set-Service -Name AppIDSvc -StartupType Automatic
Start-Service -Name AppIDSvc

#  2. EXPORT the effective policy so you have a rollback artefact
Get-AppLockerPolicy -Effective -Xml | Out-File "$env:ProgramData\applocker-rollback.xml" -Encoding utf8

#  3. AUDIT FIRST. Create a Deny rule for the Everyone group covering:
#       %OSDRIVE%\Users\*\Downloads\*
#       %OSDRIVE%\Users\*\Desktop\*
#       %LOCALAPPDATA%\Temp\*
#     Set the Executable and DLL rule collections to AuditOnly, deploy for 14 days,
#     then review AppLocker EXE and DLL event logs (EventID 8003/8006) to build the
#     exception list. The DLL collection is the one that matters here — it is the
#     side-loaded DLL, not the signed EXE, that carries Cruciferra.

#  4. ENFORCE — flip the collections to Enabled once the exception list is stable
#     Set-AppLockerPolicy -XmlPolicy .\cruciferra-deny.xml -Merge

#  5. ROLLBACK
#     Set-AppLockerPolicy -XmlPolicy "$env:ProgramData\applocker-rollback.xml"
#     (or set EnforcementMode back to AuditOnly and re-merge)

#  6. VERIFY
Get-AppLockerPolicy -Effective -Xml | Select-String -Pattern 'Downloads|Temp'

Playbook 5 — Remove double-click mounting of ISO and VHD for standard users

Prerequisites: local administrator; confirm no business workflow depends on users mounting disk images (IT and developer groups often do — scope the GPO to exclude them). Reboot required: no; takes effect immediately for new Explorer sessions. Rollback: restore the exported registry keys from step 1.

#  1. EXPORT for rollback
reg export "HKLM\SOFTWARE\Classes\Windows.IsoFile"  "$env:ProgramData\isofile-rollback.reg"  /y
reg export "HKLM\SOFTWARE\Classes\Windows.VhdFile"  "$env:ProgramData\vhdfile-rollback.reg"  /y

#  2. APPLY — remove the shell "mount" verb so a double-click no longer mounts
reg delete "HKLM\SOFTWARE\Classes\Windows.IsoFile\shell\mount" /f
reg delete "HKLM\SOFTWARE\Classes\Windows.VhdFile\shell\mount" /f

#     Belt and braces: block the file types at the mail gateway as well (see
#     section 12, Immediate tier). Removing the verb does not stop PowerShell
#     Mount-DiskImage, so this is a usability control, not a hard boundary.

#  3. ROLLBACK
#     reg import "$env:ProgramData\isofile-rollback.reg"
#     reg import "$env:ProgramData\vhdfile-rollback.reg"

#  4. VERIFY — both should return "ERROR: The system was unable to find the
#     specified registry key or value"
reg query "HKLM\SOFTWARE\Classes\Windows.IsoFile\shell\mount"
reg query "HKLM\SOFTWARE\Classes\Windows.VhdFile\shell\mount"
14

Containment Runbook

Read this first. If Q3 fired — a vulnerable helper driver actually loaded — assume the endpoint agent was tampered with during the incident window. Do not use that host's own EDR process telemetry to decide scope. Build scope from network logs, identity logs, and neighbouring hosts instead.

PhaseActionsOwnerEvidence to capture
0 · Triage (0–30 min)Confirm which query fired and at what fidelity. Q2, Q3, Q5 and Q9 are incidents on sight. Q1 needs a five-minute check of the writing process and path. Q4, Q6, Q7, Q8 and Q10 need corroboration from a second query on the same aid before escalation.SOC L1Query output, aid, ComputerName, UserName, first and last event timestamps.
1 · Isolate (within 1 h of a confirmed hit)Network-contain the host in Falcon. Do not power it off — the ghosted payload exists only in memory and a shutdown destroys the best evidence you have. Suspend the user's sessions and force a credential reset for any account that logged on during the window.SOC L2 · IAMContainment timestamp; list of sessions killed; accounts reset.
2 · Collect (1–4 h)Acquire a full memory image before anything else. Then collect: the CodeIntegrity Operational log, Sysmon EID 6 if present, the Run key and the three notification values, the contents of %LOCALAPPDATA%\Temp, the original archive from Downloads, and any .sys file in a user path. Preserve the paired EXE and DLL together — the pair is the artefact.DFIRMemory image hash; file collection manifest; registry exports.
3 · Scope (4–12 h)Sweep the fleet with Q1, Q2, Q3 and Q5 over 90 days. Sweep mail for the delivering message and everyone else who received it. Search proxy and DNS logs for the §4 hostnames and IP across all endpoints, not just the contained one.SOC L2 · Mail adminList of affected hosts and recipients; mail message IDs; proxy hits.
4 · Eradicate (12–48 h)Rebuild rather than clean. A host where the BYOVD stage succeeded had kernel-level code execution available to it; there is no reliable user-mode remediation for that. Remove the Run value and the driver on any host you cannot rebuild immediately, and re-enable the notification settings so the user gets warnings again.Endpoint eng.Rebuild tickets; per-host remediation record.
5 · Recover (48–96 h)Return hosts from containment only after a clean rebuild or a documented remediation plus 48 hours of clean telemetry. Rotate every credential and browser-stored secret that existed on the host — the payload families behind this crypter are overwhelmingly stealers. Revoke and reissue any certificate or token found in the collection.SOC L2 · IAMCredential rotation record; token revocation list; release approval.
6 · Harden and close (1–2 weeks)Deploy §13 playbooks 1 and 2 fleet-wide if they were not already in place — this is the control gap the incident proved. Promote the three §9 IOAs. Add the eight driver names to your WDAC policy. Record which detection actually caught it and which should have.Detection eng.Change records; IOA deployment evidence; post-incident review notes.
15

Detection Coverage Map

TechniqueBehaviourCQLIOACoverage
T1566.002Phishing link, tax / SSA / guest-complaint themesPARTIAL — native mail-gateway hunt N1 only; no endpoint telemetry exists for this step
T1204.002 · T1574.002Archive-borne EXE side-loading a paired DLLQ4PARTIAL — inferred from launch path; Falcon publishes no module-load event
T1497Sandbox / analyst-VM checks, decoy exportsGAP — entirely in-process, no sensor-visible artefact
T1564.003Console-window hiding via ShowWindow / SetWindowPos loopGAP — window-management APIs are not sensor-instrumented
T1106 · T1562.001 (unhooking)Indirect syscalls, API unhooking, IAT repairGAP — this is the stage designed to defeat detection. Mitigate with HVCI and sensor tamper protection (§12) rather than trying to detect it
T1068 · T1562.001 (BYOVD)Vulnerable helper driver dropped and loaded to terminate security processesQ1, Q2, Q3IOA 1GOOD — write, hash and load all covered, plus an independent CodeIntegrity log hunt (N2/N3)
T1548.002COM Elevation Moniker UAC bypassQ7IOA 3GOOD — after the CLSID baseline in Gate 2
T1547.001Run-key persistence, value name puttyQ5IOA 2GOOD — near-zero FP and durable across repacking
T1112Notification suppression (ToastEnabled / Balloon / ShowInfoTip)Q6GOOD — as a cluster; weak as a single value
T1140 · T1027.002Payload decoded from .reloc with custom Base16PARTIAL — offline PE triage only (N5); not observable in EDR telemetry
T1055 (Process Ghosting)Pending-delete temp file, SEC_IMAGE section, suspended host process, redirected threadQ8PARTIAL — only the staging write is visible; the execution is engineered not to be. ZwQueryVirtualMemory patching and NtManageHotPatch neutering are undetectable from user mode. Memory forensics (N4) is the only reliable confirmation
T1553.005VHD delivery stripping Mark-of-the-WebPARTIAL — mail-gateway block and §13 playbook 5 are the answer; no detection query
T1071.001 · T1568.002 · T1105Payload C2 over dynamic DNS or a bare IP on a high portQ9, Q10GOOD for the published infrastructure; PARTIAL for the general shape, since C2 rotates faster than a pack can be republished

Validation gates. Coverage claimed above is only real once §11 Gate 1 passes in your tenant — in particular Q3 depends on DriverLoad telemetry reaching your NG-SIEM repo, and Q5/Q6 depend on RegValueName being populated on registry events. Work Gate 2 (benign baseline) before promoting anything to an alert, and treat Gate 4 as the promotion contract. The three GAP rows are not oversights: unhooking, sandbox checks and console hiding leave no sensor-visible artefact by design, which is precisely why the hardening controls in §12 carry more weight than usual in this pack.

16

Hunt Summary Ticket

TITLE:      Cruciferra crypter service — EDR-blinding loader behind commodity RATs and stealers
SEVERITY:   High (Critical on any Q3 hit — vulnerable driver actually loaded)
SCOPE:      All Windows endpoints. Delivery is email-borne and opportunistic; no
            vertical or geography is out of scope. This hunts the CRYPTER, not any
            single customer campaign.

HYPOTHESIS: A commodity-malware crew has used the Cruciferra crypter service to
            deliver a RAT or stealer into the estate. The crypter blinds EDR via
            indirect syscalls, API/IAT unhooking and BYOVD process termination,
            escalates through the COM Elevation Moniker, persists under a Run value
            named "putty", suppresses Windows notifications, and executes the payload
            through a Process Ghosting variant. The observable half of that chain is
            the driver, the registry, and the staging write.

QUERIES:    Q1  BYOVD helper driver written to disk            CONF high / FP med
            Q2  Published SHA256 set (8 drivers + 1 loader)    CONF high / FP low
            Q3  BYOVD helper driver loaded into the kernel     CONF high / FP med
            Q4  Archive-borne EXE side-load entry point        CONF med  / FP high
            Q5  Run-key persistence value name "putty"         CONF high / FP low
            Q6  Notification-suppression registry cluster      CONF med  / FP med
            Q7  COM Elevation Moniker UAC bypass               CONF med  / FP med
            Q8  Ghost-payload staging in user Temp             CONF med  / FP med
            Q9  DNS to published C2 / staging hosts            CONF high / FP low
            Q10 RAT beacon: known C2 IP + dynamic DNS          CONF med  / FP med

DO FIRST:   1. Run Q2 and Q5 over 90 days. Both are near-zero-FP; any hit is an
               incident and short-circuits the rest of the hunt.
            2. Run Q1 and Q3 over 90 days. Triage on the writing process and the
               path, never on the driver name alone.
            3. Confirm the vulnerable-driver blocklist and ASR rule
               56a863a9-875e-4185-98a7-b882c64b5ce5 are enabled fleet-wide
               (section 10 audit block). If they are not, that is the finding.
            4. Only then work Q4, Q6, Q7, Q8 as stack-and-review hunts.

FINDINGS:   [ ] Q1 hits: ______   [ ] Q2 hits: ______   [ ] Q3 hits: ______
            [ ] Q5 hits: ______   [ ] Q9 hits: ______   [ ] Q10 hits: ______
            [ ] Vulnerable-driver blocklist enabled fleet-wide?  Y / N
            [ ] ASR 56a863a9 in Block mode fleet-wide?           Y / N

GAPS:       Unhooking, indirect syscalls, IAT repair, sandbox checks and console
            hiding are not detectable from the sensor by design. Process Ghosting
            execution is only PARTIALLY covered — the staging write is visible, the
            execution is not. Compensate with HVCI, WDAC driver blocking, sensor
            tamper protection and application allowlisting (section 12).

ACTIONS:    - Import the 14 atomic IOCs from section 10 into Falcon IOC Management.
            - Promote the three IOAs in section 9 (Detect for 14 days, then Prevent;
              the Q1-derived file-creation rule may go straight to Prevent).
            - Deploy section 13 playbooks 1 and 2 this week; pilot 3, 4 and 5.
            - Re-run Q2, Q9 and Q10 monthly; the infrastructure half of this pack
              perishes fast (a fresh Cruciferra build every few minutes on 9 Jul 2026).

OWNER:      Detection Engineering
VERSION:    v0.1 · 2026-07-29 · HuntPack
17

Changelog

v0.12026-07-29Initial pack — Cruciferra crypter-as-a-service, built from the Proofpoint Threat Insight analysis of 2026-07-20 plus three corroborating secondary reports. Scoped deliberately to the crypter's own loader behaviours (BYOVD helper-driver drop and load, the "putty" Run value, notification suppression, COM Elevation Moniker escalation, archive-borne side-load entry, ghost-payload staging) rather than to any one customer campaign; TA4922's Indian tax-lure activity is referenced only as an observed customer and remains covered by the existing OperationDragonReturn pack. 10 CQL hunt queries, 3 Custom IOA candidates, 6 native audit-log hunts, 14 atomic IOCs (8 BYOVD driver hashes, 1 loader hash, 3 C2 indicators, 2 staging hosts), 5 deployable hardening playbooks with rollback, and a 7-phase containment runbook. Unhooking, indirect syscalls, sandbox checks and console-window hiding are documented as hard detection GAPs and routed to hardening instead. Built on the review-v2 gold layout: fixed left-sidebar scrollspy TOC with collapse toggle, Falcon cloud selector inside the CQL section, per-card Copy CQL and Open in Falcon, grouped IOC quick-copy grid, coverage map, and hunt ticket.
18

References

TierSourceUsed forAccessed
TIER 1Proofpoint — Unpacking "Cruciferra": An Analysis of a Sophisticated Crypter Service (2026-07-20)Primary technical analysis. Every atomic IOC, every behavioural signature, the driver table, the syscall list, the registry keys, the Process Ghosting sequence, and the payload family list.2026-07-29
TIER 2The Hacker News — Cruciferra Crypter Uses BYOVD and Process Ghosting to Hide Windows Malware (2026-07-27)Corroboration; the Operation DragonReturn cross-reference that drove this pack's scoping decision.2026-07-29
TIER 2eSecurity Planet — Cruciferra Crypter Evades Detection to Deliver MalwareCorroboration of pricing, timeline, evasion stack and payload families.2026-07-29
TIER 2SecurityOnline — Cruciferra Crypter Service Cloaks RATs and Infostealers for Many Threat Actors (2026-07-27)Corroboration of the GoFlyDrv.sys EDR-termination role; PE File Version Information as a hunting handle.2026-07-29
FRAMEWORKMITRE ATT&CK T1068 · T1562.001 · T1574.002 · T1548.002 · T1547.001 · T1055Technique and mitigation mapping in §6 and §12.2026-07-29
VENDORMicrosoft — Recommended driver block rules / vulnerable driver blocklist · Defender ASR rules reference · COM Elevation MonikerHardening controls and playbooks in §12 and §13.2026-07-29
PIPELINEHuntPack library — OperationDragonReturn-HuntExisting coverage for TA4922's Indian tax-lure campaign; this pack deliberately does not duplicate it.2026-07-29
HuntPack · Cruciferra Crypter Service · v0.1 · Generated 2026-07-29 · Defensive content only — hunt, detect, harden.