odwirusowanie-strony-internetowej.pl 736 090 601
Usuwanie włamu WordPress/Backdoor w WordPress

Backdoor w WordPress - jak znaleźć ukrytą furtkę

Backdoor w WordPress to plik lub fragment kodu pozwalający atakującemu wrócić na serwer po wyczyszczeniu infekcji, najczęściej ukryty w katalogu uploads, w mu-plugins albo w zadaniu cron. Typowa strona po włamaniu zawiera od 2 do 5 takich furtek. Sam skaner wtyczkowy wykrywa zwykle tylko część z nich.

Powód powrotu infekcji Zwykle 2-5 furtek na stronę 6 typowych kryjówek

Backdoor to kod pozostawiony po włamaniu, który przyjmuje polecenia z zewnątrz i pozwala odtworzyć infekcję nawet po zmianie haseł. Najczęstsze kryjówki to pliki PHP w katalogu wp-content/uploads, katalog mu-plugins ładowany automatycznie, koniec pliku wp-config.php, zadania cron w tabeli wp_options oraz konta administratorów dopisane w bazie. Rozpoznaje się je po funkcjach eval, assert, base64_decode i system oraz po odwołaniach do tablic żądania. Usuwanie polega na przejrzeniu wszystkich sześciu miejsc, skasowaniu znalezionego kodu i wymianie haseł razem z kluczami soli. Kontrola po kilku dniach potwierdza, czy serwis pozostał czysty.

Definicja

Czym jest backdoor w WordPressie?

Backdoor to fragment kodu pozostawiony przez atakującego po to, żeby wracać na serwer niezależnie od haseł i od tego, czy pierwotna luka została załatana. W praktyce jest to plik PHP przyjmujący polecenia w parametrze adresu albo w treści żądania, a następnie wykonujący je na serwerze.

Backdoory są krótkie, często mieszczą się w jednej linii i nie robią niczego widocznego, dopóki nie zostaną wywołane. Z tego powodu nie wpływają na działanie strony i mogą siedzieć w serwisie miesiącami. Dopiero gdy usuwasz widoczną infekcję, a ta wraca po kilku dniach, backdoor daje o sobie znać. Szukanie zaczyna się od kilku stałych lokalizacji.

Kryjówki

Gdzie najczęściej ukrywa się backdoor?

Backdoory trafiają w miejsca, do których właściciel serwisu rzadko zagląda, a serwer i tak je wykonuje. Poniżej sześć lokalizacji sprawdzanych przy każdym zleceniu.

  1. wp-content/uploadsKatalog przeznaczony na pliki graficzne nie powinien zawierać żadnego pliku PHP. Każdy znaleziony tam skrypt jest podejrzany niezależnie od nazwy.
  2. wp-content/mu-pluginsKatalog ładuje się automatycznie i nie pojawia się na liście wtyczek w panelu. Jeśli istnieje, a nie tworzyłeś go świadomie, sprawdź zawartość plik po pliku.
  3. Koniec pliku wp-config.phpSzukaj dopisanych instrukcji include oraz dyrektywy auto_prepend_file. Kod ładowany w ten sposób uruchamia się przed każdą stroną serwisu.
  4. Pliki podszywające się pod systemoweNazwy w rodzaju wp-cache.php, wp-conf.php czy wp-init.php w katalogu głównym nie należą do oryginalnej paczki WordPressa. Porównanie z czystą instalacją rozstrzyga w kilka sekund.
  5. Zadania cron w tabeli wp_optionsPod kluczem cron zapisywane są zadania cykliczne, w tym te odtwarzające zainfekowane pliki. Przejrzyj listę i usuń wpisy odwołujące się do funkcji spoza zainstalowanych wtyczek.
  6. Konta administratorów w bazieKonto dopisane przez atakującego działa jak furtka nawet po wyczyszczeniu wszystkich plików. Posortuj użytkowników po dacie rejestracji i porównaj z listą zespołu.

