ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus

W tym poście opowiemy, jak cybernetyczna grupa OceanLotus (APT32 i APT-C-00) niedawno wykorzystała jeden z publicznie dostępnych exploitów, CVE-2017-11882, podatności na uszkodzenie pamięci w pakiecie Microsoft Office oraz w jaki sposób złośliwe oprogramowanie tej grupy jest w stanie przetrwać w zainfekowanych systemach, nie pozostawiając po sobie śladu. Następnie opiszemy, w jaki sposób od początku 2019 r. grupa korzysta z samorozpakowujących się archiwów do uruchamiania kodu.

OceanLotus specjalizuje się w cybernetycznym szpiegostwie, a jego priorytetowymi celami są kraje Azji Południowo-Wschodniej. Napastnicy fałszują dokumenty, aby zwrócić uwagę potencjalnych ofiar i nakłonić je do użycia tylnego wejścia, a także pracują nad udoskonaleniem zestawu narzędzi. Metody wykorzystywane do tworzenia przynęt różnią się w zależności od ataku – od plików o „podwójnym rozszerzeniu”, samorozpakowujących się archiwów, dokumentów z włączonymi makrami po znane exploity.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus

Korzystanie z exploita w programie Microsoft Equation Editor

W połowie 2018 roku OceanLotus przeprowadził kampanię wykorzystującą lukę w zabezpieczeniach CVE-2017-11882. Jeden ze złośliwych dokumentów cyberprzestępców został przeanalizowany przez specjalistów z 360 Threat Intelligence Center (badania w języku chińskim), w tym szczegółowy opis exploita. Poniższy wpis zawiera przegląd takiego złośliwego dokumentu.

Pierwszy etap

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) jest podobny do tego, o którym mowa w badaniu powyżej. Jest to ciekawe, ponieważ jest skierowane do użytkowników zainteresowanych kambodżańską polityką (CNRP – Kambodżańska Partia Ocalenia Narodowego, rozwiązana pod koniec 2017 r.). Pomimo rozszerzenia .doc, dokument jest w formacie RTF (patrz grafika poniżej), zawiera niepotrzebny kod i jest uszkodzony.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 1. „Śmieci” w formacie RTF

Mimo obecności uszkodzonych elementów, program Word pomyślnie otwiera plik RTF. Jak widać na Rysunku 2, na przesunięciu 0xC00 znajduje się struktura EQNOLEFILEHDR, po której następuje nagłówek MTEF, a następnie rekord MTEF (Rysunek 3) dla czcionki.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 2. Wartości rekordów FONT

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 3. Format nagrywania FONT

Może wystąpić przepełnienie pola Nazwa, ponieważ jego rozmiar nie jest sprawdzany przed kopiowaniem. Zbyt długa nazwa powoduje powstanie luki w zabezpieczeniach. Jak widać z zawartości pliku RTF (przesunięcie 0xC26 na rysunku 2), bufor jest wypełniony kodem powłoki, po którym następuje polecenie fikcyjne (0x90) i adres zwrotny 0x402114. Adres jest elementem dialogowym w EQNEDT32.exe, wskazując na instrukcję RET. Spowoduje to, że EIP będzie wskazywał początek pola. Nazwa, zawierający kod powłoki.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 4. Początek kodu powłoki exploita

Adres 0x45BD3C przechowuje zmienną, która jest dereferencjonowana aż do momentu, gdy osiągnie wskaźnik do aktualnie załadowanej struktury MTEFData. Pozostała część kodu powłoki znajduje się tutaj.

Celem kodu powłoki jest wykonanie drugiego fragmentu kodu powłoki osadzonego w otwartym dokumencie. Najpierw oryginalny kod powłoki próbuje znaleźć deskryptor pliku otwartego dokumentu, przechodząc iteracyjnie przez wszystkie deskryptory systemowe (NtQuerySystemInformation z argumentem SystemExtendedHandleInformation) i sprawdzając, czy pasują do siebie PID deskryptor i PID proces WinWord i czy dokument został otwarty z maską dostępu – 0x12019F.

Aby potwierdzić, że znaleziono właściwy uchwyt (a nie uchwyt innego otwartego dokumentu), zawartość pliku wyświetlana jest za pomocą funkcji CreateFileMapping, a kod powłoki sprawdza, czy ostatnie cztery bajty dokumentu pasują do siebieyyyy„(Metoda polowania na jajka). Po znalezieniu dopasowania dokument jest kopiowany do folderu tymczasowego (GetTempPath) Jak ole.dll. Następnie odczytywanych jest ostatnich 12 bajtów dokumentu.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 5. Znaczniki końca dokumentu

