GammaSteel: All’interno della Catena di Malware in Evoluzione di Gamaredon
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Il rapporto descrive GammaSteel, una nuova catena di intrusione di Gamaredon (UAC-0010) costruita intorno a un ladro PowerShell senza file. Il malware memorizza 71 funzioni crittografate nel registro chiave HKCUPrinters e le protegge con Windows DPAPI. Raccoglie documenti dai drive locali, media USB e file attualmente in modifica, quindi deduplica i dati con MD5 prima di esfiltrarli al servizio legittimo compatibile con S3 Tebi.io, con fallback su domini russi codificati. La più ampia infrastruttura si affida anche a resolver di dead-drop ospitati su piattaforme pubbliche come Telegram, Telegra.ph, Write.as, Rentry.co e Mastodon, insieme ai servizi DNS dinamici. La campagna continua a mirare al governo ucraino e agli ambienti infrastrutturali critici.
Investigazione
Sekoia.io ha analizzato più di 70 artefatti, ha ricostruito l’intero dropper PowerShell e ha identificato la persistenza basata sul registro, un mutex, l’esecuzione nascosta di PowerShell pianificata e uno schema di esfiltrazione multi-strato. I ricercatori hanno mappato l’infrastruttura del resolver di dead-drop, catalogato 115 indirizzi IP, quattro domini e diversi set di credenziali S3, e osservato aggiornamenti automatizzati effettuati tramite post Mastodon. Hanno anche notato somiglianze con l’attività InvisiMole del 2020, in particolare l’uso di payload crittografati con DPAPI memorizzati nel registro.
Mitigazione
Le organizzazioni dovrebbero monitorare per scritture insolite a registro chiave HKCUPrinters, creazione di processi PowerShell nascosti e utilizzo del mutex Globalassembly307. Il traffico uscente verso l’endpoint S3 identificato s3.tebi.io e l’infrastruttura di fallback come justsstop.ru and 165.22.170.129 dovrebbe essere bloccato. I difensori dovrebbero anche implementare rilevazioni per lo specifico user-agent string in stile iPhone e per le voci di avvio del registro che invocano script PowerShell.
Risposta
Se viene rilevata l’attività GammaSteel, isolare l’host interessato, raccogliere l’ registro chiave HKCUPrinters hive del registro, estrarre i payload protetti da DPAPI e decrittarli utilizzando la chiave master della vittima dove possibile. Cercare in tutto l’ambiente artefatti correlati, bloccare gli URL e i domini di comando e controllo identificati, resettare eventuali credenziali compromesse e eseguire un’analisi forense completa per identificare moduli malevoli aggiuntivi.
"graph TB %% Class definitions classDef technique fill:#e6f7ff classDef process fill:#ffebcc classDef action fill:#c2f0c2 classDef tool fill:#dddddd classDef storage fill:#ffe6e6 classDef network fill:#d9d9ff classDef data fill:#f0e68c %% Nodes u2013 techniques tech_T1027_009["<b>Technique</b> – <b>T1027.009 Embedded Payloads</b><br/>Obfuscates payload within another file"] class tech_T1027_009 technique tech_T1027_007["<b>Technique</b> – <b>T1027.007 Dynamic API Resolution</b><br/>Resolves APIs at runtime to avoid static analysis"] class tech_T1027_007 technique tech_T1027_002["<b>Technique</b> – <b>T1027.002 Software Packing</b><br/>Packages malicious code to hide its true nature"] class tech_T1027_002 technique tech_T1027_013["<b>Technique</b> – <b>T1027.013 Encrypted/Encoded File</b><br/>Encrypts data using DPAPI before storage"] class tech_T1027_013 technique tech_T1547_001["<b>Technique</b> – <b>T1547.001 Registry Run Keys / Startup Folder</b><br/>Adds a Run key to achieve persistence"] class tech_T1547_001 technique tech_T1037_005["<b>Technique</b> – <b>T1037.005 Startup Items</b><br/>Uses startup items for persistence"] class tech_T1037_005 technique tech_T1680["<b>Technique</b> – <b>T1680 Local Storage Discovery</b><br/>Discovers local drives and user profiles"] class tech_T1680 technique tech_T1135["<b>Technique</b> – <b>T1135 Network Share Discovery</b><br/>Finds shared network locations"] class tech_T1135 technique tech_T1006["<b>Technique</b> – <b>T1006 Direct Volume Access</b><br/>Accesses removable media directly"] class tech_T1006 technique tech_T1025["<b>Technique</b> – <b>T1025 Data from Removable Media</b><br/>Collects data from USB devices"] class tech_T1025 technique tech_T1564_005["<b>Technique</b> – <b>T1564.005 Hidden File System</b><br/>Stores files in hidden locations"] class tech_T1564_005 technique tech_T1005["<b>Technique</b> – <b>T1005 Data from Local System</b><br/>Collects files from the local machine"] class tech_T1005 technique tech_T1537["<b>Technique</b> – <b>T1537 Transfer Data to Cloud Account</b><br/>Uploads stolen data to cloud storage"] class tech_T1537 technique tech_T1538["<b>Technique</b> – <b>T1538 Cloud Service Dashboard</b><br/>Uses cloud service interfaces for data exfiltration"] class tech_T1538 technique tech_T1102_001["<b>Technique</b> – <b>T1102.001 Web Service: Dead Drop Resolver</b><br/>Retrieves commands and configuration from public web services"] class tech_T1102_001 technique tech_T1620["<b>Technique</b> – <b>T1620 Reflective Code Loading</b><br/>Loads and executes code received at runtime"] class tech_T1620 technique %% Nodes u2013 actions and components malware_dropper["<b>Malware</b> – <b>Name</b>: Initial Dropper<br/><b>Description</b>: Executes obfuscated PowerShell script"] class malware_dropper process process_powershell["<b>Process</b> – <b>Name</b>: PowerShell<br/><b>Role</b>: Runs encoded script"] class process_powershell process storage_dpapi["<b>Storage</b> – <b>Location</b>: HKCUPrinters<br/><b>Content</b>: 71 functions encrypted with DPAPI"] class storage_dpapi storage persistence_runkey["<b>Action</b> – <b>Persistence</b>: Registry Run key<br/><b>Key</b>: HKCUSoftwareMicrosoftWindowsCurrentVersionRun"] class persistence_runkey action process_hidden_ps["<b>Process</b> – <b>Name</b>: Hidden PowerShell<br/><b>Purpose</b>: Reads orchestrator from registry"] class process_hidden_ps process orchestrator["<b>Action</b> – <b>Orchestrator</b>: Enumerates resources and coordinates collection"] class orchestrator action enumeration["<b>Action</b> – <b>Enumeration</b>: Drives, profiles, network shares"] class enumeration action collection["<b>Action</b> – <b>Collection</b>: Gathers files from local and network locations"] class collection action monitor_usb["<b>Action</b> – <b>USB Monitoring</b>: WMI event subscription for removable media"] class monitor_usb action staging_folder["<b>Storage</b> – <b>Hidden Folder</b>: Staging area for copied files"] class staging_folder storage fs_watcher["<b>Process</b> – <b>Name</b>: FileSystemWatcher<br/><b>Function</b>: Monitors nonu2011USB drives for changes"] class fs_watcher process deduplication["<b>Action</b> – <b>Deduplication</b>: Removes duplicate files before exfiltration"] class deduplication action upload_s3["<b>Action</b> – <b>Upload</b>: Sends data to S3u2011compatible bucket (tebi.io)"] class upload_s3 network fallback_post["<b>Action</b> – <b>Fallback Exfiltration</b>: POST to C2 domains mimicking iPhone UA"] class fallback_post network dead_drop["<b>Action</b> – <b>Dead Drop Resolver</b>: Retrieves config from Telegram, Telegra.ph, Write.as, Rentry.co, Mastodon"] class dead_drop action vbscript_backdoor["<b>Action</b> – <b>Secondary Backdoor</b>: Executes arbitrary VBScript from HTTP response"] class vbscript_backdoor action %% Connections u2013 flow malware_dropper –>|uses| tech_T1027_009 malware_dropper –>|uses| tech_T1027_007 malware_dropper –>|uses| tech_T1027_002 malware_dropper –>|stores encrypted data| tech_T1027_013 malware_dropper –>|launches| process_powershell process_powershell –>|writes encrypted functions to| storage_dpapi storage_dpapi –>|enables| persistence_runkey persistence_runkey –>|creates| tech_T1547_001 persistence_runkey –>|creates| tech_T1037_005 persistence_runkey –>|starts| process_hidden_ps process_hidden_ps –>|loads orchestrator from registry| orchestrator orchestrator –>|performs| enumeration enumeration –>|covers| tech_T1680 enumeration –>|covers| tech_T1135 orchestrator –>|collects data using| collection collection –>|uses| tech_T1005 collection –>|includes removable media via| tech_T1025 collection –>|includes direct volume access via| tech_T1006 collection –>|triggers| monitor_usb monitor_usb –>|copies files to| staging_folder staging_folder –>|is hidden by| tech_T1564_005 staging_folder –>|monitored by| fs_watcher fs_watcher –>|detects changes and triggers| deduplication deduplication –>|uploads to cloud via| upload_s3 upload_s3 –>|relies on| tech_T1537 upload_s3 –>|fallback to| fallback_post fallback_post –>|relies on| tech_T1538 orchestrator –>|gets updates from| dead_drop dead_drop –>|uses| tech_T1102_001 dead_drop –>|delivers| vbscript_backdoor vbscript_backdoor –>|leverages| tech_T1620 %% Styling assignments class malware_dropper,process_powershell,process_hidden_ps,fs_watcher,orchestrator,monitor_usb,vbscript_backdoor builtin class storage_dpapi,staging_folder builtin class persistence_runkey,enumeration,collection,deduplication,upload_s3,fallback_post,dead_drop action class tech_T1027_009,tech_T1027_007,tech_T1027_002,tech_T1027_013,tech_T1547_001,tech_T1037_005,tech_T1680,tech_T1135,tech_T1006,tech_T1025,tech_T1564_005,tech_T1005,tech_T1537,tech_T1538,tech_T1102_001,tech_T1620 technique "
Flusso d’Attacco
Rilevamenti
Punti di Persistenza Possibili [ASEPs – Software/NTUSER Hive] (via registry_event)
Visualizza
La Possibilità di Esecuzione Attraverso Linee di Comando PowerShell Nascoste (via cmdline)
Visualizza
LOLBAS WScript / CScript (via process_creation)
Visualizza
Possibile Scoperta dell’Informazione di Sistema Utilizzando il Modulo Powershell WMI (via powershell)
Visualizza
Query DNS di Processi Sospetti su Servizi Web di Abuso Noti (via network_connection)
Visualizza
Possibile Abuso di un Dominio di Sviluppo Cloudflare (via dns)
Visualizza
IOCs (SourceIP) da rilevare: Matrioska dell’FSB #3/3 – Regali di Gamaredon che continuano a svelarsi – GammaSteel
Visualizza
IOCs (DestinationIP) da rilevare: Matrioska dell’FSB #3/3 – Regali di Gamaredon che continuano a svelarsi – GammaSteel
Visualizza
Rilevamento dell’Esecuzione PowerShell Nascosta per le Operazioni Gamaredon [Windows Powershell]
Visualizza
Rilevamento della Tecnica di Staging di PowerShell di Gamaredon nel Registro [Evento Registro Windows]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il controllo pre-volo di Telemetria & Baseline deve essere passato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta attesa dalla logica di rilevamento.
-
Narrativa d’Attacco & Comandi:
L’attaccante, avendo compromesso un account utente a bassa privilegi, vuole mettere in scena un payload PowerShell crittografato senza toccare il file system. Scrivono il payload codificato in Base64 nelRunchiave in modo che venga eseguito alla prossima connessione. Per evitare l’esclusione singola della regola, usano deliberatamente una sottochiave sottoHKCUPrintersche è not il valore escluso, imitando il modello “printer-staging” osservato nei campioni di Gamaredon. -
Script di Test di Regressione:
# -------------------------------------------------------------- # Simulare il Staging del Registro PowerShell di Gamaredon (TC-20260608-A1B2C) # -------------------------------------------------------------- # 1. Definire un comando PowerShell innocuo codificato in Base64 (es., scrivere un file) $payload = 'Write-Host "Eseguita simulazione Gamaredon"' $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) # 2. Persistenza del payload tramite la chiave Run (persistenza) $runKey = 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' New-ItemProperty -Path $runKey -Name 'StagerGamaredon' -Value "powershell -enc $b64" -PropertyType String -Force # 3. Mettere in scena lo stesso payload in una chiave “stampante” (staging senza file) $printerKey = 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' # Nota: suffisso diverso per evitare esclusione New-Item -Path $printerKey -Force | Out-Null Set-ItemProperty -Path $printerKey -Name 'EncryptedPS' -Value $b64 -Force Write-Host "Simulazione completa – voci di registro create." -
Comandi di Pulizia:
# Rimuovi voce della chiave Run Remove-ItemProperty -Path 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' -Name 'StagerGamaredon' -ErrorAction SilentlyContinue # Rimuovi chiave di staging della stampante Remove-Item -Path 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Pulizia completa – artefatti di registro rimossi."