Atak ze złośliwym oprogramowaniem

Termin „złośliwe oprogramowanie” odnosi się do oprogramowania lub aplikacji mobilnych zaprojektowanych specjalnie w celu wyrządzenia szkody na komputerze, urządzeniu mobilnym i w zainstalowanych na nim aplikacjach, a także w celu zaszkodzenia użytkownikom. Więcej informacji o złośliwym oprogramowaniu znajdziesz w artykule Złośliwe i niechciane oprogramowanie.

Jeśli witryna zawiera złośliwe oprogramowanie, użytkownicy zobaczą ostrzeżenie „Ta witryna może wyrządzić szkody na Twoim komputerze” wyświetlane w wynikach wyszukiwania lub na stronie pełnoekranowej wyświetlanej przez przeglądarkę podczas próby otwarcia witryny. Będzie ono wyglądać np. tak:

Pełnoekranowa strona reprezentatywna ze złośliwym oprogramowaniem
Wyniki wyszukiwania z ostrzeżeniem o złośliwym oprogramowaniu.

Potrzebujesz tych elementów:

  • dostęp administratora powłoki lub terminala do serwerów witryny: internetowego, bazy danych i plików;
  • znajomości poleceń powłoki lub poleceń terminala;
  • Możliwość uruchamiania zapytań SQL w bazie danych.

