Badanie konfiguracji trojana zdalnego dostępu LuminosityLink

ten post jest również dostępny w: 日本本 (Japanese)

w ostatnich tygodniach spędziłem czas na badaniu wbudowanej konfiguracji trojana zdalnego dostępu LuminosityLink (RAT). Dla nieświadomych, LuminosityLink To Rodzina złośliwego oprogramowania kosztująca $ 40, która rzekomo jest narzędziem administracyjnym systemu. Jednak po uruchomieniu złośliwe oprogramowanie wykorzystuje bardzo agresywny keylogger, a także wiele innych złośliwych funkcji, które pozwalają atakującemu uzyskać pełną kontrolę nad maszyną ofiary.

LuminosityLink 1

Rysunek 1 strona LuminosityLink

na prośbę współpracownika poproszono mnie o wyodrębnienie konfiguracji próbki LuminosityLink i chociaż mogłem po prostu wykonać złośliwe oprogramowanie w środowisku piaskownicy i wyciągnąć konfigurację z pamięci, postanowiłem sprawdzić, czy mogę wykonać tę samą akcję przeciwko statycznemu binarnemu.

to doprowadziło mnie do zrozumienia, w jaki sposób konfiguracja jest szyfrowana w pliku binarnym, a także jak analizować tę konfigurację. Stworzyłem skrypt, aby wykonać tę akcję przeciwko niezmienionej próbce złośliwego oprogramowania LuminosityLink, którą udostępnię w tym poście na blogu. Ponadto przyjrzałem się około 18 000 próbkom LuminosityLink, które Palo Alto Networks zebrało w czasie i za pomocą tego skryptu udało mi się wyodrębnić konfiguracje próbek 14 700. (Dane te można znaleźć w załączniku sekcja tego postu.)

przegląd LuminosityLink

pierwotnie pojawił się w maju 2015 roku, popularność LuminosityLink rośnie, jak pokazano na poniższym wykresie. Do tej pory Palo Alto Networks śledziło około 50 000 prób infekcji LuminosityLink przeciwko naszym klientom.

LuminosityLink 2

Rysunek 2 Wykres autofokusa sesji LuminosityLink w czasie.

LuminosityLink obecnie sprzedaje za $40 i można go kupić bezpośrednio od jego autora. Pakiet ten pozwala atakującym hostować Serwer LuminosityLink, a także generować niestandardowe pliki binarne, które są zaciemnione za pomocą ConfuserEx 0.4.0. ConfuserEx jest projektem open-source, który zaciemnia podstawowe .Kod sieciowy, co znacznie utrudnia dekompilację inżynierom odwrotnym. Jest to ważne, aby zwrócić na to uwagę na później, gdy omówimy sposób inżynierii odwrotnej procesu szyfrowania.

jak wspomniano wcześniej, uwzględniono wiele opcji konfiguracyjnych, jak widać na poniższym zrzucie ekranu.

LuminosityLink 3

Rysunek 3 opcje konfiguracji klienta w LuminosityLink

po wykonaniu ataku atakujący otrzymują wiele opcji, w tym keylogging, Pulpit zdalny, kradzież hasła i interakcję z powłoką na urządzeniu.

inżynieria odwrotna Konfiguracja

pierwszym krokiem w analizowaniu konfiguracji LuminosityLink jest wyodrębnienie jej statycznie. Początkowo otworzyłem czystą próbkę LuminosityLink za pomocą programu o nazwie dnSpy do wyszukiwania wskazówek, gdzie może być przechowywana konfiguracja. (Na marginesie, Gorąco polecam dnSpy, ponieważ nie tylko wykonuje świetną robotę dekompilacji dostarczonego pliku binarnego. NET, ale także jest wyposażony we wbudowany debugger, który odgrywa kluczową rolę w rozwiązywaniu problemów, takich jak ten, z którym mamy do czynienia.)

