Jak walczyć z wirusem?

KonsthurKonsthur | 20 września 2017 | Backend | 0
Want create site? Find Free WordPress Themes and plugins.

Zdarzyć się może każdemu, obojętnie jak przezornemu blogerowi. Czasem strona może zostać zarażona z automatu, z powodu dziury w motywie, wtyczce czy samym kodzie, albo i specjalnie przez upartego, domorosłego hakera lub konkurencję. Wirus może przyjmować różne postacie i objawiać się nawet po dłuższym czasie – czasem jako dane w bazie, kod w pliku motywu/wtyczki, dopisek do plików konfiguracyjnych, a czasem dowiemy się o jego istnieniu w momencie, kiedy strona wyparuje. W tym artykule dowiesz się jak rozpoznać najpopularniejszego wirusa, następnie w jaki sposób go usunąć i zabezpieczyć stronę.

Ostatni krok najlepiej prewencyjnie zastosować od razu po utworzeniu swojej strony.

O jakim wirusie mowa?

Swojej nazwy nie ma – a przynajmniej sam się z nią nie spotkałem, ale jest dość rozpoznawalny, najczęściej spotykany we wtyczkach i motywach „z niepewnych źródeł” czy też „od kolegi innego kolegi”. Postać ma typową, ot: pobiera sobie dane z pliku konfiguracyjnego wszystkie dane w waszej bazie (czyli dane użytkowników, motywów i wtyczek, treści stron, wpisów, komentarzy, w przypadku sklepów także transakcje) które haker może wyświetlić na odpowiednio spreparowanej podstronie, oraz przy okazji umieszcza skrypt wywołujący złośliwy kod z innej podstrony. Może to być wysyłanie spamu z naszej poczty, ale też wrzucenie niechcianych reklam na których zarabia właściciel. (Najpopularniejsze są onclick ads, czyli dodatkowe okno wyświetlane podczas kliknięcia w dowolny link na stronie). Może też spowodować wyświetlanie całkowicie innej strony w wynikach Google, sam taki przypadek niedawno leczyłem.

Jeśli mamy na jednym hostingu tylko jedną stronę (albo kilka w separacji) i nie ma na niej żadnych wrażliwych danych, nie trzeba wtedy mówić o jakimś wymaganym pośpiechu, bo jest to bardzo dobry materiał do nauki w jaki sposób taki kod się dostał i jak go wyleczyć. Jeśli strona jest rozbudowana, ZALECA SIĘ jak najszybsze zablokowanie do niej dostępu, wgranie ostatniej kopii zapasowej kiedy nie było widać niechcianych zmian, i zmiana haseł na nowsze i trudniejsze.

Opisywany przeze mnie wirus spotkał mnie dość niedawno, podczas tworzenia strony dla klienta – otrzymałem pliki motywu który został zdjęty z ThemeForest, a klient koniecznie chciał na nim witrynę mieć. Na wszelki wypadek przejrzałem najważniejsze pliki pod kątem „zakażenia”, lecz były czyste, więc podjąłem się dalszych prac. Gdy projekt był prawie całkowicie skończony, na innym komputerze odkryłem, że po kliknięciu w dowolny odnośnik na stronie, jestem przenoszony na strony z różnymi reklamami, od leków, przez porno, kończąc na broni i depresantach.

Złośliwy kod ukrył się w pliku functions.php w motywie, i wyglądał tak:

Nie przewija się w nim domena mojej strony ani razu, co pozwala domniemać że pojawienie się kodu spowodowane zostało automatycznie. Nie jestem jakimś uberprogramistą, więc wytłumaczę działanie po swojemu.

  • złośliwy kod pobiera dane do bazy z pliku wp-config, by móc pobrać jej zawartość
  • podmienia adresy linków na stronie tak by przekierowywały do kodu pod adresem dolsh.com/code10.php, który z kolei zawiera kod reklam onclickads.
  • Pobiera dane motywu i wtyczek, oraz ustawienia plików wp-cron i xmlrpc, najprawdopodobniej by ułatwić sobie dostęp do zarządzania stroną i korzystać z wysyłki maili, czego u siebie nie zauważyłem

