Two fresh AlienVault OTX pulses converge on a single theme: credential and identity theft at scale. One campaign deploys a brand-new Rust-based espionage toolkit against Russian government, technology, and education targets; the other exploits enterprise trust in passkey rollouts to seize cloud accounts through adversary-in-the-middle phishing. Together they represent the current state of the art in identity compromise — endpoint surveillance on one side, cloud session hijacking on the other.
Threat Summary
These pulses reveal two parallel but complementary threats to enterprise identity:
Campaign 1 — Armored Likho 'Still Toolkit' (May 2026 – present): The Armored Likho cyber-espionage group (also tracked with the 'Eagle Werewolf' cluster) is running a targeted operation against private individuals and organizations across Russia — including major corporations, public sector entities, IT companies, and educational institutions. Initial access is achieved through fake donation service applications that socially engineer victims into executing malware. The attackers deploy a newly identified toolkit written in Rust, comprising at least three components:
- Still Sync — data synchronization/exfiltration module
- Still Audio — audio surveillance module enabling microphone eavesdropping
- AquilaRAT — remote access trojan providing operator control, including a Telegram stealer capability
The choice of Rust provides cross-platform flexibility, strong AV evasion characteristics, and complicates reverse engineering. The toolkit's emphasis on audio eavesdropping and Telegram credential theft indicates an intelligence-collection mission targeting communications — consistent with espionage rather than financially motivated theft.
Campaign 2 — Storm-3121 / Storm-3032 Passkey-Themed Social Engineering (May 2026 – present): A separate operation exploits enterprise passkey adoption campaigns. Attackers impersonate IT helpdesk staff via phone calls and SMS (vishing/smishing), directing victims to phishing sites that convincingly mimic Microsoft sign-in pages under the pretext of 'setting up your passkey.' Using adversary-in-the-middle (AiTM) phishing and device code authentication flow abuse, attackers capture credentials and session tokens, then establish durable persistence by registering unauthorized passkeys/authentication methods on the compromised account — effectively converting a one-time phish into permanent account access that survives password resets. Data exfiltration from cloud resources follows.
Collective objective: Both campaigns target the identity layer. Armored Likho steals messaging credentials and surveils victims at the endpoint; Storm-3121/3032 seizes cloud identities and converts them into persistent access. Any organization undergoing a passkey/FIDO2 rollout or with exposure to Telegram-based communications should treat both as immediately relevant.
Threat Actor / Malware Profile
Armored Likho — Still Toolkit (Still Sync, Still Audio, AquilaRAT)
| Attribute | Detail |
|---|---|
| Actor | Armored Likho (Eagle Werewolf cluster) — cyber-espionage |
| Distribution | Fake donation service applications (trojanized installers) delivered via social engineering |
| Language | Rust — chosen for AV evasion, cross-platform builds, and reverse-engineering friction |
| Payload behavior | Modular espionage: file/data synchronization (Still Sync), microphone capture and audio recording (Still Audio), full remote access (AquilaRAT), Telegram session/credential theft |
| C2 communication | AquilaRAT maintains operator channels; Telegram stealer artifacts indicate abuse of legitimate Telegram API infrastructure for exfiltration/C2 blending |
| Persistence | RAT component establishes survivable access; expected mechanisms include Run keys, scheduled tasks, and masqueraded binaries in user-writable directories (e.g., %APPDATA%) |
| Anti-analysis | Rust compilation (stripped symbols, non-standard calling conventions), social-engineering lure disguised as legitimate donation software, modular staged deployment |
| Targets | Russian government, major corporations, IT sector, educational institutions, private individuals |
Storm-3121 / Storm-3032 — Passkey-Themed AiTM Phishing
| Attribute | Detail |
|---|---|
| Actor | Storm-3121, Storm-3032 (Microsoft tracking designations) |
| Distribution | Vishing (phone) and smishing (SMS) impersonating IT helpdesk; victims directed to lookalike 'passkey setup' portals |
| Phishing infrastructure | Domains mimicking Microsoft sign-in with passkey/setup themes: setupmypasskey.com, passkeyhelpdesk.com, oskeysync.com, myconnectkey.com, etc. |
| Technique | Adversary-in-the-middle (AiTM) session token theft; abuse of OAuth device code flow to trick victims into authenticating attacker-controlled sessions |
| Persistence | Registration of unauthorized passkeys / FIDO2 security keys / authentication methods on victim accounts — survives password resets and re-enrollment |
| Objective | Cloud account compromise, data exfiltration, durable identity persistence |
IOC Analysis
The pulse indicators fall into two distinct operational categories:
File hashes (20 total — Armored Likho pulse): MD5 hashes for Still Toolkit samples and AquilaRAT components. MD5s are brittle (trivially altered by recompilation), so treat them as point-in-time detection for known samples. Operationalize by:
- Pushing all hashes to EDR blocklists and threat intel platforms (MISP, Sentinel TI, Defender custom indicators)
- Retro-hunting: scan email gateways, proxy logs, and download caches for historical presence of these binaries
- Pivoting: detonate available samples in a sandbox (ANY.RUN, Joe Sandbox, Hybrid Analysis) to extract SHA-256 variants, dropped file paths, mutexes, and network artifacts that outlive the original MD5
Domains (8 sampled of 19 — Storm-3121/3032 pulse): Passkey-themed phishing domains with highly predictable naming patterns (*passkey*, *keysync*, *oskey*, *setup*hub*). Operationalize by:
- DNS sinkholing/blocking at the resolver and secure web gateway
- Alerting on DNS queries and TLS SNI matching these domains retroactively (AiTM victims will have resolved them before any credential submission)
- Building pattern-based detections for the naming convention itself — the actor will register successor domains; keyword matching on newly observed domains containing
passkey,keysync,oskeycombined with recent registration dates catches the campaign's evolution - Feeding domains into Microsoft Sentinel/Defender threat intelligence indicators with
alertaction onDeviceNetworkEvents
Tooling to decode/pivot: urlscan.io and VirusTotal for phishing page infrastructure; crt.sh certificate transparency logs for sibling domains on shared certs; Maltego/OTX pulses for actor infrastructure clustering; sandbox detonation for the Rust binaries (note: Rust samples may require longer analysis windows and specific detonation profiles).
Detection Engineering
---
title: Armored Likho Still Toolkit - Suspicious Audio Capture via Non-Media Process
description: Detects microphone/audio capture initiated by suspicious processes consistent with the Still Audio surveillance module. Legitimate audio tools launched from user-writable or temp paths outside browser/communication apps are high-fidelity signals.
id: 7a3f1c2e-9b4d-4e8a-a1c5-stillaudio01
status: experimental
author: Security Arsenal Threat Intel
references:
- https://securelist.com/armored-likho-still-toolkit/121033
date: 2026/09/12
logsource:
category: process_creation
product: windows
detection:
selection_audio_tools:
Image|endswith:
- '\ffmpeg.exe'
- '\sox.exe'
- '\arecord.exe'
- '\soundrecorder.exe'
CommandLine|contains:
- 'dshow'
- 'audio='
- 'waveaudio'
- 'microphone'
selection_suspicious_path:
Image|contains:
- '\AppData\Roaming\'
- '\AppData\Local\Temp\'
- '\ProgramData\'
- '\Users\Public\'
condition: selection_audio_tools and selection_suspicious_path
falsepositives:
- Screen recording software installed by users (rare in temp/roaming paths)
level: high
tags:
- attack.collection
- attack.t1123
---
title: Armored Likho AquilaRAT - Known Still Toolkit Sample Execution
description: Detects execution of files matching known MD5 hashes of the Armored Likho Still Toolkit (Still Sync, Still Audio, AquilaRAT) published in OTX pulse data.
id: 8b4e2d3f-1c5a-4f9b-b2d6-aquilarat002
status: experimental
author: Security Arsenal Threat Intel
references:
- https://securelist.com/armored-likho-still-toolkit/121033
date: 2026/09/12
logsource:
category: process_creation
product: windows
detection:
selection_hashes:
Hashes|contains:
- 'MD5=c1d1ee16b92e6a138ffa048855f75d7d'
- 'MD5=17674b250d8b422a50a86c9ff207186d'
- 'MD5=62801f6223e860a7cca271522e303b2d'
- 'MD5=68f0365d2fa8c828d012d8859e52a773'
- 'MD5=4bd7c352ae277b0e38d07beedd4dd507'
- 'MD5=d4bc09fb10ea2a5dc0bcbeeda5e5afdd'
- 'MD5=2ca8adbab98ebe305eacf272cf48f5a0'
- 'MD5=3ac41b097236a7723821848ae31ef141'
condition: selection_hashes
falsepositives:
- None expected; these are confirmed malware samples
level: critical
tags:
- attack.execution
- attack.t1204
- attack.t1059
---
title: Storm-3121 Passkey-Themed AiTM Phishing Domain Resolution
description: Detects DNS queries to known Storm-3121/Storm-3032 passkey-themed phishing infrastructure and pattern-matching successor domains. Indicates a victim in an active AiTM or device-code phishing flow.
id: 9c5f3e4a-2d6b-5a0c-c3e7-passkey003
status: experimental
author: Security Arsenal Threat Intel
references:
- https://www.microsoft.com/en-us/security/blog/2026/09/09/passkey-themed-social-engineering-leads-identity-cloud-compromise/
date: 2026/09/12
logsource:
category: dns
product: windows
detection:
selection_known:
query|contains:
- 'setupmypasskey.com'
- 'validationsetupac.com'
- 'portalsetuphub.com'
- 'myconnectkey.com'
- 'oskeysync.com'
- 'keysyncos.com'
- 'oskeyregister.com'
- 'passkeyhelpdesk.com'
condition: selection_known
falsepositives:
- Threat researchers and security tooling validation
level: critical
tags:
- attack.initial_access
- attack.t1566
- attack.t1557
// Storm-3121 / Storm-3032 Passkey AiTM phishing + unauthorized passkey registration hunt
// Sentinel: correlates endpoint connections to phishing infra with device-code sign-ins and new auth method registration
let PhishingDomains = dynamic([
"setupmypasskey.com","validationsetupac.com","portalsetuphub.com","myconnectkey.com",
"oskeysync.com","keysyncos.com","oskeyregister.com","passkeyhelpdesk.com"
]);
let EndpointHits =
DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemoteUrl has_any (PhishingDomains)
| project EndpointTime=TimeGenerated, DeviceName, AccountName=InitiatingProcessAccountName, RemoteUrl, InitiatingProcessFileName;
let DeviceCodeSignIns =
SigninLogs
| where TimeGenerated > ago(14d)
| where AuthenticationProtocol has "deviceCode" or tostring(AuthenticationDetails) has "device code"
| project SigninTime=TimeGenerated, UserPrincipalName, IPAddress, AppDisplayName, ResultType, Status;
let NewPasskeyReg =
AuditLogs
| where TimeGenerated > ago(14d)
| where OperationName has_any ("Register security info", "Add FIDO2 security key", "Add passkey")
| mv-expand TargetResources
| extend UserPrincipalName = tostring(TargetResources.userPrincipalName)
| project RegTime=TimeGenerated, UserPrincipalName, OperationName, InitiatedBy = tostring(InitiatedBy.user.userPrincipalName), IPAddress = tostring(InitiatedBy.user.ipAddress);
EndpointHits
| join kind=leftouter (DeviceCodeSignIns) on $left.AccountName contains $right.UserPrincipalName
| join kind=leftouter (NewPasskeyReg) on UserPrincipalName
| project EndpointTime, DeviceName, AccountName, RemoteUrl, SigninTime, IPAddress, RegTime, OperationName
| order by EndpointTime desc
# Security Arsenal - Armored Likho Still Toolkit + Storm-3121 IOC Hunt
# Run elevated on suspect endpoints. Outputs findings to console and hunt_results.txt
$Report = @()
# --- 1. Known Still Toolkit / AquilaRAT MD5 hashes ---
$MaliciousMD5 = @(
"c1d1ee16b92e6a138ffa048855f75d7d",
"17674b250d8b422a50a86c9ff207186d",
"62801f6223e860a7cca271522e303b2d",
"68f0365d2fa8c828d012d8859e52a773",
"4bd7c352ae277b0e38d07beedd4dd507",
"d4bc09fb10ea2a5dc0bcbeeda5e5afdd",
"2ca8adbab98ebe305eacf272cf48f5a0",
"3ac41b097236a7723821848ae31ef141"
)
$ScanPaths = @("$env:APPDATA", "$env:LOCALAPPDATA\Temp", "C:\ProgramData", "C:\Users\Public", "$env:USERPROFILE\Downloads")
foreach ($Path in $ScanPaths) {
if (Test-Path $Path) {
Get-ChildItem -Path $Path -Recurse -File -Include *.exe,*.dll -ErrorAction SilentlyContinue | ForEach-Object {
try {
$Hash = (Get-FileHash -Path $_.FullName -Algorithm MD5 -ErrorAction Stop).Hash.ToLower()
if ($MaliciousMD5 -contains $Hash) {
$Report += "[CRITICAL] Known Still Toolkit sample: $($_.FullName) [MD5: $Hash]"
}
} catch {}
}
}
}
# --- 2. Phishing domain artifacts in DNS cache ---
$PhishDomains = @("setupmypasskey.com","validationsetupac.com","portalsetuphub.com","myconnectkey.com","oskeysync.com","keysyncos.com","oskeyregister.com","passkeyhelpdesk.com")
$DnsCache = Get-DnsClientCache -ErrorAction SilentlyContinue
foreach ($Domain in $PhishDomains) {
$Hit = $DnsCache | Where-Object { $_.Entry -like "*$Domain*" }
if ($Hit) { $Report += "[CRITICAL] DNS cache hit for phishing domain: $Domain" }
}
# --- 3. Persistence: suspicious Run keys and scheduled tasks in user-writable paths ---
$RunKeys = @("HKCU:\Software\Microsoft\Windows\CurrentVersion\Run", "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run")
foreach ($Key in $RunKeys) {
Get-ItemProperty -Path $Key -ErrorAction SilentlyContinue | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Value -match "AppData|Temp|ProgramData|Users\\Public" -and $_.Name -notmatch "^PS"
} | ForEach-Object { $Report += "[HIGH] Suspicious Run key: $Key\$($_.Name) = $($_.Value)" }
}
}
Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object {
$_.Actions.Execute -match "AppData|Temp|Users\\Public" -and $_.State -ne "Disabled"
} | ForEach-Object { $Report += "[HIGH] Suspicious scheduled task: $($_.TaskName) -> $($_.Actions.Execute)" }
# --- 4. Telegram stealer indicator: non-Telegram processes with Telegram API connections ---
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue | ForEach-Object {
$Proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
if ($Proc -and $Proc.ProcessName -notmatch "telegram|Telegram") {
$Remote = (Resolve-DnsName -Name $_.RemoteAddress -ErrorAction SilentlyContinue).NameHost
if ($Remote -match "telegram|t\.me") {
$Report += "[HIGH] Non-Telegram process '$($Proc.ProcessName)' connected to $Remote from $($Proc.Path)"
}
}
}
if ($Report.Count -eq 0) { Write-Output "[CLEAN] No indicators found on $env:COMPUTERNAME" }
else { $Report | ForEach-Object { Write-Output $_ }; $Report | Out-File "hunt_results_$env:COMPUTERNAME.txt" }
Response Priorities
Immediate (0–4 hours)
- Block all 8 Storm-3121/3032 phishing domains at DNS resolver, secure web gateway, and email filtering layers; push to EDR network indicators
- Push all 20 Still Toolkit MD5 hashes to EDR/AV blocklists and retro-hunt endpoint telemetry for prior execution
- Query DNS and proxy logs for historical resolution of phishing domains — any hit is a suspected AiTM victim requiring immediate response
- Alert on new passkey/FIDO2/authentication method registrations across the tenant for manual review
24 Hours
- For every user who resolved phishing domains: revoke all sessions and refresh tokens, force credential reset, and audit authentication methods for unauthorized passkeys — remove any not explicitly enrolled by the legitimate user. A password reset alone does NOT evict a registered attacker passkey.
- Review sign-in logs for device code flow usage; disable device code authentication tenant-wide where not operationally required
- For endpoints with Still Toolkit hash hits: isolate, acquire memory and disk images, enumerate persistence mechanisms (Run keys, scheduled tasks), and assess whether microphone capture occurred — notify legal/compliance if sensitive conversations may have been intercepted
- Audit Telegram sessions for affected users; terminate unknown active sessions
1 Week
- Architectural hardening of passkey rollouts: communicate a canonical enrollment path to all staff; helpdesk will never direct users to external passkey setup links. Publish the internal procedure widely — this kills the lure pretext.
- Deploy phishing-resistant conditional access: require compliant device + FIDO2 for sensitive apps; restrict device code flow via Conditional Access authentication contexts
- Implement pattern-based domain detection for successor phishing infrastructure (
passkey,keysync,oskey+ newly registered domains) - For organizations with Russia exposure: brief executives and high-value individuals on the fake donation app lure; tighten application allow-listing to block unauthorized executables in user-writable directories
- Add detection coverage for audio capture by non-media processes and Rust-compiled binaries executing from
%APPDATA%
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.