APT28 PRISMEX — Operation Neusploit (CVE-2026-21509)

Russia's APT28 (Fancy Bear) exploits a Microsoft Office RTF security-feature-bypass (CVE-2026-21509) in phishing against Central/Eastern European & Ukrainian government targets. The RTF drops MiniDoor (an Outlook email stealer, a stripped NotDoor variant) and PixyNetLoader, which deploys a Covenant Grunt implant. Defensive hunt & harden pack — no offensive code.
Threat
APT28 / Fancy Bear · Operation Neusploit
Severity
NATION-STATE · EXPLOITED ITW
Type
State espionage · Office RTF exploit · email theft
CVE
CVE-2026-21509 (Office RTF) · patched 26 Jan 2026 (OOB)
Payloads
MiniDoor (NotDoor variant) · PixyNetLoader · Covenant Grunt
Version
v0.3 · 2026-06-12
Author
HuntPack
01

Executive Summary

Operation Neusploit (Zscaler ThreatLabz, Jan 2026) is an APT28 (Fancy Bear, Russia GRU) espionage campaign exploiting CVE-2026-21509, a security-feature-bypass in how Microsoft Office handles RTF files (affects Office 2016/2019, LTSC 2021/2024, and M365 Apps; Microsoft shipped an out-of-band fix on 26 Jan 2026). APT28 sends crafted RTF/Word documents in phishing emails; CERT-UA reported abuse against 60+ central-government addresses in Ukraine.

The exploited document delivers a dropper that deploys MiniDoor — an Outlook email stealer assessed to be a stripped variant of the APT28-linked NotDoor Outlook backdoor — and PixyNetLoader (the "PRISMEX" loader), which in turn loads a Covenant Grunt implant for hands-on C2 (observed using filen.io for staging/exfil). Because the actor abuses Office and a known C2 framework, detection centers on the Office-document exploit lineage, the Outlook-stealer behavior, and the loader → Covenant Grunt chain.

Defender priority: Patch CVE-2026-21509 (the OOB fix) — that closes the exploit. Until verified, hunt Q1 (Office app — esp. opening an RTF — spawning a dropper/child), Q3 (MiniDoor Outlook-stealer persistence/registry), and Q4 (PixyNetLoader → Covenant Grunt). Treat any hit as a nation-state intrusion against high-value/government users.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry
1 · Vendor researchZscaler ThreatLabz — Operation NeusploitAPT28 + CVE-2026-21509; MiniDoor/PixyNetLoader/Covenant Grunt; CEE/Ukraine targetingyes
1 · Vendor researchPicus — CVE-2026-21509 APT28 Office zero-dayRTF security-feature-bypass mechanism; OOB patch 26 Jan 2026; affected Office versionsyes
1 · News / CERTThe Hacker News / CERT-UA60+ Ukrainian government addresses; MiniDoor = stripped NotDoor; Covenant Gruntyes
2 · VendorHive Pro / Security AffairsOperation Neusploit advisory; espionage focus; payload chainpartial

Decisions: patch-first (CVE-2026-21509 OOB fix closes the exploit); behavior-anchored on the Office-RTF lineage + MiniDoor Outlook-stealer + PixyNetLoader→Covenant Grunt; geopolitically scoped (CEE/Ukraine gov) so relevant orgs run at elevated priority; Covenant is a public framework, so detect its grunt behavior, not a fixed hash.

03

Hunt Brief & Attack Chain

Working hypothesis: A user opens a phishing RTF/Word; CVE-2026-21509 triggers a dropper that installs MiniDoor (Outlook email theft) and PixyNetLoader, which loads a Covenant Grunt for hands-on espionage and exfil via filen.io.

StepBehaviorTelemetryHunt Angle
1 · PhishingRTF/Word attachment to gov/high-value targetsMail gatewayN1
2 · ExploitCVE-2026-21509 RTF bypass → dropper executesProcessRollup2Q1; patch
3 · MiniDoorOutlook email stealer (NotDoor variant) installed/persistedregistry; Outlook VBA; procQ3; N3
4 · PixyNetLoader"PRISMEX" loader stages the next implantProcessRollup2; fileQ2 / Q4
5 · Covenant GruntCovenant C2 implant for hands-on controlProcessRollup2; netQ4 / Q5
6 · ExfilEmail/data exfil (filen.io staging)NetworkConnectIP4; DNSQ5; N4

Affected surface & telemetry