Kilka linijek dość prostego kodu, który jednak ma brutalny wpływ na naszą stronę. Tym bardziej, że w moim przypadku po każdym usunięciu kodu, ten z automatu wracał.

Co zrobiłem?

Skorzystałem z metody generalnie niepolecanej, ale zawczasu zadbałem o wszelkie środki ostrożności, więc może po kolei.

Najważniejsze jest odcięcie dostępu do strony wszystkim poza administratorowi, można to obsłużyć za pomocą wtyczki do konserwacji albo ustawieniami pliku htaccess. Następnie wykonałem kopię zapasową strony już po infekcji i w osobnej instancji postawiłem ją na nowo. Tam wyciąłem kod ręcznie z functions.php i wtedy zorientowałem się, że kod powraca po usunięciu zarówno przez wbudowany edytor, jak i edytorem na komputerze.

Zapobiegawczo oznaczyłem kod jako komentarz do skryptu (znacznikami /* */, blokując tym samym jego wykonywanie) i zainstalowałem wtyczkę WordFence by przy bardziej szczegółowym skanie wykryć nieprawidłowości w kodzie. Oto pliki, które zostały zaindeksowane jako „nienależące do repozytorium” lub „należące, ale zmienione”:

  • wp-content/themes/twentyfifteen/functions.php (ten sam skrypt który umieściłem wyżej)
  • wp-content/themes/twentyseventeen/functions.php (j/w)
  • wp-content/themes/twentysixteen/functions.php (j/w)
  • wp-includes/wp-vcd.php (skrypt zewnętrzny, zobacz kod)
  • wp-includes/class.wp.php (skrypt zewnętrzny, zobacz kod)

W ostatnim pliku widać, że skrypt dodaje użytkownika do bazy danych o uprawnieniach administratora. Jest on jednak usuwany z bazy jeśli zostaną wykryte jakieś błędy w kodzie, więc znika podczas próby usunięcia skryptu.

Wystarczy więc usunąć dwa ostatnie na liście pliki, a następnie oczyścić pliki functions.php z niechcianego oprogramowania.

Wspomniałem jednak o metodzie niepolecanej…

… I tym niepolecanym sposobem jest używanie wtyczki WordFence do leczenia strony z prostego powodu: sama ma dziury i zostawia syf w plikach oraz w bazie danych. Jest to jednak teoria prosta do obalenia jeśli badania strony dokonujemy na oddzielnej kopii, a leczenie już wykonywane jest ręcznie przez użytkownika na stronie właściwej.

WF z wtyczek „security” ma bardzo szerokie możliwości względem skanowania plików, bowiem można wybrać jakie foldery mają zostać sprawdzone (nawet wszystkie inne na serwerze!) oraz jakie pliki pomijać zarówno pod względem rozszerzenia, jak i wielkości.

Mam wirusa – jak się go pozbyć?

Jeśli zachowanie jest podobne do tych, które wymieniłem, wystarczy zrobić kroki opisane wcześniej, a niżej podane w największym skrócie:

  • blokada dostępu do oryginału
  • wgranie kopii zapasowej na całkowicie oddzielną instancję
  • przebadanie kopii za pośrednictwem wtyczki WordFence
  • wprowadzenie zaproponowanych zmian przez wtyczkę ręcznie, na oryginale
  • zmiana haseł do bazy danych, konta FTP i konta administratora

Jeśli na tym samym serwerze masz więcej niż jedną stronę, je także warto sprawdzić czy wirus nie przeniósł się także na nie.

Nie mam wirusa – jak zabezpieczyć stronę by zminimalizować ryzyko hacku?

Tu nie ma się co rozpisywać, bo na ten temat powstała obszerna prezentacja od kolegów z WPMagusa, pod którą rękami i nogami mogę się podpisać, wysyłam ją też każdemu kto pyta się o bezpieczeństwo swojego bloga w sieci. Wystarczy włączyć i przeczytać, parę minut ciekawej lektury i prostych do wykonania zadań, które pozwolą uniknąć takiego problemu jak ten wyżej opisany, albo i większych.

Did you find apk for android? You can find new Free Android Games and apps.

Skomentuj ten wpis!



© 2014-2017 OtwórzBloga | Wdrożenie: Glowczynski.pl | Hosting: SiXwishlist