Moduł 7 · 7.5
Zhakowana strona: rozpoznawanie, naprawa i zapobieganie
Moduł 7: Bezpieczeństwo · Czas czytania: 10 minut
Cel lekcji: Po tej lekcji będą Państwo potrafili rozpoznać włamanie, naprawić je w odpowiedniej kolejności i zapobiec jego ponownemu wystąpieniu.
Kluczowe pojęcia: sygnały włamania, dokumentowanie, izolacja, wymiana wszystkich haseł i kluczy (salts), znalezienie wejścia, logi, czysta kopia zapasowa, czysta reinstalacja, sumy kontrolne, nieznani administratorzy, PHP w katalogu uploads, mu-plugins, Search Console, zgłoszenie naruszenia danych
Czym jest włamanie
Strona jest zhakowana, jeśli ktoś bez pozwolenia przejął kontrolę nad (częścią) Państwa strony: może zmieniać pliki lub bazę danych albo uruchamiać kod. Często pozostaje w systemie dzięki tylnej furtce (backdoor): ukrytemu plikowi lub fragmentowi kodu, dzięki któremu może wrócić później, nawet jeśli zamkną Państwo pierwotną lukę.
To ostatnie jest sednem tej lekcji: samo usunięcie widocznych szkód nie wystarczy. Dopóki tylna furtka istnieje lub luka, przez którą nastąpiło włamanie, jest otwarta, sytuacja powtórzy się. Często w ciągu kilku dni.
Rozpoznawanie
Sygnały (niektóre widać od razu, innych trzeba szukać):
- Google zgłasza przy Państwa stronie komunikat „Ta witryna może być zhakowana” lub Search Console zgłasza problem z bezpieczeństwem.
- W wynikach wyszukiwania (
site:example.com) pojawiają się strony, których Państwo nie znają, często w innym języku lub dotyczące leków, hazardu albo fałszywych sklepów. - Odwiedzający są przekierowywani, często tylko wtedy, gdy trafiają na stronę z Google lub z telefonu. Państwo tego nie widzą, ponieważ są zalogowani lub wchodzą przez zakładkę. Proszę przetestować to w oknie prywatnym, wchodząc przez wynik wyszukiwania.
- W sekcji Użytkownicy widnieje administrator, którego Państwo nie znają.
- W katalogu
wp-content/uploadsznajdują się pliki PHP albo w katalogu głównym lub wwp-content/mu-pluginssą pliki o dziwnych nazwach. - Dostawca hostingu lub skaner złośliwego oprogramowania zgłasza zainfekowane pliki; Państwa poczta jest odrzucana albo konto wysyła spam.
- Strona nagle działa wolno albo kończy się dostępna przestrzeń dyskowa.
Plan działania krok po kroku
1. Zachować spokój i udokumentować
Proszę nie usuwać od razu wszystkiego. Proszę zanotować, co Państwo widzą i od kiedy, zrobić zrzuty ekranu oraz sporządzić kopię obecnego stanu (plików i bazy danych, lub dodatkową kopię zapasową za pośrednictwem dostawcy hostingu). Ta kopia będzie potrzebna do znalezienia wejścia oraz jako dowód. Proszę nie umieszczać jej w katalogu strony internetowej.
2. Zatrzymać szkody dla odwiedzających
Proszę tymczasowo wyłączyć stronę lub ukryć ją za stroną konserwacji, zwłaszcza jeśli odwiedzający są przekierowywani do złośliwego oprogramowania lub phishingu. W DirectAdmin można zawiesić domenę; w innych panelach może pomóc hasło na całą stronę lub tymczasowy plik index.html z komunikatem.
3. Wymienić wszystkie hasła i klucze
Proszę założyć, że włamywacz zna każde hasło, które można było znaleźć na stronie lub za jej pośrednictwem. Proszę wymienić je, najlepiej z innego (czystego) komputera:
- hasło do panelu hostingowego oraz wszystkich kont FTP i SFTP (proszę usunąć konta, z których Państwo nie korzystają);
- hasło użytkownika bazy danych i zaktualizować je w wp-config.php;
- hasła wszystkich administratorów WordPress oraz usunąć konta, których Państwo nie rozpoznają;
- klucze i salty w wp-config.php (lekcja 1.3). Dzięki temu wygasają wszystkie ciasteczka logowania, także te włamywacza;
- hasła aplikacji (lekcja 3.3) oraz klucze API połączeń;
- hasła do poczty e-mail, jeśli przez skrzynkę pocztową wysyłano spam.
Następnie proszę włączyć uwierzytelnianie dwuskładnikowe wszędzie (lekcja 7.3).
4. Znaleźć wejście
Bez znajomości sposobu wejścia nie można mieć pewności, że luka jest zamknięta. Najczęstsze przyczyny (lekcja 7.1) i miejsca, gdzie szukać:
- Nieaktualna wtyczka lub motyw: które elementy były nieaktualne? Proszę sprawdzić nazwy w bazie danych podatności (lekcja 5.3).
- Wyciek hasła: proszę sprawdzić historię logowania w panelu hostingowym i w FTP.
- Logi serwera WWW: proszę poszukać w okolicach momentu, gdy pojawiły się pierwsze dziwne pliki, żądań POST do nieznanych plików lub plików wtyczek, często z tego samego adresu IP.
- Pliki według daty: proszę posortować w Menedżerze Plików lub przez SFTP według daty modyfikacji. Pliki zmienione w tym samym momencie, zwłaszcza poza aktualizacją, zasługują na uwagę.
5. Czyszczenie
Dwa sposoby, często stosowane razem:
A. Przywrócenie czystej kopii zapasowej sprzed włamania (lekcja 8.2). Proszę wybrać kopię zapasową na pewno sprzed pierwszych sygnałów, ponieważ włamywacze czasem czekają tygodniami. Proszę przywrócić ją w całości, tak aby zniknęły również dodane pliki. Następnie proszę natychmiast wszystko zaktualizować (inaczej luka pojawi się ponownie). Wada: wszystko, co powstało po dacie kopii zapasowej (wpisy, zamówienia), zostanie utracone.
B. Czysta odbudowa z zachowaniem istniejącej treści:
- Proszę zastąpić sam WordPress świeżą kopią z wordpress.org (wp-admin, wp-includes oraz pojedyncze pliki; nie wp-content i wp-config.php). Za pomocą WP-CLI można najpierw sprawdzić, co zostało zmienione:
wp core verify-checksums
wp plugin verify-checksums --allPolecenia te porównują Państwa pliki z wersjami oficjalnymi i zgłaszają każdy zmieniony lub dodatkowy plik (drugie polecenie dotyczy tylko wtyczek z katalogu wtyczek wordpress.org).
- Proszę usunąć wszystkie wtyczki i motywy oraz zainstalować je ponownie ze źródła, w najnowszej wersji. To, czego Państwo nie potrzebują, nie powinno wracać.
- Proszę sprawdzić
wp-content/uploadspod kątem plików PHP i innych plików niebędących plikami multimedialnymi orazwp-content/mu-plugins. - Proszę sprawdzić plik
.htaccesspod kątem dziwnych reguł przekierowań oraz wp-config.php pod kątem nieznanych wpisów. - Proszę sprawdzić bazę danych: nieznanych administratorów, opcje
siteurl,homeiactive_pluginswwp_options, oraz przeszukać wpisy pod kątem wstawionych skryptów (znacznik<scriptz dziwnymi adresami). - Proszę sprawdzić zaplanowane zadania: zadania cron w panelu hostingowym oraz WP-Cron (za pomocą wtyczki lub polecenia
wp cron event list).
Skaner złośliwego oprogramowania (od dostawcy hostingu lub w formie wtyczki) pomaga w wyszukiwaniu, ale nie należy mu bezgranicznie ufać: to, czego nie znajdzie, nadal może tam być.
6. Zamknięcie luki i kontrola
- Proszę zaktualizować wszystko, wzmocnić zabezpieczenia (lekcja 7.4) i ponownie włączyć stronę.
- Czy Państwa strona jest oznaczona przez Google jako niebezpieczna? Proszę poprosić w Search Console, w sekcji Problemy z bezpieczeństwem, o ponowną ocenę, ale dopiero gdy wszystko jest już czyste.
- Proszę obserwować kolejne tygodnie: nowe pliki, nowych administratorów, powiadomienia skanera. Jeśli problem powróci, oznacza to, że wejście lub tylna furtka nie zostały jeszcze znalezione.
Dane osobowe: zgłoszenie naruszenia danych
Jeśli włamywacze mieli dostęp do danych osobowych (danych klientów sklepu internetowego, zgłoszeń z formularzy, list członków, użytkowników strony), mamy wówczas do czynienia z naruszeniem ochrony danych osobowych w rozumieniu RODO. Takie naruszenie należy zgłosić w ciągu 72 godzin od jego wykrycia do właściwego organu nadzorczego ds. ochrony danych osobowych, chyba że jest mało prawdopodobne, by stanowiło ryzyko dla osób, których dane dotyczą (art. 33 RODO). Jeśli ryzyko jest wysokie, należy również bezpośrednio poinformować te osoby (art. 34). W każdym przypadku proszę udokumentować, co się wydarzyło i jakie działania Państwo podjęli, nawet jeśli nie dokonują Państwo zgłoszenia. W razie wątpliwości proszę zapoznać się z wytycznymi organu nadzorczego właściwego dla Państwa kraju (lekcja 9.3).
Proszenie o pomoc
Czyszczenie strony po włamaniu wymaga czasu i doświadczenia. Jeśli nie mają Państwo pewności, czy wszystko zostało naprawione, proszę poprosić o pomoc: swojego twórcę strony, wyspecjalizowaną firmę lub dostawcę hostingu (niektórzy dostawcy, w tym WebOké, oferują taką usługę, zwykle odpłatnie). Proszę przekazać im kopię z kroku 1, informacje o tym, co Państwo zaobserwowali i kiedy, oraz co już zostało zrobione.
Podsumowanie
- Włamanie często pozostawia tylną furtkę; samo usunięcie widocznych szkód nie wystarczy.
- Kolejność działań: udokumentowanie, ochrona odwiedzających, wymiana wszystkich haseł i saltów, znalezienie wejścia, czyszczenie, zamknięcie luki i kontrola.
- Czyszczenie można przeprowadzić za pomocą czystej kopii zapasowej sprzed włamania lub przez świeżą instalację WordPressa, wtyczek i motywów oraz sprawdzenie katalogu uploads, mu-plugins, pliku .htaccess i bazy danych.
- Polecenie
wp core verify-checksumspokazuje, które pliki WordPressa zostały zmienione. - Jeśli doszło do naruszenia danych osobowych, proszę zgłosić je w ciągu 72 godzin do właściwego organu nadzorczego, chyba że ryzyko jest mało prawdopodobne.
Quiz
Zadanie
Zadanie D7.5: Plan awaryjny na wypadek włamania. Proszę wypełnić plan awaryjny dla własnej strony, aby nie trzeba było go wymyślać w chwili zagrożenia: gdzie znajdują się Państwa kopie zapasowe i jak daleko sięgają wstecz, kto ma jakie hasła i jak wymienić je wszystkie (lista), gdzie znaleźć logi hostingu, do kogo zadzwonić po pomoc oraz jakie dane osobowe znajdują się na Państwa stronie (na potrzeby oceny, czy należy zgłosić naruszenie danych). Następnie proszę wykonać ćwiczenie: jakie pięć kroków podejmują Państwo w pierwszej godzinie po otrzymaniu komunikatu „Ta witryna może być zhakowana”, w jakiej kolejności i dlaczego właśnie w takiej kolejności?
Zadanie D7.5: Plan awaryjny na wypadek włamania
To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.
Najpierw udokumentować sytuację (zrzuty ekranu, zachowanie dzienników) zanim cokolwiek zostanie usunięte; zabezpieczyć odwiedzających (strona offline lub strona konserwacji); zmienić wszystkie hasła oraz salts; znaleźć lukę, przez którą doszło do włamania; dopiero wtedy przywrócić czystą kopię. Samo przywrócenie bez zamknięcia luki pozostawia drzwi otwarte.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Więcej informacji
Poniższe artykuły opisują te kroki w panelach WebOké; w innych panelach działają one w podobny sposób.
- Instrukcja DirectAdmin 18.2: Moja strona została zhakowana: plan działania
- Pomocy! Moja strona została zhakowana. Jak mogę to naprawić i jak zapobiec temu w przyszłości?
- Instrukcja DirectAdmin 15.11: Imunify360: skanowanie strony w poszukiwaniu malware
- Instrukcja DirectAdmin 17.2: Podsumowanie witryny i logi: log błędów i log dostępu
- Instrukcja DirectAdmin 3.4: Historia logowania: kto i kiedy się zalogował?
- Naruszenia ochrony danych osobowych (holenderski Urząd Ochrony Danych Osobowych, Autoriteit Persoonsgegevens): https://www.autoriteitpersoonsgegevens.nl/themas/beveiliging/datalekken
- FAQ: moja strona została zhakowana (wordpress.org, w języku angielskim): https://wordpress.org/documentation/article/faq-my-site-was-hacked/