Znając lokalizacje, łatwiej rozpoznać sam kod, bo backdoory korzystają ze stałego zestawu funkcji.

Rozpoznanie

Po czym rozpoznać kod backdoora?

Backdoora rozpoznaje się po funkcjach, które wykonują kod przekazany z zewnątrz, oraz po odwołaniach do danych żądania. Najczęstsze z nich to eval, assert, system, shell_exec, passthru i preg_replace z modyfikatorem wykonującym kod, a dane pobierane są z tablic odpowiadających parametrom adresu, treści żądania i ciasteczkom.

Drugą cechą jest ukrywanie treści: kod bywa zapisany w base64, poskładany z pojedynczych znaków albo odwrócony funkcją strrev, żeby nie dało się go wyszukać po nazwie funkcji. Trzecią jest formatowanie, które odstaje od reszty pliku, na przykład jedna bardzo długa linia na początku dobrze sformatowanego motywu. Żadna z tych cech osobno nie przesądza sprawy, ale ich zestaw w jednym pliku jest wystarczającym powodem do usunięcia kodu.

Zasada praktyczna: jeśli nie potrafisz wyjaśnić, co dany fragment kodu robi w motywie i po co go tam wstawiono, potraktuj go jak backdoora. Kopia zapasowa wykonana przed czyszczeniem pozwala cofnąć zmianę, gdyby okazało się, że to jednak element wtyczki.

Usuwanie

Jak usunąć backdoora i sprawdzić, że nie został żaden inny?

Usuwanie backdoora kończy się dopiero po sprawdzeniu wszystkich sześciu lokalizacji i po kontroli serwisu w kolejnych dniach. Poniżej lista czynności zamykających temat.

  • Kopia plików i bazy przed jakąkolwiek zmianą, do porównania po pracach
  • Podmiana katalogów wp-admin i wp-includes na oryginalne paczki
  • Usunięcie plików PHP z katalogu uploads i całego katalogu mu-plugins, jeśli go nie tworzyłeś
  • Wyczyszczenie dopisków z wp-config.php i z plików functions.php wszystkich motywów
  • Usunięcie zadań cron i kont administratorów dopisanych w bazie
  • Wymiana haseł oraz kluczy soli, co kończy wszystkie aktywne sesje
  • Blokada wykonywania PHP w katalogu uploads regułą w pliku .htaccess
  • Kontrola listy plików po 24 i po 72 godzinach, przez porównanie z kopią

Zestaw tych czynności warto porównać z tym, co daje samo przywrócenie kopii zapasowej.

Porównanie

Szukanie backdoora a przywrócenie kopii zapasowej - co wybrać?

Szukanie backdoora ma sens, gdy nie masz kopii sprzed włamania, a przywrócenie kopii wtedy, gdy znasz dokładną datę infekcji. W praktyce oba warianty kończą się tym samym zestawem prac zabezpieczających.

Ręczne szukanie furtek

Zachowuje wszystkie treści dodane po dacie włamania, w tym zamówienia i komentarze. Wymaga jednak przejrzenia katalogów plik po pliku, a pewność daje dopiero kontrola serwisu po kilku dniach.

Przywrócenie kopii zapasowej

Usuwa wszystkie furtki naraz, o ile kopia pochodzi sprzed pierwszego włamania, a nie sprzed zauważenia objawu. Cofa też serwis do podatnej wersji wtyczki, dlatego zaraz po przywróceniu trzeba wykonać aktualizacje i zmienić hasła.

Niezależnie od wybranej drogi po zamknięciu furtek zostaje uporządkowanie reszty serwisu.

Kontekst

Backdoor a widoczne objawy włamania na stronie

Backdoor sam w sobie nie daje objawów, natomiast odpowiada za powrót infekcji, które te objawy wywołują. Poniżej najczęstsze przypadki, w których szukanie furtki jest pierwszym krokiem.

Przekierowania wracające po czyszczeniu