SurfaceRequired TelemetryPriorityGap Risk
Office (RTF) endpointsProcess lineage; Office version inventoryCriticalLow — patch + lineage
Outlook (MiniDoor)Outlook VBA / registry; mail-client behaviorHighMedium — VBA/registry telemetry
Loader / Covenant C2Process lineage + egressHighMedium — Covenant is generic
Mail / exfilMail gateway; proxy (filen.io)MediumMedium — staging service
04

Consolidated IOC Table

The patch closes the exploit; payloads/infra rotate. Behavior (Office-RTF lineage, Outlook-stealer, loader→Covenant) is durable. Copy-ready blocks in §9.
TypeValueConfActionContext
CVECVE-2026-21509 (Office RTF) — patched 26 Jan 2026highdetectPatch closes it
BehaviorOffice (winword/RTF) spawning a dropper / unusual childhighdetectExploit outcome — flagship
MalwareMiniDoor (NotDoor variant) — Outlook email stealermediumhuntOutlook persistence/exfil
MalwarePixyNetLoader ("PRISMEX") → Covenant GruntmediumhuntLoader → C2 implant
Networkfilen.io staging/exfil; Covenant Grunt HTTP C2mediumhuntC2 / exfil
05

ATT&CK Mapping

TacticTechniqueObserved BehaviorQuery / Control
Initial AccessT1566.001 — Spearphishing AttachmentPhishing RTF/Word to gov targetsN1
ExecutionT1203 — Exploitation for Client ExecutionCVE-2026-21509 RTF bypassQ1; patch
Persistence / CollectionT1137 / T1114 — Office persistence / email collectionMiniDoor Outlook stealerQ3; N3
Execution / Defense EvasionT1574 / T1620 — Loader / in-memory loadPixyNetLoader stages Covenant GruntQ2, Q4
Command & ControlT1071.001 — Web protocols (Covenant)Covenant Grunt HTTP C2Q4, Q5
ExfiltrationT1567.002 — Exfil to cloud (filen.io)Email/data exfil via staging serviceQ5; N4
06

Native Audit-Log Hunts

HuntSourceLogicResponse
N1 · Phishing RTFMail gatewayRTF/Word attachments to executive/government mailboxes; CEE/Ukraine-themed luresQuarantine + detonate; warn recipients
N2 · Office patch inventorySoftware inventoryOffice builds missing the 26 Jan 2026 OOB fix for CVE-2026-21509Force-patch; the fix
N3 · Outlook persistenceOutlook VBA / registry (LoadMacroProviderOnBoot, VbaProject.OTM)Unexpected Outlook VBA project / startup macros (MiniDoor)Remove; investigate mailbox
N4 · Covenant / filen.io egressProxy / DNSCovenant Grunt HTTP C2 patterns; connections to filen.ioBlock; identify the host
07

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Field names validated against the Falcon event reference; process hunts include SyntheticProcessRollup2. CEE/Ukraine-government orgs should run at elevated priority. Covenant is a public framework — tune Q4/Q5 to your environment.
Q1 · Office application spawning a dropper / unusual child
CONF HIGHFP LOW-MEDCOST LOW

Looks for: Word/Office spawning shells/loaders/LOLBins (CVE-2026-21509 exploit outcome). Accomplishes: catches the RTF-exploit chain. FP: some macro-enabled docs — flag non-Office children + RTF context.

// HUNT: APT28 Office RTF exploit lineage (CVE-2026-21509)
// MITRE: T1203, T1566.001 | CONF: high  FP: low-med  COST: low
// FP NOTES: macro-enabled docs; flag winword spawning shells/loaders, esp. from .rtf
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^(winword|excel|powerpnt|wordview)\.exe$/i
| FileName=/^(cmd|powershell|pwsh|mshta|wscript|cscript|rundll32|regsvr32|msiexec|certutil|curl)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Q2 · Dropper writing a loader to a user path
CONF MEDFP MEDCOST LOW

Looks for: a PE written to %TEMP%/%AppData% by an Office-spawned process (PixyNetLoader / MiniDoor drop). FP: correlate with Q1 on the same host.

