Grupa Sandman atakuje firmy telekomunikacyjne z użyciem narzędzi LuaJIT

Badacze SentinelLabs zaobserwowali nowe zagrożenie nakierowane na dostawców usług telekomunikacyjnych na Bliskim Wschodzie, Europie Zachodniej i Azji Południowej. Działania grupy cyberprzestępczej, którą badacze SentinelLabs nazwali Sandman, charakteryzują użyciem nowatorskiego, modułowego modułu backdoor’a, nazwanego roboczo LuaDream, wykorzystującego platformę LuaJIT (Just-In-Time Compiler), mającej na celu utrudnienie wykrycia złośliwego kodu skryptu. LuaDream to modułowy, wieloprtokołowy backdoor, pozwalający eksfiltrować dane o systemie, użytkowniku, zarządzać własnymi wtyczkami, tworząc nieograniczone możliwości rozszerzające LuaDream. Zidentyfikowano 36 różnych komponentów LuaDream i wiele protokołów komunikacji z serwerem C2, wskazuje to na projekt o dużej skali działania. Wiktymologia i charakterystyka złośliwego oprogramowania wskazują, że działalność tej grupy ma motywy szpiegowskie. Dostawcy usług komunikacyjnych są bardzo częstym celem działań szpiegowskich ze względu na przechowywane i przetwarzane przez nich wrażliwe dane. Zaobserwowane przez SentinelLabs działania miały miejsce przez kilka tygodni w sierpniu 2023 r. Po kradzieży danych uwierzytelniających z uprawnieniami administratora i po przeprowadzeniu rekonesansu Sandman infiltrował specjalnie wybrane stacje robocze, korzystając z techniki pass-the-hash w protokole uwierzytelniania NTLM. W jednym zaatakowanym środowisku, wszystkie stacje robocze zostały przeniesione do grupy pracowników na stanowiskach kierowniczych. Zaobserwowano również średnio pięciodniową przerwę między infiltracjami do różnych punktów końcowych. Po uzyskaniu dostępu Sandman ograniczył swoje działania do rozmieszczania niezbędnych plików do załadowania i uruchomienia LuaDream, powstrzymując się od dalszych działań. Wdrożone artefakty systemu plików:

C : \Windows\System32\ualapi.dll

C : \ProgramData\FaxConfig\fax.dat

C : \ProgramData\FaxConfig\fax.cache

C : \ProgramData\FaxConfig\fax.module

C : \ProgramData\FaxConfig\fax.Application

C : \ProgramData\FaxLib\

W celu uruchomienia LuaDream, Sandman nadużył techniki przejmowania bibliotek DLL. Umieszczony przez nich plik ualapi.dll to złośliwa biblioteka DLL udająca swój legalny odpowiednik, komponent User Access Logging (UAL)) i stanowi pierwszy etap skomplikowanego procesu ładowania LuaDream. Biblioteka ualapi.dll jest ładowana przez Fax usługę Spooler Windows zaraz po uruchomieniu systemu. Zaobserwowano, że Spooler usługa ładowała szkodliwe oprogramowanie ualapi.dll na docelowe stacje robocze, uruchamiając LuaDream. Usługi te nie były nigdy ponownie uruchamiane, by uniknąć wykrycia przez systemy zabezpieczające. Dlatego hakerzy cierpliwie czekali, aż jedna z tych usług załaduje szkodliwe oprogramowanie ualapi.dll przy następnym uruchomieniu systemu.

Rysunek 1 Podstawowe komponenty LuaDream Źródło SentinelLabs

Gdy komponent main inicjuje LuaDream, backdoor łączy się ze skonfigurowanym serwerem C2 i wydobywa informacje dotyczące systemu, użytkownika i złośliwego oprogramowania zebrane przez BGetSystemMsg. Informacje te obejmują wersję złośliwego oprogramowania, przypisane adresy IP i MAC, wersję systemu operacyjnego, dostępną pamięć oraz nazwę PID, nazwę użytkownika powiązaną z procesem, w kontekście którego działa LuaDream. LuaDream może łączyć się z serwerami C2, ale także działać jako implant nasłuchujący połączenia przychodzące. Backdoor może komunikować się za pośrednictwem protokołów TCP, HTTPS, WebSocket i QUIC. Komponent main_proto_A_QueryDns tłumaczy domeny na adresy IP za pomocą cloudflare-dns[.]com usługi, która main_proto_X_WebSocketClient wykorzystuje do rozpoznawania nazw domen C2. LuaDream komunikuje się z serwerem C2 za pomocą komponentów thread_connect, thread_sendi thread_recv, które odpowiadają za łączenie się, wysyłanie i odbieranie danych z serwera C2. Komponenty te działają w oddzielnych wątkach. Wymieniane dane są w formacie JSON i XML, w formie zaszyfrowanej i skompresowanej. Komponent Acom_define zapewnia funkcjonalność komunikacji między wątkowej i manipulacji danymi. Komponent thread_recv obsługuje wiadomości przychodzące, a jego głównym celem jest zarządzanie wtyczkami dostarczonymi przez atakującego, które rozszerzają LuaDream.

Komunikacja z jednym z serwerów C2