{"id":110,"date":"2026-01-13T00:00:00","date_gmt":"2026-01-12T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/nl\/wordpress-malware-googlebot-asn-ip-verificatie-cloaking\/"},"modified":"2026-01-20T06:32:47","modified_gmt":"2026-01-20T05:32:47","slug":"wordpress-malware-googlebot-asn-ip-verificatie-cloaking","status":"publish","type":"post","link":"https:\/\/helloblog.io\/nl\/wordpress-malware-googlebot-asn-ip-verificatie-cloaking\/","title":{"rendered":"WordPress-malware die Googlebot selectief bedient met ASN\/IP-verificatie: zo werkt het (en waar je op let)"},"content":{"rendered":"\n<p>De klassieke \u201credirect iedereen naar spam\u201d zie je steeds minder. Aanvallers worden subtieler: ze willen dat <em>alleen<\/em> zoekmachinecrawlers de payload zien, terwijl normale bezoekers (en vaak ook de site-eigenaar) niets merken. Een recente variant die ik tegenkwam is extra interessant, omdat de malware niet alleen op de <code>User-Agent<\/code> vertrouwt, maar Googlebot ook verifieert op IP-niveau via Google\u2019s ASN-ranges \u2014 inclusief IPv6 \u2014 met bitwise checks.<\/p>\n\n\n\n<p>In dit artikel leg ik uit wat er technisch gebeurt, waarom dit zo lastig te spotten is, welke signalen je w\u00e9l kunt zien, en welke praktische maatregelen dit type aanval sneller boven water halen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wat er werd aangetroffen: selectieve content injection in index.php<\/h2>\n\n\n\n<p>De kern van de infectie zat in een plek waar je \u2019m misschien niet direct verwacht, maar die wel maximale controle geeft: het hoofdbestand <code>index.php<\/code> van een WordPress-site. In plaats van altijd de normale WordPress-bootstrapping te doen, fungeert die aangepaste <code>index.php<\/code> als een poortwachter.<\/p>\n\n\n\n<p>Afhankelijk van wie de bezoeker is, gebeurt \u00e9\u00e9n van de volgende dingen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WordPress laadt \u2018gewoon\u2019 en bezoekers zien de originele site.<\/li>\n\n\n<li>Een crawler (specifiek Google-infra) krijgt extern opgehaalde content geserveerd, alsof die op jouw site staat.<\/li>\n\n<\/ul>\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\/7\/2026\/01\/IP-Verified-Conditional-Logic.png\" alt=\"Diagram van IP-verified conditional logic waarbij alleen specifieke bezoekers andere content krijgen\" class=\"wp-image-103\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/IP-Verified-Conditional-Logic.png 1360w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/IP-Verified-Conditional-Logic-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/IP-Verified-Conditional-Logic-1024x479.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/IP-Verified-Conditional-Logic-768x359.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/IP-Verified-Conditional-Logic-400x187.png 400w\" sizes=\"auto, (max-width: 1360px) 100vw, 1360px\" \/><figcaption class=\"wp-element-caption\">De aanval draait om conditionele logica: alleen voor geselecteerde bezoekers wordt afwijkende content geladen. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Waarom deze variant opvalt: Googlebot-check op ASN\/IP-range (niet alleen User-Agent)<\/h2>\n\n\n\n<p>Cloaking (verschillende content tonen aan bots versus mensen) is niet nieuw. Wat hier opvalt, is de uitvoering. Veel scripts blijven steken op een simpele <code>User-Agent<\/code>-match (bijv. \u201cGooglebot\u201d). Dat is makkelijk te spoofen, dus makkelijk te testen.<\/p>\n\n\n\n<p>Deze malware gaat een stap verder: er zit een hardcoded lijst in met Google\u2019s ASN (Autonomous System Number) IP-ranges, genoteerd in CIDR-formaat. Daardoor wordt de payload alleen getoond als (1) de <code>User-Agent<\/code> past \u00e9n (2) het IP-adres daadwerkelijk binnen Google\u2019s eigen netwerkblokken valt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ASN en CIDR in \u00e9\u00e9n alinea (praktisch bekeken)<\/h3>\n\n\n\n<p>Een ASN kun je zien als de \u201cinternet-identiteit\u201d van een organisatie: een set netwerkblokken die bij bijvoorbeeld Google horen. CIDR is de compacte notatie voor zo\u2019n blok, zoals <code>192.168.1.0\/24<\/code>, waarmee je een hele range beschrijft in plaats van losse IP\u2019s. Handig voor routing en filtering \u2014 en dus ook voor malware die heel precies wil selecteren.<\/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\/7\/2026\/01\/CIDR-format.png\" alt=\"Uitlegafbeelding van CIDR-notatie met een voorbeeld range\" class=\"wp-image-104\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/CIDR-format.png 1332w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/CIDR-format-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/CIDR-format-1024x477.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/CIDR-format-768x357.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/CIDR-format-400x186.png 400w\" sizes=\"auto, (max-width: 1332px) 100vw, 1332px\" \/><figcaption class=\"wp-element-caption\">CIDR maakt IP-range checks compact en effici\u00ebnt. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Het technische mechanisme: bitwise IP-validatie en IPv6-support<\/h2>\n\n\n\n<p>In plaats van IP-adressen \u2018tekstueel\u2019 te vergelijken, gebruikt de code bitwise operaties om te controleren of een IP binnen een bepaald netwerkblok valt. Dat is precieser, lastiger fout te implementeren (dus opvallend \u201ckwalitatief\u201d), en werkt goed met grote lijsten ranges.<\/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>\/\/ Voor IPv4 wordt de match vaak gedaan via bitwise AND met een netmask\n\/\/ (ip &amp; netmask) == (network &amp; netmask)\n($ip_decimal &amp; $netmask_decimal) == ($range_decimal &amp; $netmask_decimal);\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:#6A737D\">\/\/ Voor IPv4 wordt de match vaak gedaan via bitwise AND met een netmask<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (ip &#x26; netmask) == (network &#x26; netmask)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">($ip_decimal <\/span><span style=\"color:#F97583\">&#x26;<\/span><span style=\"color:#E1E4E8\"> $netmask_decimal) <\/span><span style=\"color:#F97583\">==<\/span><span style=\"color:#E1E4E8\"> ($range_decimal <\/span><span style=\"color:#F97583\">&#x26;<\/span><span style=\"color:#E1E4E8\"> $netmask_decimal);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Daarnaast had deze variant expliciete ondersteuning voor IPv6. Dat is relevant omdat veel oudere cloaking-scripts IPv6 negeren, terwijl zoekmachine-infra en cloudproviders steeds vaker via IPv6 crawlen. Door IPv6 mee te nemen, vergroot de aanvaller de kans dat de cloaking consistent werkt en minder snel \u2018lekt\u2019 naar normale tests.<\/p>\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\/7\/2026\/01\/Bitwise-IP-Range-Validation.png\" alt=\"Schematische weergave van bitwise IP range validation\" class=\"wp-image-105\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Bitwise-IP-Range-Validation.png 1420w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Bitwise-IP-Range-Validation-300x155.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Bitwise-IP-Range-Validation-1024x529.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Bitwise-IP-Range-Validation-768x397.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Bitwise-IP-Range-Validation-400x207.png 400w\" sizes=\"auto, (max-width: 1420px) 100vw, 1420px\" \/><figcaption class=\"wp-element-caption\">Bitwise checks zijn een robuuste manier om IP\u2019s aan ranges te koppelen. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Remote payload via cURL: content komt van buitenaf, maar lijkt lokaal<\/h2>\n\n\n\n<p>Na succesvolle verificatie (Google-achtige <code>User-Agent<\/code> \u00e9n IP binnen Google ASN-ranges) haalt de malware via cURL content op bij een externe endpoint en print die direct in de response. Voor de crawler lijkt het daardoor alsof jouw WordPress-site de content host.<\/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>\/\/ De malware haalt HTML op van een externe bron en echo't die in de pagina\n\/\/ In de case werd o.a. deze host genoemd:\n\/\/ hxxps:\/\/amp-samaresmanor[.]pages[.]dev\n\n\/\/ (URL expres niet als klikbare https opgenomen)\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:#6A737D\">\/\/ De malware haalt HTML op van een externe bron en echo't die in de pagina<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ In de case werd o.a. deze host genoemd:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ hxxps:\/\/amp-samaresmanor[.]pages[.]dev<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (URL expres niet als klikbare https opgenomen)<\/span><\/span><\/code><\/pre><\/div>\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\/7\/2026\/01\/Remote-Payload-Execution-via-cURL.png\" alt=\"Diagram van remote payload execution via cURL\" class=\"wp-image-106\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Remote-Payload-Execution-via-cURL.png 1444w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Remote-Payload-Execution-via-cURL-300x174.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Remote-Payload-Execution-via-cURL-1024x593.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Remote-Payload-Execution-via-cURL-768x445.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Remote-Payload-Execution-via-cURL-400x232.png 400w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><figcaption class=\"wp-element-caption\">De payload komt remote binnen en wordt \u2018inline\u2019 geserveerd aan de crawler. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Brede User-Agent filtering: niet alleen \u201cGooglebot\u201d<\/h2>\n\n\n\n<p>Een interessante nuance: de filtering keek niet uitsluitend naar \u201cGooglebot\u201d. Het script bevatte meerdere strings die passen bij Google tooling voor verificatie, inspectie en API-crawlers. Dat vergroot de kans dat spamcontent niet alleen wordt gecrawld, maar ook \u2018goed\u2019 door Google-systemen heen komt (bijv. via inspectietools en verificatiestappen).<\/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\/7\/2026\/01\/User-Agent-Filtering.png\" alt=\"Voorbeeld van uitgebreide User-Agent filtering in malware\" class=\"wp-image-107\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/User-Agent-Filtering.png 1682w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/User-Agent-Filtering-300x99.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/User-Agent-Filtering-1024x337.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/User-Agent-Filtering-768x253.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/User-Agent-Filtering-1536x506.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/User-Agent-Filtering-400x132.png 400w\" sizes=\"auto, (max-width: 1682px) 100vw, 1682px\" \/><figcaption class=\"wp-element-caption\">Door meerdere Google User-Agents mee te nemen, wordt de cloaking consistenter. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conditionele logica met logging: de aanvaller monitort z\u2019n \u2018succes\u2019<\/h2>\n\n\n\n<p>Dit soort malware is niet alleen selectief, maar ook verrassend \u2018product-ready\u2019: er zit beslislogica en error handling in. In grote lijnen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Legitieme bot<\/strong>: User-Agent match + IP-validatie ok \u2192 remote content serveren en succes loggen. Als remote ophalen faalt, kan de bot worden omgeleid (bijv. naar <code>\/home\/<\/code>) zodat Google geen kapotte pagina indexeert.<\/li>\n\n\n<li><strong>Fake bot<\/strong>: iemand spoofed de User-Agent, maar IP-check faalt \u2192 log \u2018Fake GoogleBot detected\u2019 en redirect naar de normale homepage.<\/li>\n\n\n<li><strong>Normale bezoeker<\/strong>: direct door naar de reguliere homepage\/flow.<\/li>\n\n<\/ul>\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\/7\/2026\/01\/Conditional-Logic-and-Error-Logging.png\" alt=\"Overzicht van conditionele logica en error logging in de malware\" class=\"wp-image-108\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Conditional-Logic-and-Error-Logging.png 1694w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Conditional-Logic-and-Error-Logging-300x120.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Conditional-Logic-and-Error-Logging-1024x411.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Conditional-Logic-and-Error-Logging-768x308.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Conditional-Logic-and-Error-Logging-1536x617.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/Conditional-Logic-and-Error-Logging-400x161.png 400w\" sizes=\"auto, (max-width: 1694px) 100vw, 1694px\" \/><figcaption class=\"wp-element-caption\">De poortwachter beslist per request welke response je krijgt. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Waarom dit vooral een SEO-probleem is (maar niet alleen)<\/h2>\n\n\n\n<p>De primaire impact zit in SEO en reputatie: Google indexeert content die jij niet publiceert. Dat kan leiden tot deindexing, blacklisting, reputatieschade en een lange detectietijd omdat \u2018normale\u2019 checks niets opleveren. Daarnaast kan je site misbruikt worden als doorgeefluik (resource hijacking), waarbij de aanvaller jouw domeinautoriteit inzet als vehikel.<\/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\/7\/2026\/01\/What-Google-sees.png\" alt=\"Voorbeeld van wat Google ziet versus wat bezoekers zien bij cloaking\" class=\"wp-image-109\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/What-Google-sees.png 1270w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/What-Google-sees-300x221.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/What-Google-sees-1024x755.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/What-Google-sees-768x566.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/What-Google-sees-400x295.png 400w\" sizes=\"auto, (max-width: 1270px) 100vw, 1270px\" \/><figcaption class=\"wp-element-caption\">Het verraderlijke: Google ziet spam, jij ziet je eigen site. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Signalen om op te letten (ook als je site \u2018normaal\u2019 lijkt)<\/h2>\n\n\n\n<p>Omdat deze aanval bewust buiten het zicht van normale bezoekers blijft, moet je anders kijken dan alleen \u2018even de homepage openen\u2019. Dit zijn praktische indicatoren die in dit soort cases vaak naar voren komen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Vreemde of slechte zoekresultaten in Google (onverwachte titles\/descriptions, spammy sitelinks, onbekende paden).<\/li>\n\n\n<li>Onverklaarbare recente wijzigingen in core files, met name <code>index.php<\/code> (maar ook alles rondom de WordPress bootstrap).<\/li>\n\n\n<li>Verdachte externe URL\u2019s of domeinen in code of logs (zoals een <code>pages.dev<\/code> endpoint).<\/li>\n\n\n<li>Onverwachte logregels of foutmeldingen die wijzen op bot-detectie\/redirects.<\/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\">Let op met \u2018handmatig testen\u2019<\/h4>\n\n\n<p>Als de payload alleen aan echte Google IP-ranges wordt geserveerd, ga je met een normale browser (of zelfs met een gespoofte User-Agent) vaak niets zien. De aanval is juist gebouwd om dat soort checks te ontwijken.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Waarom core files hiervoor aantrekkelijk zijn: wp-load.php en wp-blog-header.php<\/h2>\n\n\n\n<p>Wat deze aanpak slim maakt, is dat de aanvaller WordPress niet per se \u2018breekt\u2019. Door WordPress core bestanden op de juiste momenten aan te roepen, kan de malware zowel zijn eigen flow draaien als de site normaal laten functioneren.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>wp-load.php<\/code>: wordt gebruikt om de WordPress omgeving te bootstrappen (config, database, functies). Daarmee kan de malware meeliften op de bestaande sitecontext.<\/li>\n\n\n<li><code>wp-blog-header.php<\/code>: normaal gesproken onderdeel van de standaard WordPress flow; door dit pas aan het einde (of conditioneel) aan te roepen, kan de aanvaller eerst beslissen wat er \u00fcberhaupt gerenderd wordt.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Remediatie in de praktijk: wat je direct wilt doen<\/h2>\n\n\n\n<p>Als je dit soort selectieve cloaking vermoedt, is het belangrijk om zowel de malware zelf te verwijderen als de toegangsvector te dichten. De actiepunten hieronder zijn bewust \u2018saai\u2019, maar effectief.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Verwijder onbekende bestanden en directories (alles wat niet door jou of je team is geplaatst).<\/li>\n\n\n<li>Controleer WordPress gebruikers en verwijder verdachte admin-accounts (ook \u2018helper\u2019-accounts die niemand herkent).<\/li>\n\n\n<li>Reset alle credentials: WordPress admin(s), FTP\/SFTP, hostingpanel en databasewachtwoorden.<\/li>\n\n\n<li>Scan je eigen machine: als je workstation gecompromitteerd is, blijft herinfectie een risico.<\/li>\n\n\n<li>Update WordPress core, thema\u2019s en plugins (en verwijder ongebruikte of verlaten plugins).<\/li>\n\n\n<li>Zet een WAF (Web Application Firewall) voor je site om bekende kwaadaardige communicatie en uploads eerder te blokkeren.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Preventie die hier echt het verschil maakt: file integrity en Search Console-hygi\u00ebne<\/h2>\n\n\n\n<p>Omdat dit soort malware graag in core files verstopt zit en alleen onder specifieke omstandigheden actief wordt, werken twee controles opvallend goed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>File Integrity Monitoring<\/strong>: detecteert ongeautoriseerde wijzigingen in bestanden zoals <code>index.php<\/code> (en andere WordPress core bestanden) voordat SEO-schade groot wordt.<\/li>\n\n\n<li><strong>Regelmatige check in Google Search Console<\/strong>: let op onverwachte URL\u2019s in de index, rare canonical\u2019s, of coverage issues die niet passen bij je release-ritme.<\/li>\n\n<\/ul>\n\n\n\n<p>De belangrijkste takeaway: aanvallers misbruiken steeds vaker het vertrouwen van zoekmachines, en bouwen malware die zich gedraagt als een gecontroleerde content gateway. Als je monitoring alleen op \u2018wat zie ik in de browser?\u2019 leunt, loop je achter de feiten aan.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referenties \/ Bronnen<\/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: amp-samaresmanor.pages<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Sommige SEO-aanvallen zijn inmiddels zo selectief dat jij je site \u2018gewoon\u2019 ziet, terwijl Google een compleet andere (spam)pagina binnenkrijgt. In deze case zat de gatekeeper simpelweg in index.php, met IP-range checks op Google\u2019s ASN\u2019s.<\/p>\n","protected":false},"author":23,"featured_media":102,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[55,54,52,53,10],"class_list":["post-110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-beveiliging","tag-cloaking","tag-googlebot","tag-malware","tag-seo","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":155,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/110\/revisions\/155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/media\/102"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}