{"id":87,"date":"2026-01-13T00:00:00","date_gmt":"2026-01-12T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/pl\/cloaking-2-0-wordpress-malware-weryfikacja-ip-asn-googlebota\/"},"modified":"2026-01-20T06:32:50","modified_gmt":"2026-01-20T05:32:50","slug":"cloaking-2-0-wordpress-malware-weryfikacja-ip-asn-googlebota","status":"publish","type":"post","link":"https:\/\/helloblog.io\/pl\/cloaking-2-0-wordpress-malware-weryfikacja-ip-asn-googlebota\/","title":{"rendered":"Cloaking 2.0 w WordPressie: malware, kt\u00f3re pokazuje Googlebotowi inny \u015bwiat (z weryfikacj\u0105 IP po ASN)"},"content":{"rendered":"\n<p>W klasycznych infekcjach WordPressa naj\u0142atwiej zauwa\u017cy\u0107 \u201eco\u015b nie tak\u201d: dziwne przekierowania, pop-upy, podejrzane skrypty. Coraz cz\u0119\u015bciej jednak obserwuj\u0119 inny trend: atak jest zaprojektowany tak, \u017ceby w\u0142a\u015bciciel strony podczas normalnego przegl\u0105dania widzia\u0142 czyst\u0105 witryn\u0119, a zainfekowana tre\u015b\u0107 trafia\u0142a wy\u0142\u0105cznie do crawler\u00f3w (robot\u00f3w indeksuj\u0105cych). Efekt? Google widzi spam lub obce tre\u015bci, a Ty w panelu i na froncie widzisz \u201ewszystko OK\u201d \u2014 a\u017c do spadku w wynikach lub deindeksacji.<\/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\/8\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1.png\" alt=\"Schemat ataku: malware przechwytuje Googlebota i serwuje mu inn\u0105 tre\u015b\u0107\" class=\"wp-image-79\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1.png 820w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1-300x141.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1-768x361.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Malware-Intercepts-Googlebot-via-IP-820x385-1-400x188.png 400w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Co wykryto: selektywne wstrzykni\u0119cie tre\u015bci w index.php<\/h2>\n\n\n\n<p>W opisywanym przypadku z\u0142o\u015bliwy kod zosta\u0142 umieszczony w g\u0142\u00f3wnym pliku <strong>index.php<\/strong> WordPressa. To newralgiczne miejsce: standardowo ten plik inicjuje \u0142adowanie \u015brodowiska i przekazuje sterowanie do w\u0142a\u015bciwego \u201efront controllera\u201d. Po modyfikacji zaczyna zachowywa\u0107 si\u0119 jak bramka (gatekeeper): najpierw pr\u00f3buje ustali\u0107, kto odwiedza stron\u0119, a dopiero potem decyduje, czy uruchomi\u0107 WordPressa normalnie, czy wstrzykn\u0105\u0107 zewn\u0119trzny payload.<\/p>\n\n\n\n<p>Taki wzorzec wpisuje si\u0119 w techniki <strong>SEO cloaking<\/strong> (cloaking = pokazywanie innych tre\u015bci robotom i ludziom), tylko \u017ce tu autor zadba\u0142 o znacznie mocniejsz\u0105 identyfikacj\u0119 robota ni\u017c w typowych \u201eif (Googlebot) { \u2026 }\u201d opartych wy\u0142\u0105cznie o nag\u0142\u00f3wek User-Agent.<\/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\/8\/2026\/01\/What-Google-sees.png\" alt=\"Zrzut pokazuj\u0105cy, \u017ce Google widzi inn\u0105 tre\u015b\u0107 ni\u017c zwyk\u0142y u\u017cytkownik\" class=\"wp-image-80\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/What-Google-sees.png 1270w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/What-Google-sees-300x221.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/What-Google-sees-1024x755.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/What-Google-sees-768x566.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/What-Google-sees-400x295.png 400w\" sizes=\"auto, (max-width: 1270px) 100vw, 1270px\" \/><figcaption class=\"wp-element-caption\">W praktyce w\u0142a\u015bciciel widzi normaln\u0105 stron\u0119, a robot indeksuj\u0105cy dostaje spam lub obc\u0105 tre\u015b\u0107. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Co by\u0142o nietypowe: weryfikacja Googlebota po ASN i CIDR (z IPv6)<\/h2>\n\n\n\n<p>Wi\u0119kszo\u015b\u0107 cloaker\u00f3w zatrzymuje si\u0119 na sprawdzeniu <code>HTTP_USER_AGENT<\/code>. To proste do obej\u015bcia (User-Agent da si\u0119 podszy\u0107 w sekund\u0119). W tym wariancie malware zawiera\u0142o du\u017c\u0105, zahardcodowan\u0105 list\u0119 zakres\u00f3w IP Google powi\u0105zanych z <strong>ASN<\/strong> (Autonomous System Number) zapisanych w formacie <strong>CIDR<\/strong>. Nast\u0119pnie skrypt wykonywa\u0142 matematyczn\u0105 weryfikacj\u0119, czy IP odwiedzaj\u0105cego faktycznie mie\u015bci si\u0119 w kt\u00f3rym\u015b z tych zakres\u00f3w \u2014 i robi\u0142 to r\u00f3wnie\u017c dla <strong>IPv6<\/strong>, co w starszych skryptach cz\u0119sto jest pomijane.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ASN: po co atakuj\u0105cemu \u201eto\u017csamo\u015b\u0107 sieciowa\u201d Google?<\/h3>\n\n\n\n<p><strong>ASN (Autonomous System Number)<\/strong> mo\u017cesz traktowa\u0107 jako identyfikator organizacji w globalnym routingu internetu. Google ma w\u0142asne ASN-y i przypisane do nich pule adres\u00f3w IP u\u017cywane przez ich infrastruktur\u0119 (m.in. do wyszukiwarki i crawler\u00f3w). Je\u015bli ruch faktycznie pochodzi z takich pul, jest du\u017co wi\u0119ksza szansa, \u017ce to prawdziwy robot Google, a nie kto\u015b udaj\u0105cy go nag\u0142\u00f3wkiem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CIDR: co oznacza zapis z uko\u015bnikiem?<\/h3>\n\n\n\n<p><strong>CIDR<\/strong> to skr\u00f3towy zapis zakresu adres\u00f3w IP w postaci \u201eadres bazowy + maska\u201d, np. <code>192.168.1.0\/24<\/code>. Zamiast wypisywa\u0107 ka\u017cdy adres osobno, definiujesz blok i jego rozmiar. To standardowy format u\u017cywany w firewallach, routingach i konfiguracjach sieciowych.<\/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\/8\/2026\/01\/CIDR-format.png\" alt=\"Ilustracja formatu CIDR na przyk\u0142adzie zakresu adres\u00f3w IP\" class=\"wp-image-81\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/CIDR-format.png 1332w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/CIDR-format-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/CIDR-format-1024x477.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/CIDR-format-768x357.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/CIDR-format-400x186.png 400w\" sizes=\"auto, (max-width: 1332px) 100vw, 1332px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Jak dzia\u0142a ten malware krok po kroku<\/h2>\n\n\n\n<p>W praktyce to zestaw kilku warstw filtr\u00f3w, kt\u00f3re maj\u0105 jeden cel: poda\u0107 z\u0142o\u015bliw\u0105 tre\u015b\u0107 tylko prawdziwemu Google (i powi\u0105zanym narz\u0119dziom), a wszystkich innych odes\u0142a\u0107 na normaln\u0105 stron\u0119 \u2014 tak, \u017ceby infekcja by\u0142a trudna do zauwa\u017cenia r\u0119cznie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Wielowarstwowa identyfikacja: User-Agent + IP<\/h3>\n\n\n\n<p>Najpierw skrypt przegl\u0105da <code>HTTP_USER_AGENT<\/code> w poszukiwaniu ci\u0105g\u00f3w znak\u00f3w zwi\u0105zanych z Googlebotem i us\u0142ugami Google (nie tylko \u201eGooglebot\u201d, ale te\u017c frazy kojarzone z narz\u0119dziami weryfikacji, inspekcji czy crawlerami API). Dopiero potem uruchamia weryfikacj\u0119 IP, bo sam User-Agent jest niewiarygodny.<\/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\/8\/2026\/01\/Multi-Layer-Identity-Verification.png\" alt=\"Schemat wielowarstwowej weryfikacji: User-Agent i walidacja IP\" class=\"wp-image-82\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Multi-Layer-Identity-Verification.png 1880w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Multi-Layer-Identity-Verification-300x79.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Multi-Layer-Identity-Verification-1024x271.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Multi-Layer-Identity-Verification-768x203.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Multi-Layer-Identity-Verification-1536x407.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Multi-Layer-Identity-Verification-400x106.png 400w\" sizes=\"auto, (max-width: 1880px) 100vw, 1880px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2) Walidacja IP w stylu \u201esieciowym\u201d (operacje bitowe)<\/h3>\n\n\n\n<p>Zamiast por\u00f3wnywa\u0107 tekstowo, malware sprowadza adresy IP i mask\u0119 do postaci liczbowej i sprawdza dopasowanie do sieci poprzez operacje bitowe (typowe podej\u015bcie w narz\u0119dziach sieciowych). Dla IPv4 logika sprowadza si\u0119 do por\u00f3wnania adresu po na\u0142o\u017ceniu maski (tzw. network match).<\/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>\/\/ Idea sprawdzania dopasowania IP do zakresu CIDR (IPv4):\n\/\/ (ip &amp; maska) == (adres_sieci &amp; maska)\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\">\/\/ Idea sprawdzania dopasowania IP do zakresu CIDR (IPv4):<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (ip &#x26; maska) == (adres_sieci &#x26; maska)<\/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<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1420\" height=\"734\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Bitwise-IP-Range-Validation.png\" alt=\"Ilustracja walidacji zakresu IP metod\u0105 bitow\u0105\" class=\"wp-image-83\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Bitwise-IP-Range-Validation.png 1420w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Bitwise-IP-Range-Validation-300x155.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Bitwise-IP-Range-Validation-1024x529.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Bitwise-IP-Range-Validation-768x397.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Bitwise-IP-Range-Validation-400x207.png 400w\" sizes=\"auto, (max-width: 1420px) 100vw, 1420px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3) Pobranie payloadu z zewn\u0105trz przez cURL<\/h3>\n\n\n\n<p>Je\u015bli weryfikacja przejdzie, skrypt pobiera zdaln\u0105 tre\u015b\u0107 i wypisuje j\u0105 bezpo\u015brednio w odpowiedzi HTTP. W analizowanym przypadku \u017ar\u00f3d\u0142em by\u0142a domena <code>amp-samaresmanor[.]pages[.]dev<\/code> (w raporcie wskazano, \u017ce by\u0142a blocklistowana przez cz\u0119\u015b\u0107 vendor\u00f3w na VirusTotal). Dla robota wygl\u0105da to tak, jakby tre\u015b\u0107 by\u0142a hostowana natywnie na Twojej domenie.<\/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>\/\/ Malware u\u017cywa cURL do pobierania zewn\u0119trznej tre\u015bci i wstrzykni\u0119cia jej w odpowied\u017a.\n\/\/ W raporcie wskazano URL w postaci: hxxps:\/\/amp-samaresmanor[.]pages[.]dev\n\/\/ (zapis \u201ehxxps\u201d i [.] to forma bezpiecznego cytowania).\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\">\/\/ Malware u\u017cywa cURL do pobierania zewn\u0119trznej tre\u015bci i wstrzykni\u0119cia jej w odpowied\u017a.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ W raporcie wskazano URL w postaci: hxxps:\/\/amp-samaresmanor[.]pages[.]dev<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ (zapis \u201ehxxps\u201d i [.] to forma bezpiecznego cytowania).<\/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\/8\/2026\/01\/Remote-Payload-Execution-via-cURL.png\" alt=\"Schemat pobierania zdalnego payloadu przez cURL i podania go robotowi\" class=\"wp-image-84\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Remote-Payload-Execution-via-cURL.png 1444w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Remote-Payload-Execution-via-cURL-300x174.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Remote-Payload-Execution-via-cURL-1024x593.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Remote-Payload-Execution-via-cURL-768x445.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Remote-Payload-Execution-via-cURL-400x232.png 400w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4) Rozbudowane filtrowanie User-Agent (nie tylko \u201eGooglebot\u201d)<\/h3>\n\n\n\n<p>Warto zwr\u00f3ci\u0107 uwag\u0119 na szeroki zestaw identyfikator\u00f3w w <code>HTTP_USER_AGENT<\/code>. Celem jest obj\u0119cie nie tylko klasycznego indeksowania, ale te\u017c sytuacji, gdy Google testuje stron\u0119 narz\u0119dziami (np. inspekcj\u0105 URL) lub gdy tre\u015b\u0107 przechodzi przez inne komponenty infrastruktury.<\/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\/8\/2026\/01\/User-Agent-Filtering.png\" alt=\"Przyk\u0142ad filtrowania po HTTP User-Agent dla wielu us\u0142ug Google\" class=\"wp-image-85\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/User-Agent-Filtering.png 1682w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/User-Agent-Filtering-300x99.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/User-Agent-Filtering-1024x337.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/User-Agent-Filtering-768x253.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/User-Agent-Filtering-1536x506.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/User-Agent-Filtering-400x132.png 400w\" sizes=\"auto, (max-width: 1682px) 100vw, 1682px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5) Logika warunkowa, fallbacki i logowanie b\u0142\u0119d\u00f3w<\/h3>\n\n\n\n<p>Najbardziej \u201eprofesjonalny\u201d element tej pr\u00f3bki to dopracowana decyzyjno\u015b\u0107: osobna \u015bcie\u017cka dla prawdziwego bota, osobna dla podszywki, osobna dla zwyk\u0142ych u\u017cytkownik\u00f3w. Skrypt ma te\u017c mechanizmy logowania zdarze\u0144 i zachowania awaryjne, \u017ceby Google nie zobaczy\u0142o pustej\/b\u0142\u0119dnej strony, je\u015bli pobranie payloadu si\u0119 nie powiedzie (np. przekierowanie do <code>\/home\/<\/code>).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Prawdziwy bot<\/strong> (User-Agent pasuje + IP w zakresach ASN): pobierz payload i zwr\u00f3\u0107 go; je\u015bli pobranie si\u0119 nie uda, przekieruj, aby unikn\u0105\u0107 \u201ebroken page\u201d.<\/li>\n\n\n<li><strong>Fa\u0142szywy bot<\/strong> (User-Agent pasuje, ale IP nie): zaloguj zdarzenie typu \u201eFake GoogleBot detected\u201d i przekieruj na normaln\u0105 stron\u0119.<\/li>\n\n\n<li><strong>Zwykli u\u017cytkownicy<\/strong>: od razu dostaj\u0105 standardow\u0105 stron\u0119 (lub przekierowanie), wi\u0119c infekcja jest niewidoczna podczas r\u0119cznego przegl\u0105dania.<\/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\/8\/2026\/01\/Conditional-Logic-and-Error-Logging.png\" alt=\"Schemat logiki warunkowej: bot prawdziwy, bot fa\u0142szywy, u\u017cytkownik\" class=\"wp-image-86\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Conditional-Logic-and-Error-Logging.png 1694w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Conditional-Logic-and-Error-Logging-300x120.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Conditional-Logic-and-Error-Logging-1024x411.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Conditional-Logic-and-Error-Logging-768x308.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Conditional-Logic-and-Error-Logging-1536x617.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/8\/2026\/01\/Conditional-Logic-and-Error-Logging-400x161.png 400w\" sizes=\"auto, (max-width: 1694px) 100vw, 1694px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Dlaczego atak celuje w pliki core WordPressa (wp-load.php, wp-blog-header.php)<\/h2>\n\n\n\n<p>W tej rodzinie infekcji istotne jest to, \u017ce atakuj\u0105cy nie \u201epsuje\u201d ca\u0142ej strony \u2014 on j\u0105 przechwytuje tylko w wybranych warunkach. Dlatego malware cz\u0119sto stara si\u0119 zachowa\u0107 zgodno\u015b\u0107 z normalnym bootstrappingiem WordPressa.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>wp-load.php<\/code> \u2014 do\u0142\u0105czenie tego pliku uruchamia \u015brodowisko WordPressa (konfiguracj\u0119, dost\u0119p do bazy, sta\u0142e, itp.), co daje atakuj\u0105cemu wygodny kontekst do dalszych dzia\u0142a\u0144.<\/li>\n\n\n<li><code>wp-blog-header.php<\/code> \u2014 w klasycznym <code>index.php<\/code> ten plik pojawia si\u0119 na ko\u0144cu \u0142a\u0144cucha \u0142adowania frontu; z\u0142o\u015bliwa modyfikacja mo\u017ce warunkowo \u201eomin\u0105\u0107\u201d standardow\u0105 \u015bcie\u017ck\u0119 lub do niej wr\u00f3ci\u0107, je\u015bli odwiedzaj\u0105cy nie spe\u0142nia kryteri\u00f3w.<\/li>\n\n<\/ul>\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>\/\/ Fragment wskazany w raporcie jako element bootstrapu:\nrequire_once __DIR__ . '\/wp-load.php';\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\">\/\/ Fragment wskazany w raporcie jako element bootstrapu:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">require_once<\/span><span style=\"color:#79B8FF\"> __DIR__<\/span><span style=\"color:#F97583\"> .<\/span><span style=\"color:#9ECBFF\"> '\/wp-load.php'<\/span><span style=\"color:#E1E4E8\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Konsekwencje: mniej &#8220;hackowania&#8221;, wi\u0119cej szkody SEO<\/h2>\n\n\n\n<p>Ten typ infekcji jest nastawiony przede wszystkim na reputacj\u0119 w wyszukiwarce i wykorzystanie zaufania domeny. Skutki bywaj\u0105 dotkliwe mimo tego, \u017ce u\u017cytkownik ko\u0144cowy nic nie zauwa\u017ca.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>blacklisting lub filtr r\u0119czny po stronie wyszukiwarki<\/li>\n\n\n<li>deindeksacja (wypadni\u0119cie z wynik\u00f3w) lub indeksowanie spamowych podstron zamiast w\u0142a\u015bciwych<\/li>\n\n\n<li>przej\u0119cie zasob\u00f3w (Twoja domena \u201ehostuje\u201d cudz\u0105 tre\u015b\u0107 dla Google)<\/li>\n\n\n<li>op\u00f3\u017anione wykrycie, bo infekcja jest niewidoczna w typowym QA i podczas przegl\u0105dania strony w przegl\u0105darce<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sygna\u0142y ostrzegawcze, kt\u00f3re realnie da si\u0119 zauwa\u017cy\u0107<\/h2>\n\n\n\n<p>Je\u015bli podejrzewasz, \u017ce co\u015b przechwytuje ruch crawler\u00f3w, nie polegaj wy\u0142\u0105cznie na tym, co widzisz w przegl\u0105darce. W tym scenariuszu to w\u0142a\u015bnie \u201enormalne wej\u015bcia\u201d maj\u0105 wygl\u0105da\u0107 czysto.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>nietypowe snippety w wynikach Google (inne tytu\u0142y\/opisy, obce j\u0119zyki, spam)<\/li>\n\n\n<li>\u015bwie\u017co modyfikowane pliki core, szczeg\u00f3lnie <code>index.php<\/code><\/li>\n\n\n<li>podejrzane URL-e\/domeny w kodzie lub w logach<\/li>\n\n\n<li>zaskakuj\u0105ce wpisy w logach serwera (nietypowe \u017c\u0105dania, przekierowania, b\u0142\u0119dy zwi\u0105zane z cURL)<\/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\">Uwaga na \u201eselektywne\u201d infekcje<\/h4>\n\n\n<p>Je\u015bli malware serwuje payload tylko dla zweryfikowanych IP Google, testy typu \u201ewejd\u0119 na stron\u0119 w incognito\u201d niczego nie poka\u017c\u0105. Weryfikuj integralno\u015b\u0107 plik\u00f3w i analizuj to, co trafia do indeksu w Google Search Console.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Remediacja i prewencja (praktyczny checklist)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Usu\u0144 nieznane pliki i katalogi oraz podejrzane fragmenty w plikach core (szczeg\u00f3lnie <code>index.php<\/code>).<\/li>\n\n\n<li>Zr\u00f3b audyt u\u017cytkownik\u00f3w WordPressa: usu\u0144 podejrzanych administrator\u00f3w, \u201epomocnicze\u201d konta, kt\u00f3re nie powinny istnie\u0107.<\/li>\n\n\n<li>Zresetuj has\u0142a: WP admin, FTP\/SFTP, panel hostingu, baza danych (i klucze\/sekrety, je\u015bli masz je w \u015brodowisku).<\/li>\n\n\n<li>Przeskanuj sw\u00f3j komputer (tak\u017ce stacj\u0119 dewelopersk\u0105) antywirusem\/antymalware \u2014 zdarza si\u0119, \u017ce infekcja wraca przez wykradzione dane dost\u0119powe.<\/li>\n\n\n<li>Zaktualizuj WordPress core, wtyczki i motywy; usu\u0144 porzucone komponenty, kt\u00f3re nie dostaj\u0105 poprawek.<\/li>\n\n\n<li>Rozwa\u017c WAF (Web Application Firewall) \u2014 filtr aplikacyjny, kt\u00f3ry potrafi blokowa\u0107 znane z\u0142o\u015bliwe wzorce i ogranicza\u0107 komunikacj\u0119 z infrastruktur\u0105 C2 oraz utrudnia\u0107 upload z\u0142o\u015bliwych plik\u00f3w.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Najwa\u017cniejsze wnioski<\/h2>\n\n\n\n<p>To nie jest \u201eg\u0142o\u015bny\u201d malware, kt\u00f3ry od razu przekierowuje u\u017cytkownik\u00f3w na scam. To cichy mechanizm przechwytuj\u0105cy zaufanie wyszukiwarki: Twoja witryna staje si\u0119 kontrolowan\u0105 bramk\u0105 do obcej tre\u015bci, ale tylko dla prawdziwej infrastruktury Google. Dlatego kluczowe s\u0105 dwie rzeczy: <strong>monitoring integralno\u015bci plik\u00f3w<\/strong> (\u017ceby wykry\u0107 nieautoryzowane zmiany w core, np. <code>index.php<\/code>) oraz regularna kontrola tego, co faktycznie indeksuje Google (np. pod k\u0105tem nieoczekiwanych stron i tre\u015bci).<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Odniesienia \/ \u0179r\u00f3d\u0142a<\/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 \u2014 A Cloaked SEO Spam Attack<\/a><\/li><li><a href=\"https:\/\/sucuri.net\/website-firewall\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sucuri Website Firewall<\/a><\/li><li><a href=\"https:\/\/sucuri.net\/malware-detection-scanning\/\" target=\"_blank\" rel=\"noopener noreferrer\">File Integrity Monitoring \/ Malware Detection Scanning<\/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 for amp-samaresmanor.pages.dev<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Coraz cz\u0119\u015bciej ataki SEO nie polegaj\u0105 na prostych przekierowaniach, tylko na selektywnym serwowaniu tre\u015bci wy\u0142\u0105cznie robotom Google. Ten wariant idzie dalej: weryfikuje Googlebota nie tylko po User-Agent, ale te\u017c po zakresach IP (ASN) i CIDR \u2014 z obs\u0142ug\u0105 IPv6.<\/p>\n","protected":false},"author":25,"featured_media":78,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[60,61,58,59,10],"class_list":["post-87","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bezpieczenstwo","tag-cloaking","tag-googlebot","tag-malware","tag-seo","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/posts\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":130,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/posts\/87\/revisions\/130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/media\/78"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}