Wykryto robaka FritzFrog, atakującego serwery przez SSH i tworzącego zdecentralizowanego botneta

Firma Guardicore, specjalizująca się w ochronie centrów danych i systemów chmurowych, ujawnili nowe wysoko zaawansowane złośliwe oprogramowanie FritzFrog, które atakuje serwery oparte na systemie Linux. FritzFrog łączy w sobie cechy robaka rozprzestrzeniającego się przez ataki brute force na serwery z otwartym portem SSH oraz komponenty do budowy zdecentralizowanego botnetu, który działa bez węzłów zarządzających i nie ma jednego punktu awarii.

Do budowy botnetu wykorzystywany jest własny protokół P2P, w którym węzły komunikują się ze sobą, koordynują organizację ataków, utrzymują pracę sieci i monitorują stan innych węzłów. Nowe ofiary są pozyskiwane poprzez przeprowadzanie ataków brute force na serwery akceptujące zapytania po SSH. Po zidentyfikowaniu nowego serwera wykonywany jest atak słownikowy przy użyciu typowych kombinacji loginów i haseł. Zarządzanie może być prowadzone przez dowolny węzeł, co utrudnia identyfikację i zablokowanie operatorów botnetu.

Z danych badaczy wynika, że botnet już liczy około 500 węzłów, w tym serwery kilku uniwersytetów i dużej firmy kolejowej. Zaznacza się, że głównym celem ataku są sieci instytucji edukacyjnych, centrów medycznych, instytucji rządowych, banków oraz firm telekomunikacyjnych. Po skompromitowaniu serwera uruchamiany jest proces wydobywania kryptowaluty Monero. Aktywność analizowanego złośliwego oprogramowania obserwowana jest od stycznia 2020 roku.

Cechą charakterystyczną FritzFrog jest to, że przechowuje wszystkie dane i kod wykonywalny tylko w pamięci. Zmiany na dysku ograniczają się jedynie do dodania nowego klucza SSH do pliku authorized_keys, który następnie jest wykorzystywany do dostępu do serwera. Pliki systemowe nie są modyfikowane, co sprawia, że robak jest niewidoczny dla systemów sprawdzających integralność za pomocą sum kontrolnych. W pamięci przechowywane są także słowniki do ataków na hasła oraz dane do wydobywania, które są synchronizowane między węzłami za pomocą protokołu P2P.

Złośliwe komponenty kamuflują się jako procesy „ifconfig”, „libexec”, „php-fpm” i „nginx”. Węzły botnetu monitorują stan sąsiednich węzłów i w przypadku ponownego uruchomienia serwera lub nawet reinstalacji systemu operacyjnego (jeśli przeniesiono zmieniony plik authorized_keys do nowego systemu) ponownie aktywują złośliwe komponenty na hoście. Do komunikacji używany jest standardowy SSH — złośliwe oprogramowanie dodatkowo uruchamia lokalny „netcat”, który łączy się z interfejsem localhost i nasłuchuje ruchu na porcie 1234, do którego węzły zewnętrzne uzyskują dostęp przez tunel SSH, używając do połączenia klucza z authorized_keys.

Wykryto robaka FritzFrog, atakującego serwery przez SSH i tworzącego zdecentralizowanego botneta

Kod komponentów FritzFrog został napisany w języku Go i działa w trybie wielowątkowym. Złośliwe oprogramowanie zawiera kilka modułów uruchamianych w różnych wątkach:

  • Cracker — odpowiada za łamanie haseł na atakowanych serwerach.
  • CryptoComm + Parser — organizuje szyfrowane połączenie P2P.
  • CastVotes — mechanizm wspólnego wyboru celowych hostów do ataku.
  • TargetFeed — uzyskuje listę węzłów do ataku od sąsiednich węzłów.
  • DeployMgmt — realizacja robaka, który rozpowszechnia złośliwy kod na zhakowanym serwerze.
  • Owned — odpowiada za połączenie z serwerami, na których już uruchomiono złośliwy kod.
  • Assemble — zbiera plik w pamięci z osobno przesyłanych bloków.
  • Antivir — moduł tłumienia konkurencyjnych złośliwych programów, identyfikuje i kończy procesy zawierające ciąg „xmr”, które wykorzystują zasoby CPU.
  • Libexec — moduł do wydobywania kryptowaluty Monero.

Wykorzystywany w FritzFrog protokół P2P obsługuje około 30 poleceń, odpowiedzialnych za przesyłanie danych między węzłami, uruchamianie skryptów, przesyłanie komponentów złośliwego oprogramowania, zapytania o stan, wymianę logów, uruchamianie proxy itp. Informacje są przesyłane przez osobny szyfrowany kanał z serializacją w formacie JSON. Do szyfrowania stosowany jest asymetryczny szyfr AES i kodowanie Base64. Do wymiany kluczy używany jest protokół DH (Diffie-Hellman). W celu sprawdzenia stanu, węzły nieustannie wymieniają zapytania ping.

Wszystkie węzły botnetu obsługują rozproszoną bazę danych z informacjami o atakowanych i skompromitowanych systemach. Cele ataków są synchronizowane w całym botnecie - każdy węzeł atakuje oddzielny cel, tzn. dwa różne węzły botnetu nie będą atakować tego samego hosta. Węzły również zbierają i przekazują sąsiadom lokalne statystyki, takie jak rozmiar wolnej pamięci, uptime, obciążenie CPU i aktywność logowania przez SSH. Informacje te są wykorzystywane do decyzji o uruchomieniu procesu wydobywania lub użyciu węzła tylko do atakowania innych systemów (na przykład, wydobywanie nie jest uruchamiane na obciążonych systemach lub systemach z częstym logowaniem administratora).

Aby zidentyfikować FritzFroga, badacze zaproponowali prosty skrypt powłoki. Do określenia infekcji systemu
można używać takich wskaźników jak obecność nasłuchującego połączenia na porcie 1234, obecność złośliwego klucza w authorized_keys (na wszystkich węzłach instalowany jest ten sam klucz SSH) oraz obecność w pamięci uruchomionych procesów takich jak „ifconfig”, „libexec”, „php-fpm” i „nginx”, które nie mają związanych plików wykonywalnych („/proc//exe” wskazuje na usunięty plik). Wskaźnikiem może być także obecność ruchu na porcie sieciowym 5555, który pojawia się, gdy złośliwe oprogramowanie łączy się z typowym pulem web.xmrpool.eu w procesie wydobywania kryptowaluty Monero.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster