Wirus dla Linuksa zaraża Windows

Hakerzy eksperymentowali z ukrywaniem procesów i włamaniami na serwery pracujące pod kontrolą Linuksa. Pojawiły się ataki na system, które rozpowszechniają złośliwe oprogramowanie dla Windows.

Mechanizm infekcji komputerów z systemem Windows w większości przypadków zakłada proces stopniowego, niezauważalnego dla użytkownika pobierania poszczególnych składników złośliwego oprogramowania, z którego zostaje złożony finalny kod. Infekcja, określana jako drive-by, wymaga przygotowania niewielkiego narzędzia, które uniknie wykrycia przez antywirusy, pobierze składniki, rozszyfruje je i złoży z nich wirusa, który zostanie uruchomiony w przejętej stacji roboczej. Ataki od kilku lat są realizowane w celach komercyjnych, głównie kradzieży informacji o bankowości elektronicznej lub o kartach płatniczych.

Jak umieścić ramkę IFRAME

Aby sprytnie rozsiewać pierwszy składnik, cyberprzestępcy wprowadzają ramki IFRAME, które przekierują przeglądarkę na strony z eksploitem. Po przełamaniu zabezpieczeń (wykorzystuje się głównie błędy we wtyczkach Java lub Flash), przeglądarka pobierze pierwszy element, czasami nazywany loaderem, a następnie go uruchomi i proces infekcji odbędzie się zgodnie z założeniami złodzieja. Ponieważ wielu administratorów serwerów widocznych z internetu nie korzystało z aktualnych wersji oprogramowania, część serwerów mogła zostać zaatakowana za pomocą prostych środków.

Zobacz również:

  • AI ma duży apetyt na prąd. Google znalazł na to sposób
  • OpenAI rozważa stworzenie własnych układów scalonych AI
  • Dell Technologies Forum 2023

Wadą prostej podmiany treści kodu strony www była łatwość wykrycia. Nawet sprawdzenie czasu ostatniej modyfikacji umożliwia stwierdzenie, że kod został zmieniony. Niektóre narzędzia korzystające z sum kontrolnych wykrywały zmiany bardzo szybko, więc złodzieje wymyślili inny sposób - przygotowali oprogramowanie pracujące na poziomie jądra systemu operacyjnego.

Rootkit dla Debiana modyfikuje ruch sieciowy

13 listopada 2012 r. na liście mailingowej Full Disclosure ukazała się próbka nieznanego dotąd wirusa, przesłana przez administratora jednego z zarażonych serwerów. W module jądra systemu znajdował się kod, który dodawał ramkę IFRAME do strumienia danych związanego z odpowiedzią serwera www na każde zapytanie.

Analiza przeprowadzona przez firmy CrowdStrike oraz Kaspersky wykazała, że jest to prawdziwy rootkit, który oprócz wprowadzania zmian w wychodzącym ruchu sieciowym ukrywał swoją działalność. Dzięki temu, że wszystkie zmiany odbywają się na poziomie jądra systemu operacyjnego, pliki z treścią skryptów strony i zawartość bazy danych pozostają nietknięte. To ciekawy mechanizm modyfikacji treści strony. Oprócz kierowania na strony ze złośliwym oprogramowaniem, by masowo zarażać komputery z systemem Windows, kod mógł posłużyć do precyzyjnych ataków nazywanych Waterhole, pozostawiając niewiele śladów w przejętym komputerze.

Szybka analiza kodu wskazuje na kompilację pod kątem jądra 2.6.32-5, obecną w dystrybucji Debian squeeze, która jest określana jako "stabilna". Chociaż jakość kodu nie jest satysfakcjonująca dla poważniejszego kierowanego ataku, warto zauważyć, że wśród deweloperów nakierowanych na współpracę z cyberprzestępcami pojawili się programiści tworzący kod dla Linuksa. W samym systemie nie było śladów wykorzystania eksploita dla Linuksa, prawdopodobnie włamywacze przełamali zabezpieczenia w inny sposób, np. kradnąc klucze SSH z maszyny administratora.

Złośliwy kod pod lupą

Moduł wykonuje sześć różnych czynności, m.in.: ukrywanie procesów i plików, wstrzyknięcie treści do strumienia TCP/IP, centralne zdalne zarządzanie (podobnie jak w botnecie z maszynami Windows), uodpornienie na restart serwera, ukrywanie modułu z listy pokazywanej przez polecenie lsmod. W odróżnieniu od większości rootkitów dla Linuksa, ten nie ma statycznej listy ukrywanych plików. Z powodu błędu ukrywanie procesów ani wątków jądra nie działa.

Podczas startu modułu nawiązuje on połączenie z serwerem kontrolującym, zlokalizowanym w podsieci należącej do niemieckiego operatora hostingowego Hetzner. Połączenie jest realizowane bezpośrednio z jądra, do komunikacji wykorzystywany jest prosty własnościowy protokół, w którym do szyfrowania używane są klucze utworzone z dwóch adresów IP - jednego należącego do Hetznera i drugiego przypisanego do operatora Zattoo Networks w Zurichu.

Przy modyfikacji strumienia danych wysyłanych z serwera rootkit sprawdza, czy nie są modyfikowane komunikaty błędów i blokuje wysyłanie zmienionych treści do 1708 adresów IP należących do wyszukiwarek internetowych (wskazuje na to nazwa tablicy search_engines_ip_array).

Specjaliści z CrowdStrike przyjrzeli się jakości kodu i stwierdzili, że napisał to programista, który nie ma dużego doświadczenia w pisaniu obiektów dla jądra Linuksa. Moduł eksportuje nazwy wszystkich funkcji i zmienne globalne, nie deklaruje statycznie żadnych prywatnych symboli, a zatem część kodu, który nie jest wykonany, pozostaje w module. Wynika to stąd, że konsolidator (linker) nie może określić, czy inne moduły jądra nie będą korzystać z nieużywanego w samym module kodu, dlatego też nie może tego kodu usunąć. Patrząc na narzędzia, technikę pisania kodu, wykorzystane procedury oraz nieco informacji o samej infekcji, których CrowdStrike nie może ujawnić, kod ten najprawdopodobniej powstał w Rosji.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200