SOC Prime Bias: Critico

30 Gen 2026 19:58

Attacchi APT prendono di mira il governo indiano con SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
Attacchi APT prendono di mira il governo indiano con SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

Il rapporto copre l’operazione Sheet Attack, che ha distribuito tre backdoor su misura – SHEETCREEP, FIREPOWER e MAILCREEP – per compromettere le organizzazioni governative indiane. Gli impianti si sono basati su piattaforme cloud legittime per comando e controllo, tra cui Google Sheets, Firebase Realtime Database e Microsoft Graph API, aiutando l’attività a confondersi con il normale traffico SaaS. L’analisi nota anche artefatti coerenti con gli sviluppatori che utilizzano AI generativa per assistere la produzione di codice. La campagna è valutata come probabilmente collegata a un sottogruppo di APT36 basato in Pakistan.

Indagine

ThreatLabz ha condotto sia analisi dinamica che statica delle backdoor, documentando i metodi di persistenza, i flussi di lavoro C2, e il comportamento di esfiltrazione dei dati. Il team ha anche mappato l’infrastruttura di supporto, osservato il filtraggio basato su geografia e User-Agent, e catturato indicatori a livello di codice che suggeriscono l’assistenza AI nella generazione di sorgenti.

Mitigazione

Implementare rilevamenti stratificati per catene di consegna PDF/LNK sospetti, e monitorare per compiti programmati che avviano l’esecuzione di PowerShell o VBS. Applicare controlli rigorosi in uscita e il monitoraggio delle anomalie per i servizi cloud comunemente abusati come C2, tra cui Google Sheets, Firebase e Microsoft Graph. Utilizzare il blocco basato sugli hash per payload conosciuti e bloccare i domini e gli indirizzi IP malevoli identificati.

Risposta

Quando rilevato, isolare l’endpoint, terminare l’attività cmd.exe e PowerShell nascosta, rimuovere i compiti programmati correlati, ed eliminare i binari della backdoor. Preservare e rivedere i log C2 basati su Google Sheets e gli artefatti Firebase, poi cercare nell’ambiente ulteriori host che mostrano gli stessi indicatori.