// HUNT: APT28 dropper writing PixyNetLoader/MiniDoor to a user path
// MITRE: T1105, T1574 | CONF: medium  FP: medium  COST: low
// TUNING: correlate to Q1 (Office-spawned); flag PE/dll writes to %TEMP%/%AppData%
#event_simpleName=/PeFileWritten|NewExecutableWritten/
| ContextBaseFileName=/^(winword|cmd|powershell|mshta|rundll32)\.exe$/i
| TargetFileName=/\\(Temp|AppData)\\.+\.(exe|dll)$/i
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData], limit=200)
Q3 · MiniDoor Outlook-stealer persistence
CONF MED-HIGHFP LOW-MEDCOST LOW

Looks for: Outlook VBA / macro-on-boot registry changes (the NotDoor/MiniDoor persistence). Accomplishes: the email-stealer install. FP: sanctioned Outlook macros — rare; verify.

// HUNT: MiniDoor / NotDoor Outlook email-stealer persistence
// MITRE: T1137, T1114 | CONF: med-high  FP: low-med  COST: low
// TUNING: Outlook VBA is rare in most orgs; alert on VbaProject.OTM / LoadMacroProviderOnBoot
#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate|PeFileWritten/
| (RegObjectName=/\\Office\\.+\\Outlook\\.+(LoadMacroProviderOnBoot|Security\\Level)/i
   or TargetFileName=/\\Outlook\\VbaProject\.OTM$/i)
| table([@timestamp, ComputerName, UserName, RegObjectName, RegStringValue, TargetFileName], limit=200)
Q4 · PixyNetLoader → Covenant Grunt execution
CONF MEDFP MEDCOST LOW

Looks for: a user-path binary spawning a .NET-host process or known Covenant Grunt behavior (rundll32/regsvr32 loading a temp DLL; GruntStager strings). FP: correlate with Q1/Q2; Covenant is generic — tune.

// HUNT: PixyNetLoader -> Covenant Grunt
// MITRE: T1574, T1071.001 | CONF: medium  FP: medium  COST: low
// TUNING: Covenant is a public framework; correlate to Q1/Q2 + tune GruntStager indicators
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| (CommandLine=/(GruntStager|Grunt\.exe|Covenant|csc\.exe.+\\Temp\\.+\.cs)/i
   or (FileName=/^(rundll32|regsvr32)\.exe$/i and CommandLine=/\\(Temp|AppData)\\.+\.dll/i))
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Q5 · Covenant / filen.io C2 & exfil
CONF MEDFP MEDCOST MED

Looks for: DNS/connections to filen.io (staging/exfil) or Covenant C2 from a user-path binary. FP: filen.io is a legit service — flag from a non-sanctioned process; correlate with Q4.

// HUNT: APT28 C2 / exfil (filen.io staging / Covenant)
// MITRE: T1071.001, T1567.002 | CONF: medium  FP: medium  COST: med
// TUNING: filen.io is legitimate; flag from non-sanctioned processes; correlate to Q4
#event_simpleName=DnsRequest
| DomainName=/(^|\.)filen\.io$/i
| ContextBaseFileName!=/^(filen|filen-desktop)\.exe$/i
| table([@timestamp, ComputerName, ContextBaseFileName, DomainName], limit=200)
Q6 · Vulnerable Office build inventory (CVE-2026-21509)
CONF MEDFP LOWCOST LOW

Looks for: Office process versions predating the 26 Jan 2026 OOB fix. Accomplishes: exposure inventory — the patch is the fix. FP: low; cross-check build numbers per channel.

// HUNT: vulnerable Office build inventory (CVE-2026-21509)
// MITRE: T1203 | CONF: medium  FP: low  COST: low
// TUNING: map FileVersion to the 26 Jan 2026 OOB patched builds per Office channel
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^winword\.exe$/i
| groupBy([ComputerName, FileVersion], function=count())
| table([ComputerName, FileVersion, _count], limit=200)
08

CrowdStrike Custom IOA Recommendations

IOA NameField PatternsBenign ExclusionsDeployment Path
APT28 — Office spawns dropperParent *\winword.exe; Child cmd/powershell/mshta/rundll32/certutil.exeSanctioned macro/automation (allow-list)Endpoint Security → Custom IOA → Process Creation, Detect+Block
APT28 — Outlook VBA persistenceWrite to *\Outlook\VbaProject.OTM or LoadMacroProviderOnBootSanctioned Outlook macros (rare)Custom IOA → File Write / registry
Q1 is a strong promotion (Office→dropper). Q3 (Outlook persistence) is high-value where Outlook VBA is unused. Q4/Q5 stay tuned hunts (Covenant is generic).
09

Machine-Readable IOC Appendix

