Bezpłatne Dni Otwarte Sekurak Academy! Hackowanie na żywo, szkolenia, ebooki, …
Jak kradnie infostealer? Analiza budowy i działania Strela Stealera
Strela Stealer to specjalnie przygotowany malware, służący do wykradania danych uwierzytelniających z dwóch klientów poczty – Mozilla Thunderbird i Microsoft Outlook zainstalowanych na systemach Windows, zlokalizowanych w wybranych europejskich krajach.
Pierwsze informacje o tym złośliwym oprogramowaniu pojawiły się w 2022 roku. Cyberprzestępcy rozsyłali Strelę za pomocą kampanii phishingowych, głównie wymierzonych w użytkowników z Hiszpanii, Włoch, Niemiec i Ukrainy.
Czemu akurat te kraje? Maksymalizacja zysków. W Europie jest najwięcej użytkowników wspomnianych powyżej klientów poczty, np z Microsoft Outlook korzystało w 2024 roku 4% użytkowników na świecie ale w Europie było to już ok. 25%-30%. Jest też często używany do celów biznesowych, a to powoduje że wykradzione poświadczenia mogą mieć dużo większą wartość, niż te z klienta poczty wykorzystywanego do celów prywatnych.
Według IBM X-Force Strela jest dystrybuowana przez grupę Hive0145, która działa jako broker początkowego dostępu (IAB – Initial Access Broker) i jest prawdopodobnie jedynym operatorem Strela Stealera. Grupa współpracuje z rosyjskimi dostawcami hostingu typu bulletproof, co sugeruje powiązania z podziemiem cyberprzestępczym.
Hive0145 na początku korzystała z prostych kampanii phishingowych, aby z czasem przejść do zaawansowanych operacji wykorzystujących zhakowane emaile w kolejnych atakach.
Przez lata sposób działania i technologie wykorzystywane przez Strelę do uniknięcia wykrycia mocno ewoluowały, co czyni to złośliwe oprogramowanie jednym z najlepiej dopracowanych na rynku.
Analiza infostealera Strela
Na blogu Trustwave pojawiła się dogłębna analiza najnowszej wersji Strela Stealera, wykorzystywanego w kampani phishingowej ze stycznia i lutego br.
Badacze uzyskali próbkę infostealera z maila phishingowego, wysłanego do użytkownika z kraju niemieckojęzycznego, mającego imitować wiadomość z fakturą za niedawno zamówiony produkt. Odbiorca był zachęcany do otworzenia archiwum ZIP pod pretekstem weryfikacji transakcji.

Działanie malware zostało przedstawione w trzech fazach.

Faza pierwsza

Po wejściu do archiwum ZIP ofiara natrafia na skrypt napisany w języku JScript, który po podwójnym kliknięciu zostaje otworzony i wykonany przez Windows Script Host (wscript.exe
).

Zawartość skryptu jest zaciemniona (zrzut powyżej). Atakujący zastosowali w tym przypadku zestaw zmiennych, z których każda przechowuje pojedynczy znak, a następnie połączenie tych zmiennych w sekwencję w celu utworzenia właściwego payloadu JScript i przekazanie go do funkcji eval().
Zastąpienie eval() funkcją WScript.Echo()
pozwoliło na uzyskanie pierwotnej wersji skryptu. Zerknijcie na zrzut poniżej, a potem opis instrukcji dla malware.