początkowo otwierając przykładowy plik binarny, nie spodziewałem się zbyt wiele, ponieważ wiedziałem, że próbka została zamaskowana za pomocą ConfuserEx. Jednak patrząc na zasoby próbki, widziałem kilka strun, które wyglądały obiecująco.

LuminosityLink 4

Rysunek 4 wbudowane ciągi zasobów w LuminosityLink

jak widać, złośliwe oprogramowanie zawiera szereg zasobów, które z kolei zawierają dane zakodowane w Base64. Zasoby “SMARTLOGS”, ” XML ” i “CONFIG” zawierają wiele danych, które w tym momencie są nadal nieznane. Niestety, dekodowanie tych ciągów skutkuje śmieciami, co prawdopodobnie oznacza, że pod spodem używana jest inna forma szyfrowania.

kontynuowałem badanie kodu bazowego, który, choć zaciemniony, nadal dostarcza wysokiego poziomu wyobrażenia o tym, co robią różne klasy. Korzystając z zaimportowanych przestrzeni nazw, wywołań API i niektórych Nie-zaciemnionych ciągów, jesteśmy w stanie uzyskać wskazówki dotyczące tego, co dzieje się w programie. W szczególności widzimy klasę fd () używającą przestrzeni nazw ‘System.Ochrona.Cryptography”, co z pewnością zasługuje na dochodzenie, ponieważ podejrzewaliśmy, że krypto jest używane przeciwko wcześniej odwoływanym ciągom zasobów.

LuminosityLink 5

Rysunek 5 kryptograficzna przestrzeń nazw używana przez LuminosityLink

w miarę dalszego badania tej klasy widzimy odniesienia do następujących klas i funkcji:

  • MD5CryptoServiceProvider
  • ComputeHash
  • FromBase64String
  • RijndaelManaged

w tym momencie zwróciłem się do mojego debuggera, próbując zobaczyć, jak te ciągi były obsługiwane. Ustawiłem punkty przerwania dla różnych wcześniej wymienionych połączeń. W szczególności punkt przerwania w klasie RijndaelManaged daje doskonałe wyniki.

LuminosityLink 6

Rysunek 6 udane odzyskanie klucza AES-128

jesteśmy w stanie nie tylko sprawdzić, czy używane jest szyfrowanie AES-128, ale także sprawdzić, czy używany jest ciąg zasobów “SMARTLOGS”. Jesteśmy również w stanie zidentyfikować łańcuch używany jako klucz, który w tym konkretnym przykładzie to “\\ecnOnuR\\noisreVtnerruC\\swodniW\\tfosorciM\\erawtfoS”. Dalsze badania ujawniają, że ten ciąg znaków jest haszowany przy użyciu algorytmu MD5. Pierwsze 15 bajtów tego skrótu jest łączone z całymi 16 bajtami tego skrótu, po czym następuje bajt null. Możemy replikować ten proces deszyfrowania w Pythonie jako taki:

1
2
3
4
5
6
7
8
9
10

def decrypt_data (data, key_string):
decoded_data = base64.b64decode(data)
m = hashlib.md5()
m.update(key_string)
md5 = m.digest()
key = md5+md5+”\x00″
mode = AES.MODE_ECB
iv = ‘\x00’ * 16
e = AES.new (key, mode, iv)
return e. decoded_data)

możemy dalej zweryfikować, czy jest to poprawne, korzystając z powyższego kodu. W poniższym przykładzie zmienna data została ustawiona za pomocą zakodowanego w base64 ciągu znalezionego w zasobie “SMARTLOGS”, a zmienna key_string została ustawiona na odwrócony klucz rejestru, o którym wcześniej wspomniano.

1
2

>>> print decrypt_data(data, key_string)
172.16.1.100|11111|backup.dns.com|filename.exe|startup_name|folder_name|data_directory_name|backup_startup.exe / df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4|BuildID / 1idsnb|

