Check Point Incident Response Team (CPIRT) natknął się ostatnio na unikalną odmianę systemu ransomware wdrożoną przy użyciu podpisanego składnika komercyjnego produktu zabezpieczającego. W przeciwieństwie do innych przypadków ransomware, cyberprzestępca nie ukrywał się pod żadnym pseudonimem i wydaje się nie mieć powiązań z żadną ze znanych grup APT. Te dwa fakty, rzadkość w ekosystemie ransomware, wzbudziły zainteresowanie badaczy i skłoniły do głębszej analizy.
W trakcie badania nowego malware stwierdzono, iż wykazuje on unikalne cechy. Analiza behawioralna sugeruje, iż jest to program częściowo autonomiczny i rozprzestrzenia się automatycznie po uruchomieniu na kontrolerze domeny, jednocześnie usuwając dzienniki zdarzeń dotkniętych maszyn. Ponadto jest niezwykle elastyczny, działając nie tylko w oparciu o wbudowaną konfigurację, ale także o liczne opcjonalne argumenty, które pozwalają mu zmieniać swoje zachowanie w zależności od potrzeb operatora. Chociaż wydaje się, iż czerpał inspirację z niektórych najbardziej niesławnych rodzin systemu ransomware, zawiera również unikalne funkcje, rzadko spotykane wśród „kolegów”, takie jak bezpośrednie wywołania systemowe (syscalls).
Wiadomość o oprogramowaniu ransomware wysłana do ofiary była sformatowana podobnie do notatek ransomware Yanluowang, chociaż inne warianty pozostawiły notkę, która bardziej przypominała DarkSide. Każdy analityk, który badał nowy malware, zauważał coś nieco innego, co skłoniło Team CheckPoint do nazwania go na cześć słynnego testu psychologicznego – Rorschach Ransomware.
Procedura wykonywania
Jak zaobserwowano w naturalnym środowisku, egzekucja Rorschacha wykorzystuje następujące trzy pliki:
- cy.exe – narzędzie Cortex XDR Dump Service Tool w wersji 7.3.0.16740, nadużywane do bocznego ładowania winutils.dll,
- winutils.dll – spakowany moduł ładujący i wstrzykujący Rorschach, używany do odszyfrowywania i wstrzykiwania systemu ransomware,
- config.ini – zaszyfrowany malware Rorschach, który zawiera całą logikę i konfigurację.
Po wykonaniu „cy.exe” dzięki bocznego ładowania DLL plik „winutils.dll” jest wstrzykiwany do pamięci i uruchamiany w kontekście „cy.exe”. Główny ładunek Rorschacha – „config.ini” – jest następnie ładowany do pamięci, odszyfrowywany i wstrzykiwany do pliku „notepad.exe”, gdzie zaczyna się logika ransomware. Cały ten proces widzimy na poniższym schemacie:
Rorschach masowo tworzy nowe procesy w nietypowy sposób, uruchamiając je w trybie SUSPEND i podając sfałszowane argumenty, aby utrudnić analizę i działania naprawcze. Sfałszowany argument, który składa się z powtarzającego się łańcucha cyfry 1 na podstawie długości rzeczywistego argumentu, zostaje przepisany w pamięci i skutkuje poniższym wywołaniem:
Ransomware wykorzystuje tę technikę do wykonywania następujących operacji:
- Próby zatrzymania predefiniowanej listy usług przy użyciu polecenia „net.exe stop”.
- Usuwania woluminów w tle i kopii zapasowych korzystając z legalnych narzędzi systemu Windows, takich jak „vssadmin.exe”, „bcdedit.exe”, „wmic.exe” i „wbadmin.exe”.
- Uruchamiania „wevutil.exe”, aby wyczyścić dzienniki zdarzeń systemu Windows.
- Wyłączania zapory systemu Windows dzięki narzędzia „netsh.exe”.
Po uruchomieniu na kontrolerze domeny ransomware automatycznie tworzy nowe GPO (Group Policy Object), rozprzestrzeniając się na inne komputery w domenie. Podobna funkcjonalność była w przeszłości powiązana z LockBit 2.0, chociaż wdrożenie GPO przez Rorschach odbywa się inaczej, jak opisano poniżej:
- Rorschach kopiuje swoje pliki do folderu „scripts” na DC i usuwa je z pierwotnej lokalizacji.
- Następnie opracowuje GPO, które kopiuje pliki do folderu „%Public%” na wszystkich stacjach roboczych w domenie.
- Potem tworzy kolejną politykę, próbując zabić listę predefiniowanych procesów. Odbywa się to poprzez utworzenie zadania harmonogramu wywołującego „taskkill.exe”.
- Na koniec tworzy ostatnie GPO, które rejestruje zaplanowane zadanie na stacjach roboczych. Jest ono wyzwalane natychmiast po zalogowaniu dowolnego użytkownika, aby uruchomić główny plik wykonywalny Rorschacha z odpowiednimi argumentami.
Nota okupowa
Rorschach nie wykazuje wyraźnego podobieństwa do żadnej ze znanych grup dystrybuujących ransomware, ale wydaje się, iż czerpie inspirację z niektórych z nich.
Na przykład Ahnlab zgłosił podobny atak na początku tego roku, gdzie schemat dostarczenia i wykonania pliku był analogiczny. Jednak wysłany wtedy list z żądaniem okupu był zupełnie inny. Notatka była natomiast bardzo podobna do tej wydanej przez DarkSide, co prawdopodobnie doprowadziło do tego, iż nowe oprogramowanie ransomware zostało nazwane „DarkSide”, mimo iż grupa była nieaktywna od maja 2021 roku. Wariant Rorschacha, który przeanalizował CheckPoint, pozostawia odmienny list z żądaniem okupu, oparty na strukturze używanej przez Yanlowang, inną grupę APT:
Podsumowanie
Analiza Rorschacha ujawnia pojawienie się nowego szczepu systemu ransomware w środowisku przestępczym. Jego twórcy wdrożyli nowe techniki antyanalizy i unikania wykrycia, aby utrudnić badaczom analizę ataku i łagodzenie jego skutków. Ponadto wydaje się, iż Rorschach wziął niektóre z najlepszych funkcji wiodących ransomware i zintegrował je. Oprócz umiejętności samorozprzestrzeniania się, podnosi to poprzeczkę dla ataków z żądaniem okupu. Operatorzy i twórcy ransomware Rorschach pozostają nieznani. Nie używają brandingu, co jest stosunkowo rzadkie w kampaniach z żądaniami okupu. Na witrynie CheckPoint Research możemy znaleźć szczegółową analizę nowego ransomware oraz jego aktualne IoC.