WinorDLL64: Backdoor z ogromnego arsenału Lazarusa?

WinorDLL64: Backdoor z ogromnego arsenału Lazarusa?

Węzeł źródłowy: 1975596

Region docelowy oraz nakładanie się zachowań i kodu sugerują, że narzędzie jest używane przez niesławną grupę APT powiązaną z Koreą Północną

Badacze firmy ESET wykryli jeden z ładunków Program do pobierania Wslink który odkryliśmy w 2021 roku. Nazwaliśmy ten ładunek WinorDLL64 na podstawie jego nazwy pliku WinorDLL64.dll. Wslink, który miał nazwę pliku WinorLoaderDLL64.dll, to moduł ładujący dla plików binarnych systemu Windows, który w przeciwieństwie do innych tego typu programów ładujących działa jako serwer i wykonuje otrzymane moduły w pamięci. Jak sugeruje sformułowanie, program ładujący służy jako narzędzie do załadowania ładunku lub rzeczywistego złośliwego oprogramowania do już skompromitowanego systemu. Nie zidentyfikowano początkowego wektora kompromisu Wslink.

Początkowo nieznany ładunek Wslink został przesłany do VirusTotal z Korei Południowej wkrótce po opublikowaniu naszego posta na blogu i trafił w jedną z naszych reguł YARA w oparciu o unikalną nazwę Wslink WinorDLL64. Jeśli chodzi o Wslink, telemetria ESET wykryła tylko kilka przypadków – w Europie Środkowej, Ameryce Północnej i na Bliskim Wschodzie.

Połączenia WinorDLL64 payload służy jako backdoor, który przede wszystkim uzyskuje obszerne informacje systemowe, zapewnia środki do manipulacji plikami, takie jak eksfiltracja, nadpisywanie i usuwanie plików, oraz wykonuje dodatkowe polecenia. Co ciekawe, komunikuje się przez połączenie, które zostało już ustanowione przez program ładujący Wslink.

W 2021 roku nie znaleźliśmy żadnych danych, które sugerowałyby, że Wslink jest narzędziem znanego cyberprzestępcy. Jednak po obszernej analizie ładunku, przypisaliśmy WinorDLL64 do grupy Lazarus APT z niskim poziomem pewności w oparciu o docelowy region i nakładanie się zarówno zachowania, jak i kodu ze znanymi próbkami Lazarusa.

Ta niesławna grupa powiązana z Koreą Północną, działająca co najmniej od 2009 roku, jest odpowiedzialna za głośne incydenty, takie jak Włamanie do Sony Pictures Entertainment i dziesiątki milionów dolarów cybernapady w 2016 r.The WannaCryptor (aka WannaCry) wybuchu w 2017 roku i długa historia destrukcyjnych ataków przeciwko Infrastruktura publiczna i krytyczna Korei Południowej od co najmniej 2011 r. US-CERT i FBI dzwonią do tej grupy UKRYTA COBRA.

Na podstawie naszego obszerna wiedza działalności i operacji tej grupy uważamy, że Lazarus składa się z dużego zespołu, który jest systematycznie zorganizowany, dobrze przygotowany i składa się z kilku podgrup, które wykorzystują duży zestaw narzędzi. W zeszłym roku my odkrył narzędzie Łazarza który skorzystał z CVE-2021-21551 podatność na ataki na pracownika firmy lotniczej w Holandii i dziennikarza politycznego w Belgii. Było to pierwsze odnotowane nadużycie luki w zabezpieczeniach; w połączeniu narzędzie i luka w zabezpieczeniach doprowadziły do ​​zaślepienia monitorowania wszystkich rozwiązań bezpieczeństwa na zaatakowanych maszynach. Zamieściliśmy również obszerny opis nt Struktura maszyny wirtualnej używany w próbkach Wslink.

Ten post na blogu wyjaśnia przypisanie WinorDLL64 do Lazarus i zawiera analizę ładunku.

