{"id":98,"date":"2026-01-13T00:00:00","date_gmt":"2026-01-12T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/it\/wordpress-cloaking-selettivo-googlebot-verifica-ip-asn-cidr\/"},"modified":"2026-01-20T06:32:45","modified_gmt":"2026-01-20T05:32:45","slug":"wordpress-cloaking-selettivo-googlebot-verifica-ip-asn-cidr","status":"publish","type":"post","link":"https:\/\/helloblog.io\/it\/wordpress-cloaking-selettivo-googlebot-verifica-ip-asn-cidr\/","title":{"rendered":"WordPress e cloaking \u201cselettivo\u201d: quando il malware serve contenuti solo a Googlebot verificando l\u2019IP"},"content":{"rendered":"\n<p>Negli ultimi mesi sta diventando sempre pi\u00f9 comune un approccio silenzioso e selettivo: niente redirect a raffica per tutti, ma contenuti malevoli consegnati solo ai crawler dei motori di ricerca. Il vantaggio per l\u2019attaccante \u00e8 evidente: il proprietario del sito naviga e \u201csembra tutto a posto\u201d, mentre Googlebot riceve una pagina diversa che finisce in SERP (Search Engine Results Pages).<\/p>\n\n\n\n<p>In un caso analizzato da Sucuri, l\u2019infezione era particolarmente interessante dal punto di vista tecnico perch\u00e9 non si limitava a controllare l\u2019header <code>User-Agent<\/code> (facile da falsificare), ma verificava anche che l\u2019indirizzo IP del visitatore appartenesse realmente ai range di Google, usando una libreria hardcoded di ASN e calcoli bitwise su range CIDR, con supporto anche a IPv6.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"636\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/IP-Verified-Conditional-Logic.png\" alt=\"Schema di logica condizionale con verifica IP per identificare Googlebot\" class=\"wp-image-90\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/IP-Verified-Conditional-Logic.png 1360w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/IP-Verified-Conditional-Logic-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/IP-Verified-Conditional-Logic-1024x479.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/IP-Verified-Conditional-Logic-768x359.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/IP-Verified-Conditional-Logic-400x187.png 400w\" sizes=\"auto, (max-width: 1360px) 100vw, 1360px\" \/><figcaption class=\"wp-element-caption\">L\u2019idea: mostrare contenuti diversi a seconda dell\u2019identit\u00e0 del visitatore, verificata su pi\u00f9 livelli. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Che cosa \u00e8 stato compromesso (e perch\u00e9 \u00e8 insidioso)<\/h2>\n\n\n\n<p>L\u2019iniezione non era in un plugin \u201cstrano\u201d, ma direttamente nel file principale <code>index.php<\/code> di WordPress. In pratica, quel file diventava un gatekeeper: invece di avviare sempre WordPress e rendere il tema, decideva prima chi stava visitando la pagina e, solo in certi casi, caricava contenuti da una sorgente esterna.<\/p>\n\n\n\n<p>\u00c8 una variante di cloaking SEO: Google \u201cvede\u201d qualcosa che l\u2019utente umano non vede. In questi scenari il danno non \u00e8 solo reputazionale; pu\u00f2 portare a deindicizzazione, blacklisting, e pi\u00f9 in generale a perdita di fiducia del motore di ricerca verso il dominio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1270\" height=\"936\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/What-Google-sees.png\" alt=\"Esempio di contenuto diverso mostrato a Google rispetto ai visitatori reali\" class=\"wp-image-91\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/What-Google-sees.png 1270w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/What-Google-sees-300x221.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/What-Google-sees-1024x755.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/What-Google-sees-768x566.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/What-Google-sees-400x295.png 400w\" sizes=\"auto, (max-width: 1270px) 100vw, 1270px\" \/><figcaption class=\"wp-element-caption\">Esempio di discrepanza: i visitatori vedono il sito normale, Googlebot riceve contenuti differenti. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">La novit\u00e0: non solo User-Agent, ma verifica IP via ASN + CIDR<\/h2>\n\n\n\n<p>Molti script di cloaking si appoggiano a una regola fragile: \u201cse <code>User-Agent<\/code> contiene Googlebot allora\u2026\u201d. Qui invece l\u2019attaccante ha aggiunto un secondo fattore: una lista corposa di range IP associati agli ASN (Autonomous System Number) di Google, espressi in formato CIDR. Questo riduce la possibilit\u00e0 di smascherare l\u2019attacco con un semplice spoof del <code>User-Agent<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ASN (Autonomous System Number) in due righe<\/h3>\n\n\n\n<p>Un ASN \u00e8 l\u2019identit\u00e0 di rete di un\u2019organizzazione su Internet: raggruppa blocchi di IP sotto un\u2019unica \u201cpropriet\u00e0\u201d amministrativa. Nel caso di Google, gli ASN coprono l\u2019infrastruttura usata da servizi come Search, Gmail e Google Cloud. Se una richiesta arriva da un IP dentro quei blocchi, \u00e8 molto pi\u00f9 probabile che sia davvero Google e non un crawler fasullo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CIDR: perch\u00e9 viene usato negli attacchi (e nella difesa)<\/h3>\n\n\n\n<p>Il formato CIDR (Classless Inter-Domain Routing) serve per descrivere intervalli di IP in modo compatto, ad esempio <code>192.168.1.0\/24<\/code>. Il suffisso <code>\/24<\/code> indica quanti bit della rete sono fissi, definendo la dimensione del blocco. \u00c8 comodo per whitelist\/blacklist e, in questo caso, per fare matching matematico sul range senza elencare singoli IP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1332\" height=\"620\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/CIDR-format.png\" alt=\"Esempio di formato CIDR e interpretazione di un range IP\" class=\"wp-image-92\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/CIDR-format.png 1332w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/CIDR-format-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/CIDR-format-1024x477.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/CIDR-format-768x357.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/CIDR-format-400x186.png 400w\" sizes=\"auto, (max-width: 1332px) 100vw, 1332px\" \/><figcaption class=\"wp-element-caption\">Il CIDR consente di definire blocchi di IP in modo compatto. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Come funziona il malware: anatomia di un \u201cinterceptor\u201d per crawler<\/h2>\n\n\n\n<p>Il flusso, semplificato, \u00e8 questo: il codice in <code>index.php<\/code> controlla prima segnali di \u201cidentit\u00e0 Google\u201d, poi valida l\u2019IP contro range ASN, e solo dopo esegue il caricamento remoto del payload (contenuti esterni stampati a schermo come se fossero locali). Il tutto con logging ed error handling per non mostrare pagine rotte a Google.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Verifica a pi\u00f9 livelli (User-Agent + IP)<\/h3>\n\n\n\n<p>Il primo controllo \u00e8 sullo <code>User-Agent<\/code> (stringa inviata in ogni richiesta HTTP che identifica browser\/crawler e piattaforma). Lo script cerca non solo \u201cGooglebot\u201d, ma anche stringhe tipiche di strumenti di verifica e ispezione, cos\u00ec da aumentare la probabilit\u00e0 che il contenuto malevolo venga effettivamente scansionato e validato dai sistemi Google.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1880\" height=\"498\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification.png\" alt=\"Schema dei controlli multilivello basati su User-Agent e validazione IP\" class=\"wp-image-93\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification.png 1880w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification-300x79.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification-1024x271.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification-768x203.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification-1536x407.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Multi-Layer-Identity-Verification-400x106.png 400w\" sizes=\"auto, (max-width: 1880px) 100vw, 1880px\" \/><figcaption class=\"wp-element-caption\">Due step: filtraggio User-Agent e validazione IP per evitare crawler spoofati. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2) Validazione del range con operazioni bitwise<\/h3>\n\n\n\n<p>La parte pi\u00f9 \u201ctecnica\u201d \u00e8 il matching del range: invece di confrontare stringhe, usa operazioni bitwise per verificare che un IP cada esattamente dentro un blocco di rete (CIDR). Per IPv4, la logica indicata \u00e8 basata su AND tra IP e netmask, confrontata con network address e netmask.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\/\/ Logica concettuale riportata nell\u2019analisi: verifica di appartenenza a un range\n\/\/ (ip_decimal &amp; netmask_decimal) == (range_decimal &amp; netmask_decimal)\n\/\/ Nota: lo script reale includeva una libreria hardcoded di range ASN Google e supporto IPv6.\n?&gt;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#F97583\">&#x3C;?<\/span><span style=\"color:#79B8FF\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Logica concettuale riportata nell\u2019analisi: verifica di appartenenza a un range<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (ip_decimal &#x26; netmask_decimal) == (range_decimal &#x26; netmask_decimal)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Nota: lo script reale includeva una libreria hardcoded di range ASN Google e supporto IPv6.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">?><\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1420\" height=\"734\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Bitwise-IP-Range-Validation.png\" alt=\"Diagramma della validazione IP tramite calcoli bitwise su range CIDR\" class=\"wp-image-94\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Bitwise-IP-Range-Validation.png 1420w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Bitwise-IP-Range-Validation-300x155.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Bitwise-IP-Range-Validation-1024x529.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Bitwise-IP-Range-Validation-768x397.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Bitwise-IP-Range-Validation-400x207.png 400w\" sizes=\"auto, (max-width: 1420px) 100vw, 1420px\" \/><figcaption class=\"wp-element-caption\">Il matching bitwise rende la verifica pi\u00f9 precisa e meno aggirabile rispetto a controlli na\u00efve. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3) Caricamento del payload remoto via cURL<\/h3>\n\n\n\n<p>Se i controlli passano, il malware usa cURL per recuperare contenuti da un dominio esterno e li stampa direttamente nella response. In questo modo il crawler indicizza materiale che non risiede davvero nel sito (ma che sembra \u201cnativo\u201d perch\u00e9 finisce nell\u2019HTML servito). Nel caso osservato, la sorgente esterna era <code>hxxps:\/\/amp-samaresmanor[.]pages[.]dev<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1444\" height=\"836\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Remote-Payload-Execution-via-cURL.png\" alt=\"Schema del recupero di contenuti remoti via cURL e iniezione nella pagina\" class=\"wp-image-95\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Remote-Payload-Execution-via-cURL.png 1444w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Remote-Payload-Execution-via-cURL-300x174.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Remote-Payload-Execution-via-cURL-1024x593.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Remote-Payload-Execution-via-cURL-768x445.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Remote-Payload-Execution-via-cURL-400x232.png 400w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><figcaption class=\"wp-element-caption\">Il contenuto arriva da un endpoint esterno e viene renderizzato in pagina per Googlebot. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4) Filtri User-Agent \u201ccompleti\u201d<\/h3>\n\n\n\n<p>Un dettaglio che spesso si sottovaluta: gli attaccanti non puntano solo al classico Googlebot. Inseriscono firme per pi\u00f9 servizi Google (strumenti di ispezione, API crawler, verifiche) cos\u00ec da coprire vari flussi di scansione e aumentare la tenuta del cloaking.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1682\" height=\"554\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering.png\" alt=\"Esempio di filtraggio User-Agent con molte varianti legate ai servizi Google\" class=\"wp-image-96\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering.png 1682w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering-300x99.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering-1024x337.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering-768x253.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering-1536x506.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/User-Agent-Filtering-400x132.png 400w\" sizes=\"auto, (max-width: 1682px) 100vw, 1682px\" \/><figcaption class=\"wp-element-caption\">Non solo \u201cGooglebot\u201d: il filtro include pi\u00f9 user agent legati a servizi e tool Google. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5) Decision engine, redirect e logging degli errori<\/h3>\n\n\n\n<p>La logica condizionale distingue tre casi: bot legittimo (User-Agent OK + IP OK), bot \u201cfinto\u201d (User-Agent OK ma IP fuori range) e utenti normali. In pi\u00f9, lo script gestisce i fallimenti del fetch remoto: se il payload non risponde, reindirizza verso <code>\/home\/<\/code> per non far vedere a Google una pagina vuota o rotta. Se rileva uno spoof, registra un errore del tipo \u201cFake GoogleBot detected\u201d e riporta l\u2019utente alla home reale.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1694\" height=\"680\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging.png\" alt=\"Diagramma della logica condizionale con casi: bot legittimo, bot falso, utenti normali e logging\" class=\"wp-image-97\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging.png 1694w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging-300x120.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging-1024x411.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging-768x308.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging-1536x617.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/Conditional-Logic-and-Error-Logging-400x161.png 400w\" sizes=\"auto, (max-width: 1694px) 100vw, 1694px\" \/><figcaption class=\"wp-element-caption\">Redirect e logging: l\u2019attacco prova a rimanere stabile e invisibile agli occhi del proprietario del sito. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 toccare file core di WordPress rende l\u2019attacco pi\u00f9 efficace<\/h2>\n\n\n\n<p>Il file <code>index.php<\/code> \u00e8 il punto d\u2019ingresso naturale. Una volta compromesso, pu\u00f2 comunque \u201cbootstrap-pare\u201d WordPress e far funzionare il sito normalmente, riducendo sospetti e segnalazioni. Nell\u2019analisi viene citato l\u2019uso di <code>wp-load.php<\/code> tramite <code>require_once __DIR__ . '\/wp-load.php'<\/code> per inizializzare l\u2019ambiente (config e accesso al database). In un <code>index.php<\/code> legittimo, la catena include anche <code>wp-blog-header.php<\/code> verso la fine del flusso standard.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Impatto reale: pi\u00f9 SEO che defacement (ma le conseguenze sono pesanti)<\/h2>\n\n\n\n<p>Questa famiglia di infezioni punta soprattutto alla reputazione su Search: contenuti non autorizzati possono finire indicizzati, con risultati \u201cstrani\u201d in SERP, rischio di deindicizzazione e blacklisting, oltre a consumo di risorse e tempi di rilevazione pi\u00f9 lunghi perch\u00e9 l\u2019owner non vede anomalie durante la navigazione manuale.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Segnali d\u2019allarme pratici da controllare<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Risultati anomali su Google (snippet spam, titoli che non corrispondono alle pagine reali).<\/li>\n\n\n<li>File modificati di recente, in particolare <code>index.php<\/code> e altri file core.<\/li>\n\n\n<li>URL sospetti o domini esterni che compaiono nel codice (soprattutto in punti \u201cinsospettabili\u201d).<\/li>\n\n\n<li>Log inattesi: redirect verso <code>\/home\/<\/code>, errori ripetuti, o pattern che indicano richieste cURL verso domini non riconosciuti.<\/li>\n\n<\/ul>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Indicatore IOC (dalla segnalazione)<\/h4>\n\n\n<p>Nel caso descritto, il dominio malevolo usato per il payload remoto era <code>amp-samaresmanor[.]pages[.]dev<\/code> ed era segnalato su VirusTotal (blocklist da alcuni vendor al momento dell\u2019analisi).<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Bonifica e hardening: una checklist sensata per WordPress<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Rimuovi file e directory non riconosciuti: tutto ci\u00f2 che non \u00e8 parte di core, tema o plugin noti va verificato e, se sospetto, eliminato.<\/li>\n\n\n<li>Controlla gli utenti admin: rimuovi account \u201cdi supporto\u201d non autorizzati o amministratori creati di recente senza motivo.<\/li>\n\n\n<li>Reset completo delle credenziali: WordPress admin, FTP\/SFTP, pannello hosting e database.<\/li>\n\n\n<li>Scansione del computer locale: se la postazione \u00e8 compromessa, reinfetti il sito appena rimetti mano ai file.<\/li>\n\n\n<li>Aggiorna tutto: core, plugin e temi, riducendo superfici di attacco note.<\/li>\n\n\n<li>Aggiungi un WAF (Web Application Firewall): utile per bloccare traffico e comunicazioni verso infrastrutture note (C2) e ridurre la probabilit\u00e0 di upload malevoli.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Cosa portarsi a casa: attacchi sempre pi\u00f9 \u201cinvisibili\u201d<\/h2>\n\n\n\n<p>Il punto chiave di questo caso non \u00e8 solo il cloaking, ma la qualit\u00e0 dell\u2019identificazione: librerie di range ASN, controlli bitwise e supporto IPv6 alzano l\u2019asticella e rendono il problema difficile da riprodurre con test manuali. Un sito WordPress compromesso pu\u00f2 diventare un gateway controllato dall\u2019attaccante: per gli utenti \u00e8 \u201cpulito\u201d, per i crawler \u00e8 un veicolo di contenuti esterni.<\/p>\n\n\n\n<p>A livello operativo, la difesa pi\u00f9 efficace \u00e8 combinare monitoraggio dell\u2019integrit\u00e0 dei file (File Integrity Monitoring) sui file core come <code>index.php<\/code> con controlli regolari in Google Search Console per intercettare pagine indicizzate inattese o pattern di spam che non corrispondono al contenuto reale del sito.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Riferimenti \/ Fonti<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/blog.sucuri.net\/2026\/01\/malware-intercepts-googlebot-via-ip-verified-conditional-logic.html\" target=\"_blank\" rel=\"noopener noreferrer\">Malware Intercepts Googlebot via IP-Verified Conditional Logic<\/a><\/li><li><a href=\"https:\/\/blog.sucuri.net\/2026\/01\/google-sees-spam-you-see-your-site-a-cloaked-seo-spam-attack.html\" target=\"_blank\" rel=\"noopener noreferrer\">Google sees spam, you see your site: A cloaked SEO spam attack<\/a><\/li><li><a href=\"https:\/\/www.virustotal.com\/gui\/url\/5a006beedf563c6215a31746d011d13fd4f2561a1bf3b557484c4532b13e1ec6?nocache=1\" target=\"_blank\" rel=\"noopener noreferrer\">VirusTotal URL report<\/a><\/li><li><a href=\"https:\/\/publicwww.com\/websites\/amp-samaresmanor.pages\/\" target=\"_blank\" rel=\"noopener noreferrer\">PublicWWW results for amp-samaresmanor.pages<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Non tutti i malware fanno redirect vistosi: alcuni \u201cintercettano\u201d Googlebot e gli servono contenuti remoti solo se l\u2019IP appartiene davvero all\u2019infrastruttura di Google. Risultato: tu vedi il sito normale, Google indicizza spam.<\/p>\n","protected":false},"author":19,"featured_media":89,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[53,51,52,54,10],"class_list":["post-98","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sicurezza","tag-cloaking","tag-malware","tag-seo","tag-waf","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/98","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/comments?post=98"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/98\/revisions"}],"predecessor-version":[{"id":143,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/98\/revisions\/143"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/media\/89"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/media?parent=98"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/categories?post=98"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/tags?post=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}