Przegląd
Od kilku lat badacze Proofpointa śledzą wykorzystanie downloaderów pierwszego etapu, które są wykorzystywane przez podmioty stanowiące zagrożenie do instalowania innych form złośliwego oprogramowania w trakcie i po zakończeniu złośliwych kampanii e-mail. Co ważniejsze, downloadery i inne złośliwe programy, takie jak botnety i trojany bankowe, wyparły ransomware jako podstawowe ładunki płatnicze, dając aktorom zagrożeń elastyczność w rozmieszczaniu szeregu złośliwych programów w infekcjach wtórnych. Na przykład, jeden z najbardziej rozpowszechnionych, Smoke Loader, był szeroko wykorzystywany do zrzucania ładunków płatnych, takich jak trojany bankowe Ursnif i The Trick, a także przy użyciu własnych modułów do kradzieży danych uwierzytelniających i innych informacji oraz danych, wśród innych złośliwych funkcji.
Od końca sierpnia 2019 r. badacze Proofpoint śledzą rozwój i sprzedaż nowego modułowego loadera o nazwie Buer przez jego autorów. Buer posiada funkcje, które są wysoce konkurencyjne w stosunku do Smoke Loadera, jest aktywnie sprzedawany na prominentnych podziemnych targowiskach i jest przeznaczony do wykorzystania przez aktorów poszukujących gotowego, gotowego do użycia rozwiązania.
Kampanie
28 sierpnia 2019
W dniu 28 sierpnia badacze firmy Proofpoint zaobserwowali złośliwe wiadomości e-mail, które wydają się odpowiadać na wcześniejsze legalne rozmowy e-mail. Zawierały one załączniki Microsoft Word, które wykorzystują makra Microsoft Office do pobrania payloadu następnego etapu.
Rysunek 1: Przykładowy załącznik Microsoft Word wykorzystany w kampanii z 28 sierpnia 2019 roku
Zaobserwowaliśmy, że payload następnego etapu jest pobierany z adresów URL obejmujących:
hxxp://jf8df87sdfd.yesteryearrestorationsnet/gate.php
hxxp://93345fdd.libertycolegioscom/gate.php
Upuszczony payload nosił nazwę verinstere222.xls lub verinstere33.exe (konwencja nazewnicza stosowana przez aktora w tym okresie). Zamiast Dreambotowego wariantu Ursnifa często kojarzonego z tym aktorem, ładunek zawierał nieudokumentowany program ładujący, który nie był wcześniej obserwowany w środowisku naturalnym.
W kolejnych tygodniach września i października badacze Proofpointa i inni członkowie społeczności infosecurity zaobserwowali kilka kampanii tego samego aktora, w których zrzucano albo Dreambotowy wariant Ursnifa, albo ten nowy program ładujący.
October 10, 2019
10 października badacze Proofpointa zaobserwowali w Australii kampanię malvertisingową przekierowującą na Fallout Exploit Kit (EK) zrzucającą nowy loader.
Figura 2: Ślad ruchu sieciowego HTTP z zestawem Fallout EK wykorzystującym podatne przeglądarki
Ładowacz upuszczał następnie kilka złośliwych ładunków payload drugiego stopnia, w tym KPOT stealer, Amadey i Smoke Loader.
21 października 2019
Od początku lipca badacze Proofpointa zaobserwowali około 100 kampanii z udziałem Ostapa ładujących niemal wyłącznie kilka instancji The Trick. Natomiast 21 lipca badacze Proofpointa zaobserwowali złośliwe wiadomości e-mail z tematami takimi jak „Penalty Notice # PKJWVBP” zawierające załączniki Microsoft Word. Dokumenty te zawierały makra, które po włączeniu uruchamiały Ostapa. Zaobserwowaliśmy, jak Ostap pobierał ten program ładujący z adresu
hxxps://185.130.104187/nana/kum.php?pi=18b&
który z kolei ładował program The Trick „ono22” ze swojego adresu C&C: garrisontxus
Rysunek 3: Ruch sieciowy obserwowany po włączeniu makra w złośliwych dokumentach.
Figura 4: Przykładowy załącznik Microsoft Word wykorzystany w kampanii z 21 października
Marketplace &Analiza funkcji
Ponieważ zaczęliśmy obserwować ten nowy program ładujący w użyciu w wielu różnych kampaniach, spodziewaliśmy się, że był on sprzedawany na podziemnym rynku wielu podmiotom. Co więcej, odkryliśmy ogłoszenie z 16 sierpnia na podziemnym forum opisujące program ładujący o nazwie „Buer”, który pasował do funkcjonalności szkodliwego oprogramowania zaobserwowanego w powyższych kampaniach.
Funkcje dodane i reklamowane w kolejnych tygodniach dokładnie pasują do ewolucji programu ładującego znalezionego w tych kampaniach.
Pobraliśmy tekst z tablicy ogłoszeń zamieszczony przez autora, w języku rosyjskim, żądający zapłaty 400 dolarów za szkodliwe oprogramowanie i oferujący swoje usługi w zakresie konfiguracji oprogramowania dla potencjalnych klientów w celu jego uruchomienia. Autor zauważa również, że aktualizacje i poprawki błędów są bezpłatne, ale istnieje dopłata w wysokości 25 dolarów za „przebudowę na nowe adresy”
Następujący tekst, który Proofpoint również wydobył z podziemnego rynku i który, jak się przypuszcza, został napisany przez autora złośliwego oprogramowania, jest podsumowaniem funkcjonalności programu ładującego opisanej w oryginalnym języku rosyjskim:
Rys. 5. Tekst z postu na podziemnym forum opisujący funkcjonalność bota Buer Loader
Podobnie, reklama wymienia również funkcjonalność panelu kontrolnego. Autor zauważa, że modułowy bot jest napisany całkowicie w języku C, przy użyciu panelu sterowania napisanego w .NET Core, podkreślając wyższą wydajność zarówno klienta, jak i serwera ze względu na wybór języka programowania.
- Jak wynika z opisu, bot ma całkowitą ładowność 55 do 60 kilobajtów, działa jako natywny plik wykonywalny systemu Windows i biblioteka dynamicznych łączy, działa całkowicie w pamięci rezydentnej i jest kompatybilny z 32-bitowymi i 64-bitowymi systemami operacyjnymi Microsoft Windows.
- Bot komunikuje się za pośrednictwem połączenia HTTPS i może być aktualizowany zdalnie z panelu kontrolnego po odszyfrowaniu, jak również po odbudowie.
- Autor zauważa również, że program ładujący działa jako proces zastępczy zaufanej aplikacji i funkcjonuje przy użyciu uprawnień na poziomie użytkownika.
- Najbardziej istotne jest to, że oprogramowanie nie będzie działać w krajach WNP (byłych państwach radzieckich, takich jak Rosja).
Ogłoszenie opisuje następujące cechy serwera i panelu sterowania:
- Panel sterowania jest reklamowany jako napisany również w .NET Core, zwracając uwagę na łatwą instalację na systemach serwerowych Ubuntu / Debian Linux.
- Serwer zapewnia szeroki zakres statystyk, w tym liczniki botów online, żywych, martwych i całkowitych; aktualizację w czasie rzeczywistym listy botów; licznik pobranych plików; oraz możliwość filtrowania systemów według typu systemu operacyjnego, praw dostępu zainstalowanych botów i liczby logicznych rdzeni CPU.
- Pobrane pliki z zainfekowanych systemów są przechowywane w postaci zaszyfrowanej na serwerze, a dostęp do nich jest przyznawany za pomocą tokena.
- Co najważniejsze, podobnie jak w przypadku samych botów, autor zauważa, że serwer nie przetwarza żądań API wysyłanych z państw członkowskich WNP.
Post na forum zawierał również uwagi techniczne dotyczące wydania programu ładującego Buer i panelu kontrolnego (wersja 1.1.2). We wstępie autor zauważył, że uruchomienie programu ładującego składa się teraz z trzech kroków — jeśli dwa pierwsze kroki nie powiodą się w zainfekowanym systemie, a wstrzyknięcie do procesu zastępczego nie powiedzie się (na przykład z powodu niekompatybilności z samą kryptą), program ładujący wykona się zamiast tego pod własnym procesem.
Wiadomości o wydaniu zawierają następujące informacje dotyczące programu ładującego:
- Ładowacz wykorzystuje architekturę FastFlux.
- Ładowacz działa pod zaufanym procesem w systemie Microsoft Windows. Proces MemLoadEx obsługuje teraz x64 exe jako zaufaną aplikację.
- MemLoad został zaktualizowany i obsługuje teraz natywne x32 exe.
W uwagach do wydania wymieniono następujące funkcje panelu sterowania:
- Dostęp do API jest realizowany przy użyciu HTTPS z obsługą samopodpisanych certyfikatów.
- Obsługa edycji zadań w panelu. Użytkownik może zatrzymać zadanie w trakcie wykonywania, zmienić jego ładunek oraz liczbę wykonań.
- Dodana możliwość tworzenia zadań według ID bota. Bardzo przydatne przy obciążeniach punktowych.
- Okno tworzenia zadań krok po kroku.
- Powiadomienie pozwalające dowiedzieć się o niezbędnych botach online.
- Zwiększono unikalność identyfikatora bota.
- Dodano tagi do panelu, pozwalające na sortowanie botów w celu późniejszych działań z nimi.
- Wyświetla nazwę komputera w tabeli.
- Poprawiono kompatybilność z kryptowalutami.
- Dodano historię botów.
- „The panel now expands to Docker” (obsługa kontenerów Docker).
- Uwaga Proofpoint Researcher: Zakładamy, że ta funkcja ma na celu ułatwienie integracji z dzierżawionymi hostami Docker, upraszczając instalację, choć potencjalnie panel/C&C mógłby zostać zainstalowany na skompromitowanym hoście Docker.
- Weryfikacja na pliku w panelu. Teraz panel nie przeoczy pliku, którego loader nie będzie w stanie pobrać i powiadomi o tym klienta.
- Zadania mogą być teraz powtarzane.
Na koniec autor opisał następujące zmiany techniczne dla wersji 1.1.9. Są one godne uwagi, ponieważ świadczą o tym, że złośliwe oprogramowanie jest aktywnie i profesjonalnie rozwijane.
- Ładowacz zyskał nową metodę uruchamiania External dla plików lokalnych. Zaletą tej metody jest unikalność i brak CreateProcess / ShellExecute przez program ładujący. Uruchomienie tworzy zaufany proces bez żadnych poleceń do niego.
- Panel posiada możliwość tagowania wszystkich botów, które wykonały określone zadanie. Dzięki temu użytkownik będzie mógł dystrybuować payload do określonych grup botów.
- Wdrożone API integracyjne. Udostępniono dokumentację do niego.
- Dodano możliwość wysyłania pliku przez referencję w trybie proxy. Plik jest przesyłany do bota w formie zaszyfrowanej.
- Błąd zliczania botów według kraju został naprawiony i dodano inne ulepszenia.
Zrzuty ekranu panelu kontrolnego
Następujące zrzuty ekranu panelu kontrolnego zostały dołączone do podziemnej reklamy, pokazując niektóre z możliwości back-end dostępnych dla klientów, w tym monitorowanie telemetrii, filtrowanie hostów i inne.
Rysunek 6: UX logowania panelu sterowania dla Buer Loader C&C
Rysunek 7: Ekran monitorowania telemetrii bota dla panelu sterowania Buer.
Rysunek 8: Ekran monitorowania telemetrii botów w trybie ciemnym dla panelu sterowania Buer.
Rysunek 9: Widok filtra panelu sterowania przedstawiający zdalne boty filtrowane według architektury Microsoft Windows.
Rysunek 10: Widok panelu sterowania przedstawiający zarządzanie plikami dla zadań programu ładującego
Rysunek 11: Widok panelu sterowania zdalnych botów posortowanych według uprawnień użytkownika.
Rysunek 12: Widok panelu kontrolnego, status zadania
Rysunek 13: Widok panelu kontrolnego, tworzenie zadania
Analiza malware
Buer Loader to nowy downloader malware, który pobiera i wykonuje dodatkowy payload.
Funkcje antyanalityczne
Ładowacz zawiera pewne podstawowe funkcje antyanalityczne:
- Sprawdza obecność debuggerów poprzez inspekcję flagi NtGlobalFlag w Process Environment Block (PEB) i Thread Environment Block (TEB)
- Sprawdza maszyny wirtualne przy użyciu Red Pill , No Pill i pokrewnych mechanizmów
- Sprawdza locale, aby upewnić się, że złośliwe oprogramowanie nie jest uruchamiane w określonych krajach (Rysunek 14)
Figura 14: Sprawdzanie złośliwego oprogramowania w celu upewnienia się, że nie jest ono uruchamiane w określonych krajach
Persistence
Persistence jest ustawiane przez skonfigurowanie wpisu RunOnce w rejestrze. W zależności od wersji, wpis w rejestrze wykona malware bezpośrednio lub zaplanuje zadanie do wykonania.
Szyfrowane ciągi znaków
Ta próbka zawiera funkcję do szyfrowania ciągów znaków.
Figura 15: Sekwencja deszyfrowania dla łańcuchów
Następująca funkcja jest przykładem odszyfrowania zaszyfrowanych łańcuchów w Ghidrze przy użyciu Jythona:
Figura 16: Sekwencja deszyfrowania dla łańcuchów (wersja Python)
Rysunek 17: Przykładowe deszyfracje łańcuchów
Wywołania Windows API
Ta próbka używa algorytmu haszującego do rozwiązania większości swoich wywołań Windows API. Algorytm haszujący zapewnia, że każdy znak w nazwie API jest wielką literą. Następnie obraca w prawo (ROR) każdy znak o 13 i dodaje je razem.
Rysunek 18: Algorytm haszujący do rozwiązywania wywołań Windows API
Następująca funkcja jest przykładem tego, jak można użyć Pythona do pomocy w rozwiązywaniu wywołań API.
Rysunek 19: Przykładowy skrypt Pythona używany do pomocy w rozwiązywaniu hashowanych wywołań interfejsu API systemu Windows
Następująca tabela zawiera listę niektórych wybranych używanych hashy i odpowiadających im nazw interfejsów API systemu Windows:
CreateMutexW |
0xed619452 |
OpenMutexW |
0x7bffe25e |
CreateProcessW |
0xb4f0f46f |
WinHttpOpen |
|
WinHttpOpen |
0xaf7f658e |
WinHttpCrackUrl |
0x8ef04f02 |
WinHttpConnect |
0x9f47a05e |
WinHttpOpenRequest |
0x1dd1d38d |
Tabela 1: Wywołania Windows API z wybranymi hashami
Komendy i sterowanie
Funkcje komend i sterowania (C&C) są obsługiwane za pomocą żądań HTTP(S) GET. Przykładowy sygnał polecenia wygląda jak na Rysunku 20:
Rysunek 20: Przykładowy sygnał polecenia
Te żądania trafiają do „update API” i zawierają zaszyfrowany parametr. Parametr ten może zostać odszyfrowany przez:
- Dekodowanie Base64
- Dekodowanie Hex
- Dekodowanie RC4 (klucz użyty w analizowanych próbkach to „CRYPTO_KEY”)
Przykładem parametru plaintext jest:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f|Windows 7|x64|4|Admin|RFEZOWGZPBYYOI
Zawiera on dane w formacie pipe-delimitowane dane składające się z:
- Bot ID (skrót SHA-256 hex różnych parametrów systemowych, takich jak identyfikator GUID i nazwa profilu sprzętowego, nazwa komputera, numer seryjny woluminu, i CPUID)
- Skrót SHA-256 własnego obrazu wykonywalnego
- Wersja systemu Windows
- Typ architektury
- Liczba procesorów
- Uprawnienia użytkownika
- Nazwa komputera
Przykładowa odpowiedź beacon command jest pokazana na rysunku 21:
Figure 21: Example command beacon response
Można ją odszyfrować podobnie jak parametr request powyżej, z tą różnicą, że zakodowane heksadecymalnie bajty są oddzielone znakami myślnika. Przykładowa odpowiedź plaintext jest przedstawiona na rysunku 22:
Rysunek 22: Plaintext command beacon response
Odszyfrowany tekst jest obiektem JSON zawierającym różne opcje dotyczące sposobu pobierania i wykonywania ładunku:
- type – istnieją dwa typy:
- update – update self
- download_and_exec – pobierz i wykonaj
- options – określa opcje dla ładunku do pobrania: nieużywany w analizowanych próbkach
- AccessToken – używany do pobrania payloadu (patrz poniżej)
- External – wskazuje, czy payload jest pobierany z C&C czy z zewnętrznego URL
- exelocal – utworzenie procesu
- memload – wstrzyknięcie i ręczne załadowanie payloadu
- memloadex – wstrzyknięcie i ręczne załadowanie payloadu
- loaddllmem – wstrzyknięcie i ręczne załadowanie payloadu
Payloads pobierane z serwera C&C są wykonywane poprzez żądania do „download API”, jak widać na Rysunku 23:
Rysunek 23: Pobieranie payloadu z serwera C&C
Przykład parametru żądania plaintext przedstawiono poniżej:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|58007044-67d4-4963-9f5f-400dfbc69e74
Zawiera on ID bota i „AccessToken” z odpowiedzi command beacon. Jeżeli payload jest pobierany z C&C, to jest on szyfrowany kluczem RC4. W analizowanych próbkach kluczem był „CRYPTO_KEY”.
Modules
Odpowiedź command beacon zawiera listę „modułów”. Badacze Proofpointa nie zaobserwowali jeszcze, aby moduły Buer były wykorzystywane w naturze, ale na podstawie kodu lista ta będzie zawierała moduły AccessTokens. Nazwa pliku z modułem jest wyszukiwana poprzez wysłanie AccessTokena do „module API” w C&C. Moduł zostanie następnie pobrany przy użyciu „downloadmodule API”. Po pobraniu i odszyfrowaniu jest on ładowany przy użyciu metody „loaddllmem”.
Wnioski
Nowy downloader, Buer, pojawił się ostatnio w różnych kampaniach, poprzez malvertising prowadzący do zestawów exploitów; jako wtórny ładunek płatniczy poprzez Ostap; oraz jako główny ładunek płatniczy pobierający szkodliwe oprogramowanie, takie jak trojan bankowy The Trick.
Nowy program ładujący posiada solidne funkcje geotargetowania, profilowania systemu oraz antyanalizy i jest obecnie sprzedawany na podziemnych forach wraz z usługami konfiguracyjnymi o wartości dodanej. Rosyjskojęzyczny autor (autorzy) aktywnie rozwija downloader z wyrafinowanymi panelami kontrolnymi i bogatym zestawem funkcji, co czyni złośliwe oprogramowanie konkurencyjnym na podziemnych rynkach.
Pobieracz został napisany w C, podczas gdy panel kontrolny w .NET core, co wskazuje na optymalizację pod kątem wydajności i niewielkiego śladu po pobraniu, jak również możliwość łatwego zainstalowania panelu kontrolnego na serwerach Linux — wbudowana obsługa kontenerów Docker jeszcze bardziej ułatwi jego rozprzestrzenianie się na wynajętych hostach wykorzystywanych do złośliwych celów, a potencjalnie również na skompromitowanych hostach. Ta ostatnia możliwość jest zawarta w reklamowanych funkcjach i informacjach o wydaniu.
Got it, but I don't know what this is. Downloaded Word doc: https://t.co/Y8tX8wTsOa – Follow-up EXE persistent on the infected Windows host: https://t.co/sowNIRDPbI pic.twitter.com/4isqbsMAa9
— Brad (@malware_traffic) October 11, 2019
https://www.cert.pl/en/news/single/ostap-malware-analysis-backswap-dropper/
https://www.proofpoint.com/us/threat-insight/post/ostap-bender-400-ways-make-population-part-with-their-money
https://www.aldeid.com/wiki/X86-assembly/Instructions/sidt
https://www.aldeid.com/wiki/X86-assembly/Instructions/sldt
Indicators of Compromise (IOCs)
IOC |
IOC Type |
Description |
fa699eab565f613df563ce47de5b82bde16d69c5d0c05ec9fc7f8d86ad7682ce |
sha256 |
|
http[://45.76.247[.177: |
sha256 |
|
197163b6eb2114f3b565391f43b44fb8d61531a23758e35b11ef0dc44d349e90 |
sha256 |
|
https[://173.212.204[.171/api/update/ |
URL |
Buer C&C callback |
9e8db7a722cc2fa13101a306343039e8783df66f4d1ba83ed6e1fe13eebaec73 |
sha256 |
(Fallout Drop) |
http[://134.0.119[.53:8080/api/update/ |
URL |
Buer C&C callback |
ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f |
sha256 |
(Ostap drop) |
https[://garrisontx[.us/api/update/ |
URL |
Buer C&C callback |
https[://185.130.104[.187/nana/kum.php?pi=18b |
URL |
Ostap instance dropping Buer – 2019-10-.21 |
753276c5887ba5cb818360e797b94d1306069c6871b61f60ecc0d31c78c6d31e |
sha256 |
Buer 2019-.11-28 |
ffload01[.top|185.125.58[.11 ffload01[.top|185.186.141[.129 |
domena|IP |
Buer C&C 2019-11-.28 |
Sygnatury ET i ETPRO Suricata/Snort
2029077 || ET TROJAN Buer Loader Update Request
2029079 || ET TROJAN Buer Loader Response
2029079 || ET TROJAN Buer Loader Response
2029078 || ET TROJAN Buer Loader Download Request
2839684 || ET TROJAN Buer Loader Successful Payload Download
2029080 || Zaobserwowany certyfikat SSL/TLS (Buer Loader)