DMA Locker czyli komicznie nieudany i pełen błędów polski ransomware

dodał 31 stycznia 2016 o 19:29 w kategorii Krypto, Złośniki  z tagami:
DMA Locker czyli komicznie nieudany i pełen błędów polski ransomware

Tworzenie oprogramowania związanego z kryptografią to proszenie się o problemy. Boleśnie przekonał się o tym autor polskiego ransomware, które nie dość, że często nie działa, to jeszcze używa własnej kryptografii.

Jak już wspominano o mnie w krótkim wstępie pod pierwszym artykułem, moim ulubionym zajęciem jest analizowanie polskiego i dziwnego złośliwego oprogramowania. Dlatego gdy zobaczyłem wpis haszerezade na Twitterze na temat polskiego ransomware przestałem się obijać, od razu zabrałem się do jego analizy i zacząłem pisać (tym razem krótszy niż ostatnio) artykuł na ten temat. Okazało się, że złośliwe oprogramowanie jest bardzo proste do analizy – próbki, do których uzyskało dostęp laboratorium ZaufanejTrzeciejStrony nie były ani spakowane ani zaciemnione. Właściwie nie było żadnych metod, które zapobiegały by ich analizie, a nawet było kilka elementów, które analizie pomagały. Poprawki w analizie (a było ich wiele, za co przepraszam) zawdzięczamy hasherezade.

Najpierw zabiorę Ci kopie bezpieczeństwa!

Pierwszym zadaniem, które wykonuje to złośliwe oprogramowanie jest uruchomienie wątku odpowiedzialnego za wymuszenie zakończenia kilku procesów, które mogą się znaleźć w naszym systemie i są związane z kopiami zapasowymi:

  • rstrui.exe – usługa przywracania systemu Windows,
  • ShadowExplorer.exe – narzędzie pozwalające na uzyskanie dostępu do VSS – usługi kopiowania woluminów w tle. System Windows (od XP SP2 wzwyż) wykonuje kopie usuniętych bloków dysku na wypadek, gdyby użytkownik je usunął przypadkiem,
  • sesvc.exe – usługa VSS opisana powyżej,
  • cbengine.exe – usługa wykonująca kopie zapasowe do chmury firmy Microsoft – Azure.

Procesy są rozpoznawane po nazwach i zatrzymywane. Na szczęście twórcy złośliwego oprogramowania w kodzie umieścili polskie opisy, które zostają wypisane na konsolę i miały służyć pomocą przy analizie błędów w oprogramowaniu. Tuż po uruchomieniu wątku odpowiedzialnego za zatrzymanie wspomnianych procesów pojawia się komunikat:

Następnie dodawane są dwa wpisy do klucza rejestru odpowiedzialnego za automatyczne uruchamianie aplikacji przy starcie systemu. Jeden z nich oczywiście odpowiada za uruchomienie złośliwego oprogramowania (klucz nazywa się cssys), natomiast drugi uruchamia notatnik z plikiem %ALLUSERSPROFILE%\Dokumenty\cryptinfo.txt (w tym przypadku klucz nazywa się cryptedinfo), gdzie znajdują się instrukcje dotyczące opłat, do których dojdziemy za moment. Plik złośliwego oprogramowania jest kopiowany do lokalizacji %ALLUSERSPROFILE%\Dokumenty\fakturax.exe. Jeśli chcecie się dowiedzieć do jakiej lokalizacji rozwiązują się wspomniane zmienne środowiskowe to polecam wpis na Wikipedii dotyczący zmiennych środowiskowych.

Potem zaszyfruję Ci (prawie) wszystkie pliki!

Następnie tworzone i wyświetlane jest okno programu zaprezentowane na zrzucie ekranu poniżej. Tworzony jest też plik %ALLUSERSPROFILE%\Dokumenty\date_1.txt zawierający czas infekcji. Uważni czytelnicy być może zauważyli, że wszystkie pliki tworzone są w katalogu „Dokumenty”. Co ciekawe, jeśli tego katalogu nie ma (bo używamy innej niż polska wersji systemu Windows) to program zgłasza błąd i się nie wykonuje – nasze pliki nie będą zaszyfrowane. Istnieje też angielska wersja tego złośliwego oprogramowania, tzn. taka z poniższym oknem napisanym po angielsku. Niestety (lub na szczęście) nie zadziała ona na angielskiej wersji systemu Windows właśnie z tego powodu.