metodą prób i błędów jesteśmy w stanie z powodzeniem mapować każdą zmienną zaobserwowaną w powyższej konfiguracji. Ostatnia zmienna okazuje się dość interesująca, ponieważ każdy znak oprócz ‘1’ mapuje do konkretnej opcji konfiguracyjnej. Ustalono następujące odwzorowania:

  • i: włącz instalację/uruchamianie klienta
  • d: moduł trwałości klienta: zabezpiecz Binarność klienta
  • s : Tryb cichy (Ukryj okno jasności na komputerze klienta)
  • a : proaktywna Ochrona przed złośliwym oprogramowaniem: Wyczyść złośliwe pliki i przyspiesz komputer klienta
  • n : Oszczędzanie energii: Zapobiegaj trybowi uśpienia i wyłączaj Monitor po 15 minutach bezczynności
  • m : Usuń plik po wykonaniu (stopienie)
  • v : Maszyny anty-wirtualne/debugowanie
  • h : Ukryj plik i katalogi
  • B : uruchomienie kopii zapasowej

korzystając z tej wiedzy, możemy przeanalizować powyższą konfigurację, co daje następujące wyniki.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

domena / IP: 172.16.1.100
Port: 11111
Backup DNS: backup.dns.com
nazwa pliku: nazwa pliku.exe
Nazwa startowa: startup_name
Nazwa folderu: folder_name
nazwa katalogu danych: data_directory_name
Backup Startup Exe: backup_startup.exe
Mutex: df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4
Build ID: BuildID
Ustawienia:
Włącz instalację klienta/startup
moduł trwałości klienta: Chroń binarny klient Luminosity
tryb cichy (Ukryj okno jasności na komputerze klienta)
proactive Anti-Malware: Wyczyść złośliwe pliki i przyspiesz komputer klienta
Oszczędzanie energii: Zapobiegaj trybowi uśpienia i wyłącz Monitor po 15 minutach bezczynności
Usuń plik po wykonaniu (Melt)
Maszyny anty-wirtualne/debugowanie
Ukryj pliki i katalogi
uruchamianie kopii zapasowych

parsowanie konfiguracji LuminosityLink w skali

korzystając z tej wiedzy, stworzyliśmy skrypt do parsowania konfiguracji danej próbki. Skrypt wyszukuje ciągi, które wydają się być kodowane base64 o długości większej niż 50 i przyjmuje podejście brute-force. Chociaż nie jest elegancki, wykonuje swoją pracę z powodzeniem. Skrypt można pobrać w sekcji dodatek tego posta na blogu.

przeglądając repozytorium próbek Palo Alto Networks, znaleźliśmy około 18 000 plików otagowanych jako LuminosityLink. Dla tych 18 000 próbek zastosowaliśmy nasz skrypt ekstrakcji i parsowania konfiguracji statycznej i z powodzeniem pobraliśmy około 4500 konfiguracji. Pozostałe próbki były pakowane poza wbudowaną rutynę maskowania ConfuserEx i jako takie, surowe ciągi konfiguracyjne nie były obecne.

te próbki były uruchamiane przez lokalną instancję otwartej piaskownicy Cuckoo, gdzie wydobywano zrzuty procesu. Ten sam skrypt został zastosowany do tych zrzutów procesów, gdzie byliśmy w stanie uzyskać dodatkowe 10,200 konfiguracji, pozostawiając nam w sumie 14,700 parsed luminositylink konfiguracji.

po przetworzeniu próbek odkryto kolejne Klucze używane przez autora. Następujące dodatkowe trzy ciągi zostały użyte do wygenerowania kluczy do próbek LuminosityLink.

  • ten conf ‘ IG nie zawiera nic użytecznego. Przestań zachowywać się, jakbyś był fajny, odszyfrowując go.
  • SMARTLOGS
  • podaj hasło

