CHOSEN BRICK / HEAVYGRAM — Iranian MOIS Spyware Targeting Dissidents, Activists & Journalists
Executive Summary
On 15 September 2026 the UK National Cyber Security Centre, US Federal Bureau of Investigation, and Netherlands' AIVD published a joint advisory on a Windows-only malware family that Iranian state cyber actors have used since at least the fall of 2023 to surveil individuals perceived as threats to the Iranian regime. NCSC tracks the core implant as CHOSEN BRICK; the FBI's companion FLASH report (an update to FLASH-20260320-001) analyzes seven related samples under the name HEAVYGRAM and attributes the campaign to Iran's Ministry of Intelligence and Security (MOIS), which the FBI assesses uses it to "collect intelligence, conduct data leaks, and inflict reputational harm against their intended targets." Victims documented in the UK, US and Netherlands include dissidents, journalists, and members of organizations whose views run counter to Government of Iran narratives; some victims' personal data has subsequently appeared on pro-Iranian leak sites, and Iranian intelligence services have in some cases plotted kidnap or lethal operations against people they see as enemies of the regime.
The intrusion pattern is social-engineering-first: the actor builds rapport with a target over WhatsApp, Telegram, or Instagram — often posing as a known contact or as platform "technical support" — then delivers a file disguised as a legitimate application (Pictory, RunwayML, Norton Antivirus, Telegram, Adobe Flash Player, KeePass, a bespoke "Telegram Authenticator") or a fabricated MRI scan result. The dropper shows the victim a convincing fake UI while silently staging a persistent implant. Persistence is a single, consistent registry mechanism — HKCU\Software\Microsoft\Windows\CurrentVersion\Run — under value names including SMQDService, winappx, MicDriver and Default_SSH, each pointing at a binary the FBI's malware analysis fully hashed (§4, §10). Every implant checks in to a per-victim Telegram bot for command and control (an explicit OPSEC choice to prevent cross-contamination between victims), and exfiltrates collected data either through that same bot or to legitimate cloud object storage (VultrObjects, StorjShare); NCSC notes recent variants add an HTTPS/SOCKS5 proxy layer (IPRoyal, LightningProxies) in front of the Telegram traffic. Additional downloaded malware is deliberately written to C:\Windows \SysWOW64 — note the injected space after "Windows," a masquerading path that does not exist on a real Windows install.
Capabilities documented across the seven FBI-analyzed samples go well beyond the NCSC summary: process/system enumeration, screenshot capture, microphone recording (with a one-minute silent WAV played to disguise the recording indicator), Chrome saved-password decryption, Gmail OAuth token theft via a Selenium-driven browser flow, Outlook mailbox harvesting, USB/MTP phone-storage exfiltration, and WhatsApp/Telegram browser-cache theft. This is deliberately a social/personal-device threat as much as a corporate one — NCSC explicitly notes the actor pivots to personal devices when corporate controls block delivery, so this pack's mitigations extend past the managed fleet.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry |
|---|---|---|---|
| 1 · Government | NCSC Advisory PDF — Iranian Cyber Targeting of Dissidents, Activists and Journalists (v1, 15 Sep 2026) | Full attack-chain narrative, Run-key persistence + observed value names, mutexes, masquerading deployment path, network IOC domains, MITRE ATT&CK appendix | yes |
| 1 · Government | FBI FLASH — Update on Government of Iran Cyber Actors' Deployment of Telegram C2 (HEAVYGRAM malware analysis, 15 Sep 2026) | 55-page deep technical analysis of 7 samples: file hashes (MD5/SHA1/SHA256), full mutex list with sample attribution, exact registry keys/values, C2 command tables, Defender-exclusion command lines, capability breakdown (keylog, Chrome creds, Gmail OAuth theft, MTP phone exfil, WhatsApp/mic capture) | yes |
| 1 · Government | NCSC news post — "Iranian cyber targeting of dissidents, activists and journalists" | Advisory summary, mitigations, reporting contacts | partial |
| 1 · Government | NCSC news post — "UK and allies expose spyware..." | Attribution framing, MOIS quote, link to March 2026 prior warning and Handala Hack persona | partial |
| 2 · News | The Hacker News — "Iranian Hackers Use Telegram-Controlled Malware to Spy on Dissidents and Journalists" (15 Sep 2026) | Independent confirmation of naming (HEAVYGRAM/CHOSEN BRICK), IOC domain list, capability summary | yes |
| 2 · News | Arab News — "UK, US and Netherlands issue advisory on Iran-linked spyware" | MOIS attribution quote, victim-leak-site consequence, Handala Hack / Stryker linkage | partial |
Decisions: the two government-source PDFs (NCSC advisory, FBI FLASH) are the backbone of every atomic IOC in this pack — both were fetched and parsed to extracted text and saved verbatim as source snapshots before any query or IOC was written (gate 4d). Where the NCSC prose and FBI deep-dive disagree on a spelling — NCSC's summary writes the SMQDService dropper as smdqservice.exe, while the FBI's sample-level analysis (with hashes) spells the same binary smqdservice.exe — both spellings are carried in the hunt queries and IOC table rather than silently picking one, since both strings are independently sourced. No IOC in this pack is shipped without appearing verbatim in a saved snapshot; where public reporting did not provide a durable atomic indicator (no C2 IP addresses were published, and Telegram bot tokens/IDs rotate per victim), the pack ships a behavioral signal instead of inventing one.
Hunt Brief & Attack Chain
Working hypothesis: MOIS-affiliated actors build rapport with a target over WhatsApp/Telegram/Instagram (often posing as IT support or a known contact), deliver a masquerading installer or offer AnyDesk-based "support," the dropper shows a fake UI while staging a Python-based persistent implant under a Registry Run key, the implant registers a unique mutex and reports to a per-victim Telegram bot, evades Microsoft Defender by adding path/extension exclusions, then harvests contacts/email/browser data/screenshots/audio and exfiltrates via the Telegram bot and/or cloud object storage — optionally fronted by an HTTPS/SOCKS5 proxy.
| Step | Behavior | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 · Initial contact | Rapport-building via WhatsApp/Telegram/Instagram, posing as trusted contact or platform support; extensive target research | Messaging app logs (out of band, personal device) | N6 (out-of-band) |
| 2 · Delivery | Trojanized installer (Pictory, RunwayML, Norton, Flash, KeePass, Telegram Authenticator) or fabricated MRI results; occasionally AnyDesk-based "IT support" | Download/process creation | Q2; N4 |
| 3 · Masquerade / stage 1 | Fake application UI shown to victim while dropper decompresses Python dependencies + stage-2 binary to ProgramData/AppData | ProcessRollup2, file creation | Q2 |
| 4 · Defense evasion | PowerShell/cmd adds Microsoft Defender path/extension exclusions for the implant's staging directories | ProcessRollup2 CommandLine | Q4; N3 |
| 5 · Persistence | Registry Run key added (SMQDService / winappx / MicDriver / Default_SSH) pointing at the stage-2 binary; mutex registered to prevent re-infection | RegGenericValueUpdate | Q1; N1 |
| 6 · C2 check-in | Per-victim Telegram bot polled via getUpdates; commands delivered as @/#/**-prefixed messages | DNS/network to api.telegram.org | Q5; N5 |
| 7 · Collection | Screenshots, mic audio (with decoy silent.wav), process/system info, Chrome saved passwords, Gmail OAuth tokens, Outlook mail, WhatsApp/Telegram browser cache, USB/MTP phone files | FileOpenInfo; file writes to ProgramData | Q8; N2 |
| 8 · Second-stage delivery | Additional malware (e.g. MicDriver, MsCache) downloaded and written to the masquerading C:\Windows \SysWOW64 path, reusing the same Run-key persistence pattern | ProcessRollup2 ImageFileName | Q3 |
| 9 · Exfiltration | Data sent to the Telegram bot and/or staged to VultrObjects/StorjShare cloud buckets; newer variants proxy through IPRoyal/LightningProxies | DNS/network to cloud-storage + proxy domains | Q6, Q7 |
Consolidated IOC Table
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| Registry | HKCU\Software\Microsoft\Windows\CurrentVersion\Run — values SMQDService / winappx / MicDriver / Default_SSH | high | detect | Persistence — NCSC + FBI corroborated |
| File path (behavioral) | "C:\Windows \SysWOW64" — masquerading dir, note the trailing space after "Windows" | high | detect | 2nd-stage deploy dir — NCSC + FBI corroborated |
| Mutex | ytyjyujyu (RuntimeSSH.exe), noi672pp434awkc12f (KeePass.exe), nih6723443489kcvrf (smqdservice.exe), euyrsmnszb85sf4444s (winappx.exe) | high | hunt | Execution guardrail — no native Falcon mutex telemetry, see §15 GAP |
| Filename | smdqservice.exe / smqdservice.exe, winappx.exe, RuntimeSSH.exe, MsCache.exe, MicDriver.exe/.dll, KeePass.exe (malicious), Telegram_Authenticator.exe, Pictory_premium_ver9.0.4.exe | high | detect | Masquerading droppers & implants — FBI sample analysis |
| Hash (SHA256) | See §10 grouped IOC CSV — 6 SHA256 + 2 MD5 across the 8 analyzed samples | medium | detect | Single-sourced (FBI only) — shipped at "high" not "critical" severity |
| Network (dual-use) | api.telegram.org | high | hunt | Per-victim C2 bot — legitimate service, DUAL-USE, never block |
| Network (dual-use) | vultrobjects.com, storjshare.io, backblazeb2.com | medium | hunt | Exfil cloud storage — legitimate services, DUAL-USE, never block |
| Network (dual-use) | iproyal.com, lightningproxies.net | medium | hunt | Proxy fronting for newer variants — legitimate services, DUAL-USE, never block |
| Delivery lure | Pictory, RunwayML, Norton Antivirus, Adobe Flash Player, KeePass, "Telegram Authenticator", fabricated MRI scan results | high | hunt | Social-engineering theme — user-awareness signal, not technically detectable |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Managed Windows endpoints | Falcon process, registry, file and network telemetry | Critical | Low — standard EDR telemetry covers persistence & execution |
| Personal / BYOD Windows devices | None (out of Falcon's reach by design) | High | GAP — NCSC explicitly notes the actor pivots here when corporate controls block delivery |
| DNS / web proxy logs | Corporate DNS + proxy logging | Medium | Medium — only visible for corporate-network egress, not home/mobile networks |
| Microphone / audio capture | No standard Falcon telemetry for device mic activation | Medium | GAP — requires OS privacy-audit logs or DLP, not EDR |
| Browser credential stores (Chrome) | FileOpenInfo on Login Data / Local State | Medium | Medium — high legitimate-tool overlap (Q8) |
| Removable/MTP phone storage | No native Falcon MTP/USB content telemetry beyond device-connect events | Medium | GAP — GetFilePhone capability is not directly observable via documented Falcon fields |
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Reconnaissance | T1589 — Gather victim identity information | Actor researches target to appear credible in social engineering | N6 (awareness) |
| Initial Access | T1566.003 — Phishing: spear-phishing via service | Rapport-building over WhatsApp/Telegram/Instagram, posing as trusted contact or platform support | N6; user training |
| Execution | T1204.002 — User execution: malicious file | Victim opens a file disguised as Pictory/RunwayML/Norton/Flash/KeePass/Telegram Authenticator or fake MRI results | Q2 |
| Persistence | T1547.001 — Boot or logon autostart: Registry Run keys | SMQDService / winappx / MicDriver / Default_SSH values under CurrentVersion\Run | Q1; N1 |
| Defense Evasion | T1480.002 — Execution guardrails: mutual exclusion | Mutex per sample (ytyjyujyu, noi672pp434awkc12f, nih6723443489kcvrf, euyrsmnszb85sf4444s) | §15 GAP — no Falcon mutex telemetry |
| Defense Evasion | T1562.001 — Disable or modify tools (Defender exclusions) | Add-MpPreference -ExclusionPath/-ExclusionExtension for implant staging dirs | Q4; N3 |
| Defense Evasion | T1036 — Masquerading | Fake application UI; fileless bthudtask.exe process image with no backing file staged under the spoofed C:\Windows \SysWOW64 path | Q3 |
| Discovery | T1057 / T1082 — Process & system information discovery | ProcessList/si C2 commands enumerate running processes and host info | N4 (endpoint review) |
| Collection | T1113 — Screen capture | ss C2 command sends host screenshot PNG | §15 GAP — no direct Falcon screenshot telemetry |
| Collection | T1123 — Audio capture | MicDriver.dll activates the microphone, plays a 1-minute silent WAV to mask the recording indicator | §15 GAP |
| Collection | T1555.003 — Credentials from web browsers | Chrome saved-password decryption via win32crypt + AES-GCM, staged as chrome_passwords.json | Q8 |
| Collection | T1528 — Steal application access token | MsCache.exe drives a Selenium/Chrome OAuth flow to steal Gmail refresh tokens | Q8; N2 |
| Collection | T1114.001 — Local email collection | Outlook mailbox content staged for exfiltration | N2 |
| Collection | T1025 — Data from removable media | GetFilePhone enumerates MTP-connected phones and copies files preserving directory structure | §15 GAP |
| Command & Control | T1102.002 — Web service: bidirectional communication | Per-victim Telegram bot polled via getUpdates; commands prefixed @/#/** | Q5; N5 |
| Exfiltration | T1041 — Exfiltration over C2 channel | Screenshots, credentials, mail sent as Telegram bot messages/documents | Q5 |
| Exfiltration | T1567.002 — Exfiltration to cloud storage | Data staged to VultrObjects / StorjShare S3-compatible buckets | Q6 |
| Command & Control | T1090.002 — External proxy | Recent variants front Telegram traffic through HTTPS/SOCKS5 proxies (IPRoyal, LightningProxies) | Q7 |
| Impact | T1485 — Data destruction | At least one sample carried disk-wipe functionality | N4 (endpoint review) |
Native Audit-Log Hunts (non-CQL / EDR-less checks)
N1 · Manual Run-key check (regedit / PowerShell)
NCSC's own recommended first check — works on any Windows device, managed or personal, with no EDR required.
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run # Or in PowerShell: Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' # Flag any value named SMQDService, winappx, MicDriver, or Default_SSH, # or any value whose data path is unfamiliar / points into ProgramData or AppData.
N2 · Windows Defender exclusion audit (Event ID 5007)
Every exclusion CHOSEN BRICK adds is logged by Defender itself if operational logging is enabled — this catches the defense-evasion step even on a host without Falcon.
Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" |
Where-Object { $_.Id -eq 5007 -and $_.Message -match 'Exclusion' } |
Select-Object TimeCreated, Message
# Also review current exclusions directly:
Get-MpPreference | Select-Object ExclusionPath, ExclusionExtension
N3 · PowerShell Script Block Logging (Event ID 4104) for exclusion commands
Catches the Add-MpPreference -ExclusionPath/-ExclusionExtension commands themselves in the PowerShell operational log, useful where the endpoint predates Falcon deployment or logging.
Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" |
Where-Object { $_.Id -eq 4104 -and $_.Message -match 'Add-MpPreference' } |
Select-Object TimeCreated, Message
N4 · Sysmon Event ID 1 / 13 fallback (no Falcon sensor)
For personal or unmanaged devices where Sysmon is the only available telemetry: hunt process creation for the masquerading installer names and registry-set events for the same Run-key values as Q1/Q2.
# Sysmon Event ID 1 (process create) - masquerading installer names
Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" |
Where-Object { $_.Id -eq 1 -and $_.Message -match 'Pictory_premium|Telegram_Authenticator|smqdservice|smdqservice|winappx|MicDriver|RuntimeSSH|MsCache' }
# Sysmon Event ID 13 (registry value set) - Run key persistence
Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" |
Where-Object { $_.Id -eq 13 -and $_.Message -match 'CurrentVersion\\Run' -and $_.Message -match 'SMQDService|winappx|MicDriver|Default_SSH' }
N5 · DNS / web-proxy review for C2 and exfil domains
For network appliances outside EDR visibility (home routers, guest networks). Treat every domain here as dual-use hunt-only context — never block.
# Review DNS/proxy logs for unexpected connections to: api.telegram.org # per-victim C2 bot (legitimate service) vultrobjects.com storjshare.io backblazeb2.com # exfil cloud storage (legitimate services) iproyal.com lightningproxies.net # proxy fronting (legitimate services) # A hit alone is not malicious - correlate against which PROCESS made the connection (Q5-Q7).
N6 · Personal-device / out-of-band user guidance
Not a query — a runbook item. NCSC explicitly recommends distributing this advisory to staff likely to be targeted (dissidents, journalists, activists, anyone with a public profile critical of the Iranian regime) and supporting them in checking personal devices, since the actor deliberately shifts delivery there when corporate controls interfere.
CrowdStrike LogScale CQL Hunt Queries
FileName) or backslash-only path fragments — no forward slash appears inside any regex literal. api.telegram.org, vultrobjects.com, storjshare.io, backblazeb2.com, iproyal.com and lightningproxies.net are legitimate dual-use services — Q5–Q7 are hunt-only context queries, never block/prevent.Looks for: a new/modified HKCU\...\CurrentVersion\Run value named SMQDService, winappx, MicDriver or Default_SSH — the exact value names documented by both NCSC and the FBI. FP: low — legitimate software essentially never reuses these exact odd value names, but confirm against your own environment baseline before promoting to block.
// HUNT: CHOSEN BRICK / HEAVYGRAM Run-key persistence (known value names) // MITRE: T1547.001 | CONF: high FP: low COST: low // REQUIRES: Falcon registry telemetry (RegGenericValueUpdate) // FALSE POSITIVES: none expected; these value names are not reused by legitimate software #event_simpleName=RegGenericValueUpdate | RegObjectName=/CurrentVersion\\Run/i | RegValueName=/^(SMQDService|winappx|MicDriver|Default_SSH)$/i | table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue], limit=200)
Looks for: the FBI-hashed implant/dropper basenames (both NCSC's and FBI's spelling of the SMQDService binary are covered) executing from ProgramData/AppData/Users\Public. FP: medium — winappx.exe and MsCache.exe are generic-sounding names; the path restriction is what separates this from any legitimate namesake.
// HUNT: known CHOSEN BRICK implant/dropper basenames from user-writable paths // MITRE: T1204.002, T1036 | CONF: medium FP: medium COST: low // REQUIRES: Falcon process telemetry // FALSE POSITIVES: winappx/MsCache are generic names; scope is the ProgramData/AppData path, not the name alone // TUNING: exclude known-good software inventory that legitimately installs to ProgramData; verify by hash against section 10 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^(smdqservice|smqdservice|winappx|RuntimeSSH|MsCache|MicDriver|KeePass|Telegram_Authenticator|Pictory_premium.*)(\.exe)?$/i | ImageFileName=/\\(ProgramData|AppData|Users\\Public)\\/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, FileName, CommandLine], limit=200)
Looks for: any process image path containing the actor's deliberately-misspelled Windows \SysWOW64 directory (note the space after "Windows" — this path does not exist on a real Windows install), or the observed fileless process name bthudtask.exe that runs from it with no backing file on disk. FP: low — a real Windows system never has a space in this path.
// HUNT: masquerading "Windows \SysWOW64" deployment path (trailing-space directory) // MITRE: T1036, T1547.001 | CONF: high FP: low COST: low // REQUIRES: Falcon process telemetry // FALSE POSITIVES: none expected; a genuine Windows install never has a space in this path #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | (ImageFileName=/\\Windows \\SysWOW64\\/i or FileName=/^bthudtask\.exe$/i) | table([@timestamp, ComputerName, UserName, ImageFileName, FileName, ParentBaseFileName, CommandLine], limit=200)
Looks for: powershell/pwsh/cmd invoking Add-MpPreference with an -ExclusionPath or -ExclusionExtension argument — the exact defense-evasion command the FBI observed across all analyzed samples. FP: medium — legitimate IT/AV-management scripts also add exclusions; scope to your change-management baseline.
// HUNT: Defender exclusion added via PowerShell/cmd (Add-MpPreference) // MITRE: T1562.001 | CONF: medium FP: medium COST: low // REQUIRES: Falcon process telemetry (CommandLine visibility) // FALSE POSITIVES: sanctioned IT/AV-deployment scripts (SCCM, Intune, RMM tooling) // TUNING: exclude known RMM/EDR-management parent processes and documented change-tickets #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^(powershell|pwsh|cmd)(\.exe)?$/i | CommandLine=/Add-MpPreference.*-Exclusion(Path|Extension)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Looks for: a DNS lookup for api.telegram.org made by a process that is not the legitimate Telegram Desktop client — every CHOSEN BRICK/HEAVYGRAM sample polls this exact endpoint for C2. FP: high — api.telegram.org is a legitimate, widely-used service; this is a hunt-only context signal, never a block candidate.
// HUNT: api.telegram.org contacted by non-Telegram process (per-victim bot C2) // MITRE: T1102.002, T1041 | CONF: medium FP: high COST: med // REQUIRES: Falcon DNS telemetry // FALSE POSITIVES: legitimate Telegram Desktop client, browser Telegram Web, sanctioned Telegram-bot automation // TUNING: exclude Telegram.exe/Telegram Desktop and any known-good internal bot integrations; api.telegram.org is DUAL-USE -- hunt only, never block #event_simpleName=DnsRequest | DomainName=/^api\.telegram\.org$/i | ContextBaseFileName!=/^Telegram(\.exe)?$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName], limit=200)
Looks for: a non-browser, non-backup process resolving VultrObjects/StorjShare/Backblaze B2 — the actor's documented exfil-storage providers. FP: high — these are legitimate S3-compatible cloud storage vendors used by countless backup and dev tools; hunt-only, never block.
// HUNT: cloud object-storage exfil context (VultrObjects/StorjShare/Backblaze B2) // MITRE: T1567.002 | CONF: medium FP: high COST: med // REQUIRES: Falcon DNS telemetry // FALSE POSITIVES: legitimate backup/sync/dev tooling using these S3-compatible providers // TUNING: exclude known backup agents (Veeam, Duplicati, rclone) and browser processes; these domains are DUAL-USE -- hunt only, never block #event_simpleName=DnsRequest | DomainName=/(vultrobjects\.com|storjshare\.io|backblazeb2\.com)$/i | ContextBaseFileName!=/^(chrome|msedge|firefox|onedrive)(\.exe)?$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName], limit=200)
Looks for: DNS resolution of the two residential/datacenter proxy providers NCSC observed newer variants using to front Telegram traffic. FP: medium — some organizations sanction commercial proxy/VPN vendors for testing or privacy; baseline before alerting.
// HUNT: proxy-fronted C2 context (IPRoyal / LightningProxies) // MITRE: T1090.002 | CONF: medium FP: medium COST: low // REQUIRES: Falcon DNS telemetry // FALSE POSITIVES: sanctioned corporate proxy/VPN vendors // TUNING: baseline any approved proxy/VPN vendors in your environment before alerting; these domains are DUAL-USE -- hunt only, never block #event_simpleName=DnsRequest | DomainName=/(iproyal\.com|lightningproxies\.net)$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName], limit=200)
Looks for: a process other than Chrome/Edge/Brave itself opening the Chrome Login Data or Local State file — the pattern GetChromePass uses to decrypt saved passwords, and the same file MsCache.exe copies to drive its Gmail-OAuth theft flow. FP: medium — legitimate password managers, browser-migration tools and endpoint backup agents also read these files.
// HUNT: non-browser process opening Chrome credential store (Login Data / Local State) // MITRE: T1555.003, T1528 | CONF: medium FP: medium COST: low // REQUIRES: Falcon file-access telemetry (FileOpenInfo) // FALSE POSITIVES: password managers, browser-profile migration tools, endpoint backup/DLP agents // TUNING: exclude known password-manager and backup-agent parent processes by hash/path #event_simpleName=FileOpenInfo | TargetFileName=/\\(Login Data|Local State)$/i | ParentBaseFileName!=/^(chrome|msedge|brave)(\.exe)?$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, TargetFileName], limit=200)
CrowdStrike Custom IOA Recommendations
| IOA Name | Field Patterns | Benign Exclusions | Deployment Path |
|---|---|---|---|
| CHOSEN BRICK — Run-key persistence (known value names) | RegGenericValueUpdate with RegValueName in SMQDService/winappx/MicDriver/Default_SSH under CurrentVersion\Run | None identified — promote directly to Detect+Block | Endpoint Security → Custom IOA → Registry, Detect+Block |
| CHOSEN BRICK — masquerading "Windows \SysWOW64" execution | Process image path containing \Windows \SysWOW64\ (literal space) or fileless bthudtask.exe | None identified — this path never legitimately exists | Custom IOA → Process Creation, Detect+Block |
| CHOSEN BRICK — Defender exclusion via PowerShell (Add-MpPreference) | powershell/pwsh/cmd with CommandLine matching Add-MpPreference.*Exclusion(Path|Extension) | Sanctioned RMM/AV-management tooling (allow-list by parent process/host group) | Custom IOA → Process Creation, Detect only |
Machine-Readable IOC Appendix
Grouped IOC Quick-Copy
Every value below appears verbatim in the NCSC advisory PDF and/or FBI FLASH report saved as this pack's source snapshots. Dual-use domains are marked hunt-only and must never be imported as block/prevent.
type,value,action,severity,expiration,description,tags sha256,e8b633dcad173eb41ef02686b46779a4a0e53df7f6c63039a798f2db5eb83afc,detect,high,2027-03-16,Pictory_premium_ver9.0.4.exe masquerading dropper,campaign:CHOSEN_BRICK sha256,9014fe4f16f01c0439b261ade4cf980f460e0dae46b1ec5f58fd9bc0af26e531,detect,high,2027-03-16,Telegram_Authenticator.exe masquerading dropper,campaign:CHOSEN_BRICK sha256,8b595258cff63c4f0ef9648adb54c6ab050bb1d27933ecb3d687d31b51b7ba0c,detect,high,2027-03-16,winappx.exe persistent implant,campaign:CHOSEN_BRICK sha256,4a3b003994112b4dd24ac8b9cc4757f4a12576b57b3cc8f5028d85fbceb7c405,detect,high,2027-03-16,smqdservice.exe persistent implant,campaign:CHOSEN_BRICK sha256,c2dd678511373dc07e73ef1a580fc3332e640f15ff0d4c1044d4b9f305b6f503,detect,high,2027-03-16,KeePass.exe malicious masquerading implant,campaign:CHOSEN_BRICK sha256,4908c0bc11a933d83c83935d9468ba8d08bc23529e5ff4d4344d4f0787b84bb6,detect,high,2027-03-16,MsCache.exe Gmail OAuth token stealer,campaign:CHOSEN_BRICK md5,ebdd9595b79b39f53909d862499dbc94,detect,high,2027-03-16,RuntimeSSH.exe persistent implant (SHA256 not published),campaign:CHOSEN_BRICK md5,f8b5554808428291acc65d1fd2efe01c,detect,high,2027-03-16,MicDriver.dll microphone-capture module (SHA256 not published),campaign:CHOSEN_BRICK
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Value: SMQDService -> C:\ProgramData\SMQDServicePackages\...\smqdservice.exe (NCSC prose spells it smdqservice.exe)
Value: winappx -> %ALLUSERSPROFILE%\MicrosoftDistribution\sysmain\winappx.exe
Value: MicDriver -> C:\ProgramData\Drivers\MicDriver\MicDriver.exe
Value: Default_SSH -> C:\ProgramData\ssh-cache-default\{8bda3848-495e-43f4-8d10-7d37a67f1604}\RuntimeSSH.exe
Masquerading deploy dir (note trailing space): "C:\Windows \SysWOW64"
Observed fileless process image in that dir: bthudtask.exe (no backing file on disk)
ytyjyujyu # RuntimeSSH.exe noi672pp434awkc12f # KeePass.exe (malicious) nih6723443489kcvrf # smqdservice.exe euyrsmnszb85sf4444s # winappx.exe # No native Falcon telemetry for mutex creation -- see section 15 coverage GAP. # Use for memory-forensic / YARA-based triage, not a CQL query.
api.telegram.org # per-victim C2 bot - legitimate service, DUAL-USE, never block vultrobjects.com # exfil cloud storage - legitimate service, DUAL-USE, never block storjshare.io # exfil cloud storage - legitimate service, DUAL-USE, never block backblazeb2.com # exfil cloud storage - legitimate service, DUAL-USE, never block iproyal.com # proxy fronting (newer variants) - legitimate service, DUAL-USE, never block lightningproxies.net # proxy fronting (newer variants) - legitimate service, DUAL-USE, never block
Registry Run-key value named SMQDService / winappx / MicDriver / Default_SSH Process image path containing "\Windows \SysWOW64\" (literal trailing space -- not a real path) Fileless process image "bthudtask.exe" with no backing file on disk PowerShell/cmd invoking Add-MpPreference with -ExclusionPath or -ExclusionExtension Non-Telegram process resolving api.telegram.org (per-victim bot C2) Non-browser process opening Chrome "Login Data" or "Local State" (credential/OAuth theft) Masquerading installer names: Pictory_premium, Telegram_Authenticator, KeePass.exe, RuntimeSSH.exe, MsCache.exe, MicDriver.exe/.dll
CHOSEN BRICK # NCSC name for the core Windows implant family HEAVYGRAM # FBI name for the same malware family (FLASH update to FLASH-20260320-001) Attribution: Iran Ministry of Intelligence and Security (MOIS) Also referenced alongside the "Handala Hack" persona (Stryker attack, FBI Director email leak) Active since: at least Fall 2023; joint advisory published 2026-09-15 (NCSC/FBI/AIVD) Targets: dissidents, journalists, activists, and individuals opposing Iranian regime narratives (UK, US, Netherlands documented)
Detection Validation Gates
| Gate | Check | Pass Criterion |
|---|---|---|
| Telemetry ready | Falcon process, registry, DNS and file-access telemetry enabled on managed hosts | All four event classes queryable; retention covers hunt window |
| Benign baseline | Enumerate legitimate software installing to ProgramData/AppData, sanctioned RMM/AV tooling, approved proxy/VPN vendors, password-manager/backup agents | Allow-lists built before promoting Q2/Q4/Q8 to alerting |
| Positive test | Lab: create a benign Run-key value (Q1 analog), run a benign Add-MpPreference exclusion (Q4 analog), open Chrome Login Data with a sanctioned tool (Q8 analog) | Each query fires on its benign analog, confirming logic is live |
| Promotion | Promote Q1 and Q3 (low FP, no legitimate collision) to Custom IOA Detect+Block; keep Q2/Q4/Q5/Q6/Q7/Q8 as tuned hunts pending baseline | IOAs wired with documented exclusions; hunts scheduled and owned |
| Dual-use discipline | Confirm api.telegram.org / vultrobjects.com / storjshare.io / backblazeb2.com / iproyal.com / lightningproxies.net are NOT present in any block/prevent policy | Zero hits in current block-list export for these six domains |
Hardening — Tiered & Deployable
This is a social-engineering-led, single-host implant with no lateral movement observed — the highest-leverage controls are (1) closing the specific persistence/evasion techniques used, and (2) reducing the odds the social-engineering lure ever executes.
- Application allowlisting (WDAC/AppLocker) to default-deny execution from
ProgramData,AppDataandUsers\Public— M1038. Directly blocks Q2/Q3's staging locations; CIS Windows Benchmark 18.10.x covers AppLocker/WDAC baselines. - Restrict who can modify Microsoft Defender exclusions (Tamper Protection ON; exclusion changes require admin/EDR-managed policy, not local PowerShell) — M1040 / M1018. Closes Q4's evasion step.
- Phishing-resistant MFA + user-awareness training specifically on messaging-app rapport-building lures (WhatsApp/Telegram/Instagram impersonation, fake IT support, "install this to view your results") — M1017. Targets the actual initial-access vector, which is 100% social engineering.
- PowerShell Constrained Language Mode + Script Block Logging enabled fleet-wide — M1042 / M1038. Surfaces Q4's
Add-MpPreferenceabuse even where Falcon coverage is thin. - Egress monitoring / SmartScreen & browser download-reputation enforcement for unsigned installers — M1021. Raises friction on the trojanized-installer delivery path (Pictory, RunwayML, Norton, Flash, KeePass, Telegram Authenticator lures).
- USB/MTP device-control policy restricting untrusted phone/media mounting on high-risk-profile users' machines — M1034. Mitigates the
GetFilePhoneMTP exfil capability (§15 GAP).
- Formal high-risk-individual protection program (personal-device guidance, dedicated reporting channel, out-of-band check-ins) for staff who are plausible MOIS targets (journalists, dissidents, activists, anyone with a public profile critical of the Iranian government) — M1017. This is the control the advisory itself recommends, and it is the only one that reaches the personal-device gap (§5).
- Credential-store hardening: enforce OS-level credential encryption (Windows Hello / Credential Guard) and discourage browser-saved passwords for high-risk users — M1041. Reduces the payoff of Q8's Chrome-credential theft pattern.
- Continuous threat-intel ingestion for MOIS/Handala-linked infrastructure and lure themes — M1047. This actor iterates lure themes quickly (medical results, AI app trials); static blocklists age out fast.
Deployable Playbooks
1 · Audit and remove CHOSEN BRICK Run-key persistence
Prerequisites: local admin or EDR remote-response session on the target host Reboot required: no Rollback: re-add the value manually if removed in error (unlikely -- these value names are not legitimate) # Check first: Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' | Select-Object SMQDService, winappx, MicDriver, Default_SSH # Remove a confirmed-malicious value: Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'SMQDService' -ErrorAction SilentlyContinue Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'winappx' -ErrorAction SilentlyContinue Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'MicDriver' -ErrorAction SilentlyContinue Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'Default_SSH' -ErrorAction SilentlyContinue
2 · Revert Microsoft Defender exclusions added by the implant
Prerequisites: local admin; confirm the paths below via N2 audit before removing (do not blind-remove exclusions you did not verify) Reboot required: no Rollback: re-add the exclusion path if a legitimate application depended on it (verify against change-management records first) Remove-MpPreference -ExclusionPath 'C:\ProgramData\MicrosoftDistribution\sysmain' Remove-MpPreference -ExclusionPath 'C:\ProgramData\SMQDServicePackages' Remove-MpPreference -ExclusionPath "$env:USERPROFILE\Downloads\Telegram Desktop" Remove-MpPreference -ExclusionExtension 'C:\ProgramData\MicrosoftDistribution\sysmain\winappx.exe' # Re-run a full Defender scan after clearing exclusions: Start-MpScan -ScanType FullScan
3 · Application allowlisting for ProgramData/AppData execution (WDAC baseline)
Prerequisites: pilot ring first; inventory legitimate ProgramData/AppData-installed software before enforcing Reboot required: yes (WDAC policy refresh typically requires reboot to fully apply in enforced mode) Rollback: redeploy the prior WDAC policy XML (keep a versioned copy before every policy change) or switch policy to Audit mode # Author/update a WDAC policy denying execution from user-writable paths, then: Set-RuleOption -FilePath policy.xml -Option 3 -Delete # remove Audit mode ConvertFrom-CIPolicy -XmlFilePath policy.xml -BinaryFilePath policy.bin Copy-Item policy.bin 'C:\Windows\System32\CodeIntegrity\SIPolicy.p7b' # Validate the effective policy before wide rollout: Get-CIPolicy -Path 'C:\Windows\System32\CodeIntegrity\SIPolicy.p7b'
4 · Hunt, isolate and preserve a confirmed host (Falcon)
Prerequisites: Falcon RTR access; legal/IR sign-off for network containment Reboot required: no (network containment does not require a reboot) Rollback: lift network containment once triage/eradication is confirmed complete # Confirm with Q1-Q8, then network-contain via Falcon Host Management. # Preserve memory/mutex artifacts before remediation (mutex list is not directly # queryable in CQL -- collect via memory acquisition or a targeted YARA sweep). # Do NOT add the dual-use domains (Q5-Q7) to any block policy -- contain the HOST, not the service.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Falcon network-contain the confirmed host; advise the user to disconnect any confirmed-compromised personal device from Wi-Fi/mobile data | SOC L2 / IR | Containment timestamp; Q1-Q3 detection events |
| Triage | Confirm which Run-key value/binary is present, whether Defender exclusions were added (N2), and which collection capabilities were active (screenshots, mic, Chrome/Gmail creds, Outlook, phone files) | IR | Registry export; Defender exclusion list; file inventory under ProgramData/AppData |
| Eradicate | Remove the Run-key value and binary; revert Defender exclusions (Playbook 1-2); rotate any credentials the implant could have accessed (Chrome-saved passwords, Gmail, Outlook, WhatsApp/Telegram sessions) | IR | Removal log; credential-rotation record |
| Recover | Full Defender scan; reimage if compromise duration or capability set (mic/screenshot/mail) warrants it; re-baseline WDAC/AppLocker policy on the host | IR + IT | Scan report; rebuild ticket |
| Harden | Enroll the affected individual in the high-risk-profile protection program (§12 strategic tier); brief on the specific lure themes observed (fake AI apps, fake AV, fabricated medical results); promote Q1/Q3 to blocking IOAs fleet-wide if not already | Detection Eng | Policy diff; IOA promotion record |
Detection Coverage Map
| Technique | Behavior | CQL | Native / IOA | Coverage |
|---|---|---|---|---|
| T1547.001 | Registry Run-key persistence | Q1 | IOA-1; N1 | Good |
| T1204.002 / T1036 | Masquerading dropper execution from user-writable path | Q2 | N4 | Partial needs benign-baseline tuning |
| T1036 / T1547.001 | Masquerading "Windows \SysWOW64" 2nd-stage deploy path | Q3 | IOA-2 | Good |
| T1562.001 | Defender exclusion via PowerShell | Q4 | IOA-3; N2, N3 | Partial needs RMM allow-list |
| T1102.002 / T1041 | Per-victim Telegram bot C2 | Q5 | N5 | Partial high dual-use FP by design |
| T1567.002 | Cloud-storage exfil (VultrObjects/StorjShare/Backblaze) | Q6 | N5 | Partial dual-use context only |
| T1090.002 | Proxy-fronted C2 (IPRoyal/LightningProxies) | Q7 | N5 | Partial dual-use context only |
| T1555.003 / T1528 | Chrome password / Gmail OAuth token theft | Q8 | N4 | Partial shared FP surface with legit tools |
| T1480.002 | Mutex execution guardrail | — | — | GAP no native Falcon mutex-creation telemetry; use memory forensics/YARA |
| T1113 | Screen capture | — | — | GAP no direct Falcon screenshot-API telemetry |
| T1123 | Microphone audio capture | — | — | GAP requires OS privacy-audit log or DLP, not EDR |
| T1025 | USB/MTP phone-storage exfiltration | — | — | GAP Falcon does not expose MTP file-content telemetry |
| T1566.003 / T1589 | Social-engineering rapport-building over messaging apps | — | N6 | GAP not technically observable; user-awareness control only |
Validation gates: confirm Falcon registry/process/DNS/file telemetry is enabled and retained on managed hosts; baseline sanctioned ProgramData/AppData software, RMM tooling, and approved proxy vendors before promoting Q2/Q4/Q6/Q7 to alerting; lab-test benign analogs for Q1/Q4/Q8; promote Q1 and Q3 (near-zero legitimate collision) to blocking IOAs and keep the rest as tuned hunts. Mutex, screenshot, microphone and MTP-exfil capabilities are documented GAPs with no native Falcon telemetry — close them with memory forensics, OS privacy-audit logging, or DLP rather than pretending a CQL query covers them.
Hunt Summary Ticket
TITLE: Hunt - CHOSEN BRICK / HEAVYGRAM (Iranian MOIS spyware)
SEVERITY: Critical (nation-state espionage; targets dissidents/journalists/activists; ITW since 2023)
SCOPE: Managed Windows endpoints + personal/BYOD devices (explicit actor pivot target); DNS/proxy egress
HYPOTHESIS: WhatsApp/Telegram rapport-building -> trojanized installer or fake MRI file ->
Registry Run-key persistence (SMQDService/winappx/MicDriver/Default_SSH) ->
Defender exclusion added -> per-victim Telegram bot C2 -> screenshot/mic/browser/
mail/phone collection -> exfil via Telegram bot and/or cloud storage (optionally proxied).
QUERIES RUN: CQL Q1 Run-key persistence | Q2 known implant execution | Q3 masquerading SysWOW64 path |
Q4 Defender exclusion abuse | Q5 Telegram C2 beacon | Q6 cloud-storage exfil context |
Q7 proxy-fronted C2 context | Q8 Chrome credential-store access
Native N1 manual Run-key check | N2 Defender exclusion audit | N3 PowerShell 4104 |
N4 Sysmon 1/13 fallback | N5 DNS/proxy log review | N6 personal-device guidance
DO FIRST: Q1 + Q3 - highest confidence, lowest FP, independently corroborated by NCSC AND FBI
FINDINGS: <pending analyst execution>
GAPS: Mutex/screenshot/microphone/MTP-phone-exfil capabilities have no native Falcon telemetry (see section 15);
no C2 IP addresses or bot tokens published (ephemeral/per-victim by design);
personal/BYOD devices are outside EDR visibility entirely
ACTIONS: Remove Run-key value + binary; revert Defender exclusions; rotate Chrome/Gmail/Outlook/WhatsApp/
Telegram credentials; promote Q1/Q3 to blocking IOAs; enroll affected individual in high-risk
protection program if a plausible MOIS target; never block api.telegram.org/vultrobjects.com/
storjshare.io/backblazeb2.com/iproyal.com/lightningproxies.net (dual-use)
OWNER: HuntPack
VERSION: v0.1 (Draft) - 2026-09-16
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| 1 | NCSC Advisory PDF — Iranian Cyber Targeting of Dissidents, Activists and Journalists (v1, 15 Sep 2026) | Attack chain, Run-key value names, mutexes, masquerading deployment path, network IOC domains, MITRE ATT&CK appendix | 2026-09-16 |
| 1 | FBI FLASH — Update on Government of Iran Cyber Actors' Deployment of Telegram C2 to Push Malware (HEAVYGRAM, 15 Sep 2026) | Full sample-level malware analysis: hashes, mutexes, registry keys, C2 commands, Defender-exclusion commands, capability breakdown | 2026-09-16 |
| 1 | NCSC news — Iranian cyber targeting of dissidents, activists and journalists | Advisory summary, mitigations, reporting contacts | 2026-09-16 |
| 1 | NCSC news — UK and allies expose spyware used by Iranian state actors | Attribution framing, MOIS quote, Handala Hack / March 2026 prior-warning linkage | 2026-09-16 |
| 2 | The Hacker News — Iranian Hackers Use Telegram-Controlled Malware to Spy on Dissidents and Journalists | Independent naming confirmation, IOC domain list, capability summary | 2026-09-16 |
| 2 | Arab News — UK, US and Netherlands issue advisory on Iran-linked spyware | MOIS attribution quote, victim leak-site consequence, Handala Hack / Stryker linkage | 2026-09-16 |
| 2 | MITRE ATT&CK T1547.001 — Boot or Logon Autostart Execution: Registry Run Keys | Persistence technique mapping | 2026-09-16 |
HuntPack v0.1 · CHOSEN BRICK / HEAVYGRAM (Iranian MOIS spyware) · Generated 2026-09-16 · Defensive use only — no offensive code. api.telegram.org, vultrobjects.com, storjshare.io, backblazeb2.com, iproyal.com and lightningproxies.net are legitimate dual-use services — hunt-only context signals throughout this pack, never block/prevent. Validate field names and tune benign baselines before promoting any query to alerting.