Budowa skryptu infostealera:
- [linie 1-8] Zakodowane wartości identyfikatorów językowych systemu Windows (LCID, ang. Language Code Identifier). Każdemu językowi w systemie Windows przypisany jest unikalny kod numeryczny, np. Polska – 1045. Ta wersja Streli zawierała identyfikatory krajów niemieckojęzycznych (z wyjątkiem Belgii), czyli Niemiec, Austrii, Liechtensteinu, Luksemburga i Szwajcarii.
- [linie 10-11] Odczytywanie wartości klucza rejestru HKCU\Control Panel\International\Locale, aby pobrać identyfikator LCID lokalnego systemu.
- [linie 13-18] Porównywanie wartości z elementami wcześniej zdefiniowanej tablicy w pętli FOR. Następnie warunek sprawdzający, który zapewnia że skrypt kontynuuje działanie tylko wtedy, gdy ustawienia regionalne systemu pasują do jednej z wartości w tablicy lub jeśli system znajduje się w kraju niemieckojęzycznym.
- [linie 20-25] Po pomyślnej weryfikacji LCID wykonywana jest główna funkcja. Infostealer łączy się z publicznym WebDAV, pobiera i wyświetla plik invoice.pdf i jednocześnie za pomocą narzędzia regsvr32 uruchamia zdalnie plik
1909835116765.dll
.
Ofierze wyświetlany jest dokument PDF imitujący fakturę, a Strela przechodzi do drugiej fazy działania.
Faza druga
Uruchomiony plik 1909835116765.dll
. to biblioteka DLL bez importów i z jedną eksportowaną funkcją DllRegisterServer, którą wywołuje wspomniane już narzędzie regsvr32. DLL jest zaciemniona za pomocą dużych bloków zbędnych operacji arytmetycznych, w których ukryte są rzeczywiste instrukcje.
Dodatkowo atakujący zastosowali tu technikę control-flow flattening – w bibliotece nie ma zdefiniowanych podprocedur, a cały kod znajduje się w jednej dużej funkcji z licznymi instrukcjami skoków (instrukcja jmp).
Badacze użyli dekompilatora Ghidra, ale ze względu na rozmiar i stopień zaciemnienia kodu nie był on w stanie skutecznie zrekonstruować całości.
Po uruchomieniu przez regsvr32
, DLL przechodzi przez Process Environment Block (PEB).
PEB to struktura danych przechowywana w pamięci każdego uruchomionego procesu w systemie Windows. Zawiera informacje takie jak nazwa procesu, lista modułów, zmienne środowiskowe, wiersz polecenia i wiele innych elementów na poziomie procesu.
Malware, zamiast korzystać z klasycznych odwołań do funkcji przez Windows API, wyszukuje potrzebne funkcje bezpośrednio w pamięci za pomocą PEB.
W podanym przypadku celem jest biblioteka kernel32.dll i pobranie adresów dwóch kluczowych funkcji: GetProcAddress i LoadLibraryA.
GetProcAddress umożliwia odnalezienie adresu dowolnej funkcji w już załadowanej bibliotece. Malware, zamiast statycznie odwoływać się do funkcji systemowych (Windows API), dynamicznie wyszukuje je w pamięci procesu.
Funkcja LoadLibraryA pozwala malware’owi załadować dowolną bibliotekę DLL w trakcie działania, zamiast deklarować ją wcześniej. Dzięki temu może wczytać potrzebne moduły na żądanie.
Takie działanie nie pozostawia śladów w tabeli importów (IAT – Import Address Table), a rzeczywista funkcjonalność infostealera ujawnia się dopiero w trakcie działania. Dla analityków oznacza to konieczność stosowania analizy dynamicznej, czyli uruchamiania złośliwego kodu w kontrolowanym środowisku, aby prześledzić jego zachowanie.
Następnie malware używa funkcji VirtualAlloc, żeby przydzielić pamięć, w której zostanie rozpakowany końcowy etap. Sekcja .data DLL zawiera rozmiar tego etapu, klucz deszyfrujący o długości ponad dwóch tysięcy bajtów oraz zaszyfrowany ładunek końcowy. Klucz deszyfrujący to ciąg wartości bajtów odpowiadających znakom ASCII, ale nie jest używany do przetwarzania tekstu co, jak wskazują badacze, może wprowadzać w błąd przy analizie.

Faza trzecia
Kod i dane końcowego etapu są odszyfrowywane przy użyciu operacji XOR i zapisane do wcześniej przydzielonego bufora, który nie zawiera nagłówka PE.
Następnie, odbudowywana jest tabela adresów importów (IAT). Po zakończeniu procesu rozpakowywania, DLL przekazuje wykonanie do oryginalnego punktu wejścia w przydzielonej pamięci za pomocą CALL RCX
.
Podobnie jak w poprzednim etapie, tutaj też mamy użyte zaciemnianie kodu.
Infostealer badany przez Trustwave używał techniki wykorzystującej fibers i indeks FLS. Fibers to jednostki wykonywania w ramach wątku, a FLS daje każdej z nich unikalny indeks. Malware wielokrotnie tworzył i usuwał indeksy FLS, wywołując niepotrzebny kod, co komplikowało analizę.
W końcowym etapie Strela Stealer wykonuje dodatkową weryfikację ustawień regionalnych systemu. Pobiera zainstalowane układy klawiatury za pomocą funkcji API GetKeyboardLayoutList i GetLocaleInfoA. Porównuje pobrane LCID z zakodowanymi na stałe wartościami. Jeśli nastąpi dopasowanie, kontynuuje wykonanie w podprocedurze odpowiedzialnej za wykradanie danych; w przeciwnym razie kończy działanie.

