Administratorzy i Bezpiecznicy środowisk Linux powinni być postawieni w stan gotowości, a już na pewno powinni zapoznać się z poniższym artykułem. Nowe zagrożenie o nazwie „Symbiote” (pl. „Symbiont”) zostało przeanalizowane i opisane dzięki współpracy firm BlackBerry oraz Intezer.
Skąd w ogóle ta nazwa, bo oczywiście nie z przypadku. W biologii symbiont to organizm żyjący w symbiozie z innym organizmem. Symbioza może być obustronnie korzystna dla obu organizmów, ale czasami może być pasożytnicza, gdy jeden zyskuje, a drugi jest niszczony. Oczywiście w przypadku tego malware chodzi o tę drugą opcje.
Tym, co odróżnia Symbionta od innych złośliwych programów na Linuksa, z którymi zwykle się spotykamy, jest to, że musi zainfekować inne uruchomione procesy, aby wyrządzić szkody w systemie. Zamiast być samodzielnym plikiem wykonywalnym uruchamianym w celu zainfekowania komputera, jest to biblioteka obiektów współdzielonych (ang. shared objects, SO), która jest ładowana do wszystkich uruchomionych procesów za pomocą LD_PRELOAD i pasożytniczo infekuje maszynę. Po zainfekowaniu wszystkich uruchomionych procesów zapewnia operatorom funkcjonalność rootkit’a, metodę przechwytywania poświadczeń oraz możliwości zdalnego dostępu.


Malware Symbiote

Najwcześniejsze wykrycie tego złośliwego programu pochodzi już z 2021 i dotyczy sektora finansowego. Dopiero niedawno jednak został opisany i przeanalizowany pod kątem działania w systemie. Po zainfekowaniu komputera Symbiote ukrywa siebie, a także wszelkie inne złośliwe oprogramowanie wykorzystywane przez cyberprzestępcę, co sprawia, że infekcje są bardzo trudne do namierzenia. Wykonywanie analiz śledczych na żywo na zainfekowanej maszynie może niczego nie ujawnić, ponieważ wszystkie pliki, procesy i artefakty sieciowe są ukryte. Oprócz możliwości rootkita, zapewnia „tylne wejście”, dzięki któremu cyberprzestępca może zalogować się jako dowolny użytkownik na komputerze za pomocą zakodowanego na stałe hasła i wykonywać polecenia z najwyższymi uprawnieniami.

Podczas analizy nie udało się ustalić czy Symbiote wykorzystywany jest w ukierunkowanych atakach czy w masowych kampaniach.

Jednym z interesujących aspektów technicznych Symbiote jest jego funkcjonalność podpinania Berkeley Packet Filter (BPF) pod interfejs sieciowy. Wszystko po to, aby ukryć komunikacje na zainfekowanej maszynie. Gdy administrator uruchamia dowolne narzędzie do przechwytywania pakietów na hoście, kod bajtowy BPF jest wstrzykiwany do jądra, które określa, które pakiety powinny zostać przechwycone, a które odfiltrowane. Oczywiście odfiltrowywane są te złośliwe, aby zaciemnić działanie malware i uniemożliwić jego analizę.

Symbiote jest praktycznie nie do wykrycia kiedy stosujemy standardowe metody. Złośliwe oprogramowanie zostało zaprojektowane tak, aby było ładowane przez linker za pomocą dyrektywy LD_PRELOAD. Pozwala to na wgranie go przed innymi udostępnionymi obiektami, a ponieważ jest pierwszy, może „przejąć importy” z innych plików bibliotek załadowanych dla aplikacji. Symbiote używa tego sposobu, aby ukryć swoją obecność na komputerze, podłączając funkcje libc i libpcap. Poniższy obrazek przedstawia podsumowanie sztuczek do ukrywania swojej obecności stosowanych przez Symbiote:


Eksfiltracja danych

Celem szkodliwego oprogramowania, oprócz ukrywania szkodliwej aktywności na komputerze, jest przechwytywanie danych uwierzytelniających i zapewnianie zdalnego dostępu złemu aktorowi. Zbieranie poświadczeń odbywa się przez podpięcie do pamięci funkcji „libc read”. Jeśli proces ssh lub scp wywoła te funkcję, przechwytywane są poświadczenia. Dane uwierzytelniające są najpierw szyfrowane za pomocą RC4 przy użyciu osadzonego klucza, a następnie zapisywane w pliku. Na przykład jedna z wersji szkodliwego oprogramowania zapisuje przechwycone dane uwierzytelniające w pliku /usr/include/certbot.h.

