Zidentyfikowano robaka FritzFrog infekującego serwery za pośrednictwem protokołu SSH i tworzącego zdecentralizowany botnet

firma Guardicore, specjalizująca się w ochronie centrów danych i systemów chmurowych, ujawnił FritzFrog, nowe, zaawansowane technologicznie złośliwe oprogramowanie atakujące serwery oparte na systemie Linux. FritzFrog łączy robaka rozprzestrzeniającego się poprzez atak bruteforce na serwery z otwartym portem SSH oraz komponenty, aby zbudować zdecentralizowany botnet, który działa bez węzłów kontrolnych i nie ma pojedynczego punktu awarii.

Do budowy botnetu wykorzystywany jest autorski protokół P2P, w którym węzły współdziałają ze sobą, koordynują organizację ataków, wspierają działanie sieci i wzajemnie monitorują swój stan. Nowe ofiary są znajdowane poprzez przeprowadzenie ataku bruteforce na serwery akceptujące żądania za pośrednictwem protokołu SSH. Po wykryciu nowego serwera przeszukiwany jest słownik typowych kombinacji loginów i haseł. Kontrola może odbywać się poprzez dowolny węzeł, co utrudnia identyfikację i blokowanie operatorów botnetów.

Według badaczy botnet ma już około 500 węzłów, w tym serwery kilku uniwersytetów i dużego przedsiębiorstwa kolejowego. Należy zauważyć, że głównymi celami ataku są sieci instytucji edukacyjnych, ośrodków medycznych, agencji rządowych, banków i firm telekomunikacyjnych. Po włamaniu do serwera organizowany jest na nim proces wydobywania kryptowaluty Monero. Aktywność przedmiotowego szkodliwego oprogramowania śledzono od stycznia 2020 r.

Cechą szczególną FritzFrog jest to, że przechowuje wszystkie dane i kod wykonywalny tylko w pamięci. Zmiany na dysku polegają jedynie na dodaniu nowego klucza SSH do pliku autoryzowanych_kluczy, który następnie służy do uzyskania dostępu do serwera. Pliki systemowe nie ulegają zmianie, 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 haseł typu brute-force oraz dane do eksploracji, które są synchronizowane pomiędzy węzłami przy użyciu protokołu P2P.

Złośliwe komponenty są zakamuflowane jako procesy ifconfig, libexec, php-fpm i nginx. Węzły botnetu monitorują status swoich sąsiadów i w przypadku ponownego uruchomienia serwera lub nawet ponownej instalacji systemu operacyjnego (jeśli do nowego systemu przeniesiono zmodyfikowany plikauthorized_keys), ponownie aktywują szkodliwe komponenty na hoście. Do komunikacji używany jest standardowy SSH - szkodliwe oprogramowanie dodatkowo uruchamia lokalnego „netcat”, który łączy się z interfejsem localhost i nasłuchuje ruchu na porcie 1234, do którego zewnętrzne hosty uzyskują dostęp poprzez tunel SSH, wykorzystując do połączenia klucz z autoryzowanych_kluczy.

Zidentyfikowano robaka FritzFrog infekującego serwery za pośrednictwem protokołu SSH i tworzącego zdecentralizowany botnet

Kod komponentu FritzFrog jest napisany w Go i działa w trybie wielowątkowym. Szkodnik zawiera kilka modułów działających w różnych wątkach:

  • Cracker - wyszukuje hasła na zaatakowanych serwerach.
  • CryptoComm + Parser - organizuje szyfrowane połączenie P2P.
  • CastVotes to mechanizm wspólnego wybierania docelowych hostów do ataku.
  • TargetFeed — odbiera listę węzłów do ataku z sąsiednich węzłów.
  • DeployMgmt to implementacja robaka, który rozpowszechnia złośliwy kod na zaatakowanym serwerze.
  • Posiadane — odpowiedzialne za łączenie się z serwerami, na których działa już złośliwy kod.
  • Assemble - składa plik w pamięci z oddzielnie przesłanych bloków.
  • Antivir - moduł do tłumienia konkurencyjnego złośliwego oprogramowania, identyfikuje i kończy procesy ciągiem „xmr”, które zużywają zasoby procesora.
  • Libexec to moduł do wydobywania kryptowaluty Monero.

Protokół P2P zastosowany we FritzFrog obsługuje około 30 poleceń odpowiedzialnych za przesyłanie danych pomiędzy węzłami, uruchamianie skryptów, przesyłanie komponentów złośliwego oprogramowania, status odpytywania, wymianę logów, uruchamianie serwerów proxy itp. Informacje przesyłane są osobnym zaszyfrowanym kanałem z serializacją w formacie JSON. Szyfrowanie wykorzystuje asymetryczny szyfr AES i kodowanie Base64. Do wymiany kluczy używany jest protokół DH (Difie-Hellman). Aby określić stan, węzły stale wymieniają żądania ping.

Wszystkie węzły botnetu utrzymują rozproszoną bazę danych zawierającą informacje o zaatakowanych i zagrożonych systemach. Cele ataku są synchronizowane w całym botnecie – każdy węzeł atakuje inny cel, tj. dwa różne węzły botnetu nie zaatakują tego samego hosta. Węzły zbierają również i przesyłają lokalne statystyki do sąsiadów, takie jak ilość wolnej pamięci, czas pracy, obciążenie procesora i aktywność logowania SSH. Informacje te służą do podjęcia decyzji, czy rozpocząć proces eksploracji, czy też wykorzystać węzeł wyłącznie do ataku na inne systemy (na przykład eksploracja nie rozpoczyna się na obciążonych systemach lub systemach z częstymi połączeniami administratora).

Aby zidentyfikować FritzFroga, badacze zaproponowali prosty sposób Skrypt powłoki. Aby określić uszkodzenie systemu
oznaki takie jak obecność połączenia nasłuchującego na porcie 1234, obecność złośliwy klucz w autoryzowanych_kluczach (ten sam klucz SSH jest zainstalowany na wszystkich węzłach) oraz obecność w pamięci uruchomionych procesów „ifconfig”, „libexec”, „php-fpm” i „nginx”, które nie mają powiązanych plików wykonywalnych („/proc/ /exe” wskazuje na plik zdalny). Znakiem może być również obecność ruchu na porcie sieciowym 5555, który ma miejsce, gdy złośliwe oprogramowanie uzyskuje dostęp do typowej puli web.xmrpool.eu podczas wydobywania kryptowaluty Monero.

Źródło: opennet.ru

Dodaj komentarz