Po pomyślnym potwierdzeniu ustawień regionalnych, program rozpoczyna kradzież informacji.
Na początku przeszukuje zawartość podfolderów profili Mozilla Thunderbird, które znajdują się w katalogu %APPDATA%\Thunderbird\Profiles
, w poszukiwaniu plików key4.db
i logins.json
. Jeśli te pliki zostaną znalezione, ich zawartość jest szyfrowana i wysyłana za pomocą żądania HTTP POST do punktu końcowego pod adresem hxxp://193[.]143[.]1[.]205/up.php.
Strela Stealer czeka na odpowiedź serwera, sprawdzając to funkcją InternetReadFileA() w pętli, robiąc przerwę na jedną sekundę z wykorzystaniem Sleep()
między próbami.
Następnie złośliwe oprogramowanie przeszukuje rejestry systemu, aby sprawdzić, czy obecny jest któryś z poniższych kluczy, zawierających dane profilu Microsoft Outlook:
- HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676
- HKCU\Software\Microsoft\Windows Messaging Subsystem\Profiles\9375CFF0413111d3B88A00104B2A6676
- HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676
Jeśli któryś z tych kluczy zostanie znaleziony, program odczytuje wartości rejestru „IMAP User”, „IMAP Server” i „IMAP Password”, a następnie deszyfruje je za pomocą funkcji CryptUnprotectData
API.
Następnie stealer zbiera informacje o lokalnym systemie, uruchamiając systeminfo
za pomocą funkcji ShellExecuteExA
. To polecenie zbiera szczegółowe informacje o systemie operacyjnym, takie jak wersja systemu, nazwa hosta, pamięć RAM, strefa czasowa i inne dane systemowe. Stealer wykorzystuje również funkcję SHGetKnownFolderItem, aby pobrać listę zainstalowanych aplikacji z folderu „AppsFolder”.
Wszystkie zebrane informacje są wykradane i wysyłane do serwera C2.
Podsumowanie
Strela Stealer to wyspecjalizowane złośliwe oprogramowanie, które jest stale rozwijane przez twórców.
Cyberprzestępcy rozsyłają Strelę za pomocą maili phishingowych, głównie wymierzonych w użytkowników z krajów europejskich.
Malware wykorzystuje zaawansowane techniki w celu uniknięcia wykrycia, np. wielokrotne zaciemnianie kodu, korzystanie z WebDAV i bibliotek DLL, dodawanie ,,śmieciowego’’ kodu.
Wykorzystuje PEB, aby działać w ukryciu, ładować biblioteki i funkcje na żądanie oraz unikać klasycznych metod wykrywania.
Jak się chronić?
Nie otwieraj podejrzanych wiadomości ani plików z nieznanych źródeł. Plik tekstowy JScript w archiwum ZIP, zamiast dokumentu PDF też powinien wzbudzić podejrzenia.
❗Zmień domyślną aplikację dla plików JavaScript/JScript/VBScript na Notatnik – zapobiegnie to ich automatycznemu wykonywaniu.
Jeżeli podejrzewasz infekcję, przeanalizuj jakie procesy uruchamia rundll32.exe
Jak? Sprawdź logi ID 4688 w Podglądzie zdarzeń (Windows), dla zaawansowanych może sprawdzić się Symson, systemy SIEM (np. Splunk, ELK, Wazuh).
Ponad to AppLocker lub Windows Defender Application Control (WDAC) mogą blokować rundll32.exe gdy wykonuje dziwne akcje, a Exploit Protection w Microsoft Defender ograniczać jego możliwości.
Na systemach macOS złośliwe oprogramowanie może wykorzystywać inne mechanizmy, np. osascript, launchctl, curl czy bash.
Sprawdź logi systemowe w Console.app. Do zaawansowanej ochrony może Ci się przydać Little Snitch, BlockBlock lub KnockKnock.
✨Bądź czujny✨ edukuj siebie i bliskich na temat phishingu i socjotechnik wykorzystywanych przez cyberprzestępców.
~Natalia Idźkowska