Grouped IOC Quick-Copy

One-click blocks for detection and patch audit. The patch is the fix; payloads/infra rotate — behavior is durable. Add per-incident atoms during triage.

Behavioral Signaturesdetection logic
winword.exe spawning cmd/powershell/mshta/rundll32/certutil (RTF exploit outcome)
PE/DLL written to %TEMP%/%AppData% by an Office-spawned process (PixyNetLoader/MiniDoor)
Outlook VBA persistence: VbaProject.OTM write / LoadMacroProviderOnBoot (MiniDoor = NotDoor variant)
rundll32/regsvr32 loading a temp DLL, or GruntStager/csc.exe compiling from %TEMP% (Covenant)
DNS/connection to filen.io from a non-sanctioned process (staging/exfil)
Vulnerable Office build predating the 26 Jan 2026 OOB fix
Named Tooling / AttributionAPT28
MiniDoor      # Outlook email stealer (stripped variant of NotDoor; APT28-linked)
NotDoor       # APT28 Outlook backdoor (parent of MiniDoor)
PixyNetLoader # the "PRISMEX" loader -> stages the implant
Covenant Grunt# public C2-framework implant used for hands-on control
# Actor: APT28 / Fancy Bear (Russia GRU). Campaign: Operation Neusploit.
# Targeting: Central/Eastern European + Ukrainian government (CERT-UA: 60+ addresses)
Patch / Exposure Auditthe fix
CVE-2026-21509   # Microsoft Office RTF security-feature-bypass (APT28 zero-day)
# Out-of-band fix released 26 Jan 2026. Affects:
#   Office 2016, Office 2019, Office LTSC 2021, Office LTSC 2024, M365 Apps for Enterprise
# Verify Office build vs the OOB patched build for your channel; force-update laggards.
# Defense-in-depth: block RTF at the mail gateway; disable legacy RTF where possible.
Hardening / Blockdefense-in-depth
Patch CVE-2026-21509 (26 Jan 2026 OOB) fleet-wide — the fix
Block/strip RTF + macro-enabled Office attachments at the mail gateway
ASR: block Office apps from creating child processes; block executable content from email
Disable Outlook VBA / macros (GPO) unless explicitly required
Egress: alert on filen.io from non-sanctioned processes; tune Covenant C2 detection
CEE/Ukraine-gov orgs: elevated monitoring + threat-intel feeds
10

Hardening — Tiered & Deployable

Patch the Office flaw, cut RTF/macro delivery, and constrain Office child processes.

Immediate — Patch & cut delivery
  • Patch CVE-2026-21509 (26 Jan 2026 OOB) fleet-wideM1051. The fix. Inventory laggards (Q6/N2).
  • Block/strip RTF + macro-enabled Office attachments at the gatewayM1021. Cuts delivery.
  • ASR: block Office apps from creating child processes; block executable content from emailM1042. Breaks the exploit chain (Q1).
  • Disable Outlook VBA / macros via GPOM1042. Neuters MiniDoor persistence (Q3).
Near term — Constrain & observe (pilot first)
  • PowerShell CLM + script-block logging; WDAC for LOLBinsM1038 / M1040. Blunts the dropper/loader.
  • Egress control: alert on filen.io + tune Covenant C2 detectionM1037.
  • Protected Outlook config; monitor VbaProject.OTMM1018. Feeds Q3/N3.
Strategic — Reduce espionage surface
  • Application allowlisting; default-deny LOLBin abuseM1038.
  • Phishing-resistant MFA; high-value-user protectionsM1032. Gov/exec targeting.
  • Elevated monitoring for CEE/Ukraine-gov orgs + APT28 threat intelM1047.
11

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the host; preserve the RTF + dropped payloads + Outlook VBA projectSOC L2Containment timestamp; Q1 event; RTF
TriageMap RTF → dropper → MiniDoor/PixyNetLoader → Covenant timeline; assess mailbox theft; find C2/filen.ioIRProcess tree; mailbox review; C2
EradicateRemove MiniDoor (Outlook VBA) + loader + Covenant Grunt; block C2; reset credentials used on the hostIRRemoval log; cred reset
RecoverRebuild if hands-on Covenant access occurred; rotate creds; review exfiltrated email/data scopeIR + ITRebuild ticket; exfil scope
HardenPatch CVE-2026-21509; block RTF/macros; ASR; promote Q1/Q3 IOAsDetection EngPatch coverage; IOA enabled
12

