Bitdefender wydaje dekryptor do ShrinkLocker
Piotr R
19 listopada 2024
Wyobraź sobie atak ransomware, który jest tak staromodny, że wykorzystuje VBScript i wbudowaną funkcję Windows do szyfrowania. ShrinkLocker (odkryty w maju 2024 r.) to zaskakująco prosty, ale skuteczny ransomware, który wykorzystuje relikty przeszłości. Dlatego zespół Bitdefender przygotował darmowy dekryptor do ShrinkLocker i obszerny poradnik, w jaki sposób zneutralizować to zagrożenie.
ShrinkLocker – zaskakująco prymitywne zagrożenie ransomware
W przeciwieństwie do większości współczesnych ransomware, które opierają się na zaawansowanych algorytmach szyfrowania, ShrinkLocker stosuje prostsze, mniej konwencjonalne podejście. ShrinkLocker modyfikuje konfiguracje BitLockera, aby zaszyfrować dyski systemu. Najpierw sprawdza, czy BitLocker jest włączony, a jeśli nie, instaluje go. Następnie ponownie szyfruje system, używając losowo wygenerowanego hasła. To unikalne hasło jest przesyłane na serwer kontrolowany przez atakującego. Po ponownym uruchomieniu systemu użytkownik jest proszony o podanie hasła w celu odblokowania zaszyfrowanego dysku. Na ekranie BitLockera wyświetlany jest adres e-mail kontaktowy atakującego, który nakazuje ofiarom zapłacenie okupu za klucz deszyfrujący.
Dzięki połączeniu obiektów zasad grupy (GPO) i zaplanowanych zadań może szyfrować wiele systemów w sieci w ciągu zaledwie 10 minut na urządzenie. W rezultacie całkowite naruszenie domeny można osiągnąć przy bardzo niewielkim wysiłku, jak wykazano w jednym z dochodzeń Bitdefender. Ta prostota sprawia, że atak jest szczególnie atrakcyjny dla indywidualnych aktorów zagrożeń, którzy mogą nie być częścią większego ekosystemu ransomware-as-a-service (RaaS).
Podczas badania ShrinkLockera odkryto zaskakującą prawdę: ten kod mógł zostać napisany ponad dekadę temu, prawdopodobnie w nieszkodliwych celach. To cyfrowa kapsuła czasu, która została ponownie wykorzystana w złośliwych celach. Badacze bezpieczeństwa analizowali ShrinkLockera, jednak ich odkrycia często nie opisują dokładnie jego zachowania w nowoczesnych środowiskach sieciowych. Na przykład nawet nazwa złośliwego oprogramowania, „ShrinkLocker”, jest myląca, ponieważ w rzeczywistości nie zmniejsza partycji w obecnych systemach operacyjnych.
Jednym z największych zmartwień zespołu Bitdefender było to, czy ten wektor ataku może stać się nowym trendem. W końcu jest to stosunkowo prosta koncepcja, którą nawet mniej doświadczony programista mógłby wdrożyć. Na szczęście dochodzenie ujawniło pewne pozytywne wiadomości: możliwe jest opracowanie deszyfratora, a nawet skonfigurowanie BitLockera w celu złagodzenia tych ataków. Dzieląc się naszymi odkryciami, mamy nadzieję pomóc praktykom i badaczom ds. bezpieczeństwa w zrozumieniu i złagodzeniu ryzyka związanego z tego typu atakami.
Odszyfrowywanie ShrinkLocker
W miarę rozwoju ransomware atakujący wykorzystują zaawansowane techniki, w tym wyciekły kod źródłowy od profesjonalnych grup ransomware-as-a-service i nowoczesne języki programowania, takie jak Rust i Go. Utrudnia to opracowywanie narzędzi deszyfrujących wyłącznie poprzez inżynierię wsteczną. Jednak w przypadku ShrinkLockera Bitdefender zidentyfikował konkretne okno możliwości odzyskania danych bezpośrednio po usunięciu zabezpieczeń z dysków zaszyfrowanych za pomocą BitLockera. Zespół Bitdefender udostępnił publicznie ten deszyfrator, dodając go do kolekcji 32 wcześniej wydanych narzędzi deszyfrujących.
Jak rozwiązać problem związany z ShrinkLocker?
1. Pobierz narzędzie deszyfrujące ze strony: https://download.bitdefender.com/am/malware_removal/BDShrinkLockerUnlocker.exe
2. Włącz komputer i poczekaj, aż pojawi się ekran odzyskiwania BitLocker: Gdy pojawi się monit o podanie klucza odzyskiwania BitLocker, naciśnij Esc, aby przejść do trybu odzyskiwania BitLocker.
3. Na ekranie BitLocker Recovery wybierz opcję „Pomiń ten dysk”.
4. Wybierz „Rozwiązywanie problemów ”, a następnie „Opcje zaawansowane”.
5. Wybierz „Wiersz polecenia” z menu opcji zaawansowanych.
6. Upewnij się, że masz przygotowany plik „BDShrinkLockerUnlocker.exe”. Możesz go przenieść na dysk USB i podłączyć do komputera. W wierszu poleceń przejdź do litery dysku, na którym znajduje się deszyfrator (np. D:\).
7. Wpisz następujące polecenie i naciśnij Enter: „D:\BDShrinkLockerUnlocker.exe„.
Uwaga: Możesz odłączyć dysk USB po uruchomieniu deszyfratora.
8. Proces deszyfrowania może potrwać trochę czasu, w zależności od sprzętu systemu i złożoności szyfrowania. Zachowaj cierpliwość. Po zakończeniu deszyfrowania deszyfrator automatycznie odblokuje dysk i wyłączy uwierzytelnianie za pomocą karty inteligentnej.
9. Po ponownym uruchomieniu komputer powinien uruchomić się normalnie.
Narzędzia deszyfrujące są z natury reaktywne, często ograniczone do określonych ram czasowych lub wersji oprogramowania. Ponadto, chociaż mogą przywrócić dostęp do zaszyfrowanych danych, nie uniemożliwiają atakującym ponownej próby z większym powodzeniem. Zespół Bitdefender zdecydowanie zaleca zapoznanie się z ich sekcją Rekomendacje, aby uzyskać dodatkowe wskazówki, w tym konkretne wskazówki dotyczące konfigurowania BitLockera w celu zminimalizowania ryzyka udanych ataków.
Anatomia ataku ShrinkLocker
Poprzednie publiczne raporty nie były jasne, czy ShrinkLocker atakuje przede wszystkim osoby prywatne, czy firmy. Dochodzenie Bitdefender w sprawie incydentu z udziałem firmy opieki zdrowotnej na Bliskim Wschodzie rzuca światło na ten aspekt, ujawniając, że atakujący celowali w podmiot korporacyjny.
Ta sekcja zawiera przegląd konkretnego przypadku ataku ShrinkLocker, skupiając się na szerszej metodologii ataku, a nie na konkretnej odmianie złośliwego oprogramowania. Szczegółowa analiza złośliwego oprogramowania znajduje się w następnej sekcji.
Początkowa infiltracja miała miejsce w niezarządzanym systemie, który jest powszechnym punktem wyjścia ataków. Około 70% incydentów badanych przez zespół Bitdefender MDR rozpoczęło się na niezarządzanych urządzeniach, co podkreśla znaczne ryzyko, jakie stwarzają te systemy. Podczas gdy dokładne źródło pozostaje nieznane, istnieje podejrzenie, że atak pochodził z maszyny należącej do jednego z wykonawców. Ten incydent podkreśla rosnące zagrożenie atakami na łańcuchy dostaw, które często wykorzystują luki w systemach lub relacjach stron trzecich. Podczas gdy ataki na łańcuchy dostaw oparte na oprogramowaniu są często podkreślane, ten typ ataku, ukierunkowany na relacje, a nie na oprogramowanie, jest znacznie bardziej powszechny i często niedoceniany.
Cyberprzestępca przeniósł się bocznie do kontrolera domeny Active Directory, używając prawidłowych poświadczeń dla naruszonego konta. Będąc na kontrolerze domeny, utworzył kilka plików tekstowych (których zawartość jest nieznana) i zainicjował kolejną sesję zdalną, tym razem z kontrolera domeny do serwera zapasowego. Te działania sugerują, że atakujący prawdopodobnie przeprowadzał rozpoznanie lub oceniał potencjał eksfiltracji danych.
Następnego dnia utworzono dwa zaplanowane zadania na kontrolerze domeny Active Directory. Oba zadania zostały utworzone przez tego samego użytkownika, który wcześniej uzyskał dostęp do kontrolera domeny, ale zostały wykonane w kontekście SYSTEM. Preferencje zasad grupy w ramach domyślnej polityki domeny zostały zmodyfikowane w celu utworzenia zadań na każdym komputerze przyłączonym do domeny, zapewniając powszechne wdrożenie oprogramowania ransomware. Co ciekawe, do uruchamiania tych skryptów użyto „wscript.exe”, a nie „cscript.exe”.
Pierwsze zadanie ADHelathCheck, ustawione na uruchomienie o 21:23 UTC tego dnia, wykonało plik skryptu o nazwie Check.vbs ze współdzielonej lokalizacji „%SYSVOL%\%USERDNSDOMAIN%\Scripts”. Ten skrypt skopiował skrypt ransomware, również znajdujący się we współdzielonej lokalizacji, do folderu „C:\ProgramData\Microsoft\Windows\Templates” na każdym komputerze przyłączonym do domeny.
Drugie zadanie ADHelathAudit, zaplanowane na dwa dni później o 9:10 rano UTC, wykonało lokalnie wdrożony skrypt ransomware o nazwie „Audit.vbs (MD5: 2b72beb806acd35ba0d566378115346c)”. Około 40 minut przed rozpoczęciem procesu szyfrowania, ustanowiono kolejne połączenie RDP z urządzenia zainfekowanego użytkownika do kontrolera domeny, prawdopodobnie w celu monitorowania postępu ataku. Zadanie szyfrowania zostało ukończone o 11:45 rano UTC, a jego ukończenie zajęło około 2,5 godziny.
Atak ten zakończył się powodzeniem w przypadku szyfrowania systemów działających pod kontrolą różnych systemów operacyjnych, w tym Windows 10, Windows 11, Windows Server 2016 i Windows Server 2019.
Wariant ShrinkLocker użyty w tym ataku wydaje się być zmodyfikowaną wersją oryginalnego skryptu, stworzoną przez innego autora. Nie jest to niczym niezwykłym, ponieważ różni aktorzy zagrożeń dostosowali i rozwinęli złośliwe oprogramowanie, aby odpowiadało ich konkretnym potrzebom i celom. Chociaż spodziewane są pewne zmiany, takie jak modyfikacje infrastruktury poleceń i kontroli (C2), w tym konkretnym wariancie występuje kilka istotnych różnic:
- Celowy atak: Włączenie zakodowanego na stałe sprawdzenia nazwy domeny wskazuje, że atak był wymierzony konkretnie w daną organizację.
- Zmodyfikowane zmiany w rejestrze: Użycie „WMIC.exe” zamiast „reg.exe add” do wprowadzania zmian w rejestrze wskazuje na preferencję dla innych narzędzi lub technik, co potencjalnie może wskazywać na inny zestaw umiejętności lub doświadczenie.
Niespójne skryptowanie: Obecność literówek w nazwach zaplanowanych zadań i redundantnych sekcji kodu sugeruje, że sprawca zagrożenia mógł nie być wysoko wykwalifikowanym programistą. Może to wskazywać, że złośliwe oprogramowanie zostało zaadaptowane przez mniej wyrafinowanego atakującego, prawdopodobnie samotnego wilka, a nie wyrafinowaną grupę zagrożeń.
Ponieważ bariera wejścia do używania i modyfikowania ShrinkLocker jest stosunkowo niska, czyni to go dostępnym dla szerszego grona atakujących. Analiza Bitdefender pokazuje, że złośliwe oprogramowanie ShrinkLocker jest adaptowane przez wielu indywidualnych aktorów zagrożeń do prostszych ataków, a nie jest dystrybuowane za pośrednictwem modelu ransomware-as-a-service (RaaS).
Analiza ShrinkLocker
Rozumiemy, że ta sekcja może być długa, ale ShrinkLocker to niezwykłe zagrożenie ransomware. Jego analiza była zarówno fascynująca, jak i frustrująca. Jeśli szczegóły techniczne nie są Twoją pasją, nie pomijaj sekcji „Wnioski i zalecenia”. Wypełniono ją praktycznymi poradami i pomocnymi wskazówkami.
ShrinkLocker to niezwykłe zagrożenie ransomware z dwóch powodów: jest napisane w VBScript i wykorzystuje BitLocker do szyfrowania i blokowania systemów ofiar. To podejście jest nietypowe dla współczesnego ransomware, sugerując albo unikalną strategię, albo mniej wyrafinowanego aktora zagrożenia. Kilka firm opublikowało szczegółowe analizy ShrinkLocker. Chociaż analizy te były kompleksowe, często skupiały się na konkretnych aspektach technicznych, zamiast wyjaśniać, w jaki sposób złośliwe oprogramowanie prawdopodobnie zostanie wykorzystane w rzeczywistych atakach.
W analizie Bitdefender skupiono się wyłącznie na obecnie obsługiwanych systemach operacyjnych. Dzieje się tak, ponieważ około 70% kodu ShrinkLocker jest zakodowane na stałe, aby można było je wykonywać tylko w starszych systemach, takich jak Windows 7/8 lub Windows Server 2008/2012. Ten starszy kod jest często niefunkcjonalny z powodu słabej kontroli jakości – na przykład warunkowego przetwarzania, które nigdy nie jest oceniane jako prawdziwe. Nawet funkcja, która jest nazwą malware – zmniejszanie partycji – jest poważnie ograniczona do bardzo starych systemów. Ta funkcja jest nie tylko zakodowana na stałe dla starszych systemów, ale wymaga również przypisania litery dysku do woluminu systemowego, co zostało zmienione od systemu Windows Server 2012.
Jednym z możliwych wyjaśnień tego skupienia się na dziedziczeniu jest to, że kod został pierwotnie opracowany do innych celów i dopiero później dostosowany do złośliwego użytku. Wyjaśniałoby to nie tylko uwzględnienie obszernego kodu dla przestarzałych systemów operacyjnych bez żadnych wyraźnych kontroli nowszych wersji (najnowsza wspomniana wersja to „2012”), ale także wybór VBScript jako preferowanego języka skryptowego.
Firma Microsoft oficjalnie ogłosiła wycofanie VBScript począwszy od systemu Windows 11 2024 H2, co jeszcze bardziej podkreśla przestarzały charakter tego języka skryptowego. Podczas gdy VBScript był kiedyś powszechnie używany, jego rozpowszechnienie znacznie spadło w ostatnich latach (z wyjątkiem nieśmiertelnego slmgr.vbs), co sprawia, że mało prawdopodobne jest, aby to złośliwe oprogramowanie zostało opracowane niedawno.
Inicjalizacja skryptu
Skrypt rozpoczyna się od zainicjowania zmiennych i utworzenia obiektu do interakcji z usługą Windows Management Instrumentation (WMI). WMI to powszechna metoda używana w całym skrypcie do zbierania informacji o systemie. Następnie kod wykonuje dwa zapytania WMI w celu pobrania informacji o konfiguracji systemu i systemie operacyjnym komputera. Dane te są przechowywane w kolekcjach colItems i colItems2. Kolekcja colItems2 jest unikalna dla tej zmodyfikowanej wersji skryptu i jest używana tylko do wykonania początkowego sprawdzenia domeny. Kolekcja colItems to ogólna zmienna, która jest używana wielokrotnie w całym skrypcie do przechowywania różnych wartości z różnych poleceń.
Walidacja celu
Ta sekcja kodu sprawdza, czy komputer jest częścią określonej domeny. Ta personalizacja pokazuje, w jaki sposób złośliwe oprogramowanie zostało dostosowane do konkretnej organizacji. Polecenie „InStr” służy do wyszukiwania określonego podciągu w innym ciągu. Jeśli podciąg zostanie znaleziony (oznaczone warunkiem > 0), skrypt nic nie robi. Ta odwrotna logika, w której brak warunku wyzwala działanie, jest powszechnym wzorcem w całym kodzie.
Sprawdź obsługiwane systemy operacyjne
Ta sekcja to krótka kontrola, aby sprawdzić, czy skrypt działa na relikcie z początku lat 2000.: Windows (Server) 2000, Windows XP lub Windows Server 2003. Jak zwykle, udawajmy, że Windows ME nigdy nie istniał. Jeśli skrypt działa na nieobsługiwanym systemie operacyjnym, usuwa siebie (plik Audit.vbs) ze wskazanej lokalizacji, a następnie kończy działanie.
Uwaga: To będzie ostatni raz, kiedy będziemy omawiać kod specjalnie ukierunkowany na starsze systemy. Reszta naszej analizy skupi się tylko na kodzie, który dotyczy obecnie obsługiwanych systemów operacyjnych.
Wdrożenie BitLockera
Celem tej sekcji jest sprawdzenie, czy BitLocker jest zainstalowany. Jeśli nie, próbuje wdrożyć tę funkcję jako warunek wstępny szyfrowania.
Chociaż kod może wydawać się skomplikowany, duża jego część (zaznaczona) jest na tym etapie nieistotna. Ta wyróżniona sekcja zawiera zmiany rejestru związane z konfiguracją BitLocker, które nie są bezpośrednio zaangażowane w proces wdrażania. Tendencja autora skryptu do kopiowania i wklejania kodu w całym skrypcie doprowadziła do uwzględnienia tego konkretnego bloku kodu w wielu lokalizacjach (w sumie 9). Uwzględniamy ten segment tylko dlatego, że istnieją pewne niezamierzone konsekwencje, które mogą pomóc obrońcom.
Skrypt rozpoczyna się od sprawdzenia, czy BitLocker jest zainstalowany, za pomocą zapytania „WMI SELECT * From Win32_OptionalFeature WHERE Name = 'Bitlocker’”. To zapytanie jest istotne tylko dla systemów operacyjnych Windows Server, ponieważ BitLocker nie jest uwzględniony jako opcjonalna funkcja w klasie „Win32_OptionalFeature” na systemach klienckich. W systemach operacyjnych klientów to zapytanie nie zwraca żadnych wyników, a skrypt przechodzi do następnej sekcji. Jeśli zapytanie zakończy się powodzeniem, skrypt kontynuuje wdrażanie BitLocker za pomocą polecenia „powershell.exe -Command Install-WindowsFeature BitLocker -IncludeAllSubFeature -IncludeManagementTools”.
Po instalacji skrypt wchodzi w pętlę, aby monitorować stan instalacji. Po pomyślnym zainstalowaniu BitLockera (InstallState = 1), skrypt próbuje ponownie uruchomić serwer. Istnieje jednak znany błąd, który uniemożliwia pomyślne ukończenie ponownego uruchomienia.
Takie zachowanie daje doświadczonym zespołom SOC/MDR możliwość zidentyfikowania go jako anomalii:
- Windows Server Focus – Choć może to nie być od razu jasne, ten kod koncentruje się na Windows Server. Cały ten blok skryptu jest pomijany, jeśli BitLocker jest już włączony, co często ma miejsce ze względu na zgodność. Jeśli używasz innej metody szyfrowania (takiej jak szyfrowany SAN dla serwerów wirtualnych), może to pomóc w zidentyfikowaniu trwającego ataku, szczególnie w połączeniu z innymi notatkami z tej sekcji.
- Błąd Win32Shutdown – Skrypt spróbuje wymusić ponowne uruchomienie za pomocą metody Win32Shutdown(6) (6 identyfikuje żądanie jako wymuszony restart). Jednak to żądanie kończy się niepowodzeniem z błędem „Privilege Not Held”, pozostawiając skrypt (i nadrzędne zaplanowane zadanie) w niekończącej się pętli.
Brak wznawiania po ponownym uruchomieniu: Nawet jeśli serwer zostanie ponownie uruchomiony ręcznie (np. przez niczego niepodejrzewającego administratora), skrypt nie ma mechanizmu umożliwiającego wznowienie jego wykonywania po ponownym uruchomieniu, co oznacza, że atak może zostać przerwany lub uniemożliwiony. - Niezamierzone modyfikacje rejestru: Skrypt modyfikuje kilka kluczy rejestru. Podczas gdy większość tych modyfikacji nie jest bezpośrednio związana z procesem szyfrowania BitLocker na tym etapie, zmiany w „scforceoption” i „fDenyTSConnections” mają wpływ na zachowanie systemu. Te modyfikacje rejestru mają na celu ograniczenie dostępu do systemu poprzez wyłączenie zdalnego RDP i lokalnego logowania opartego na haśle. Podczas gdy te zmiany można łatwo odwrócić, ich obecność może zostać wykryta przez zespoły ds. bezpieczeństwa.
Podsumowując, jeśli ta sekcja skryptu zostanie wykonana na komputerze z systemem Windows Server bez wdrożonego programu BitLocker, nastąpią następujące efekty:
- Funkcja BitLocker zostanie włączona w systemie.
- Skrypt (i zaplanowane zadanie, które go uruchomiło) utknie w nieskończonej pętli z powodu nieudanej próby ponownego uruchomienia.
- Dostęp lokalny i zdalny do komputera zostanie zablokowany, można go jednak łatwo przywrócić.
Generowanie losowego hasła
Istnieją dwa fragmenty kodu, które współpracują ze sobą, aby wygenerować losowy ciąg, który zostanie użyty jako losowe hasło dla BitLockera. To losowe hasło jest oparte na informacjach specyficznych dla systemu. To sprawia, że hasło jest trudniejsze do odgadnięcia lub złamane siłą, ponieważ zawiera unikalne cechy każdego naruszonego systemu.
Pierwszy fragment kodu pobiera informacje o ruchu sieciowym, pamięci systemowej i wykorzystaniu dysku. Używa zapytań WMI do pobierania danych z klas „Win32_PerfRawData_Tcpip_NetworkInterface”, „Win32_OperatingSystem” i „Win32_ComputerSystem”.
Dane interfejsu sieciowego:
- Znaczniki czasu (sys, perf).
- Otrzymane bajty na sekundę (odebrano).
- Wysłane bajty na sekundę (wysłane).
Dane pamięci systemowej:
- Całkowity widoczny rozmiar pamięci.
- Wolna pamięć fizyczna.
- Użyta pamięć fizyczna.
Miejsce na dysku:
- Użyta przestrzeń (wolumen bagażnika).
- Wolne miejsce (wolumin rozruchowy).
Następnie skrypt łączy te unikalne cechy systemu z bieżącym czasem systemowym (uzyskanym za pomocą wbudowanej funkcji Timer), aby utworzyć niestandardową wartość początkową. Ta wartość początkowa jest następnie używana do nadpisywania generatora liczb losowych (Randomize seed).
Używając niestandardowej wartości początkowej, sprawca zagrożenia może utrudnić analitykom ds. bezpieczeństwa przeprowadzenie inżynierii wstecznej ataku i potencjalnie uniknąć wykrycia przez systemy bezpieczeństwa monitorujące generowane przez system liczby losowe.
Ciąg znaków definiuje możliwe znaki, które mogą zostać uwzględnione w wygenerowanym losowym ciągu, w tym różnorodne znaki alfanumeryczne i symbole („szybki brązowy lis przeskakuje nad leniwym psem” małymi i dużymi literami).
Na koniec skrypt łączy generator niestandardowego seeda z pojedynczymi znakami, aby wygenerować nowe losowe hasło. Funkcja Rnd jest używana do generowania losowej liczby z zakresu od 0 do 90 (długość ciągu znaków). Ta losowa liczba jest następnie używana do wybierania znaku z ciągu znaków za pomocą funkcji Mid. Pętla For iteruje 64 razy, generując losowy znak dla każdej iteracji. Te losowe znaki są następnie łączone w zmiennej ciągu „strRandom”, reprezentującej unikalne hasło, które zostanie użyte do konfiguracji BitLocker.
Przygotowanie do szyfrowania
Możesz pamiętać z poprzedniego rozdziału, że atakujący manipulują etykietą dysku podczas generowania hasła. Jest to używane zamiast tradycyjnej notatki o okupie, ponieważ cały dysk użytkownika staje się niedostępny. Podczas żądania klucza deszyfrującego BitLocker etykieta dysku jest wyświetlana obok nazwy hosta maszyny.
Znaczenie prefiksu „TEL” w adresie e-mail jest niejasne. Jednak eksperci z Bitdefender zaobserwowali podobne adresy e-mail o tym samym formacie, co sugeruje, że każda ofiara może mieć unikalny adres e-mail przypisany do komunikacji z aktorem zagrożenia.
Na koniec następuje ostateczna kontrola stanu usługi BitLocker (o nazwie „BDESVC”) za pomocą WMI, aby zapytać o stan i status usługi. Jeśli usługa nie jest uruchomiona lub nie jest w stanie „OK”, skrypt próbuje uruchomić usługę, a następnie zatrzymuje się na 2 sekundy, aby umożliwić uruchomienie usługi. Skrypt kontynuuje sprawdzanie stanu usługi w pętli, aż zostanie uruchomiona i będzie w stanie „OK”.
Wyjaśniliśmy wcześniej, że skrypt modyfikuje rejestr, aby ograniczyć dostęp do systemu poprzez:
- Wyłączanie zdalnych połączeń RDP: Ustawienie „fDenyTSConnections” uniemożliwia użytkownikom zdalny dostęp do systemu za pomocą protokołu Remote Desktop Protocol.
- Wyłączanie logowania opartego na haśle: Ustawienie „scforceoption” wyłącza logowanie oparte na haśle, wymagając od użytkowników użycia alternatywnych metod uwierzytelniania, takich jak karty inteligentne lub dane biometryczne.
Oprócz ograniczenia dostępu skrypt konfiguruje również dodatkowe ustawienia funkcji BitLocker w kluczu rejestru „HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\FVE”.
- „„UseAdvancedStartup”=dword:00000001” – To ustawienie włącza zaawansowane opcje uruchamiania funkcji BitLocker, umożliwiając użytkownikom dostęp do narzędzi i opcji odzyskiwania podczas uruchamiania systemu.
- „„EnableBDEWithNoTPM”=dword:00000001” — umożliwia włączenie szyfrowania dysków funkcją BitLocker (BDE) w systemach bez modułu TPM (Trusted Platform Module).
- „„UseTPM”=dword:00000002”– To ustawienie określa, że BitLocker powinien używać modułu TPM, ale jest ustawiony tak, aby wymagał kodu PIN lub klucza startowego. Wartość 00000002 oznacza, że moduł TPM wymaga dodatkowego uwierzytelnienia.
- „„UseTPMPIN”=dword:00000002” – Umożliwia użycie kodu PIN TPM do uwierzytelniania. Ponownie, 00000002 wskazuje, że kod PIN jest wymagany podczas procesu rozruchu.
- „„UseTPMKey”=dword:00000002”– To ustawienie włącza użycie klucza TPM do uwierzytelniania, wymagając obecności klucza do odblokowania dysku podczas rozruchu.
- „„UseTPMKeyPIN”=dword:00000002”– Podobnie jak w poprzednich ustawieniach, umożliwia to użycie kodu PIN w połączeniu z kluczem TPM w celu zapewnienia większego bezpieczeństwa podczas uruchamiania.
- „„EnableNonTPM”=dword:00000001” – To ustawienie umożliwia korzystanie z funkcji BitLocker w systemach, które nie mają modułu TPM. Można ją odblokować za pomocą hasła lub klucza USB.
- „”UsePartialEncryptionKey”=dword:00000002” – Włącza użycie częściowego klucza szyfrującego w celu odzyskiwania lub dostępu do danych.
- „”UsePIN”=dword:00000002” – Włącza korzystanie z kodu PIN w celu uzyskania dostępu do zaszyfrowanego dysku.
Kod odpowiedzialny za modyfikację ustawień rejestru związanych z BitLockerem pojawia się dziewięć razy w całym skrypcie. Podczas gdy oryginalny skrypt używał „reg.exe add” do tych modyfikacji, ta odmiana dodała „WMIC.exe” do niektórych zmian. Powód tej zmiany jest niejasny, ale daje ona obrońcom dodatkowe możliwości wykrywania złośliwej aktywności.
Konfiguracja (ponowna) BitLockera
Skrypt wykonuje polecenie „manage-bde -protectors -delete <drive>” w celu usunięcia istniejących zabezpieczeń z chronionego dysku.
Ochraniacze to mechanizmy używane przez BitLocker do ochrony klucza szyfrowania. Mogą obejmować sprzętowe zabezpieczenia, takie jak moduły TPM, lub zabezpieczenia programowe, takie jak hasła lub klucze odzyskiwania. Usuwając wszystkie zabezpieczenia, skrypt ma na celu uniemożliwienie ofierze odzyskania danych lub odszyfrowania dysku.
Po usunięciu wcześniej skonfigurowanych metod odzyskiwania dla funkcji BitLocker skrypt konwertuje wcześniej wygenerowany ciąg strRandom na ciąg bezpieczny przy użyciu polecenia „cmdlet ConvertTo-SecureString -splaintext -force”.
Polecenie „Enable-BitLocker -qe -pwp -pw $ a” służy do konfigurowania szyfrowania BitLocker dla określonego dysku. Ten krok konfiguracji nie uruchamia natychmiast procesu szyfrowania, ale przygotowuje dysk do niego. Używane są skrócone parametry przełącznika. Oto bardziej szczegółowe wyjaśnienie ich działania:
- „-qe to alias dla -UsedSpaceOnly”: Ten parametr przełącznika instruuje BitLocker, aby szyfrował tylko tę część dysku, która jest aktualnie używana, pozostawiając nieprzydzielone miejsce nietknięte.
„-pwp to alias dla -PasswordProtector”: Ten parametr przełącznika określa, że hasło będzie używane do zabezpieczenia klucza szyfrowania woluminu. - „-pw to alias dla -Password”: Ten bezpieczny parametr ciągu definiuje rzeczywiste hasło, które zostanie użyte do odblokowania zaszyfrowanego dysku, $a to zmienna przechowująca wcześniej wygenerowane hasło.
Następnie polecenie cmdlet „Resume -BitLocker -MountPoint <drive>” jest używane do uruchomienia (lub wznowienia) procesu szyfrowania, który trwa około 10 minut, zgodnie z plikami dziennika. Rzeczywisty czas szyfrowania może się różnić w zależności od kilku czynników, w tym rozmiaru szyfrowanego dysku, szybkości sprzętu systemu i ilości danych aktualnie znajdujących się na dysku.
Prześlij hasło
W poniższej sekcji opisano, w jaki sposób skrypt przesyła nowo wygenerowane hasło na serwer kontrolowany przez osobę atakującą.
Funkcja „Stream_StringToBinary” konwertuje ciąg tekstowy do formatu binarnego. Tworzy obiekt „ADODB.Stream” do obsługi danych, ustawia tryb strumienia na tekst, zapisuje ciąg wejściowy do strumienia, konwertuje strumień do formatu binarnego, a następnie odczytuje dane binarne. Ten proces jest używany do przygotowania wygenerowanego hasła do transmisji sieciowej lub innych operacji wymagających danych binarnych.
Kolejny fragment kodu wykorzystuje „TryCloudflare”, bezpłatną usługę oferowaną przez Cloudflare, która umożliwia użytkownikom tworzenie tymczasowych tuneli dla lokalnych serwerów bez konieczności posiadania pełnego konta Cloudflare.
Używanie dynamicznie generowanych subdomen pozwala atakującemu na utrzymywanie dyskretnego i kontrolowanego połączenia z zainfekowaną maszyną, co umożliwia mu odbieranie skradzionych danych bez skomplikowanej infrastruktury. Podczas gdy „TryCloudflare” samo w sobie jest legalną usługą, jego niewłaściwe użycie w tym kontekście podkreśla potencjał złośliwych aktorów do wykorzystywania legalnych narzędzi do nikczemnych celów.
Ustawienie nagłówka „Accept-Language” w żądaniu HTTP na „ fr” może oznaczać, że atakujący używa go do filtrowania niechcianych połączeń.
Ten kod odpowiada za przesyłanie informacji o zainfekowanej ofierze za pomocą żądania HTTP POST do podmiotu atakującego.
Zebrane informacje obejmują nazwę hosta, nazwę systemu operacyjnego (napis OS), zaszyfrowane dyski i losowo wygenerowane hasło. Dane te służą do identyfikacji naruszonego systemu i dostarczenia atakującemu niezbędnych informacji do odszyfrowania. Przykładem takiego ciągu jest „WIN-0Q8BALHTUT8 Microsoft Windows Server 2022 Standard C:, QsexeTd41GoWRNZE8Oeo2RQZO#EO*fY-HU2fzxEEwvj5RIS70qiqYGU-SRCsJN0B”.
Sprzątanie
Skrypt kończy się próbą wyczyszczenia śladów. Sprawdza, czy bieżący komputer jest określonym (zakodowanym na stałe) kontrolerem domeny i jeśli tak, usuwa powiązane pliki z „SYSVOL”.
Na wszystkich komputerach wyłącza reguły Zapory systemu Windows, usuwa pliki audytu (dzienniki zdarzeń programu PowerShell) i próbuje usunąć zaplanowane zadania o nazwach „Logowanie” i „Dysk kobiet”.
Te nazwy zadań są często losowe, aby uniknąć wykrycia. Skrypt zawiera błąd: odwołuje się do zadań według ich oryginalnych nazw zamiast najnowszych wersji.
Na koniec skrypt inicjuje zamknięcie systemu, wyświetlając użytkownikowi zaszyfrowany ekran BitLockera, na którym podczas logowania pojawia się prośba o podanie hasła.
Podczas próby odzyskania dostępu do funkcji BitLocker na ekranie wyświetlane są dane kontaktowe sprawcy zagrożenia.
Wnioski i zalecenia
ShrinkLocker to nowy szczep ransomware, który wykorzystuje unikalne podejście do szyfrowania systemów. Wykorzystując BitLocker, legalną funkcję systemu Windows, może szybko szyfrować całe dyski, w tym dyski systemowe. W przeciwieństwie do tradycyjnego ransomware, ShrinkLocker nie wprowadza własnego mechanizmu szyfrowania, ale zamiast tego manipuluje BitLockerem, aby osiągnąć swoje złośliwe cele.
Proaktywne monitorowanie określonych dzienników zdarzeń systemu Windows może pomóc organizacjom identyfikować i reagować na potencjalne ataki BitLocker, nawet na wczesnym etapie, na przykład, gdy atakujący testują swoje możliwości szyfrowania. W szczególności śledzenie zdarzeń ze źródła „Microsoft-Windows-BitLocker-API/Management”, w szczególności tych o identyfikatorach zdarzeń 776 (usunięcie protektorów) i 773 (zawieszenie BitLocker).
Chociaż monitorowanie może pomóc w wykrywaniu, istnieje również konfiguracja zasad grupy, która może działać jako proaktywna prewencja. Konfigurując BitLocker do przechowywania informacji odzyskiwania w „Active Directory Domain Services (AD DS)” i wymuszając zasadę „Nie włączaj BitLocker, dopóki informacje odzyskiwania nie zostaną zapisane w AD DS dla dysków systemu operacyjnego”, organizacje mogą znacznie zmniejszyć ryzyko ataków opartych na BitLocker.
Zasada „Nie włączaj BitLockera, dopóki informacje o odzyskiwaniu nie zostaną zapisane w AD DS dla dysków systemu operacyjnego” zapewnia, że szyfrowanie BitLockera nie może zostać uruchomione, dopóki niezbędne informacje o odzyskiwaniu nie zostaną bezpiecznie zapisane w Active Directory. Zapobiega to nieautoryzowanym próbom szyfrowania, ponieważ atakujący musiałby zarówno zaszyfrować dysk, jak i zlokalizować i usunąć informacje o odzyskiwaniu z AD.
Atakujący mogą usunąć istniejące zabezpieczenia i ustawić nowe hasło, ale nie mogą rozpocząć procesu szyfrowania bez wcześniejszego zapisania informacji umożliwiających odzyskanie danych w usłudze AD DS.
Uwaga: Należy pamiętać, że tę politykę należy wdrożyć i ocenić ostrożnie, zgodnie z ustalonymi najlepszymi praktykami zarządzania zmianą. Ważne jest, aby wziąć pod uwagę, że aktorzy zagrożeń mogą zidentyfikować i wyłączyć tę politykę przed uruchomieniem ataku. Niemniej jednak środek ten służy jako cenny środek odstraszający, szczególnie w przypadku mniej wyrafinowanych atakujących, i może zapewnić obrońcom dodatkową okazję i czas na reakcję oraz złagodzenie skutków ataku.
Ogólna rekomendacja zespołu Bitdefender to skuteczna obrona przed przeszłymi, obecnymi i przyszłymi zagrożeniami pozostaje taka sama: wdrażanie wielowarstwowej, dogłębnej architektury obronnej. Ataki ransomware, zwłaszcza te obejmujące podmioty stowarzyszone RaaS, są w zasadzie ręcznymi operacjami hakerskimi.
Zapobieganie: Krytycznym pierwszym krokiem w łagodzeniu ryzyka ataków ransomware jest minimalizowanie powierzchni ataku. Obejmuje to aktualizowanie systemów najnowszymi poprawkami zabezpieczeń, zwłaszcza tych narażonych na działanie Internetu, aby zapobiec wykorzystaniu znanych słabości. Ponadto wdrożenie uwierzytelniania wieloskładnikowego (MFA) znacznie zmniejsza ryzyko nieautoryzowanego dostępu, nawet jeśli dane uwierzytelniające zostaną naruszone przez phishing lub inne środki. Minimalizowanie liczby systemów narażonych na działanie Internetu i wdrażanie silnych kontroli dostępu może dodatkowo zmniejszyć powierzchnię ataku.
Ochrona: Wdrażając wiele warstw zabezpieczeń na wszystkich urządzeniach i użytkownikach, organizacje mogą tworzyć znaczące przeszkody dla podmiotów stanowiących zagrożenie, którym uda się ominąć początkowe środki obronne. Istotne jest znalezienie właściwej równowagi między blokowaniem złośliwych działań a oznaczaniem podejrzanych zachowań, przy jednoczesnym minimalizowaniu fałszywych alarmów i wpływu na wydajność.
Wykrywanie i reakcja: Większość ataków ransomware zajmuje co najmniej kilka dni, zazwyczaj tygodnie, aby w pełni naruszyć sieć. Znaczna część tego czasu jest poświęcana na ruch boczny, w którym atakujący uzyskują dostęp do dodatkowych systemów i danych. Nasze dochodzenia stale ujawniają, że sprawcy zagrożeń zazwyczaj generują wystarczające wskaźniki naruszenia, aby można je było wykryć. Jednak dwie typowe pułapki utrudniają skuteczną reakcję.
Po pierwsze, jest to brak solidnych rozwiązań wykrywania i reagowania na zagrożenia w punktach końcowych (EDR) lub rozszerzonego wykrywania i reagowania (XDR). Rozwiązania EDR i XDR zostały zaprojektowane w celu skrócenia czasu, w którym aktorzy zagrożeń pozostają niewykryci, poprzez analizowanie i korelowanie podejrzanych zachowań, nawet jeśli nie można ich od razu sklasyfikować jako złośliwych.
Po drugie, podczas gdy narzędzia wykrywania, takie jak EDR i XDR, mogą identyfikować anomalie, skuteczne operacje bezpieczeństwa są wymagane do badania, ustalania priorytetów i reagowania na te alerty. Niedostatecznie obsadzone lub przeciążone zespoły ds. bezpieczeństwa mogą mieć trudności z analizowaniem tych alertów, co może prowadzić do eskalacji incydentów bezpieczeństwa do pełnowymiarowych naruszeń bezpieczeństwa. Inwestując w dedykowane zespoły ds. operacji bezpieczeństwa lub bardziej przystępne cenowo usługi zarządzanego wykrywania i reagowania (MDR), organizacje mogą znacznie zmniejszyć ryzyko tych naruszeń.
Te zalecenia opierają się na obszernych badaniach ransomware zespołu Bitdefender. Eksperci skorzystali z ich obecnej wiedzy na temat taktyk ransomware z dostępnymi kontrolami bezpieczeństwa w dokumencie „Stopping Ransomware: A Technical Deep Dive into Attack Vectors & Mitigation Strategies with Bitdefender”.
Autor
Piotr R
Artykuły które mogą Ci się spodobać
Poradniki • Zagrożenia Internetowe
Cyberzagrożenia dla graczy – jak chronić swoje konta i sprzęt?
Piotr R
3 grudnia 2024
Bezpieczeństwo w Internecie • Poradniki
Antywirus czy VPN – jaką ochronę wybrać?
Piotr R
28 listopada 2024