Okno DMA Locker

Okno DMA Locker

Okno zawiera informację na temat kwoty, którą trzeba zapłacić (2000 PLN, czyli 1.3 BTC lub 536 funtów, czyli 2 BTC w wersji anglojęzycznej), adres portfela, na który trzeba wpłacić BTC oraz informację o tym jak zdobyć „klucz deszyfrujący”. Jest również informacja o tym, że musimy wysłać bitcoiny w czasie 96 godzin, bo w przeciwnym wypadku klucz deszyfrujący zostanie usunięty z bazy danych. Autor również pisze, że dane zostały zaszyfrowane za pomocą algorytmów AES-256 oraz RSA-2048. Są to nieprawdziwe informacje, gdyż nie ma żadnej „bazy danych”, a w niej nie ma „klucza deszyfrującego” – symetryczny algorytm szyfrowania wraz z kluczem jest zapisany na stałe w próbce. Co ciekawe, po zaszyfrowaniu plików próbka jest kopiowana bez klucza szyfrującego, co ma utrudnić odszyfrowanie plików. Identyfikator zainfekowanego komputera widoczny w punkcie 3 jest również na stałe zapisany w złośliwym oprogramowaniu – nie jest w żadnych sposób tworzony. Okno zawiera także, z jakiegoś powodu ukryte, linki do hasła „Bitcoin” na Wikipedii oraz link do strony SecurityLedger, gdzie znajduje się oświadczenie, w którym FBI twierdzi, że okup za ransomware „lepiej zapłacić”.

Następnie przeglądane są wszystkie pliki znajdujące się na wszystkich dostępnych dyskach i są szyfrowane za pomocą algorytmu symetrycznego, którego niestety nie rozpoznaję. Wyjątkiem są pliki z następującymi rozszerzeniami (zwane w złośliwym oprogramowaniu „restriction path”):

Pliki te nie są szyfrowane, ponieważ są potrzebne, aby system Windows działał poprawnie. W trakcie tej operacji używany jest szyfr oparty o operację XOR ze zdefiniowanym strumieniem klucza, za pomocą własnego systemu kryptograficznego. No dobrze, ale co jeśli ktoś sobie zaszyfruje dysk dwa razy za pomocą tej samej próbki? Dlatego każdy z zaszyfrowanych plików jest oznaczany ciągiem znaków „ABCXYZ11”, aby było wiadomo, że jest zaszyfrowany. Inaczej mówiąc:

  • Jeśli funkcja ma ustawioną flagę „szyfruj” to szyfruje wszystkie pliki, które nie zaczynają się od „ABCXYZ11” i dodaje ten ciąg znaków na początku pliku.
  • Jeśli funkcja ma ustawioną flagę „deszyfruj” to sprawdza czy plik zaczyna się od „ABCXYZ11” i wtedy usuwa ten ciąg znaków i deszyfruje resztę pliku.

Co ciekawe autor zdawał sobie sprawę z dosyć dużej gadatliwości złośliwego oprogramowania – każda operacja jest logowana na konsolę. Dlatego właśnie co jakiś czas wykonywana jest komenda „cls” odpowiadająca za wyczyszczenie wszystkich informacji z okna konsoli.

Zasięg kampanii

Analizowane próbki odwoływały się do dwóch różnych portfeli bitcoin:

Na jeden z nich dwukrotnie już wysłane zostały 2 BTC, co może oznaczać, że dwie osoby zapłaciły okup (chociaż może to być także przelew wysłany przez autorów oprogramowania by sugerować, że ktoś już zapłacił – druga wpłata wygląda zdecydowanie jakby pochodziła z bitcoinowej”pralni). Na forum internetowym elektroda.pl pojawiły się wpisy dotyczące tego złośliwego oprogramowania – jeden z użytkowników pytał czy jest jakiś sposób na rozszyfrowanie plików, a inny przyznał się do zapłacenia okupu.

Wpis na forum elektroda.pl dot. okupu DMA Locker