Gdy po wyczyszczeniu pliku .htaccess strona WordPress znowu przekierowuje na inną stronę, regułę odtwarza skrypt uruchamiany zadaniem cron. Kasowanie samej reguły daje wtedy efekt na kilka godzin. Kolejność jest odwrotna: najpierw furtka, potem objaw.

Infekcje odtwarzające własne pliki

Podobnie działa wp-vcd, który trzyma kilka kopii kodu i odtwarza je nawzajem przy każdym wejściu na stronę. W takim przypadku czyszczenie prowadzi się przy wyłączonym serwisie. Pełny przebieg prac opisuje instrukcja usuwania wirusa ze strony.

Czy backdoor wpływa na pozycje strony w Google?

Nie bezpośrednio, ponieważ sam kod nie zmienia treści widocznej dla robota. Pośrednio wpływa, bo pozwala odtwarzać infekcje, które treść podmieniają, a te kosztują widoczność.

Czy da się zablokować wgranie kolejnego backdoora?

Tak, największą różnicę robi blokada wykonywania PHP w katalogach na pliki oraz aktualizowanie wtyczek, przez które wgrywane są shelle. Komplet zabezpieczeń opisuje instrukcja jak zabezpieczyć stronę WordPress. Warto do tego dołożyć kontrolę sum kontrolnych plików rdzenia. Powiadomienie o nowym pliku PHP w katalogu na zdjęcia wychwytuje shella w kilka minut.

Czym backdoor nie jest

Backdoor nie jest wirusem w potocznym rozumieniu, bo nie powiela się sam i nie uszkadza plików. Nie jest też widoczny dla odwiedzających: strona z furtką działa normalnie i nie zwalnia. Nie znika wreszcie po aktualizacji WordPressa, ponieważ leży poza plikami rdzenia i aktualizacja go nie nadpisuje.

FAQ

Najczęstsze pytania o backdoory w WordPressie

Czy backdoor da się wykryć skanerem antywirusowym?

Nie, skaner rozpoznaje wyłącznie znane sygnatury, a krótki backdoor napisany pod jedną instalację nie pasuje do żadnej z nich. Skan traktuje się jako pierwszy krok, po którym idzie ręczny przegląd katalogów.

Czy zmiana hasła administratora usunie backdoora?

Nie, backdoor działa w plikach lub w bazie i nie korzysta z formularza logowania. Zmiana hasła utrudnia dostęp panelem, ale nie zamyka furtki uruchamianej bezpośrednio przez adres pliku.

Czy backdoor może siedzieć w bazie danych?

Tak, najczęściej jako zadanie cron w tabeli wp_options albo jako konto administratora ukryte przed listą użytkowników. Dlatego czyszczenie samych plików bywa niewystarczające.

Czy po znalezieniu jednego backdoora warto szukać dalej?

Tak, na zainfekowanej stronie znajduje się zwykle od dwóch do pięciu furtek wgranych przy różnych okazjach. Przegląd kończy się dopiero po sprawdzeniu wszystkich typowych lokalizacji.

Czy przywrócenie kopii zapasowej usunie backdoora?

Tak, jeśli kopia pochodzi sprzed daty pierwszego włamania. Kopie wykonane po tej dacie zawierają furtkę razem z resztą plików, więc przywrócenie ich niczego nie zmienia.

Wolisz oddać to komuś, kto robi to codziennie?

Szukamy i usuwamy backdoory w ramach usługi za 600 zł netto, razem z kontami i zadaniami cron, którymi infekcja się odtwarza. Jeśli wirus wraca po każdym czyszczeniu, wyślij adres strony, a znajdziemy furtkę, która go przywraca.

Diagnoza jest bezpłatna. Płatność następuje po wyczyszczeniu strony, na podstawie faktury VAT.

600 złnetto za domenę
  • Realizacja do 24 godzin
  • Pliki, baza danych i backdoory
  • Zgłoszenie do Google Search Console
  • Ponowne czyszczenie gratis przez 30 dni
Zadzwoń Napisz