Przygotowanie

  • Zarejestruj się w Search Console i potwierdź własność zaatakowanej witryny w sposób opisany w niej. W Search Console znajdziesz przykładowe strony z takimi problemami, co znacznie ułatwia znajdowanie i rozwiązywanie problemów ze złośliwym oprogramowaniem. Dodatkowo zobaczysz ostrzeżenie, jeśli witryna zostanie wykryta przez różne typy złośliwego oprogramowania lub inne ataki hakerskie.
  • Na stronie diagnostycznej w Bezpiecznym przeglądaniu Google znajdziesz informacje o tym, czy witryna może być niebezpieczna dla użytkowników. Stan strony lub witryny możesz sprawdzić pod adresem URL podobnym do tego: https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>***, np.: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> może obejmować konkretny adres URL strony (http://example.com/badpage) lub całą witrynę (example.com).

  • Unikaj wyświetlania stron witryny w przeglądarce. Złośliwe oprogramowanie często rozprzestrzeni się, wykorzystując luki w zabezpieczeniach przeglądarki, dlatego otwarcie takiej strony może uszkodzić komputer. Jeśli instrukcje diagnostyczne nie wskazują na otwarcie strony bezpośrednio w przeglądarce, użyj cURL lub Wget, aby wysłać żądania HTTP (np. w celu pobrania strony).

    Te bezpłatne narzędzia pomagają w diagnozowaniu przekierowań, a dodatkowo mogą zawierać informacje o stronie odsyłającej i kliencie użytkownika. Podanie konkretnej strony odsyłającej lub klienta użytkownika pomaga naśladować hakerów, bo hakerzy mogą wyświetlać złośliwe treści tylko tym użytkownikom z określonymi klientami użytkownika lub stronami odsyłającymi, by kierować je do bardziej „prawdziwych osób” i uniknąć wykrycia przez właścicieli witryn i skanery złośliwego oprogramowania.

`curl -v --referer "http://www.google.com" <your-url>`

W tym przykładzie wskazano zarówno klienta użytkownika, jak i stronę odsyłającą:

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

Zalecamy pobranie strony z elementem --referer "https://www.google.com" i bez niego, ponieważ niektóre złośliwe oprogramowanie są aktywowane tylko wtedy, gdy użytkownicy wchodzą z wyników wyszukiwania Google.

  • Utwórz dokument, w którym będziesz zapisywać informacje uzyskane na tym etapie. Te informacje to (przynajmniej) nazwa i lokalizacja każdego uszkodzonego pliku oraz informacje o tym, jak został on zainfekowany. Dokument będzie potrzebny na etapie, na którym trzeba będzie Oczyść i zabezpiecz witrynę.

  • Obejrzyj wcześniejszy film na tej stronie, aby dowiedzieć się, jak działa złośliwe oprogramowanie i jak zabezpieczyć się podczas badania zaatakowanej witryny.

Diagnostyka

Sprawdź, jakie złośliwe oprogramowanie atakuje Twoją witrynę:

  1. Otwórz w Search Console raport Problemy dotyczące bezpieczeństwa dotyczący Twojej witryny. Rozwiń opis ostrzeżenia o złośliwym oprogramowaniu, aby zobaczyć listę przykładowych stron, których dotyczy problem. Pamiętaj, że ta lista nie jest wyczerpująca – możesz nie zobaczyć przykładowych stron ze wszystkimi typami złośliwego oprogramowania w Twojej witrynie.
  2. Sprawdź swoje przykładowe strony pod kątem poniższych rodzajów złośliwego oprogramowania.

Złośliwe oprogramowanie konfiguracji serwera (niechciane przekierowania)

Haker przejął witrynę i przekierowuje jej użytkowników do swojej witryny ze złośliwym oprogramowaniem, prawdopodobnie dzięki zmodyfikowaniu plików konfiguracyjnych serwera. Zwykle pozwalają administratorowi witryny określić przekierowania adresów URL konkretnych stron lub katalogów w witrynie. Na przykład na serwerach Apache te pliki to .htaccess oraz httpd.conf.

Diagnostyka

Odwiedź przykładowe adresy URL wymienione w raporcie „Problemy dotyczące bezpieczeństwa”. Odpowiedź ze strony zainfekowanej przez infekcje „konfiguracją serwera” może zawierać te nagłówki:

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

Znajdź pliki, których dotyczy problem

Zaloguj się na serwer przez dostęp do powłoki lub terminala (witryna może być offline) i przejrzyj odpowiednie pliki konfiguracyjne serwera. W witrynie może znajdować się więcej niż jeden zhakowany plik konfiguracji serwera. Poszukaj w nich niepożądanych dyrektyw, takich jak przekierowania do nieznanych witryn. Na przykład w pliku .htaccess możesz zobaczyć przekierowanie podobne do tego:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

wstrzyknięcie kodu SQL

Haker przejął bazę danych Twojej witryny. Na przykład haker mógł programowo wstawić złośliwy kod do każdego rekordu tabeli w bazie danych. Gdy serwer wczytuje stronę, która wymaga informacji z bazy danych, złośliwy kod jest umieszczany w treści tej strony i może szkodzić użytkownikom witryny.

Diagnostyka

  1. Uruchom w wierszu poleceń kilka zapytań dotyczących adresów URL, których dotyczy problem, i sprawdź odpowiedź pod kątem słów ataku SQL, takich jak „iframe” lub „eval”.
  2. Zaloguj się na serwer bazy danych lub wyświetl ją w takim narzędziu jak phpMyAdmin. Jeśli używasz Wget lub cURL, spróbuj powiązać szkody znalezione w kodzie źródłowym strony za pomocą tych narzędzi z rzeczywistymi wpisami w bazie danych. Jeśli np. zauważysz, że na Twoich stronach znajduje się niebezpieczny element iframe, możesz wysłać zapytanie SQL do kodu iframe. Na przykład:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
    
  3. Warto też sprawdzić w dzienniku i plikach błędów bazy danych na serwerze, czy nie wystąpiły nietypowe działania, takie jak nieoczekiwane polecenia SQL, które mogą wystąpić w przypadku zwykłych użytkowników lub błędów.

Rozwiąż problem

Zaktualizuj każdy zainfekowany rekord bazy danych lub przywróć ostatnią znaną kopię zapasową bazy danych.

Wstrzyknięty kod

Do stron w witrynie został dodany złośliwy kod, np. element iframe z witryny rozpowszechniającej złośliwe oprogramowanie.

Diagnostyka

Otwórz przykładowe adresy URL wymienione w raporcie „Problemy dotyczące bezpieczeństwa” za pomocą narzędzia cURL lub wGet i sprawdź, czy nie ma podejrzanego kodu. Wstrzyknięty kod może mieć wiele typów i być trudny do znalezienia. Aby znaleźć kod iframe, warto wyszukać takie słowa jak „iframe”. Inne przydatne słowa kluczowe to „script”, „eval” i „unescape”. Aby np. wyszukać słowo „iframe” we wszystkich plikach w systemie typu Unix:

$grep -irn "iframe" ./ | less</pre>

Oto kilka typowych wzorców złośliwego oprogramowania, których należy szukać.

Element iframe, który wczytuje złośliwą witrynę:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

Instrukcja w języku JavaScript lub innym języku skryptowym, która wywołuje i uruchamia skrypty ze strony atakującej:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

Skrypt, który przekierowuje przeglądarkę do złośliwej witryny:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

Złośliwy kod, który jest zaciemniony, aby uniknąć wykrycia:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

Pliki udostępnionych obiektów, które losowo zapisują szkodliwy kod w innych nieszkodliwych skryptach:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

Szkodliwe szablony błędów

Szablon komunikatów o błędach, np. 404 „Nie znaleziono pliku”, jest skonfigurowany tak, aby rozpowszechniał złośliwe oprogramowanie. W ten sposób haker może wykorzystywać w atakach adresy URL, które nawet nie istnieją w Twojej witrynie.

Diagnostyka

Wyślij żądanie wyświetlenia w witrynie nieistniejącej strony lub takiej, która powoduje inny rodzaj błędu, i sprawdź, czy odpowiedź pochodzi z innej witryny lub zawiera złośliwe oprogramowanie.

Rozwiąż problem

Zaloguj się na serwerze WWW i w plikach konfiguracyjnych serwera poszukaj dyrektyw strony błędu. Na przykład szablon błędu serwerów WWW Apache można zadeklarować w pliku .htaccess. Oto przykładowy wpis w pliku .htaccess, który pobiera strony błędu 404 ze złośliwej witryny:

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

Gdy przygotujesz się do czyszczenia witryny, zastąp pliki .htaccess nienaruszoną kopią zapasową lub usuń niepożądane instrukcje ErrorDocument z istniejących plików .htaccess. Pamiętaj też, by wyczyścić faktyczne pliki błędów, jeśli istnieją w witrynie. Na koniec ponownie uruchom serwer WWW, aby mieć pewność, że wszystkie zmiany zaczną obowiązywać.

Zasoby wczytywane z zaatakowanej lub szkodliwej witryny {compromised-resources}

Twoja witryna wykorzystuje treści lub zasoby z witryny, o której wiadomo, że zawiera złośliwe treści. Mogą to być pliki JavaScript, obrazy lub inne pliki. Z tego powodu Twoja witryna zostanie oznaczona jako zawierająca złośliwe oprogramowanie wczytane z tej innej witryny.

Diagnostyka

Odwiedź przykładowe adresy URL wymienione w raporcie „Problemy dotyczące bezpieczeństwa”.

Rozwiąż problem

  1. Aby potwierdzić problem, otwórz kilka przykładowych adresów URL wymienionych w raporcie „Problemy dotyczące bezpieczeństwa” w Search Console. W przeglądarce powinno się pojawić ostrzeżenie.
  2. W ostrzeżeniu w przeglądarce zobaczysz nazwę domeny, z której pochodzą nieodpowiednie treści. Usuń wszystkie odwołania do oznaczonej witryny wymienione w ostrzeżeniu wyświetlonym w przeglądarce. Jeśli bez Twojej wiedzy umieszczono treść z oznaczonej witryny, problem jest poważniejszy. Twoja witryna najprawdopodobniej została zaatakowana, dlatego sprawdzaj ją pod kątem innych luk w zabezpieczeniach i innych luk w zabezpieczeniach.
  3. Jeśli celowo dołączysz treści z wiarygodnej witryny, która została oznaczona, i chcesz je ponownie dodać po oczyszczeniu oznaczonej witryny, możesz sprawdzać stan oznaczonej witryny na stronie diagnostycznej w Bezpiecznym przeglądaniu Google tej witryny (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}. Właściciele rzetelnych witryn zwykle szybko je porządkują.

Dodatkowa analiza

Następnie sprawdź, czy w systemie nie ma żadnych dodatkowych szkodliwych plików i zmian. Haker mógł zmienić istniejące strony lub rekordy w bazie danych, utworzyć zupełnie nowe strony ze spamem, napisać funkcje wyświetlające spam na nienaruszonych stronach, pozostawiać „furtki” umożliwiające hakerowi ponowne wejście do witryny lub wstrzyknąć złośliwy kod, który został usunięty.

Jeśli Twoja witryna jest dostępna w trybie online, rozważ wyłączenie jej na czas sprawdzania.

Jeśli masz nienaruszoną kopię zapasową witryny, ustal, które pliki zostały utworzone lub zmodyfikowane od czasu jej utworzenia, a następnie przeanalizuj je. W systemie typu Unix możesz znaleźć nowe pliki przy użyciu tego polecenia:

diff -qr <current-directory> <backup-directory>

Na przykład:

diff -qr www/ backups/full-backup-20120124/

oraz:

md5sum <current-page> <backup-page>

Na przykład:

md5sum www/page.html backups/full-backup-20120124/page.html

Sprawdź w dziennikach serwera, dostępu i błędów podejrzane działania, takie jak nieudane próby logowania, historię poleceń (szczególnie na koncie root) i tworzenie nieznanych kont użytkowników. Pamiętaj, że haker mógł zmienić te dzienniki, aby załatwić sprawy. Przykłady znajdziesz w filmie do etapu Znajdź lukę w zabezpieczeniach.

Sprawdź przekierowania w plikach konfiguracji. Pliki konfiguracji mają zazwyczaj nazwy .htaccess i httpd.conf. Hakerzy często tworzą warunkowe przekierowania zależne od klienta użytkownika, pory dnia lub strony odsyłającej. Jeśli musisz zaktualizować pliki konfiguracji, może być konieczne ponowne uruchomienie serwera, aby zmiany zaczęły obowiązywać.

Sprawdź, czy nie masz zbyt szerokich uprawnień do folderów i plików. Hakerzy manipulują uprawnieniami, ponieważ jeśli właściciel witryny nie wykryje zmienionych uprawnień, będą mogli znowu dostać się do systemu witryny. Pliki większe niż 644 (rw-r--r--) i foldery większe niż 755 (rwxr-xr-x) mogą powodować problemy z bezpieczeństwem. Upewnij się, że takie uprawnienia faktycznie są potrzebne. W systemie uniksowym spróbuj wykonać następujące czynności:

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

i:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

Jeśli korzystasz z bazy danych, skontroluj po kolei każdy rekord, używając takiego narzędzia jak phpMyAdmin.