Wartość 32-bitowa pomiędzy znacznikami AABBCCDD и yyyy – to jest przesunięcie następnego kodu powłoki. Wywołuje się ją za pomocą funkcji CreateThread. Wyodrębniono ten sam kod powłoki, który był wcześniej używany przez grupę OceanLotus. Skrypt emulacji Pythona, który udostępniliśmy w marcu 2018 r., nadal działa w przypadku zrzutu drugiego etapu.

Drugi etap

Wyodrębnianie komponentów

Nazwy plików i katalogów są wybierane dynamicznie. Kod losowo wybiera nazwę pliku wykonywalnego lub biblioteki DLL w C:Windowssystem32. Następnie wysyła żądanie do swoich zasobów i pobiera pole FileDescription użyć jako nazwy folderu. Jeśli to nie zadziała, kod losowo wybierze nazwę folderu z katalogów %ProgramFiles% lub C:Windows (из GetWindowsDirectoryW). Он избегает использования имени, которое может конфликтовать с существующими файлами, и следит за тем, чтобы оно не содержало следующие слова: windows, Microsoft, desktop, system, system32 lub syswow64. Jeśli katalog już istnieje, do nazwy dodawane jest „NLS_{6 characters}”.

zasób 0x102 analizowane i pliki są zrzucane do %ProgramFiles% lub %AppData%, do losowo wybranego folderu. Zmieniono czas utworzenia, aby miał takie same wartości jak kernel32.dll.

Na przykład poniżej znajduje się folder i lista plików utworzonych poprzez wybranie pliku wykonywalnego C:Windowssystem32TCPSVCS.exe jako źródło danych.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 6. Ekstrakcja różnych składników

Struktura zasobów 0x102 w kroplomierzu jest dość skomplikowana. Krótko mówiąc, zawiera:
— Nazwy plików
— Rozmiar i zawartość plików
— Format kompresji (COMPRESSION_FORMAT_LZNT1, używany przez funkcję RtlDecompressBuffer)

