Usunięcie pliku to nie usunięcie infekcji
Najczęstszy scenariusz, z jakim do mnie trafiają: ktoś znalazł podejrzany plik, usunął go, odetchnął — a po dwóch dniach strona znowu przekierowuje. Potem to samo jeszcze raz. W końcu pada zdanie „chyba mam jakiegoś wyjątkowo złośliwego wirusa”.
Wirus nie jest wyjątkowy. Po prostu usunięty plik to był objaw, a nie przyczyna.
Dlaczego pliki wracają
Porządnie zrobiona infekcja nie polega na jednym pliku. Ma mechanizm odtwarzania, i to zwykle w miejscu, którego nikt nie sprawdza.
Zadanie cykliczne
WordPress ma własny harmonogram zadań. Wpisane w niego polecenie odtwarza skasowane pliki przy najbliższym wejściu kogokolwiek na stronę. Usuwasz plik, ktoś wchodzi, plik jest z powrotem — czasem po kilku minutach.
Kod w bazie danych
Skrypt wstrzyknięty w treść wpisu, w widżet albo w ustawienia. Pliki są wtedy czyste — każdy skaner plikowy pokaże zielone światło, a strona dalej robi swoje. Spotkałem ślad w bazie, który leżał tam pół roku po „wyczyszczeniu” strony przez kogoś innego.
Drugie konto administratora
Najprostszy i najtrwalszy mechanizm. Dopóki istnieje, nie trzeba żadnego złośliwego kodu — wystarczy się zalogować i wgrać wszystko od nowa. Dlatego lista użytkowników jest jednym z pierwszych miejsc, które sprawdzam.
Zmienione rozszerzenie zamiast usunięcia
Wariant, który widuję przy stronach „czyszczonych” wcześniej samodzielnie: ktoś nie usunął pliku, tylko zmienił mu rozszerzenie, żeby przestał działać. Plik leży dalej, a wraz z nim cały kod — wystarczy, że jakikolwiek inny mechanizm przywróci mu pierwotną nazwę.
Dokładnie taki zestaw — ukryta wtyczka, menedżer plików i kod odtwarzający — opisałem w case study o ukrytej wtyczce. Samo usunięcie plików nie dałoby tam nic poza kilkoma spokojnymi godzinami.
Co znaczy „zamknąć drogę wejścia”
To jest różnica między naprawą a odkładaniem problemu. Zamknięcie drogi wejścia obejmuje cztery rzeczy:
- ustalenie, którędy ktoś wszedł — najczęściej z logów serwera; bez tego reszta jest zgadywaniem,
- załatanie tej konkretnej dziury — aktualizacja wtyczki, rdzenia albo wyłączenie funkcji, która na to pozwalała,
- unieważnienie wszystkich sesji i kluczy — żeby ktoś, kto ma zapisane ciasteczko logowania, nie wrócił po zmianie hasła,
- przegląd kont, zadań cyklicznych i bazy — czyli miejsc, w których siedzą mechanizmy odtwarzania.
Dopiero po tym usunięcie plików ma sens i jest ostatnim, najprostszym krokiem — a nie pierwszym i jedynym.
Skąd wiadomo, że naprawa zadziałała
Nie z tego, że strona wygląda normalnie — wyglądała normalnie także wtedy, gdy była zainfekowana. Po czyszczeniu sprawdzam trzy rzeczy, najlepiej po tygodniu:
- czy w logach nie pojawiają się żądania do adresów, których nie powinno być,
- czy w wynikach wyszukiwania nie wracają obce podstrony — operator
site:i Search Console, - czy lista kont, wtyczek i zadań cyklicznych wygląda tak samo jak zaraz po naprawie.
Jeśli po tygodniu wszystkie trzy są czyste, infekcja nie wróciła — i to jest moment, w którym można uznać sprawę za zamkniętą.
Uczciwie o gwarancji
Nie wróci ta sama infekcja, jeśli zamknęliśmy drogę, którą weszła. Nikt natomiast nie zagwarantuje, że za pół roku nie pojawi się nowa luka w którejś z wtyczek — bo to nie zależy ani ode mnie, ani od Ciebie.
Ryzyko powtórki zależy prawie wyłącznie od tego, czy strona jest aktualizowana. To jedyny powód, dla którego po czyszczeniu proponuję opiekę — nie dlatego, że tak wypada na koniec rozmowy.
Jeśli infekcja u Ciebie wraca
To znaczy, że mechanizm odtwarzania wciąż działa i samo czyszczenie plików tego nie rozwiąże. Usuwam infekcje razem z ustaleniem drogi wejścia — pracuję na kopii, poza działającym serwerem. Diagnoza bezpłatna, odpowiadam tego samego dnia.
Telefon, jeśli sprawa jest pilna: +48 505 99 67 34.