graph TB %% Class definitions classDef action fill:#99ccff classDef process fill:#ffdd99 classDef file fill:#ffcccc classDef data fill:#e6e6ff classDef protocol fill:#d9ead3 classDef technique fill:#ffd966 %% Nodes – Initial Access action_phishing[“<b>Azione</b> – <b>T1204.001 Esecuzione Utente: Link Malevolo</b><br/>La vittima clicca un link malevolo in un PDF”] class action_phishing action file_phishing_pdf[“<b>File</b> – <b>Nome</b>: PDF di phishing<br/><b>Tecnica</b>: T1204.001”] class file_phishing_pdf file file_malicious_lnk[“<b>File</b> – <b>Nome</b>: LNK malevolo<br/><b>Tecnica</b>: T1204.002 Esecuzione Utente: File malevolo”] class file_malicious_lnk file process_powershell[“<b>Processo</b> – <b>Nome</b>: PowerShell<br/><b>Tecnica</b>: T1059.001 Interprete di comandi e script”] class process_powershell process file_dotnet_assembly[“<b>File</b> – <b>Nome</b>: Assembly .NET mascherato da PNG<br/><b>Tecniche</b>: T1620 Caricamento di codice riflessivo, T1036.008 Mascheramento del tipo di file”] class file_dotnet_assembly file process_hidden_cmd[“<b>Processo</b> – <b>Nome</b>: cmd.exe nascosto<br/><b>Tecnica</b>: T1059.003 Shell dei comandi”] class process_hidden_cmd process %% Nodes – Persistence action_persistence[“<b>Azione</b> – Configurazione della persistenza”] class action_persistence action task_scheduled[“<b>Tecnica</b> – T1053 Attività pianificata”] class task_scheduled technique script_gservices[“<b>File</b> – <b>Nome</b>: GServices.vbs<br/><b>Scopo</b>: Esecuzione ripetuta”] class script_gservices file %% Nodes – Command and Control action_c2[“<b>Azione</b> – Comando e Controllo”] class action_c2 action data_google_sheets[“<b>Archivio dati</b> – Google Sheets<br/><b>Tecnica</b>: T1102.002 Servizio Web: Foglio di calcolo”] class data_google_sheets data protocol_https[“<b>Protocollo</b> – HTTPS<br/><b>Tecnica</b>: T1071.001 Protocolli Web”] class protocol_https protocol technique_dead_drop[“<b>Tecnica</b> – T1102.001 Dead Drop Resolver”] class technique_dead_drop technique backup_firebase[“<b>Archivio dati</b> – URL Firebase<br/><b>Fallback</b>: Canale C2”] class backup_firebase data backup_gcs[“<b>Archivio dati</b> – Google Cloud Storage<br/><b>Fallback</b>: Canale C2”] class backup_gcs data encryption_tripledes[“<b>Tecnica</b> – T1027 File o informazioni offuscati/cifrati (TripleDES)”] class encryption_tripledes technique encryption_channel[“<b>Tecnica</b> – T1573 Canale cifrato”] class encryption_channel technique %% Nodes – Discovery action_discovery[“<b>Azione</b> – Ricognizione”] class action_discovery action command_whoami[“<b>Comando</b> – whoami<br/><b>Tecnica</b>: T1033 Scoperta utente/proprietario del sistema”] class command_whoami technique command_enum_domains[“<b>Comando</b> – Enumerazione degli account di dominio<br/><b>Tecnica</b>: T1087.002 Account di dominio”] class command_enum_domains technique %% Nodes – Execution of Commands action_execution[“<b>Azione</b> – Esecuzione dei comandi ricevuti”] class action_execution action %% Nodes – Cloud Account Creation cloud_account_creation[“<b>Azione</b> – Creazione account Google Cloud<br/><b>Tecnica</b>: T1136.003 Account cloud”] class cloud_account_creation action %% Nodes – Defense Evasion action_defense_evasion[“<b>Azione</b> – Elusione delle difese”] class action_defense_evasion action technique_hidden_fs[“<b>Tecnica</b> – T1564.005 File e directory nascosti”] class technique_hidden_fs technique %% Connections – Flow action_phishing –>|consegna| file_phishing_pdf file_phishing_pdf –>|contiene link a| file_malicious_lnk file_malicious_lnk –>|esegue| process_powershell process_powershell –>|carica via riflessione| file_dotnet_assembly file_dotnet_assembly –>|avvia| process_hidden_cmd process_hidden_cmd –>|abilita| action_persistence action_persistence –>|crea| task_scheduled action_persistence –>|esegue| script_gservices action_persistence –>|comunica con| action_c2 action_c2 –>|usa| data_google_sheets data_google_sheets –>|tramite| protocol_https action_c2 –>|impiega| technique_dead_drop action_c2 –>|fallback| backup_firebase action_c2 –>|fallback| backup_gcs action_c2 –>|cifra il traffico con| encryption_tripledes action_c2 –>|stabilisce| encryption_channel action_c2 –>|emette| action_discovery action_discovery –>|esegue| command_whoami action_discovery –>|esegue| command_enum_domains action_c2 –>|invia comandi a| action_execution action_execution –>|esegue tramite PowerShell| process_powershell action_execution –>|esegue tramite cmd nascosto| process_hidden_cmd action_c2 –>|richiede| cloud_account_creation cloud_account_creation –>|fornisce infrastruttura per| data_google_sheets cloud_account_creation –>|fornisce infrastruttura per| backup_firebase cloud_account_creation –>|fornisce infrastruttura per| backup_gcs action_execution –>|usa| action_defense_evasion action_defense_evasion –>|applica| technique_hidden_fs

Flusso di Attacco

Rilevamenti

Download o Upload via Powershell (via cmdline)

Squadra SOC Prime
29 Gen 2026

Dominio Microsoft Graph API Risolto da Processo Insolito (via dns_query)

Squadra SOC Prime
29 Gen 2026

File sospetti nel Profilo Utente Pubblico (via file_event)

Squadra SOC Prime
29 Gen 2026

Tentativo di Esecuzione Suspicious GNU Wget (via cmdline)

Squadra SOC Prime
29 Gen 2026

Chiama Metodi .NET Sospetti da Powershell (via powershell)

Squadra SOC Prime
29 Gen 2026

Esecuzione Sospetta da Profilo Utente Pubblico (via process_creation)

Squadra SOC Prime
29 Gen 2026

Possibile Infiltrazione/Esfiltrazione Dati/C2 tramite Servizi/Strumenti di Terze Parti (via dns)

Squadra SOC Prime
29 Gen 2026

File Estratti Sospetti da un Archive (via file_event)

Squadra SOC Prime
29 Gen 2026