Wpis na forum elektroda.pl dot. okupu DMA Locker

Klucz deszyfrujący

Podany przez użytkownika klucz deszyfrujący po prostu nie jest sprawdzany przez złośliwe oprogramowanie. Zamiast sprawdzać poprawność klucza autor wolał postraszyć zainfekowanego użytkownika, że utraci pliki jeśli podał zły klucz. Okno z taką informacją pojawia się po wpisaniu klucza i naciśnięciu „ODSZYFRUJ”.

Ostrzeżenie DMA Locker po wprowadzeniu klucza

Ostrzeżenie DMA Locker po wprowadzeniu klucza

Próbowaliśmy się skontaktować z osobami odpowiedzialnymi za stworzenie DMA Lockera. Napisaliśmy na podawane przez nich adresy email:

lecz otrzymaliśmy jedynie krótką ogólnikową odpowiedź po rosyjsku – prawdopodobnie z translatora.

Podsumowanie

Mimo wszystkich wpadek autorów należy zwrócić uwagę na to, że to złośliwe oprogramowanie próbuje uniemożliwić nam dostęp do kopii bezpieczeństwa. Dlatego też przypominamy, aby kopie bezpieczeństwa wykonywać na osobnym nośniku, nie podłączonym na stałe do używanego komputera. Nie tylko ze względu na ransomware – jest to po prostu dobra praktyka.

Często pytacie o to jakich narzędzi używam do konkretnej analizy. W tym przypadku użyłem tylko radare2 oraz polecenia strings.

Próbki do pobrania: 4190df2af81ece296c465e245fc0caead35344b1f48764ba083e51438121e6a9.

[!] Sprostowanie [!]

Wcześniej napisaliśmy, że wystarczy podać dowolny klucz deszyfrujący. Otrzymujemy informacje (zarówno od badaczy złośliwego oprogramowania, jak i od kogoś kto podaje się za jego autora w naszych komentarzach), że klucz deszyfrujący może mieć znaczenie w procesie odszyfrowywania. Przepraszamy za pomyłkę. Z drugiej strony, klucz deszyfrujący nie wydaje się być nigdzie sprawdzany. Możliwe jest oczywiście, że autor po prostu rozszyfrowuje za jego pomocą wszystkie pliki niezależnie od jego poprawności. Niezależnie od naszej pomyłki, przestrzegamy przed pochopnym wpisywaniem klucza. Oczywiście, jeśli będziemy pamiętali jaki klucz wpisaliśmy to wyspecjalizowana firma komputerowa i tak będzie w stanie odzyskać nasze dane, ale może to wymagać dodatkowej pracy.

Poza tym, nawet jeśli klucz deszyfrujący nie miał znaczenia przy tej lub jakiejkolwiek innej kampanii, to autor wciąż może zmodyfikować złośliwe oprogramowanie tak, żeby miał znaczenie. Podobnie stało się z pierwszym ransomware, który zaobserwowany był w Polsce. Nie sprawdzał on w żaden sensowny sposób wpisywanych kodów Ukash – bonów za pomocą których dokonywano płatności okupu. Gdy została opublikowana informacja o tym, że można sobie „wytworzyć” za darmo taki (nieprawdziwy) kod to autorzy, w kolejnych wersjach, zmienili zachowanie złośliwego oprogramowania.

Poprawiliśmy jeszcze kilka innych zdań, dzięki nieocenionym komentarzom hasherezade. Mamy też specjalną wersję próbki dzięki Jej uprzejmości – tak jak przedstawiono na ekranie poniżej.

DMA Locker - komentarze autora (źródło: www.hybrid-analysis.com)

DMA Locker – wersja specjalna ;) (źródło: www.hybrid-analysis.com oraz haszerezade)

Czy muszę zatem zapłacić?

Nie. Jeśli znajdziecie wystarczająco dobrą firmę zajmującą się bezpieczeństwem. Dane są możliwe do odzyskania, żadne klucze nie „giną” i nie są „usuwane”. Nawet jeśli klucz deszyfrujący ma jakieś znaczenie to wciąż jest on na stałe zapisany w próbce i jego odzyskanie jest możliwe.