Threat Summary
Two converging credential-theft operations dominate this reporting window, and together they sketch the shape of the 2026 identity-threat landscape.
Pulse 1 — AI-Driven Exploitation at Scale ("Death by a Thousand PaperCuts"): Blackpoint Cyber's Adversary Pursuit Group exposed an unknown threat actor running an AI-assisted exploitation pipeline against internet-facing PaperCut MF/NG print servers, weaponizing CVE-2026-81578 and CVE-2026-82078. Analysis of exposed operator infrastructure revealed a fully automated workflow: AI-assisted vulnerability research → PoC generation → target sourcing/filtering → mass exploitation → reverse shell deployment → SOCKS proxy installation → credential harvesting. Timestamped state files showed iterative campaign refinement — the operator was effectively running an LLM-orchestrated red team against the public internet. Compromised PaperCut servers are converted into SOCKS proxy nodes (for anonymizing downstream operations) and mined for domain credentials, since PaperCut typically authenticates against Active Directory / LDAP and stores user print-job identities.
Pulse 2 — Passkey-Themed Social Engineering (Storm-3121 / Storm-3032): Microsoft attributes an ongoing campaign (active since May 2026) to Storm-3121 and Storm-3032, in which operators impersonate IT helpdesk staff via phone calls and SMS, directing victims to phishing pages mimicking Microsoft Entra sign-in. The lures are passkey-themed — "set up your passkey," "sync your security key" — exploiting user confusion around passkey enrollment. Authentication is intercepted via adversary-in-the-middle (AiTM) phishing or abused OAuth device code flows, capturing session tokens that bypass MFA. Post-compromise, the actors add unauthorized passkeys/security keys to victim accounts for durable persistence, then pivot into cloud environments for data exfiltration.
Collective picture: both operations converge on the same objective — harvested credentials and session material that feed the access-broker economy. PaperCut servers yield domain/service credentials; the passkey campaign yields cloud session tokens and persistent MFA-bypass access. Expect harvested identity material from both pipelines to surface on dark web credential marketplaces and initial-access broker (IAB) listings. Identity is the perimeter being attacked; every enterprise with Entra ID tenants or internet-exposed print infrastructure is in scope.
Threat Actor / Malware Profile
Storm-3121 / Storm-3032 — Passkey AiTM Phishing Cluster
- Distribution: Voice phishing (vishing) and SMS (smishing) impersonating internal IT helpdesk. Victims are walked through "passkey enrollment" on attacker-controlled domains (
setupmypasskey.com,passkeyhelpdesk.com,oskeysync.com, etc.) that proxy Microsoft's legitimate sign-in pages. - Payload behavior: AiTM reverse-proxy phishing captures credentials and session cookies in real time; alternatively, the OAuth 2.0 device authorization grant (device code flow) is abused — the victim is instructed to enter an attacker-generated code at
microsoft.com/devicelogin, silently granting the attacker an access/refresh token pair. - Persistence: The defining TTP — after session capture, attackers register their own FIDO2 passkey / security key on the victim account (MITRE ATT&CK T1556 / T1078.004). This survives password resets and satisfies MFA requirements on subsequent logins.
- C2 / exfiltration: Authenticated sessions are replayed from attacker infrastructure (often residential proxies or VPS), then used for mailbox access, SharePoint/OneDrive enumeration, and bulk data exfiltration. Token replay frequently occurs from ASN/geography inconsistent with the victim's baseline.
- Anti-analysis: Phishing kits employ target filtering (redirecting non-target visitors to benign pages), short-lived domains, and AiTM proxy rotation to defeat URL scanners.
Unknown Actor — AI-Automated PaperCut Exploitation
- Distribution: Mass scanning for internet-facing PaperCut MF/NG instances, followed by automated exploitation of CVE-2026-81578 (unauthenticated remote code execution class flaw) and CVE-2026-82078. Target lists and PoCs were AI-generated and iteratively refined.
- Payload behavior: Post-exploitation drops a reverse shell stager, then deploys a SOCKS proxy implant converting the server into an anonymization relay. Secondary stage harvests stored credentials — PaperCut's AD/LDAP integration makes domain service accounts and cached user credentials high-value targets.
- Persistence: Implant persistence via service installation / scheduled execution on the print server; SOCKS proxy enables long-term infrastructure reuse.
- Anti-analysis: AI-driven automation of the kill chain (vuln research → PoC → filtering → execution) compresses time-to-exploit; operator infrastructure was only exposed through OPSEC failure, not technical detection.
IOC Analysis
| Type | Examples | Operationalization |
|---|---|---|
| Domains (8 shown / 19 total) | setupmypasskey.com, validationsetupac.com, portalsetuphub.com, myconnectkey.com, oskeysync.com, keysyncos.com, oskeyregister.com, passkeyhelpdesk.com | Block at DNS/web proxy immediately. Retro-hunt proxy & DNS logs back to May 2026. Note the naming pattern (passkey, keysync, oskey, setup) — add regex-based detection for lookalike domains. |
| CVEs (2) | CVE-2026-81578, CVE-2026-82078 | Confirm PaperCut MF/NG patch status. If internet-exposed and unpatched, assume compromise until proven otherwise. |
| FileHash-SHA256 (6 shown / 16 total) | 08387ff3...0228e, 092788c6...6e19, 243de540...2fee, 4cd2a9d5...f91c, 5cc0eee4...bde3, 6106fa15...91e0 | Load into EDR blocklists and retro-hunt. Submit to VirusTotal / OTX for sandbox detonation to map implants to reverse-shell/SOCKS tooling. |
Tooling: OTX DirectConnect / the otx Python SDK for automated pulse ingestion into your SIEM; MISP or OpenCTI for indicator management; ysoserial-style analysis is not applicable, but sandbox detonation (ANY.RUN, Joe Sandbox) of the SHA256 samples will extract C2 endpoints. For the phishing domains, run passive DNS pivots (SecurityTrails, Validin) — AiTM kits are frequently reused across fresh domains with identical TLS certificate fingerprints.
Detection Engineering
---
title: Suspicious Passkey or Security Key Registration on User Account
title_note: Detects addition of FIDO2 passkey/security key following potential AiTM phishing - Storm-3121/3032 TTP
id: 7f3a1c2e-9b4d-4e1a-a8c5-2d6f9e1b3a44
status: experimental
description: Detects registration of new passkey or security key methods on Entra ID accounts, a persistence technique used by Storm-3121/Storm-3032 after AiTM or device code phishing. Correlate with sign-in from unusual ASN or helpdesk-themed inbound calls.
author: Security Arsenal Threat Intel
date: 2026/09/12
references:
- https://www.microsoft.com/en-us/security/blog/2026/09/09/passkey-themed-social-engineering-leads-identity-cloud-compromise/
logsource:
service: auditlogs
product: azure
detection:
selection:
OperationName|contains:
- 'Register security info'
- 'Add FIDO2 security key'
- 'User registered security info'
TargetResources|contains:
- 'Passkey'
- 'Fido2AuthenticationMethod'
condition: selection
falsepositives:
- Legitimate new-hire passkey enrollment during onboarding
- IT-driven hardware key rollouts
level: high
tags:
- attack.persistence
- attack.t1556
- attack.t1078.004
---
title: OAuth Device Code Flow Authentication from Unusual Source
title_note: Detects device authorization grant abuse consistent with Storm-3121/3032 phishing
description: Identifies sign-ins using the OAuth 2.0 device code authentication protocol, which Storm-3121/Storm-3032 abuse by tricking victims into entering attacker-generated codes at microsoft.com/devicelogin.
id: 2b8d4e6a-1c3f-4a2b-b7d9-5e8a0c1f6d55
status: experimental
author: Security Arsenal Threat Intel
date: 2026/09/12
references:
- https://www.microsoft.com/en-us/security/blog/2026/09/09/passkey-themed-social-engineering-leads-identity-cloud-compromise/
logsource:
service: signinlogs
product: azure
detection:
selection:
AuthenticationProtocol|contains:
- 'deviceCode'
Status|contains:
- 'Success'
condition: selection
falsepositives:
- Legitimate CLI tooling (Azure CLI, Az PowerShell) on managed devices
- IoT and kiosk device enrollment
level: medium
tags:
- attack.credential_access
- attack.t1550.004
- attack.t1566
---
title: PaperCut Server Process Spawning Shell or Network Implant
title_note: Post-exploitation behavior for CVE-2026-81578 / CVE-2026-82078 AI-driven campaign
id: 9c1e5f7b-3d2a-4c8e-a6f1-8b3d7e2a9c66
status: experimental
description: Detects PaperCut print server processes (pc-app.exe, pc-server.exe, java.exe under PaperCut install paths) spawning shells, scripting interpreters, or proxy tooling, consistent with reverse shell and SOCKS proxy deployment observed in the AI-automated exploitation campaign.
author: Security Arsenal Threat Intel
date: 2026/09/12
references:
- https://blackpointcyber.com/blog/death-by-a-thousand-papercuts-ai-driven-exploitation-at-scale/
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|contains:
- '\PaperCut'
- 'pc-app.exe'
- 'pc-server.exe'
ParentCommandLine|contains:
- 'papercut'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\curl.exe'
- '\nc.exe'
- '\ncat.exe'
- '\socat.exe'
condition: selection_parent and selection_child
falsepositives:
- PaperCut health-check scripts in tightly managed environments
level: critical
tags:
- attack.execution
- attack.t1059
- attack.t1105
- attack.t1090
// Security Arsenal - Hunt: Storm-3121/3032 passkey AiTM phishing domains + PaperCut post-exploitation
// Sentinel tables: DeviceNetworkEvents, DeviceProcessEvents, SigninLogs, AuditLogs
// Part 1: Endpoint connections to known passkey phishing infrastructure
let PhishDomains = dynamic(["setupmypasskey.com","validationsetupac.com","portalsetuphub.com","myconnectkey.com","oskeysync.com","keysyncos.com","oskeyregister.com","passkeyhelpdesk.com"]);
let PhishHits = DeviceNetworkEvents
| where TimeGenerated > ago(120d)
| where RemoteUrl has_any (PhishDomains)
| project TimeGenerated, DeviceName, RemoteUrl, RemoteIP, InitiatingProcessAccountName, InitiatingProcessFileName;
// Part 2: Passkey registration events following risky sign-ins (persistence)
let PasskeyReg = AuditLogs
| where TimeGenerated > ago(30d)
| where OperationName has_any ("Register security info","Add FIDO2 security key")
| extend Actor = tostring(InitiatedBy.user.userPrincipalName)
| project RegTime=TimeGenerated, Actor, CorrelationId, Result;
let DeviceCodeSignins = SigninLogs
| where TimeGenerated > ago(30d)
| where AuthenticationProtocol =~ "deviceCode" or AuthenticationRequirement == "singleFactorAuthentication"
| where ResultType == 0
| project SigninTime=TimeGenerated, UserPrincipalName, IPAddress, AppDisplayName, AuthenticationProtocol, Location;
// Part 3: PaperCut processes spawning shells/proxies (CVE-2026-81578/82078 post-exploit)
let PaperCutExploit = DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName has_any ("pc-app.exe","pc-server.exe") or InitiatingProcessCommandLine has "PaperCut"
| where FileName in~ ("cmd.exe","powershell.exe","pwsh.exe","rundll32.exe","curl.exe","nc.exe","ncat.exe","socat.exe","wscript.exe")
| project ExploitTime=TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, AccountName;
PhishHits
| union PasskeyReg, DeviceCodeSignins, PaperCutExploit
| sort by TimeGenerated desc
# Security Arsenal - IOC & Persistence Hunt: Passkey AiTM phishing + PaperCut exploitation implants
# Run elevated. Checks: phishing domain DNS cache, PaperCut child-process services/tasks, suspicious proxy listeners, and IOC file hashes.
$PhishDomains = @("setupmypasskey.com","validationsetupac.com","portalsetuphub.com","myconnectkey.com","oskeysync.com","keysyncos.com","oskeyregister.com","passkeyhelpdesk.com")
$IoCHashes = @(
"08387ff35cc7854ddea1e2106b1150e9fe80646541c95c5a7121b77c9bc0228e",
"092788c6598784d91b411dde40f274c73448f6c803f57c8d0ca85a22d0516e19",
"243de5404091bcd920041cf2f4dd22e80f2c2922022854991d2b5e0ac78f2fee",
"4cd2a9d574febb1545966561d598c57194da47b09f9175dd888e6aa5d267f91c",
"5cc0eee4a1d8dbb737838e25f1e9ae37170a54ae757c431b5d6422904538bde3",
"6106fa15dc10764114d039f26a96d793c559f04b080a27af9f2f27c2eeb391e0"
)
Write-Host "=== [1] DNS cache hits for passkey phishing domains ==="
$dns = Get-DnsClientCache -ErrorAction SilentlyContinue
foreach ($d in $PhishDomains) {
$hit = $dns | Where-Object { $_.Entry -like "*$d*" }
if ($hit) { Write-Host "[!] DNS CACHE HIT: $d" -ForegroundColor Red; $hit | Format-Table Entry, Data }
}
Write-Host "=== [2] Suspicious services/tasks rooted in PaperCut paths (implant persistence) ==="
Get-CimInstance Win32_Service -ErrorAction SilentlyContinue |
Where-Object { $_.PathName -match 'PaperCut' -and $_.PathName -match 'cmd|powershell|pwsh|rundll32|nc\.exe|ncat|socat|temp|AppData' } |
Select-Object Name, DisplayName, PathName, State | Format-List
Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object {
($_.Actions.Execute -match 'powershell|cmd|wscript') -and
($_.TaskName -match 'print|papercut|sync|key|update|service')
} | Select-Object TaskName, TaskPath, State | Format-Table -AutoSize
Write-Host "=== [3] Listening SOCKS/proxy-style ports (1080, 1081, 8080, 9050) on non-standard processes ==="
Get-NetTCPConnection -State Listen -ErrorAction SilentlyContinue |
Where-Object { $_.LocalPort -in @(1080,1081,1085,8080,8888,9050,9051) } |
ForEach-Object {
$p = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[PSCustomObject]@{ Port=$_.LocalPort; Process=$p.ProcessName; Path=$p.Path; PID=$_.OwningProcess }
} | Sort-Object Port -Unique | Format-Table -AutoSize
Write-Host "=== [4] Outbound connections to phishing IOC IPs/domains (live sessions) ==="
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
Where-Object { $_.RemoteAddress -notmatch '^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.)' } |
ForEach-Object {
try { $rdns = ([System.Net.Dns]::GetHostEntry($_.RemoteAddress)).HostName } catch { $rdns = "" }
if ($PhishDomains | Where-Object { $rdns -like "*$_*" }) {
Write-Host "[!] ACTIVE CONNECTION to phishing infra: $($_.RemoteAddress) ($rdns) PID $($_.OwningProcess)" -ForegroundColor Red
}
}
Write-Host "=== [5] Sweep common implant staging dirs for OTX SHA256 hashes ==="
$paths = @("$env:TEMP","$env:ProgramData","C:\Windows\Temp","$env:APPDATA","C:\Program Files\PaperCut MF")
foreach ($p in $paths) {
if (Test-Path $p) {
Get-ChildItem -Path $p -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.Length -lt 50MB } | ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
if ($IoCHashes -contains $h.ToLower()) {
Write-Host "[!] IOC HASH MATCH: $($_.FullName) $h" -ForegroundColor Red
}
}
}
}
Write-Host "=== [6] Recent passkey / device-code related auth artifacts in Windows Event Log (web signs proxied via browser) ==="
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-WebAuthN/Operational'; StartTime=(Get-Date).AddDays(-30)} -ErrorAction SilentlyContinue |
Where-Object { $_.Message -match 'passkey|credential|register' } |
Select-Object -First 25 TimeCreated, Id, Message | Format-List
Write-Host "=== Hunt complete. Escalate any [!] findings to IR. ==="
Response Priorities
Immediate (0-4 hours)
- Block all 19 phishing domains at DNS, web proxy, and email/SMS gateway layers; retro-hunt proxy and DNS telemetry back to May 2026 (campaign start per Microsoft).
- Patch or isolate all internet-facing PaperCut MF/NG servers against CVE-2026-81578 / CVE-2026-82078; if exposure existed unpatched, treat as compromised and isolate for forensic triage.
- Load the 16 SHA256 indicators into EDR block and retro-hunt across all endpoints and print infrastructure.
- Sweep for listening SOCKS proxy ports (1080/9050/8080) on PaperCut hosts and servers generally.
24 Hours
- Audit Entra ID for newly registered passkeys/FIDO2 security keys in the last 90 days; correlate each registration with sign-in source ASN/geography and device code flow usage. Revoke unauthorized authentication methods, revoke refresh tokens, and force re-registration for affected users.
- Hunt AuditLogs for OAuth consent grants and device code authentications from unusual IPs; revoke suspicious app consents.
- For any user whose session may have been AiTM-phished: revoke all sessions, reset credentials, and review mailbox rules and forwarding for exfil channels.
- Rotate AD service account credentials used by PaperCut if any server shows post-exploitation artifacts.
1 Week
- Enforce phishing-resistant MFA with Conditional Access: require compliant/hybrid-joined devices for passkey registration, restrict security-info registration to trusted locations (use Entra Temporary Access Pass for onboarding), and block device code flow tenant-wide unless explicitly required.
- Remove PaperCut and all print infrastructure from direct internet exposure; place behind VPN/ZTNA. Print servers should never be internet-facing.
- Deploy detection content above to production; add alerting on helpdesk-impersonation vishing reports via your user reporting channel.
- Subscribe to OTX pulse feeds for these campaigns via DirectConnect to catch indicator refresh as actors rotate phishing domains.
Related Resources
Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.