Detection Coverage Map & Validation

TechniqueBehaviorCQLIOACoverage
T1203RTF exploit (Office→dropper)Q1, Q6IOA-1Good + patch
T1105 / T1574Loader dropQ2Partial correlate to Q1
T1137 / T1114MiniDoor Outlook stealerQ3IOA-2Good where VBA unused
T1574 / T1071.001PixyNetLoader → CovenantQ4Partial Covenant generic
T1071.001 / T1567.002C2 / filen.io exfilQ5Partial + proxy (N4)
T1566.001Phishing RTF deliveryGAP mail gateway (N1)

Validation gates: (1) confirm process + (ideally) Outlook VBA/registry + proxy telemetry; (2) baseline any sanctioned Office macros / filen.io use; (3) lab-test a benign winword → cmd (Q1) and a benign VbaProject.OTM write (Q3); (4) patch CVE-2026-21509 + promote Q1/Q3; keep Q2/Q4/Q5 correlated. CEE/Ukraine-gov: elevated priority.

13

Hunt Summary Ticket

TITLE:        Hunt — APT28 PRISMEX / Operation Neusploit (CVE-2026-21509)
SEVERITY:     Critical (nation-state espionage; exploited Office zero-day)
SCOPE:        Office endpoints (RTF); high-value/government users; CEE/Ukraine elevated
HYPOTHESIS:   Phishing RTF (CVE-2026-21509) -> dropper -> MiniDoor (Outlook stealer, NotDoor
              variant) + PixyNetLoader -> Covenant Grunt -> hands-on espionage / filen.io exfil.
QUERIES RUN:  Q1 Office->dropper (IOA) | Q2 loader drop | Q3 MiniDoor Outlook persistence (IOA) |
              Q4 PixyNetLoader->Covenant | Q5 filen.io/Covenant C2 | Q6 vulnerable Office build
              + Native N1-N4 (phishing RTF, Office patch, Outlook persistence, C2/filen.io)
DO FIRST:     Patch CVE-2026-21509; then Q1, Q3 — escalate any hit (nation-state)
FINDINGS:     <pending analyst execution>
GAPS:         Phishing delivery (mail gw); Covenant is a generic framework (tune)
ACTIONS:      Patch OOB fix; block RTF/macros; ASR (Office child processes); disable Outlook VBA;
              promote Q1/Q3; elevated monitoring for CEE/Ukraine-gov
OWNER:        HuntPack
VERSION:      v0.3 - 2026-06-12
14

Changelog

v0.52026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.42026-06-29CQL syntax review (crowdstrike-logscale-v3): removed invalid FileCreateInfo event name from the Outlook-persistence file-write/registry hunt.
v0.32026-06-12Re-hunt + reformatted to the review-v2 gold layout (fixed left-sidebar scrollspy TOC, collapsible, cloud selector inside the CQL section, per-card Copy/Open-in-Falcon, Grouped IOC Quick-Copy grid, coverage+validation, .ticket). Refreshed from Zscaler/Picus/CERT-UA: Operation Neusploit attribution, CVE-2026-21509 RTF SFB + 26 Jan 2026 OOB patch + affected Office versions, MiniDoor (NotDoor variant) Outlook stealer, PixyNetLoader → Covenant Grunt, filen.io exfil, CEE/Ukraine-gov targeting. 6 CQL + 4 native hunts, 2 IOA candidates.
v0.12026-05-26Initial pack: APT28 PRISMEX / Operation Neusploit overview + hunts. Pre-gold top-bar layout.
15

References

TierSourceUsed For
1Zscaler ThreatLabz — Operation NeusploitAPT28 attribution, payload chain, targeting
1Picus — CVE-2026-21509 (APT28 Office zero-day)RTF SFB mechanism, OOB patch, affected versions
1The Hacker News — APT28 uses Office CVE-2026-21509MiniDoor=NotDoor variant; PixyNetLoader; Covenant Grunt; CERT-UA
2Hive Pro — Operation Neusploit · Security AffairsAdvisory; espionage focus; chain

HuntPack v0.3 · APT28 PRISMEX / Operation Neusploit · Generated 2026-06-12 · Defensive use only — no offensive code. Patch CVE-2026-21509 (the fix); behavioral hunts cover the Office-RTF lineage, MiniDoor Outlook theft, and the loader→Covenant chain. Covenant is a public framework — tune to your environment. Validate field names before promoting any query.