IOC (SourceIP) per rilevare: Attacchi APT mirano il governo indiano usando SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2

Regole AI SOC Prime
29 Gen 2026

IOC (HashMd5) per rilevare: Attacchi APT mirano il governo indiano usando SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2

Regole AI SOC Prime
29 Gen 2026

IOC (DestinationIP) per rilevare: Attacchi APT mirano il governo indiano usando SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2

Regole AI SOC Prime
29 Gen 2026

IOC (HashSha1) per rilevare: Attacchi APT mirano il governo indiano usando SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2

Regole AI SOC Prime
29 Gen 2026

IOC (HashSha256) per rilevare: Attacchi APT mirano il governo indiano usando SHEETCREEP, FIREPOWER e MAILCREEP | Parte 2

Regole AI SOC Prime
29 Gen 2026

Rilevamento dei Comandi PowerShell per SHEETCREEP e Distribuzione Backdoor FIREPOWER [Windows Powershell]

Regole AI SOC Prime
29 Gen 2026

Rilevamento di Comunicazione C2 di SHEETCREEP e FIREPOWER Backdoor [Connessione di Rete Windows]

Regole AI SOC Prime
29 Gen 2026

Esecuzione di Simulazione

Prerequisito: Il Check Pre-volo di Telemetria & Baseline deve essere passato.

Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a una diagnosi errata.

  • Narrativa dell’Attacco & Comandi:

    1. Prepara il PNG malevolo:
      • L’attaccante crea un file PNG (details.png) che in realtà contiene un flusso di byte di un assembly .NET compilato, ma con i suoi byte invertiti per evitare l’analisi statica.
    2. Avviare PowerShell in modalità nascosta per caricare l’assembly:
      • L’attaccante esegue PowerShell con -WindowStyle Hidden -Command e un one-liner che legge i byte invertiti, ripristina l’ordine corretto, carica l’assembly tramite [System.Reflection.Assembly]::Load(), e invoca un punto di ingresso noto (Task10.Program::MB()).
    3. Distribuzione alternava di LNK a base di fuoco potenza:
      • Un .lnk preparato .lnk scorciatoia esegue powershell.exe con --headless -e (script codificato) per recuperare ed eseguire un backdoor PowerShell remoto.

    Questi passaggi corrispondono esattamente alle stringhe che la regola Sigma cerca, garantendo che l’allarme venga attivato.

  • Script di Test di Regressione:

    # -------------------------------------------------
    # Simulazione payload SHEETCREEP – riproduce esattamente la linea di comando
    # -------------------------------------------------
    
    # 1. Creare un assembly .NET fittizio (semplice C# hello world) e compilarlo
    $source = @"
    using System;
    public class Task10 {
        public static void MB() {
            Console.WriteLine("Payload executed");
        }
    }
    "@
    $tempDir = "$env:TEMPsheetcreep"
    New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
    $csFile = Join-Path $tempDir "Task10.cs"
    $dllFile = Join-Path $tempDir "Task10.dll"
    $source | Set-Content -Path $csFile -Encoding UTF8
    
    # Compile using csc (assumes .NET Framework SDK installed)
    $cscPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe"
    & $cscPath /target:library /out:$dllFile $csFile
    
    # 2. Leggere i byte della DLL, invertirli e scrivere a un file .png
    $bytes = [IO.File]::ReadAllBytes($dllFile)
    $revBytes = $bytes[($bytes.Length-1)..0]
    $pngPath = Join-Path $tempDir "details.png"
    [IO.File]::WriteAllBytes($pngPath, $revBytes)
    
    # 3. Eseguire esattamente la linea di comando PowerShell malevola (questo attiverà la regola)
    $maliciousCmd = '-WindowStyle Hidden -Command "$b=[IO.File]::ReadAllBytes(''details.png'');' +
                    '([System.Reflection.Assembly]::Load([byte[]]($b[($b.Length-1)..0])).GetType("Task10.Program")::MB())"'
    
    Start-Process -FilePath "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" `
                  -ArgumentList $maliciousCmd `
                  -WindowStyle Hidden `
                  -NoNewWindow
    
    # Cleanup (opzionale, eseguire dopo la verifica)
    # Remove-Item -Recurse -Force $tempDir
  • Comandi di Pulizia:

    # Rimuovere file e directory temporanei creati per il test
    $tempDir = "$env:TEMPsheetcreep"
    if (Test-Path $tempDir) {
        Remove-Item -Recurse -Force $tempDir
    }