{"id":95,"date":"2026-01-13T00:00:00","date_gmt":"2026-01-12T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/da\/wordpress-malware-googlebot-asn-cidr-ip-verificering\/"},"modified":"2026-01-20T06:33:20","modified_gmt":"2026-01-20T05:33:20","slug":"wordpress-malware-googlebot-asn-cidr-ip-verificering","status":"publish","type":"post","link":"https:\/\/helloblog.io\/da\/wordpress-malware-googlebot-asn-cidr-ip-verificering\/","title":{"rendered":"N\u00e5r Google ser noget andet end dine brugere: WordPress-malware der \u201cfanger\u201d Googlebot med ASN- og CIDR-tjek"},"content":{"rendered":"\n<p>Vi er vant til at t\u00e6nke malware som noget, der enten smadrer en side, viderestiller alle bes\u00f8gende eller smider en popup i hovedet p\u00e5 folk. Men en nyere variant, som Sucuri har analyseret, g\u00e5r mere stille til v\u00e6rks: Den \u00e6ndrer en central fil i WordPress, og viser kun et ondsindet \u201cpayload\u201d til s\u00f8gemaskinens infrastruktur. For ejeren og almindelige brugere ser sitet helt normalt ud.<\/p>\n\n\n\n<p>I denne gennemgang f\u00e5r du et klart billede af, <em>hvordan<\/em> den type infektion fungerer, hvorfor den er sv\u00e6r at opdage med manuel test, og hvilke tegn og kontroller der typisk afsl\u00f8rer den.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"385\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1.png\" alt=\"Illustration af malware der serverer andet indhold til Googlebot end til normale brugere\" class=\"wp-image-87\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1.png 820w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1-300x141.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1-768x361.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1-400x188.png 400w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\" \/><figcaption class=\"wp-element-caption\">Angrebet er selektivt: Googlebot f\u00e5r et andet svar end mennesker. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Hvad er det for et angreb?<\/h2>\n\n\n\n<p>Case\u2019en handler om en kompromitteret WordPress-installation, hvor <strong>index.php<\/strong> (den prim\u00e6re entrypoint i roden) er blevet modificeret. I stedet for bare at starte WordPress som normalt, fungerer filen som en gatekeeper: den afg\u00f8r, hvem der bes\u00f8ger sitet, og v\u00e6lger derefter mellem to adf\u00e6rdsm\u00f8nstre:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Hvis bes\u00f8gende identificeres som Google-relateret crawler\/inspektionsv\u00e6rkt\u00f8j, hentes og udskrives eksternt indhold fra et tredjepartsdom\u00e6ne.<\/li>\n\n\n<li>Hvis bes\u00f8gende er en almindelig bruger (eller en bot der ikke kan verificeres korrekt), f\u00e5r de den normale, \u201crene\u201d side eller bliver sendt til forsiden.<\/li>\n\n<\/ul>\n\n\n\n<p>Konsekvensen er klassisk <em>cloaking<\/em> (SEO-cloaking): Google indekserer noget, som dine brugere ikke ser. Det er effektivt, fordi mange website-ejere kun opdager problemer via browseren \u2014 og i denne model f\u00e5r browseren den p\u00e6ne version.<\/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\/14\/2026\/01\/What-Google-sees.png\" alt=\"Sk\u00e6rmbillede der viser forskellen p\u00e5 hvad Google ser og hvad brugere ser\" class=\"wp-image-88\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/What-Google-sees.png 1270w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/What-Google-sees-300x221.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/What-Google-sees-1024x755.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/What-Google-sees-768x566.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/What-Google-sees-400x295.png 400w\" sizes=\"auto, (max-width: 1270px) 100vw, 1270px\" \/><figcaption class=\"wp-element-caption\">Google kan f\u00e5 serveret spam\/alternativt indhold, mens brugere stadig ser den rigtige side. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Det nye: IP-verificering p\u00e5 Googles ASN-ranges (ikke kun User-Agent)<\/h2>\n\n\n\n<p>Cloaking i sig selv er ikke nyt. Det interessante i denne variant er, at den ikke n\u00f8jes med at kigge p\u00e5 <strong>User-Agent<\/strong> (HTTP-headeren der identificerer klienten \u2014 fx browser, device og OS). User-Agent er triviel at spoofe, s\u00e5 \u00e6ldre og mere simple scripts er ofte nemme at \u201cnarre\u201d ved at sende en request med <code>Googlebot<\/code> i headeren.<\/p>\n\n\n\n<p>Her tager malwaren et ekstra skridt: Den indeholder en stor, hardcoded liste over Googles <strong>ASN<\/strong>-tilknyttede IP-ranges i <strong>CIDR<\/strong>-format og verificerer, at den bes\u00f8gendes IP faktisk ligger i et Google-ejet netv\u00e6rksblok.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kort fortalt: ASN og CIDR i den her kontekst<\/h3>\n\n\n\n<p>Et <strong>ASN<\/strong> (Autonomous System Number) kan du t\u00e6nke p\u00e5 som en organisations \u201cinternet-identitet\u201d hos BGP-routing: en samling IP-adresser og netv\u00e6rksruter, der h\u00f8rer til den samme akt\u00f8r. N\u00e5r en request kommer fra Googles ASN-omr\u00e5der, er det en st\u00e6rk indikator for, at den faktisk kommer fra Googles infrastruktur (Search-crawlere, inspektionsv\u00e6rkt\u00f8jer, cloud-tjenester osv.) og ikke fra en tilf\u00e6ldig maskine der udgiver sig for at v\u00e6re Googlebot.<\/p>\n\n\n\n<p><strong>CIDR<\/strong> (Classless Inter-Domain Routing) er den kompakte notation for IP-blokke, fx <code>192.168.1.0\/24<\/code>, som d\u00e6kker et helt interval af adresser i \u00e9n linje. Det g\u00f8r det muligt at tjekke \u201ctilh\u00f8rer IP\u2019en dette netv\u00e6rk?\u201d uden at liste alle adresser enkeltvis.<\/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\/14\/2026\/01\/CIDR-format.png\" alt=\"Grafik der forklarer CIDR notation med \/24 eksempel\" class=\"wp-image-89\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/CIDR-format.png 1332w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/CIDR-format-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/CIDR-format-1024x477.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/CIDR-format-768x357.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/CIDR-format-400x186.png 400w\" sizes=\"auto, (max-width: 1332px) 100vw, 1332px\" \/><figcaption class=\"wp-element-caption\">CIDR beskriver en hel blok af IP-adresser i \u00e9n notation. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e5dan er malwaren typisk bygget op (trin for trin)<\/h2>\n\n\n\n<p>I Sucuris fund er logikken lagt ind i index.php og opdelt i flere lag. Pointen er at reducere \u201cst\u00f8j\u201d: Kun n\u00e5r b\u00e5de identitet (User-Agent) og netv\u00e6rk (IP) matcher Googles infrastruktur, aktiveres payload.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Multi-layer identitetstjek (User-Agent + IP)<\/h3>\n\n\n\n<p>F\u00f8rst matches der p\u00e5 User-Agent for Google-relaterede klienter. Derefter kommer det afg\u00f8rende: IP\u2019en verificeres mod de hardcodede ASN\/CIDR ranges. Kombinationen g\u00f8r det sv\u00e6rt at reproducere med en almindelig browser eller et simpelt curl-kald fra din egen maskine.<\/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\/14\/2026\/01\/Multi-Layer-Identity-Verification.png\" alt=\"Diagram over multi-layer verifikation af User-Agent og IP range\" class=\"wp-image-90\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Multi-Layer-Identity-Verification.png 1880w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Multi-Layer-Identity-Verification-300x79.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Multi-Layer-Identity-Verification-1024x271.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Multi-Layer-Identity-Verification-768x203.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Multi-Layer-Identity-Verification-1536x407.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Multi-Layer-Identity-Verification-400x106.png 400w\" sizes=\"auto, (max-width: 1880px) 100vw, 1880px\" \/><figcaption class=\"wp-element-caption\">To lag: header-match og efterf\u00f8lgende netv\u00e6rksverifikation. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2) Bitwise netv\u00e6rksmatch (lav-niveau validering)<\/h3>\n\n\n\n<p>I stedet for at lave simple string-sammenligninger, bruger scriptet bitvise operationer til at afg\u00f8re om en IP falder i en given netmask. Den type matematiske tjek er standard netv\u00e6rksteknik, men det er us\u00e6dvanligt at se det implementeret s\u00e5 gennemf\u00f8rt i cloaking-malware \u2014 og med ordentlig <strong>IPv6<\/strong>-underst\u00f8ttelse, som mange \u00e6ldre scripts ignorerer.<\/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>\/\/ Principielt netv\u00e6rksmatch for IPv4:\n\/\/ (ip &amp; netmask) == (range &amp; netmask)\n\/\/ Bruges til at afg\u00f8re om en bes\u00f8gendes IP ligger i en CIDR-blok.\n\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\">\/\/ Principielt netv\u00e6rksmatch for IPv4:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (ip &#x26; netmask) == (range &#x26; netmask)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Bruges til at afg\u00f8re om en bes\u00f8gendes IP ligger i en CIDR-blok.<\/span><\/span>\n<span class=\"line\"><\/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<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1420\" height=\"734\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Bitwise-IP-Range-Validation.png\" alt=\"Illustration af bitwise IP range validation i malware\" class=\"wp-image-91\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Bitwise-IP-Range-Validation.png 1420w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Bitwise-IP-Range-Validation-300x155.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Bitwise-IP-Range-Validation-1024x529.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Bitwise-IP-Range-Validation-768x397.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Bitwise-IP-Range-Validation-400x207.png 400w\" sizes=\"auto, (max-width: 1420px) 100vw, 1420px\" \/><figcaption class=\"wp-element-caption\">Bitwise-tjekket sikrer, at kun \u201c\u00e6gte\u201d Google-infrastruktur passerer filteret. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3) Remote payload via cURL (eksternt indhold printes som om det var lokalt)<\/h3>\n\n\n\n<p>N\u00e5r requesten er \u201cgodkendt\u201d som legitim Google-trafik, bruger malwaren cURL til at hente indhold fra et eksternt endpoint (i casen et pages.dev-dom\u00e6ne) og printer output direkte i responsen. For Google ligner det derfor, at indholdet bliver serveret af dit site.<\/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>\/\/ N\u00e5r bot + IP verificeres, hentes fjernindhold og sendes direkte i responsen\n\/\/ (dom\u00e6net er angivet i Sucuris analyse)\n$url = 'hxxps:\/\/amp-samaresmanor[.]pages[.]dev';\n\n\/\/ ... cURL request ...\n\/\/ echo $remote_content;\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\">\/\/ N\u00e5r bot + IP verificeres, hentes fjernindhold og sendes direkte i responsen<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (dom\u00e6net er angivet i Sucuris analyse)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">$url <\/span><span style=\"color:#F97583\">=<\/span><span style=\"color:#9ECBFF\"> 'hxxps:\/\/amp-samaresmanor[.]pages[.]dev'<\/span><span style=\"color:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ ... cURL request ...<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ echo $remote_content;<\/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\/14\/2026\/01\/Remote-Payload-Execution-via-cURL.png\" alt=\"Diagram der viser remote payload execution via cURL\" class=\"wp-image-92\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Remote-Payload-Execution-via-cURL.png 1444w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Remote-Payload-Execution-via-cURL-300x174.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Remote-Payload-Execution-via-cURL-1024x593.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Remote-Payload-Execution-via-cURL-768x445.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Remote-Payload-Execution-via-cURL-400x232.png 400w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><figcaption class=\"wp-element-caption\">Fjernindhold injiceres i output kun til udvalgte bes\u00f8gende. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4) Bred User-Agent filtrering (mere end bare \u201cGooglebot\u201d)<\/h3>\n\n\n\n<p>Ud over klassiske strenge som <code>Googlebot<\/code> kigger scriptet efter flere varianter relateret til Googles \u00f8kosystem \u2014 fx v\u00e6rkt\u00f8jer til site-verificering, inspektion og API-crawlere. Det \u00f8ger sandsynligheden for, at det ondsindede indhold b\u00e5de bliver crawlet, valideret og indekseret p\u00e5 tv\u00e6rs af Googles flows.<\/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\/14\/2026\/01\/User-Agent-Filtering.png\" alt=\"Illustration af User-Agent filtering med flere Google-relaterede strenge\" class=\"wp-image-93\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/User-Agent-Filtering.png 1682w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/User-Agent-Filtering-300x99.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/User-Agent-Filtering-1024x337.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/User-Agent-Filtering-768x253.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/User-Agent-Filtering-1536x506.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/User-Agent-Filtering-400x132.png 400w\" sizes=\"auto, (max-width: 1682px) 100vw, 1682px\" \/><figcaption class=\"wp-element-caption\">Angriberen fors\u00f8ger at ramme flere Google-klienter end kun \u201cGooglebot\u201d. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5) Conditional logic, redirects og logging (st\u00f8jsvag drift)<\/h3>\n\n\n\n<p>Den sidste del er \u201cbeslutningsmotoren\u201d: Hvis b\u00e5de User-Agent og IP passer, serveres payload. Hvis noget fejler, h\u00e5ndteres det p\u00e6nt, s\u00e5 Google ikke ser en broken page. Hvis nogen pr\u00f8ver at spoofe Googlebot uden at komme fra en legitim Google-range, logges det som en falsk bot og sendes videre til normal side.<\/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\/14\/2026\/01\/Conditional-Logic-and-Error-Logging.png\" alt=\"Flowdiagram over conditional logic og error logging i malware\" class=\"wp-image-94\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Conditional-Logic-and-Error-Logging.png 1694w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Conditional-Logic-and-Error-Logging-300x120.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Conditional-Logic-and-Error-Logging-1024x411.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Conditional-Logic-and-Error-Logging-768x308.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Conditional-Logic-and-Error-Logging-1536x617.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/14\/2026\/01\/Conditional-Logic-and-Error-Logging-400x161.png 400w\" sizes=\"auto, (max-width: 1694px) 100vw, 1694px\" \/><figcaption class=\"wp-element-caption\">Scriptet fors\u00f8ger at undg\u00e5 fejl i Googles crawl og skjule sig for manuel inspektion. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Hvorfor index.php og WordPress core-filer er interessante m\u00e5l<\/h2>\n\n\n\n<p>At l\u00e6gge logikken i <strong>index.php<\/strong> giver maksimal kontrol, fordi al trafik typisk passerer her. Samtidig kan angriberen stadig \u201cboote\u201d WordPress-milj\u00f8et efter behov.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>wp-load.php<\/strong> kan inkluderes for at indl\u00e6se konfiguration og give adgang til database og WordPress-milj\u00f8 (bootstrapping).<\/li>\n\n\n<li><strong>wp-blog-header.php<\/strong> bliver normalt inkluderet til sidst i den rene WordPress index.php for at k\u00f8re den almindelige request-cyklus.<\/li>\n\n<\/ul>\n\n\n\n<p>Det er netop det, der g\u00f8r angrebet sv\u00e6rt at spotte: Sitet fungerer normalt for de fleste bes\u00f8gende, fordi angriberen stadig lader den legitime pipeline k\u00f8re i \u201cdefault\u201d-stien.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvad det g\u00f8r ved dit site (SEO og omd\u00f8mme rammes f\u00f8rst)<\/h2>\n\n\n\n<p>Denne type infektion handler typisk mindre om at stj\u00e6le data fra dine brugere og mere om at misbruge dit dom\u00e6nes tillid. N\u00e5r Google indekserer noget, du ikke selv hoster, kan du blive ramt af:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>SEO-cloaking konsekvenser (manglende tillid, manuelt review, deindexering).<\/li>\n\n\n<li>Blacklisting og advarsler i s\u00f8geresultater.<\/li>\n\n\n<li>Resource hijacking: dit site bruges som distributionskanal for tredjepartsindhold.<\/li>\n\n\n<li>Forsinket opdagelse, fordi ejerens egen browser viser den rigtige side.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Typiske advarselstegn (det du kan se uden at reverse engineere alt)<\/h2>\n\n\n\n<p>Hvis du har mistanke om, at dit WordPress-site er kompromitteret p\u00e5 den her m\u00e5de, er det ofte disse spor, der dukker op f\u00f8rst:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>M\u00e6rkelige eller irrelevante sider\/titler i Google-resultater for dit dom\u00e6ne.<\/li>\n\n\n<li>Uventede \u00e6ndringer i kernefiler (is\u00e6r <code>index.php<\/code>) eller nyligt \u00e6ndrede timestamps.<\/li>\n\n\n<li>Mist\u00e6nkelige URLs eller ukendte dom\u00e6ner i kildekode\/logs.<\/li>\n\n\n<li>Uventede serverlogs, fx mange requests der kun giver \u201canderledes\u201d output til bestemte klienter.<\/li>\n\n<\/ul>\n\n\n\n<p>I Sucuris analyse n\u00e6vnes dom\u00e6net <code>amp-samaresmanor[.]pages[.]dev<\/code> som den fjernkilde, der blev hentet indhold fra, og at det p\u00e5 analysetidspunktet var blocklistet af flere sikkerhedsleverand\u00f8rer via VirusTotal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Praktisk oprydning og forebyggelse (uden at g\u00f8re det kompliceret)<\/h2>\n\n\n\n<p>N\u00e5r infektionen sidder i en kernefil, skal du t\u00e6nke i b\u00e5de fjernelse og lukning af indgangen. En effektiv baseline ser s\u00e5dan ud:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li><strong>Fjern ukendte filer og mapper<\/strong>: Alt du ikke kan forklare (plugins, mu-plugins, drop-ins, tilf\u00e6ldige PHP-filer).<\/li>\n\n\n<li><strong>Tjek og gendan kernefiler<\/strong>: Er <code>index.php<\/code> eller andre core-filer \u00e6ndret, s\u00e5 gendan fra en kendt ren kilde (og dobbelttjek at \u00e6ndringen ikke kommer tilbage).<\/li>\n\n\n<li><strong>Auditer brugere<\/strong>: Kig is\u00e6r efter skjulte\/hj\u00e6lpe-accounts og mist\u00e6nkelige administratorer.<\/li>\n\n\n<li><strong>Nulstil credentials<\/strong>: WordPress-admin, FTP\/SFTP, hostingpanel og database. (Og roter evt. API keys).<\/li>\n\n\n<li><strong>Scan din egen maskine<\/strong>: En kompromitteret udvikler-pc kan forklare, hvorfor filer bliver re-inficeret efter oprydning.<\/li>\n\n\n<li><strong>Opdat\u00e9r alt<\/strong>: WordPress core, temaer, plugins \u2014 og fjern forladte komponenter.<\/li>\n\n\n<li><strong>Brug en WAF<\/strong>: En Web Application Firewall kan blokere kendte C2-\/payload-dom\u00e6ner og reducere risikoen for upload af ondsindede plugins.<\/li>\n\n<\/ol>\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\">Vigtigt: Cloaking kan v\u00e6re usynligt i browseren<\/h4>\n\n\n<p>Hvis du kun tester ved at bes\u00f8ge dit site normalt, kan du f\u00e5 et falsk \u201calt er fint\u201d-signal. Brug ogs\u00e5 Search Console til at lede efter sider, du ikke selv har oprettet, og hold \u00f8je med pludselige indekseringsm\u00f8nstre.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Det vigtigste takeaway for WordPress-udviklere<\/h2>\n\n\n\n<p>Det her er et godt eksempel p\u00e5, at moderne SEO-malware ikke beh\u00f8ver at v\u00e6re larmende. Ved at kombinere User-Agent filtrering med ASN\/CIDR-baseret IP-verificering kan angriberen m\u00e5lrette Googles crawler meget pr\u00e6cist \u2014 og samtidig holde webstedsejeren i den \u201crene\u201d oplevelse.<\/p>\n\n\n\n<p>I praksis betyder det, at klassiske kontroller som \u201ctjek sitet i browseren\u201d ikke er nok. Du har brug for grundl\u00e6ggende file integrity checks (s\u00e5 \u00e6ndringer i fx <code>index.php<\/code> opdages hurtigt) og l\u00f8bende overv\u00e5gning af, hvad Google faktisk indekserer for dit dom\u00e6ne.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referencer \/ Kilder<\/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 \u2013 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 (amp-samaresmanor.pages.dev)<\/a><\/li><li><a href=\"https:\/\/publicwww.com\/websites\/amp-samaresmanor.pages\/\" target=\"_blank\" rel=\"noopener noreferrer\">publicwww results (amp-samaresmanor.pages)<\/a><\/li><li><a href=\"https:\/\/sucuri.net\/website-firewall\/\" target=\"_blank\" rel=\"noopener noreferrer\">Website Firewall<\/a><\/li><li><a href=\"https:\/\/sucuri.net\/malware-detection-scanning\/\" target=\"_blank\" rel=\"noopener noreferrer\">File Integrity Monitoring \/ Malware Detection &amp; Scanning<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Nogle angreb g\u00e5r ikke efter dine bes\u00f8gende, men efter Googles crawler. Her er et konkret eksempel p\u00e5 WordPress-malware, der kun viser spam til Googlebot \u2014 og g\u00f8r det med IP-verificering p\u00e5 ASN\/CIDR-niveau.<\/p>\n","protected":false},"author":63,"featured_media":86,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[57,58,55,56,10],"class_list":["post-95","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sikkerhed","tag-googlebot","tag-incident-response","tag-malware","tag-seo","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":140,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/posts\/95\/revisions\/140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/media\/86"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/da\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}