Oprócz przechowywania poświadczeń lokalnie, poświadczenia są eksfiltrowane. Dane są zaszyfrowane szesnastkowo i dzielone na kawałki w celu eksfiltracji za pośrednictwem żądań rekordów DNS do nazwy domeny kontrolowanej przez podmiot atakujący. Żądanie rekordu A ma następujący format:

Złośliwe oprogramowanie sprawdza, czy komputer ma skonfigurowany serwer nazw w /etc/resolv.conf. Jeśli tak nie jest, używany jest DNS Google (8.8.8.8). Wraz z wysłaniem żądania o nazwę domeny, Symbiote wysyła je również jako broadcast UDP.


Backdoor a’la zdalny dostęp

Zdalny dostęp do zainfekowanej maszyny uzyskuje się poprzez hookowanie kilku funkcji Linux Pluggable Authentication Module (PAM). Gdy usługa próbuje użyć PAM do uwierzytelnienia użytkownika, złośliwe oprogramowanie porównuje podane hasło z hasłem zakodowanym na stałe. Jeśli podane hasło jest zgodne, przechwycona funkcja zwraca odpowiedź „sukces”. Ponieważ haki znajdują się w PAM, umożliwia to hackerowi uwierzytelnienie się na maszynie za pomocą dowolnej usługi korzystającej z PAM. Obejmuje to usługi zdalne, takie jak Secure Shell (SSH).

Jeśli wprowadzone hasło nie jest zgodne z hasłem zakodowanym na sztywno, złośliwe oprogramowanie zapisuje je i usuwa w ramach funkcji keyloggera. Dodatkowo malware wysyła żądanie rekordu DNS TXT do swojej domeny C2. Rekord TXT ma format %MACHINEID%.%C2_DOMAIN%. Jeśli otrzyma odpowiedź, malware dekoduje ją z base64, sprawdza, czy zawartość została podpisana poprawnym kluczem prywatnym ed25519, odszyfrowuje zawartość za pomocą RC4 i wykonuje skrypt powłoki w stworzonym procesie bash.

Po uwierzytelnieniu się atakującego na zainfekowanej maszynie Symbiote zapewnia funkcjonalność umożliwiającą uzyskanie uprawnień administratora. Gdy obiekt udostępniony jest ładowany po raz pierwszy, sprawdza zmienną środowiskową HTTP_SETTHIS. Jeśli zmienna jest ustawiona z zawartością, złośliwe oprogramowanie zmienia efektywny identyfikator użytkownika i grupy na użytkownika root, a następnie czyści zmienną przed wykonaniem zawartości za pomocą polecenia systemowego.


Infrastruktura C&C

Nazwy domen używane przez szkodliwe oprogramowanie Symbiote podszywają się pod niektóre duże brazylijskie banki. Sugeruje to, że te banki lub ich klienci są potencjalnymi celami. Korzystając z nazw domen wykorzystywanych przez złośliwe oprogramowanie, udało się odkryć powiązaną próbkę, która została przesłana do VirusTotal pod nazwą certbotx64. Plik został zidentyfikowany jako narzędzie do tunelowania DNS o otwartym kodzie źródłowym o nazwie dnscat2.

Próbka zawierała konfigurację w pliku binarnym, która używała domeny git[.]bancodobrasil[.]dev jako serwera C2. W lutym i marcu ta nazwa domeny została zmieniona na adres IP, który jest połączony z usługą wirtualnego serwera prywatnego (VPS) Njalla. Pasywne rekordy DNS wykazały, że ten sam adres IP został kilka miesięcy wcześniej zamieniony na ns1[.]cintepol[.]link i ns2[.]cintepol[.]link. Cintepol to portal wywiadowczy prowadzony przez policję federalną Brazylii. Portal umożliwia funkcjonariuszom policji dostęp do różnych baz danych udostępnianych przez policję federalną w ramach prowadzonych dochodzeń. Serwer DNS używany do tej podszywającej się nazwy domeny był aktywny od połowy grudnia 2021 r. do końca stycznia 2022 r.


Podsumowanie

Symbiote to złośliwe oprogramowanie, które jest bardzo trudne do wykrycia. Jego głównym celem jest przechwytywanie danych uwierzytelniających i ułatwianie dostępu do zainfekowanych maszyn przez backdoor’a. Ponieważ złośliwe oprogramowanie działa jako rootkit na poziomie przestrzeni użytkownika, wykrycie infekcji może być trudne. Telemetria sieciowa jest jednym ze sposobów wykrywania nietypowych żądań DNS, a narzędzia zabezpieczające, takie jak AV i EDR powinny być połączone statycznie, aby zapewnić, że nie zostaną „zainfekowane” przez rootkity z poziomu przestrzeni użytkownika.

Podziel się z innymi tym artykułem!