Linki do Łazarza

Odkryliśmy nakładanie się zarówno zachowania, jak i kodu z próbkami Lazarusa z Operacja GhostSecret oraz Implant Bankshota opisane przez McAfee. Opis implantów zarówno w artykułach GhostSecret, jak i Bankshot zawiera nakładanie się funkcjonalności z WinorDLL64 i znaleźliśmy w próbkach pewne nakładanie się kodu. W tym poście na blogu będziemy używać tylko FE887FCAB66D7D7F79F05E0266C0649F0114BA7C próbka z GhostSecret do porównania z WinorDLL64 (1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F), o ile nie podano inaczej.

Poniższe szczegóły podsumowują fakty wspierające naszą niską pewność przypisania Lazarusowi:

1. Wiktymologia

  • Inni badacze z AhnLab potwierdzili w swojej telemetrii ofiary Wslink z Korei Południowej, co jest istotnym wskaźnikiem, biorąc pod uwagę tradycyjne cele Lazarusa, i że zaobserwowaliśmy tylko kilka trafień.

Rysunek 1. Zgłoszona ofiara z Korei Południowej, gdzie mstoned7 to badacz z Ahnlab

2. Złośliwe oprogramowanie

  • Najnowsza próbka GhostSecret zgłoszona przez firmę McAfee (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) pochodzi z lutego 2018 r.; pierwszą próbkę Wslink zauważyliśmy pod koniec 2018 r., a inni badacze zgłosili trafienia w sierpniu 2018 r., które ujawnili po naszej publikacji. W związku z tym próbki te zostały zauważone w stosunkowo krótkim odstępie czasu.
  • Połączenia Nagłówki bogate w PE wskazują, że to samo środowisko programistyczne i projekty o podobnej wielkości zostały użyte w kilku innych znanych próbkach Lazarusa (np. 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Stwierdziliśmy to nakładanie się, stosując następujące zasady, które obejmują tylko te próbki Wslink i Lazarus, co jest wskaźnikiem o niskiej wadze. Testowaliśmy je na Retropolowanie VirusTotal i nasz wewnętrzny korpus plików.

rich_signature.length == 80 i
pe.rich_signature.toolid(175, 30319) == 7 i
pe.rich_signature.toolid(155, 30319) == 1 i
pe.rich_signature.toolid(158, 30319) == 10 i
pe.rich_signature.toolid(170, 30319) >= 90 i
pe.rich_signature.toolid(170, 30319) <= 108

Tę regułę można przetłumaczyć na następującą notację, która jest bardziej czytelna i używana przez VirusTotal, gdzie można zobaczyć wersję produktu i identyfikator kompilacji (VS2010 kompilacja 30319), liczba i rodzaj użytych plików źródłowych/obiektowych ([LTCG C++] gdzie LTCG oznacza Link Time Code Generation, [JAKO M], [ C ]), oraz liczba eksportów ([DO POTĘGI]) w regule:

[LTCG C++] VS2010 kompilacja 30319 liczba = 7
[EXP] VS2010 kompilacja 30319 liczba = 1
[ASM] VS2010 kompilacja 30319 liczba = 10
[ C ] VS2010 kompilacja 30319 liczba w [ 90 .. 108 ]

  • W artykule GhostSecret opisano „unikalny komponent do gromadzenia danych i instalacji implantów, który nasłuchuje na porcie 443 w poszukiwaniu przychodzących połączeń z serwerem kontrolnym”, który dodatkowo działał jako usługa. Jest to dokładny opis zachowania downloadera Wslink, oprócz numeru portu, który może się różnić w zależności od konfiguracji. Podsumowując, chociaż implementacja jest inna, oba służą temu samemu celowi.
  • Program ładujący jest wirtualizowany przez Oreans' Code Virtualizer, który jest używanym komercyjnym zabezpieczeniem często przez Łazarza.
  • Ładowarka używa Moduł pamięci biblioteka do ładowania modułów bezpośrednio z pamięci. Biblioteka nie jest powszechnie używana przez złośliwe oprogramowanie, ale jest dość popularna wśród grup powiązanych z Koreą Północną, takich jak Lazarus i Kimsuky.
  • Nakładanie się kodu między WinorDLL64 i GhostSecret, które znaleźliśmy podczas naszej analizy. Wyniki i znaczenie w atrybucji przedstawiono w tabeli 1.

Tabela 1. Podobieństwa między WinorDLL64 i GhostSecret oraz ich znaczenie w przypisywaniu obu temu samemu cyberprzestępcy

Inne podobieństwa między WinorDLL64 i GhostSecret Rezultat
Nakładanie się kodu w kodzie odpowiedzialnym za uzyskanie architektury procesora niski
Nakładanie się kodu podczas manipulacji bieżącym katalogiem niski
Nakładanie się kodu podczas pobierania listy procesów niski
Nakładanie się kodu podczas wysyłania plików niski
Nakładanie się zachowań w procesach tworzenia list niski
Nakładanie się zachowań podczas manipulowania bieżącym katalogiem niski
Nakładanie się zachowań na liście plików i katalogów niski
Nakładanie się zachowań w woluminach aukcji niski
Nakładanie się zachowań podczas odczytu/zapisu plików niski
Nakładanie się zachowań w tworzeniu procesów niski
Znaczne nakładanie się zachowań podczas bezpiecznego usuwania plików niski
Znaczne nakładanie się zachowań podczas kończenia procesów niski
Znaczne nakładanie się zachowań podczas zbierania informacji o systemie niski

Nakładanie się kodu w funkcji wysyłania plików jest zaznaczone na rysunku 2 i rysunku 3.

Rysunek 2. GhostSecret wysyłający plik

Rysunek 3. Wysyłanie pliku przez Wslink

Analiza techniczna

WinorDLL64 służy jako backdoor, który przede wszystkim uzyskuje obszerne informacje o systemie, zapewnia środki do manipulacji plikami i wykonuje dodatkowe polecenia. Co ciekawe, komunikuje się przez połączenie TCP, które zostało już nawiązane przez jego program ładujący i wykorzystuje niektóre funkcje programu ładującego.

Rysunek 4. Wizualizacja komunikacji Wslink

Backdoor to biblioteka DLL z pojedynczym nienazwanym eksportem, który akceptuje jeden parametr – struktura komunikacji, która została już opisana w naszym poprzedni post na blogu. Struktura zawiera kontekst TLS – gniazdo, klucz, IV – oraz wywołania zwrotne do wysyłania i odbierania wiadomości zaszyfrowanych 256-bitowym AES-CBC, które umożliwiają WinorDLL64 bezpieczną wymianę danych z operatorem przez już ustanowione połączenie.

Następujące fakty dają nam duże przekonanie, że biblioteka rzeczywiście jest częścią Wslink:

  • Unikalna struktura jest używana wszędzie w oczekiwany sposób, np. kontekst TLS i inne znaczące parametry są dostarczane w przewidywanej kolejności do poprawnych wywołań zwrotnych.
  • Nazwa biblioteki DLL to WinorDLL64.dll a Wslink nazywał się WinorLoaderDLL64.dll.

WinorDLL64 akceptuje kilka poleceń. Rysunek 5 przedstawia pętlę, która odbiera i obsługuje polecenia. Każde polecenie jest powiązane z unikalnym identyfikatorem i akceptuje konfigurację zawierającą dodatkowe parametry.

Rysunek 5. Główna część pętli odbierającej polecenia backdoora

Lista poleceń wraz z naszymi etykietami znajduje się na rysunku 6.

Rysunek 6. Lista poleceń

Tabela 2 zawiera podsumowanie poleceń WinorDLL64, które zostały zmodyfikowane, a stare kategorie odnoszą się do relacji z wcześniej udokumentowaną funkcjonalnością GhostSecret. Podkreślamy tylko istotne zmiany w zmodyfikowanej kategorii.

Tabela 2. Przegląd poleceń backdoora

Kategoria Identyfikator polecenia Funkcjonalność Opis
Nowości 0x03 Wykonaj polecenie PowerShell WinorDLL64 instruuje interpreter PowerShell, aby działał bez ograniczeń i odczytywał polecenia ze standardowego wejścia. Następnie backdoor przekazuje określone polecenie interpreterowi i wysyła dane wyjściowe do operatora.
0x09 Skompresuj i pobierz katalog WinorDLL64 rekurencyjnie iteruje po określonym katalogu. Zawartość każdego pliku i katalogu jest kompresowana oddzielnie i zapisywana w pliku tymczasowym, który następnie jest wysyłany do operatora, a następnie bezpiecznie usuwany.
0x0D Odłącz sesję Odłącza określonego zalogowanego użytkownika od sesji usług pulpitu zdalnego użytkownika. Polecenie może również wykonywać różne funkcje w zależności od parametru.
0x0D Lista sesji Pozyskuje różne szczegóły dotyczące wszystkich sesji na urządzeniu ofiary i wysyła je do operatora. Polecenie może również wykonywać różne funkcje w zależności od parametru.
0x0E Zmierz czas połączenia Korzysta z interfejsu API systemu Windows PobierzTickCount do pomiaru czasu wymaganego do połączenia się z określonym hostem.
zmodyfikowany 0x01 Uzyskaj informacje o systemie Pozyskuje szczegółowe informacje o systemie ofiary i przesyła je do operatora.
0x0A Bezpiecznie usuwaj pliki Zastępuje określone pliki blokiem losowych danych, zmienia nazwę każdego pliku na losową, a na koniec bezpiecznie usuwa je jeden po drugim.
0x0C Zabij procesy Kończy wszystkie procesy, których nazwy pasują do podanego wzorca i/lub z określonym PID.
Stary 0x02/0x0B Utwórz proces Tworzy proces jako bieżący lub określony użytkownik i opcjonalnie wysyła dane wyjściowe do operatora.
0x05 Ustaw/pobierz bieżący katalog Próbuje ustawić, a następnie uzyskać ścieżkę do bieżącego katalogu roboczego.
0x06 Wypisz woluminy Iteruje po dyskach od C: do Z: i uzyskuje typ dysku i nazwę woluminu. Polecenie może również wykonywać różne funkcje w zależności od parametru.
0x06 Wyświetl listę plików w katalogu Iteruje po plikach w określonym katalogu i uzyskuje informacje, takie jak nazwy, atrybuty itp. Polecenie może również wykonywać różne funkcje w zależności od parametru.
0x07 Napisz do pliku Pobiera i dołącza określoną ilość danych do określonego pliku.
0x08 Czytaj z pliku Określony plik jest odczytywany i wysyłany do operatora.
0x0C Lista procesów Pozyskuje szczegółowe informacje o wszystkich uruchomionych procesach na urządzeniu ofiary i dodatkowo wysyła identyfikator bieżącego procesu.

Wnioski

Ładunek Wslink jest przeznaczony do zapewniania środków do manipulacji plikami, wykonywania dalszego kodu i uzyskiwania obszernych informacji o systemie bazowym, które mogą być później wykorzystane do ruchu poprzecznego, ze względu na szczególne zainteresowanie sesjami sieciowymi. Moduł ładujący Wslink nasłuchuje na porcie określonym w konfiguracji i może obsługiwać dodatkowych klientów łączących się, a nawet ładować różne ładunki.

WinorDLL64 zawiera nakładanie się środowiska programistycznego, zachowania i kodu z kilkoma próbkami Lazarusa, co wskazuje, że może to być narzędzie z ogromnego arsenału tej grupy APT powiązanej z Koreą Północną.

ESET Research oferuje prywatne raporty analityczne APT i strumienie danych. W przypadku jakichkolwiek pytań dotyczących tej usługi odwiedź stronę Analiza zagrożeń firmy ESET strona.

IoC

SHA-1 Nazwa wykrycia ESET Opis
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Zrzut pamięci wykrytego ładunku Wslink WinorDll64.

Techniki SKOŚNE ATT&CK

Ten stół został zbudowany przy użyciu wersja 12 ram ATT&CK. Nie wspominamy ponownie o technikach ładowacza, tylko o ładunku.

Taktyka ID Imię Opis
Rozwój zasobów T1587.001 Rozwijanie możliwości: złośliwe oprogramowanie WinorDLL64 to niestandardowe narzędzie.
Egzekucja T1059.001 Interpreter poleceń i skryptów: PowerShell WinorDLL64 może wykonywać dowolne polecenia PowerShell.
T1106 Natywny interfejs API WinorDLL64 może wykonywać dalsze procesy za pomocą UtwórzProces W i Utwórz proces jako użytkownik W Pszczoła.
Unikanie obrony T1134.002 Manipulacja tokenem dostępu: tworzenie procesu za pomocą tokena WinorDLL64 może wywoływać interfejsy API Token WTSQueryUserToken i Utwórz proces jako użytkownik W aby utworzyć proces pod podszytym użytkownikiem.
T1070.004 Usuwanie wskaźnika: usuwanie plików WinorDLL64 może bezpiecznie usuwać dowolne pliki.
odkrycie T1087.001 Wykrywanie konta: Konto lokalne WinorDLL64 może między innymi wyliczać sesje i wyświetlać powiązane nazwy użytkowników i klientów.
T1087.002 Wykrywanie konta: Konto domeny WinorDLL64 może między innymi wyliczać sesje i wyświetlać powiązane nazwy domen.
T1083 Wykrywanie plików i katalogów WinorDLL64 może uzyskać listę plików i katalogów.
T1135 Wykrywanie udziałów sieciowych WinorDLL64 może wykrywać udostępnione dyski sieciowe.
T1057 Wykrywanie procesów WinorDLL64 może zbierać informacje o uruchomionych procesach.
T1012 Rejestr zapytań WinorDLL64 może wysyłać zapytania do rejestru systemu Windows w celu zebrania informacji o systemie.
T1082 Wykrywanie informacji o systemie WinorDLL64 może uzyskać informacje, takie jak nazwa komputera, system operacyjny i najnowsza wersja dodatku Service Pack, architektura procesora, nazwa procesora i ilość miejsca na dyskach stałych.
T1614 Wykrywanie lokalizacji systemu WinorDLL64 może uzyskać domyślną nazwę kraju ofiary za pomocą PobierzLocaleInfoW API.
T1614.001 Wykrywanie lokalizacji systemu: Wykrywanie języka systemu WinorDLL64 może uzyskać domyślny język ofiary za pomocą PobierzLocaleInfoW API.
T1016 Wykrywanie konfiguracji sieci systemu WinorDLL64 może wyliczać informacje o karcie sieciowej.
T1049 Wykrywanie połączeń sieciowych systemu WinorDLL64 może zbierać listę portów nasłuchujących.
T1033 Właściciel systemu/wykrywanie użytkownika WinorDLL64 może między innymi wyliczać sesje i wyświetlać powiązane nazwy użytkowników, domen i klientów.
Collection T1560.002 Archiwizuj zebrane dane: Archiwum przez bibliotekę WinorDLL64 może kompresować i eksfiltrować katalogi za pomocą szybkielz biblioteka.
T1005 Dane z systemu lokalnego WinorDLL64 może gromadzić dane na urządzeniu ofiary.
Rezultat T1531 Usunięcie dostępu do konta WinorDLL64 może odłączyć zalogowanego użytkownika od określonych sesji.

Znak czasu:

Więcej z Żyjemy w bezpieczeństwie