wygląda na to, że autor LuminosityLink nie jest pozbawiony poczucia humoru. Dodatkowo, gdy analizowaliśmy starsze próbki, okazało się, że konfiguracja zmieniła się między lutym a czerwcem tego roku. Mniej opcji było dostępnych w konfiguracji starszych próbek. Dostarczony skrypt uwzględnia te różnice i różne używane klucze.

wykorzystując zagregowane dane z 14 700 konfiguracji, wyciągnięto następujące statystyki wysokiego poziomu:

LuminosityLink 7

Figure 7 Prevalence of enabled settings in LuminosityLink configurations

Top C2 TLDs/IP Addresses

  • ddnsnet
  • duckdnsorg
  • no-ipbiz
  • chickenkillercom
  • no-iporg
  • mooocom
  • fishdnscom
  • no-ipinfo
  • ignorelistcom
  • freednssu

Top Build IDs

  • HOME
  • Client
  • crtx1
  • M4CHINATION
  • CSGO
  • NEW
  • Slave
  • CAPO
  • Youtube
  • PROJECT.D

Top Executable Names

  • sysmon.exe
  • client.exe
  • helper.exe
  • repair.exe
  • winlogon.exe
  • svchost.exe
  • Luminosity.exe
  • WinCOMHost.exe
  • chrome.exe
  • windowsbootapp.exe

najlepsze porty

  • 6318
  • 1400
  • 1604
  • 1337
  • 3175
  • 22028
  • 9045
  • 2122
  • 100
  • 9999

przetwarzane dane konfiguracyjne, dostarczone w formacie CSV, są swobodnie udostępniane społeczności bezpieczeństwa w nadziei, że zostaną stworzone zabezpieczenia przed tym zagrożeniem.

wniosek

LuminosityLink, choć sprzedawany jako narzędzie do zarządzania systemami, jest potężnym keyloggerem i tylnym wejściem używanym przez dużą liczbę przestępców. Do tej pory Palo Alto Networks było świadkiem ponad 50 000 prób infekcji LuminosityLink, obejmujących 18 000 unikalnych próbek. Złośliwe oprogramowanie jest tanie i łatwo dostępne dla społeczeństwa, co czyni to niebezpieczne zagrożenie zarówno dla organizacji, jak i osób fizycznych.

dzięki próbkom luminositylink inżynierii odwrotnej byliśmy w stanie statycznie wyodrębnić i przeanalizować wbudowaną konfigurację, która z kolei dostarcza cennych informacji o tym, z jakimi hostami i portami złośliwe oprogramowanie jest skonfigurowane do komunikacji. Zawiera również informacje dotyczące skonfigurowanych zabezpieczeń skonfigurowanych w pliku wykonywalnym, a także informacje o instalacji.

klienci Palo Alto Networks są chronieni przed tym zagrożeniem w następujący sposób:

tag AutoFocus może być użyty do śledzenia tej rodziny złośliwego oprogramowania

  • wszystkie próbki LuminosityLink są odpowiednio oznaczone jako złośliwe w programie WildFire
  • wszystkie zidentyfikowane domeny są oznaczone jako złośliwe
  • ruch sieciowy jest odpowiednio identyfikowany i blokowany jako Zagrożenie id #14460 (lumonositylinkrat.Gen Command and Control Traffic)

dodatek

skrypt ekstrakcji i parsowania próbek LuminosityLink można znaleźć tutaj.

skrypt do parsowania prostych ciągów konfiguracyjnych można znaleźć tutaj.

plik CSV zawierający wszystkie dane konfiguracyjne pobrane z Palo Alto Networks sample set można znaleźć tutaj.

Pobierz aktualizacje z
Palo Alto
sieci!

Zarejestruj się, aby otrzymywać od nas najnowsze wiadomości, informacje o zagrożeniach cybernetycznych i badania

przesyłając ten formularz, zgadzasz się z naszymi Warunkami Użytkowania i potwierdzasz naszą Politykę prywatności.

Write a Comment

Twój adres e-mail nie zostanie opublikowany.