Trumpai: Jei norite, kad kenkėjiška programa būtų pašalinta iš jūsų svetainės, retai pakanka ištrinti pavienius failus. Pirmiausia išsaugome radinį, randame webshell, užpakalines duris ir paslėptas užduotis, atstatome iš patikimų šaltinių ir uždarome įsilaužimo kelią. Tik tada išvalymas yra patikimas.
Kaip atpažinti kenkėjišką programą svetainėje
Kenkėjiškas kodas svetainėse dažnai išaiškėja tik netiesiogiai. Tipiška: peradresavimai į svetimus puslapius, šlamšto turinys, matomas tik paieškos sistemoms ar mobiliesiems įrenginiams, Google įspėjimas paieškos rezultatuose, klientų skundai arba talpintojo užblokavimas dėl šlamšto siuntimo. Serveryje matomi nežinomi PHP failai, naujos administratoriaus paskyros, pakeisti .htaccess failai ar nepaaiškinamos cron užduotys.
Po PHP2Shell atsiranda dar vienas rūpestis: per CVE-2026-109618 ir CVE-2026-109619 užpuolikai gali vykdyti kodą be prisijungimo. Paskelbtų, patvirtintų kompromitavimo rodiklių (Indicators of Compromise) nėra; aptikimas grindžiamas elgsenos analize. Kaip paprastai atrodo webshell ir kur jie slepiasi, aprašo Webshell atpažinimas ir šalinimas.
Kenkėjiškos programos šalinimas iš svetainės: kodėl kruopštumas svarbesnis už greitį
Užpuolikai retai palieka tik vieną failą. Įprasta, kad yra kelios užpakalinės durys skirtingose vietose: įkėlimų aplankuose, įskiepiuose ar temose, privalomai naudojamuose (must-use) įskiepiuose, duomenų bazėje, cron užduotyse arba papildomose naudotojų paskyrose. Jei ištrinamas tik labiausiai krentantis į akis failas, kenkėjiškas kodas grįžta.
Kartu užkrėsta būsena yra įrodymas. Kas išvalo per skubotai, praranda galimybę nustatyti, ar paveikti klientų duomenys. Todėl prieš bet kokį pakeitimą sukuriame kopiją. Tai kainuoja mažai laiko ir palieka atviras visas galimybes, taip pat vėlesnį pranešimą priežiūros institucijai ar draudikui.
PHP ar CMS atnaujinimas nepašalina kenkėjiškos programinės įrangos, kuri jau yra serveryje. O išvalyta svetainė užkrečiama iš naujo, kol įsilaužimo kelias lieka atviras.
Kur paprastai slepiasi kenkėjiškas kodas
Šias vietas tikriname kiekvieno išvalymo metu, nes praktikoje jos nuolat būna paveiktos:
| Vieta | Tipinis radinys |
|---|---|
| Įkėlimų aplankai | PHP failai su nekaltai atrodančiais pavadinimais arba užmaskuoti kaip paveikslėlis |
| Įskiepiai, temos, moduliai | papildomi failai arba pakeisti originalūs failai |
| Konfigūracija | įterptos eilutės .htaccess, .user.ini ar įėjimo failuose |
| Duomenų bazė | svetimos administratoriaus paskyros, skriptai turinyje ar parinktyse |
| Sistema | cron užduotys, papildomi SSH raktai, procesai be matomo tikslo |
| Talpyklos ir laikinieji aplankai | kenkėjiško kodo kopijos, kurios po ištrynimo pasirodo vėl |
Svarbus ryšys: pavienis radinys retai paaiškina visą incidentą. Tik bendras vaizdas parodo, kaip užpuolikas elgėsi ir ar pasiėmė prieigos duomenis.
Kaip PHP SOS padeda konkrečiai?
- Išsaugoti: Sukuriame failų, duomenų bazės ir žurnalų kopiją užkrėstos būsenos metu. Ji išlieka vėlesnei analizei.
- Ieškoti: Palyginame programos failus su gamintojo originalais, tikriname įkėlimų aplankus dėl vykdomo kodo, naršome duomenų bazę, cron užduotis, naudotojų paskyras ir serverio konfigūraciją. WordPress aplinkoms elgiamės taip, kaip aprašyta puslapyje Užpakalinių durų paieška WordPress.
- Išvalyti: Branduolį, plėtinius ir temas įdiegiame iš naujo iš patikimų šaltinių, užuot lopę įtartinus failus po vieną. Nuosavą turinį ir įkėlimus tikriname atskirai ir perimame tik tai, kas nekelia abejonių.
- Uždaryti priežastį: Pataisome PHP ir programą, pašaliname svetimas paskyras ir pakeičiame visus prieigos duomenis bei raktus, kuriuos užpuolikas galėjo matyti.
- Pokontrolė: Po išvalymo stebime svetainę dėl pakartotinių pokyčių ir padedame jums per Search Console patikrinti Google įspėjimą. Daugiau rasite puslapyje Google įspėjimo pašalinimas.
Administratoriams, nepavojingas pirmasis žvilgsnis į neseniai pakeistus PHP failus:
# PHP failai žiniatinklio kataloge, pakeisti per pastarąsias 10 dienų
find /var/www -type f -name "*.php" -mtime -10 -printf "%TY-%Tm-%Td %TH:%TM %p\n" | sort
Rezultatas yra užuomina, o ne įrodymas: užpuolikai gali pakeisti laiko žymas.
Ką gausite ir ko mums reikia
Gaunate ataskaitą su rastais kenkėjiškais komponentais ir jų radimo vieta, išvalymo priemonėmis, pakeistų prieigos duomenų sąrašu ir tikėtinu įsilaužimo keliu. Aiškiai atskiriame, kas įrodyta, kas tikėtina ir kas nežinoma.
Iš jūsų mums reikia:
- prieigos prie serverio ar talpinimo skydelio, CMS administravimo dalies ir duomenų bazės
- kontaktinio asmens, galinčio patvirtinti slaptažodžių keitimą ir išjungimus
- informacijos apie agentūrą, kūrėją ar talpintoją bei apie nuosavus sistemos pakeitimus
- esamų atsarginių kopijų su data, kad galėtume įvertinti, kuri būsena galėjo būti švari
- prieigos prie Google Search Console, jei rodomas įspėjimas
Ko neapsiimame
Neapsiimame, kad kiekvienas užpakalinės durys kiekvienoje sistemoje bus tikrai rastos, jei trūksta žurnalų arba užkrėtimas buvo seniai. Kai padėtis neaiški, rekomenduojame perkurti naujame serveryje, į kurį perkeliamas tik patikrintas turinys. Tai imlesnė, bet dažnai patikimesnė kryptis. Taip pat neprognozuojame, kada Google ar kitos paslaugos pašalins įspėjimą; tai sprendžia tie teikėjai.
Kai reikia teisme priimtinai išsiaiškinti, kas tiksliai įvyko ir kurie duomenys paveikti, pasitelkiame IT kriminalistiką su specializuotais partneriais. Esant ūmiai, dar vykstančiai atakai darbas prasideda nuo skubios pagalbos nulaužus svetainę.
Dažni klausimai
Ar kenkėjiškų programų skaitytuvo įskiepio pakanka mano svetainei išvalyti?
Skaitytuvas randa žinomus šablonus, bet ne kiekvienas užpakalines duris. Webshell dažnai užmaskuoti, slepiasi paveikslėliuose, talpyklose ar duomenų bazėje arba įtvirtinti kaip cron užduotis. Skaitytuvas yra pagalbinė priemonė, o ne visiškas išvalymas.
Ar galiu tiesiog atkurti seną atsarginę kopiją?
Tik jei tikrai žinoma, kad kopija sukurta prieš įsilaužimą, ir jei po to uždaromas įsilaužimo kelias. Kitaip svetainė trumpam švari ir tuo pačiu keliu vėl užkraunama.
Kodėl kenkėjiška programa po ištrynimo vis pasirodo iš naujo?
Dažniausiai yra antros užpakalinės durys, cron užduotis, pakeista administratoriaus paskyra arba spraga dar atvira. Tik radus visus išlikimo mechanizmus ir pašalinus priežastį išvalymas išlieka.
Ar PHP atnaujinimas pašalina esamą kenkėjišką programą?
Ne. Pataisa uždaro spragą, bet nepašalina jau įterptos kenkėjiškos programinės įrangos. Tai atskiri darbo žingsniai.