Pierwszy plik jest zrzucany jako TCPSVCS.exe, co jest uzasadnione AcroTranscoder.exe (według FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Być może zauważyłeś, że niektóre pliki DLL są większe niż 11 MB. Dzieje się tak, ponieważ wewnątrz pliku wykonywalnego umieszczony jest duży, ciągły bufor losowych danych. Możliwe, że jest to sposób na uniknięcie wykrycia przez niektóre produkty zabezpieczające.

Zapewnienie trwałości

zasób 0x101 Dropper zawiera dwie 32-bitowe liczby całkowite, które określają sposób zapewnienia trwałości. Pierwsza wartość określa, w jaki sposób złośliwe oprogramowanie będzie utrzymywało swoją obecność bez uprawnień administratora.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Tabela 1. Mechanizm trwałości bez uprawnień administratora

Wartość drugiej liczby całkowitej określa, w jaki sposób złośliwe oprogramowanie ma zapewnić trwałość podczas działania z uprawnieniami administratora.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Tabela 2. Mechanizm trwałości z uprawnieniami administratora

Nazwą usługi jest nazwa pliku bez rozszerzenia; nazwa wyświetlana to nazwa folderu, ale jeśli już istnieje, dodawany jest do niej ciąg „Revision 1” (liczba jest zwiększana, aż zostanie znaleziona nieużywana nazwa). Operatorzy zadbali o to, aby trwałość usługi była solidna – jeśli usługa ulegnie awarii, powinna zostać ponownie uruchomiona po 1 sekundzie. Następnie wartość WOW64 Klucz rejestru nowej usługi jest ustawiony na 4, co oznacza, że ​​jest to usługa 32-bitowa.

Zaplanowane zadanie tworzy się za pomocą kilku interfejsów COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Zasadniczo złośliwe oprogramowanie tworzy ukryte zadanie, ustawia informacje o koncie, informacje o bieżącym użytkowniku lub administratorze, a następnie ustawia wyzwalacz.

Jest to zadanie codzienne, którego czas trwania wynosi 24 godziny, a przerwy między kolejnymi wykonaniami wynoszą 10 minut, co oznacza, że ​​będzie ono wykonywane w sposób ciągły.

Złośliwy kawałek

W naszym przykładzie plik wykonywalny TCPSVCS.exe (AcroTranscoder.exe) to legalne oprogramowanie, które ładuje wraz z nim pliki DLL. W tym przypadku interesujące jest to, Flash Video Extension.dll.

Jej funkcja DLLMain po prostu wywołuje inną funkcję. Występują pewne predykaty niejasne:

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 7. Predykaty rozmyte

Po tych wprowadzających w błąd kontrolach kod otrzymuje sekcję .text plik TCPSVCS.exe, zmienia swoją obronę na PAGE_EXECUTE_READWRITE i nadpisuje go, dodając fikcyjne instrukcje:

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 8. Sekwencja instrukcji

Na koniec adres funkcji FLVCore::Uninitialize(void), eksportowane Flash Video Extension.dll, dodano instrukcje CALL. Oznacza to, że po załadowaniu złośliwej biblioteki DLL, gdy środowisko wykonawcze wywoła WinMain в TCPSVCS.exewskaźnik instrukcji będzie wskazywał na NOP, co spowoduje FLVCore::Uninitialize(void), następny etap.

Funkcja po prostu tworzy mutex rozpoczynający się od {181C8480-A975-411C-AB0A-630DB8B0A221}, a następnie bieżąca nazwa użytkownika. Następnie odczytuje zrzucony plik *.db3, który zawiera kod niezależny od pozycji i używa CreateThread aby wykonać treść.

Zawartość pliku *.db3 to kod powłoki, który jest powszechnie używany przez grupę OceanLotus. Udało nam się ponownie rozpakować jego ładunek, korzystając ze skryptu emulatora, który opublikowaliśmy na GitHub.

Skrypt wyodrębnia ostatni etap. Ten komponent to tylne wejście, które już analizowaliśmy w poprzednie badanie OceanLotus. Można to ustalić na podstawie GUID. {A96B020F-0000-466F-A96D-A91BBF8EAC96} plik binarny. Konfiguracja złośliwego oprogramowania jest nadal szyfrowana w zasobie PE. Ma on mniej więcej taką samą konfigurację, ale serwery C&C różnią się od poprzednich:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

Grupa OceanLotus po raz kolejny pokazuje połączenie różnych technik pozwalających uniknąć wykrycia. Wrócili z „udoskonalonym” diagramem procesu infekcji. Wybierając losowe nazwy i wypełniając pliki wykonywalne losowymi danymi, redukują liczbę wiarygodnych wskaźników IoC (opartych na skrótach i nazwach plików). Co więcej, korzystając z bibliotek DLL innych firm, atakujący muszą jedynie usunąć prawidłowy plik binarny. AcroTranscoder.

Archiwa samorozpakowujące się

Po plikach RTF grupa przeszła na samorozpakowujące się archiwa (SFX) ze standardowymi ikonami dokumentów, aby jeszcze bardziej zdezorientować użytkownika. Threatbook o tym pisał (link po chińsku). Po uruchomieniu zrzuca samorozpakowujące się pliki RAR i uruchamia biblioteki DLL z rozszerzeniem .ocx, których ostateczny ładunek został wcześniej udokumentowany {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Od połowy stycznia 2019 r. OceanLotus wykorzystuje tę technikę, ale z czasem zmienia niektóre konfiguracje. W tej sekcji omówimy technologię i zmiany.

Tworzenie przynęty

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) został odkryty po raz pierwszy w 2018 roku. Ten plik SFX został stworzony z inteligencją – w opisie (Informacje o wersji) jest napisane, że jest to obraz JPEG. Skrypt SFX wygląda tak:

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 9. Polecenia SFX

Resetowanie złośliwego oprogramowania {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), a także zdjęcie 2018 thich thong lac.jpg.

Obraz wabiący wygląda tak:

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 10. Obraz wabiący

Być może zauważyłeś, że pierwsze dwa wiersze skryptu SFX wywołują plik OCX dwukrotnie, ale nie jest to błąd.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Przepływ sterowania plikiem OCX jest bardzo podobny do przepływu sterowania w innych komponentach OceanLotus – wiele sekwencji poleceń JZ/JNZ и PUSH/RET, na przemian z kodem śmieciowym.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 11. Zaciemniony kod

Po odfiltrowaniu kodu śmieciowego, eksportuj DllRegisterServer, zwany regsvr32.exewygląda tak:

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 12. Główny kod instalatora

Zasadniczo, przy pierwszym połączeniu DllRegisterServer eksportuj zestaw wartości rejestru HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model dla zaszyfrowanego przesunięcia w bibliotece DLL (0x10001DE0).

Gdy funkcja zostanie wywołana po raz drugi, odczyta tę samą wartość i wykona się pod tym adresem. Stąd zasób jest odczytywany i wykonywany, a wiele działań jest wykonywanych w pamięci RAM.

Kod powłoki jest tym samym programem ładującym PE, który był używany w poprzednich kampaniach OceanLotus. Można go emulować za pomocą nasz skrypt. W końcu to upuszcza db293b825dcc419ba7dc2c49fa2757ee.dll, ładuje go do pamięci i wykonuje DllEntry.

Biblioteka DLL wyodrębnia zawartość swojego zasobu, odszyfrowuje ją (AES-256-CBC) i rozpakowuje (LZMA). Zasób ma określony format, który można łatwo dekompilować.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 13. Struktura konfiguracji instalatora (KaitaiStruct Visualizer)

Konfiguracja jest ustawiona jawnie - w zależności od poziomu uprawnień, dane binarne będą zapisywane do %appdata%IntellogsBackgroundUploadTask.cpl lub %windir%System32BackgroundUploadTask.cpl (or SysWOW64 dla systemów 64-bitowych).

Następnie trwałość jest zapewniona poprzez utworzenie zadania o nazwie BackgroundUploadTask[junk].jobGdzie [junk] jest zbiorem bajtów 0x9D и 0xA0.

Nazwa aplikacji zadania %windir%System32control.exe, a wartością parametru jest ścieżka do pobranego pliku binarnego. Ukryte zadanie jest uruchamiane codziennie.

Strukturalnie plik CPL jest biblioteką DLL z nazwą wewnętrzną ac8e06de0a6c4483af9837d96504127e.dll, który eksportuje funkcję CPlApplet. Ten plik odszyfrowuje swój jedyny zasób {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, a następnie ładuje tę bibliotekę DLL i wywołuje jej jedyny eksport DllEntry.

Plik konfiguracyjny backdoora

Konfiguracja tylnego wejścia jest szyfrowana i osadzona w jego zasobach. Struktura pliku konfiguracyjnego jest bardzo podobna do poprzedniej.

ESET: nowe schematy dostarczania backdoorów dla grupy cybernetycznej OceanLotus
Rysunek 14. Struktura konfiguracji Backdoor (KaitaiStruct Visualizer)

Mimo podobnej struktury wartości wielu pól zostały zaktualizowane w stosunku do danych podanych w nasz stary raport.

Pierwszy element tablicy binarnej zawiera bibliotekę DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), zidentyfikowany przez Tencent. Ponieważ jednak nazwa eksportu została usunięta z pliku binarnego, skróty się nie zgadzają.

Dodatkowe badania

Podczas zbierania próbek zauważyliśmy pewne cechy charakterystyczne. Opisany okaz pojawił się około lipca 2018 r., a inne podobne pojawiły się niedawno, od połowy stycznia do początku lutego 2019 r. Wykorzystanym wektorem infekcji było archiwum SFX, które upuściło legalny dokument-przynętę i złośliwy plik OCX.

Mimo że OceanLotus używa fałszywych znaczników czasu, zauważyliśmy, że znaczniki czasu plików SFX i OCX są zawsze takie same (0x57B0C36A (08 @ 14:2016 UTC) i 0x498BE80F (02/06/2009 @ 7:34am UTC) odpowiednio). Prawdopodobnie oznacza to, że autorzy mają do czynienia z pewnego rodzaju „konstruktorem”, który używa tych samych szablonów i po prostu zmienia pewne cechy.

Wśród dokumentów, które badaliśmy od początku 2018 r., znajdują się różne nazwy wskazujące na kraje będące przedmiotem zainteresowania napastników:

— Nowe dane kontaktowe Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (fałszywy dokument pdf zawierający CV)
— opinia, Rajd w USA 28-29 lipca 2018.exe

Od czasu odkrycia tylnego wejścia {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll oraz opublikowaniu jego analizy przez wielu badaczy, zaobserwowaliśmy pewne zmiany w danych konfiguracyjnych złośliwego oprogramowania.

Najpierw autorzy zaczęli usuwać nazwy z pomocniczych bibliotek DLL (DNSprov.dll i dwie wersje HttpProv.dll). Następnie operatorzy przestali pakować trzecią bibliotekę DLL (drugą wersję) HttpProv.dll), wybierając osadzenie tylko jednego.

Po drugie, wiele pól konfiguracji tylnego wejścia zostało zmodyfikowanych, prawdopodobnie w celu uniknięcia wykrycia, gdy pojawiło się wiele wskaźników IoC. Niektóre z ważniejszych pól zmienionych przez autorów obejmują:

  • Zmieniono klucz rejestru AppX (patrz IoCs)
  • ciąg kodowania mutex ('def', 'abc', 'ghi')
  • numer portu

Na koniec, wszystkie analizowane nowe wersje wprowadzały nowe C&C wymienione w sekcji IoC.

odkrycia

OceanLotus wciąż ewoluuje. Grupa cybernetyczna koncentruje się na udoskonalaniu i rozwijaniu swoich narzędzi i przynęt. Autorzy maskują złośliwe oprogramowanie za pomocą przyciągających wzrok dokumentów, które są istotne dla potencjalnych ofiar. Opracowują nowe schematy i wykorzystują również ogólnodostępne narzędzia, takie jak exploit Equation Editor. Co więcej, udoskonalają narzędzia mające na celu redukcję liczby artefaktów pozostawionych na komputerach ofiar, zmniejszając w ten sposób szansę wykrycia wirusa przez oprogramowanie antywirusowe.

Wskaźniki kompromisu

Dostępne są wskaźniki naruszenia i atrybuty MITRE ATT&CK na temat Welivesecurity и na GitHub.

Źródło: www.habr.com

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster