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:
[+] Blokowanie procesow przywracania systemu
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 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”):
.exe .msi .dll .pif .scr .sys .msp .com .lnk .hta .cpl .msc .bat .cmd
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:
1KXw7aJR4THWAxtnxZYzmysdLXVhLfa97n 18mfoGHSfe9h145e8djHK5rChDTnGf PDU9
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.
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”.
Próbowaliśmy się skontaktować z osobami odpowiedzialnymi za stworzenie DMA Lockera. Napisaliśmy na podawane przez nich adresy email:
[email protected] [email protected] [email protected]
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: 4190df2af81ece296c465e245fc0ca
[!] 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.
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.
Komentarze
No i gdzie są marudy, że za dużo linków a za mało wpisów? Teraz widzicie, że autor nie próżnował, ale pisał autorski (nie jakieś tłumaczenie zagranicznego arta) wpis. A na rozkminy potrzeba czasu. Tak więc darujta sobie takie wycieczki… ;)
Artykuł zawdzięczamy nieocenionemu Łukaszowi, który od paru tygodni podrzuca takie perełki. Zwyczajowy autor zapracowany w innych projektach, ale wkrótce powróci ;)
Siema, no jestem, nie wiedziałem, że jestem aż tak skuteczny ( ͡° ͜ʖ ͡°)
Martwi mnie fakt, że po tym artykule będzie wiedział co poprawić w wersji 0.0.2
Poziom wersji 0.0.1 wskazuje, że ta wiedza nie wystarczy…
To co Adam napisał to oczywiście prawda. Dodam tylko, że istnieje dużo opisów zdecydowanie lepszych ransomware, więc jeśli autor będzie chciał czerpać inspirację to może to zrobić z wielu innych źródeł :)
Tu jest po prostu tak źle, że trzeba by było napisać ransomware całkiem od nowa.
Cześć! Jestem albańskim wirusem komputerowym…
a ja jestem królem Albani
spalimy wirusa z tytoniem?
Możecie opublikować tą ogólnikową odpowiedź?
Наша команда прямо сейчас недоступна
Myślałem, że będzie coś w stylu „Paszoł won, swołocz!” :D
Powinniście się spowiadać z pisania takich artykułów. Gdy przeczytałem, że takie lamerskie ransomware zarobiło 4k, to zacząłem się zastanawiać, czy nie warto się w to pobawić. I na pewno nie jestem jedynym.
Jeżeli zarobisz więcej, to licz się z tym, że odpowiednio chętniej zajmie się tą sprawą np policja.
policja nic nie może
Jak na to co trzeba zrobić i ewentualne ryzyko nie rozumiem cię. Pewnie – w Polsce nie wszystkie firmy płacą nawet te 2-4 k od ręki za MIESIĄC pracy a autor wirusa był wyjątkowo leniwy i bezczelny.OK.Ale tak z drugiej strony – nawet taki poziom programowania wystarczyłby w zupełności żeby wyklepać cokolwiek nadającego się do sprzedaży w jakimś AppStore na podstawie podręcznika. Nawet jak będzie głupio działać to kto to będzie reversował i po co ? I wcale nie musiałaby to być jakaś mądra aplikacja (broń boże szyfrowanie jak widać) – ludzie różne głupoty kupują i tak.Jak nie u nas to na zachodzie.
Aha i dopisując – autor wirusa mógłby równie dobrze oszukiwać na zwykły Social Engineering bez jakiegokolwiek programowania skoro było go stać by wymyślić taką zagrywkę ze straszeniem utratą danych w razie podania niewłaściwego kodu. Podejrzewam,że zarobiłby więcej jak te 4 btc jakby wysilił mózg (jak jakiś tam ma). Przykładów praktycznych na wszelki wypadek nie podam,nie chcę być współwinnym czy coś,a i proceder zresztą przecież potępiam.
HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
Male pytanie, skoro brak szyfrowania to jak Pan Lukasz wytlumaczy ofiarom, ze nie potrafi odzyskac ich danych?
Наша команда прямо сейчас недоступна
Nie jestem przekonany, czy nazywanie tego oprogramowania tak, jak zatytułowany jest artykuł, ma jakiekolwiek znaczenie. Wszak autor tego syfu ma gdzieś, co o tym myślisz Ty, czy inni. Ważne, aby znaleźli się tacy, którzy zapłacą.
Dla porównania można postawić Ciebie koło jednego z czołowych programistów Apple i nazwać debilem. Można? Można. To jednak nie zmieni faktu, że Ty, jako wspomniany wczesniej debil, piszesz tutaj artykuły i przynoisz zysk poprzez to, co robisz.
Zatem, czy psikus udany od strony kodu, czy też nie – nie ważne. Ważne, aby się „sprzedawał” :)
Dokładnie tak. Są zrobione błędy, ale większość z powyższych ludków by tego nie napisała. Nie wiem po co się wyśmiewacie z tego. Koleś zarobił – znaczy zadziałało.
Z3S – zróbcie konkurs na najlepszy ransomware.
„- Zią, czytam sobie czytam o tych hakierach i pomyślałem że i ja bym mógł, w końcu miałem szóstkę z infy w gimbazie. I napisałem takie coś – zobacz – nawet czerwone tło dałem, tak komunistycznie, będzie strasznie.
– I co? Jak idzie?
– Napisali o mnie w z3c.
– Ooo! Wow! Zasłużyłeś sobie!
– Tak… Wiem… :(”
Wróć na informatykę, zią, tam cię nauczą jak napisać makra w vbs.
„tam cię nauczą jak napisać makra w vbs”
zazdroszczę szkoły
klucz ma znaczenie – a że nie jest sprawdzany to inna sprawa. jeśli wpiszemy błędny to po prostu pliki są psute poprzez wykonanie algorytmu deszyfrującego z błędnym kluczem. ten algorytm jest stosunkowo prosty, ale nie aż tak trywialny, to nie jest zwykły xor! program ma osobną funkcję do szyfrowania i odobną do odszyfrowywania – funkcja nie jest ona samoodwracalna
To ransomware na pewno nie z Albanii ?
To teraz można się na spokojnie zabrać za TeslaCrypt 3.0, który objawia się, rozszerzeniami .xxx, .ttt, .micro. Temat uciążliwy i ostatnio na czasie :D
Czyli amatorka pelna geba. Przypomina mi to dowcip o albanskim wirusie komputerowym. Panowie Z3S, zamiast instruowac tumana/tumanow odpowiedizalnych za ta amatorke, powinni raczej skupic sie na ich wysmiewaniu.
A propo wyśmiewania – produkt doczekał się już laurki na swoją cześć: https://www.hybrid-analysis.com/sample/53a133b3a269e42838c73b088a2214cf689909e7c144bb925c81d2f0327f51fd?environmentId=1 ;) – dodatkowo, „poprawiona” wersja szyfruje tylko pliki w katalogu „lock_me”
Mi w artykule zabrakło jednej najistotniejszej rzeczy. Znaczy klucza deszyfrującego. Skoro jest takie proste do analizy czemu nie skupiono się właśnie na tym. Zamiast tego podano wiele nieistotnych informacji.
algorytm jest symetryczny – ten sam klucz szyfruje jak i deszyfruje. klucz ma 32 bajtów i jest zahardkodowany na końcu oryginalnej próbki. ta próbka po wykonaniu jest kasowana. pozostawiana kopia – ntserver.exe już tego klucza nie ma (jest zamazywany). jeśli masz oryginalną próbkę (bo np przyszła w mailu jako załącznik) to odzyskanie plików jest trywialne. jeśli jej nie masz, no to cóż – będzie trzeba poszukać klucza. mimo to, algorytm to nie jest jakieś silne krypto i da radę złamać. plik szyfrowany jest kawałek po kawałku – 16 bajtow na raz. może o tym napiszę za jakiś czas.
No i tu sprostowanie ode mnie – „dziwne” krypto okazało się, po dokładniejszym sprawdzeniu – własną implementacją AES ECB mode, na 16 bajtowych fragmentach. A więc nie do złamiania. Bardzo przepraszam za pomyłkę – wszystkich, łącznie z twórcą DMA Lockera (chociaż napisał ogólnie słaby kod, to tu akurat błędu nie zrobił).
Wypadałoby podać źródło ransomware.
Zawsze warto wiedzieć jak zapobiegać zanim zaczniemy leczyć ;)
Nie rozumiem tego. Przecież takie szyfrowanie musiałoby zabrać kupę czasu, w trakcie którego użytkownik widziałby że dysk pracuje bez uzasadnienia. Przerywamy i walczymy, najlepiej przez natychmiastowy format dysku w innej maszynie lub z pen-bota. A teraz to już problem jak odzyskać skasowane pliki lub maksimum ich fragmentów by te fragmenty wrzucić w nowe pliki. Nie zadziała? Np. audio-wizualny dontent w wielu formatach spokojnie można odzyskiwać z niepełnych lub podziurawionych plików (reminiscencja: kiedyś jakimś programem porysowaną płytę DVD odzyskiwałem w taki sposób, zaznaczając w opcjach np. by ileśtam razy próbował laserem wyciągać bity z nie-doczytywalnych sektorów). A nie ma programów pokazujących położenie pliku w konkretnych miejscach na dysku? Mam zaszyfrowany plik i wybieram sobie które bity chcę mu uciąć lub recover. Po iluśtam próbach, przy poznawaniu formatów, takie np. wordy, excele, czy pdfy na pewno da się satysfakcjonująco od-sztukować. Czy nie jest tak? (a jak nie ma łatwych narzędzi do czytania/kasowania konkretnych bitów położenia pliku, to pewnie można wykombinować jak po wykasowaniu czegoś wrzucić coś na miejsce tego, by ucięło tylko jakiś tego fragment i po wielu próbach (kopiować odzysk i tę kopię wykasowywać, nadpisywać, i odzyskiwać do skutku) znać ileśtam uniwersalnych procedur dla różnych sytuacji … (??)
Teoria praktyce nie równa ;)
Teoretycznie systemy zapisu stosowane w windows pozwalają na odzyskanie skasowanych danych o ile nie zostały nadpisane i do tego momentu da radę coś zadziałać – programy do odzyskiwania danych poradzą sobie lepiej lub gorzej, ale jesteś w stanie coś odzyskać.
W momencie gdy plik jest szyfrowany/haszowany nie ma takiej opcji ponieważ lokacja pliku na dysku się nie zmienia (mowa o dyskach magnetycznych, nie SSD) i następuje nadpisanie bit po bicie. I tu niestety teoria rozmija się z praktyką, firmy co inkasują dziesiątyki tysięcy złotych jak i dolarów mają WIELKI (wielkimi literami ;) ) problem z odzyskaniem nadpisanych danych. Kiedyś czytałem wyniki badań dot. odzyskiwania nadpisanych danych i o ile prawdopodobieństwo odzyskania pliku po jednokrotnym nadpisaniu wynosi z tego co pamiętam ok. 15% tak plik przy dwukrotnym nadpisaniu jest nie do odzyskania. Pamiętam, że liczyli 50 nadpisań i procenty leciały na łeb na szyję.
Tak więc wracając do Twojej teorii o odzyskiwaniu bit po bicie, że z porysowaną płytą się udało (nie nastąpiło tam nadpisanie) ma się nijak do dysków HDD.
Zapis na SSD to jeszcze inna para „kaloszy”. Zapis następuje do rozproszonych sektorów i nadpisywanie pliku wg. prędkości zapisu/odczytu – jeśli dany sektor ma zbyt wolny odczyt/zapis to fragment pliku jest zapisywany do następnego sektora zaś zmieniają się tylko wektory wskazujące na ciągłość pliku. W takim wypadku odzyskanie danych zaszyfrowanych/zahashowanych jest w większym procencie możliwe (mogą wystąpić zapisy w innych sektorach), niestety uszkodzenie jednej z n kości pamięci może skutkować uszkodzeniem wszystkich danych na dysku.
Obawiam się, że OS nie przywiązuje zbyt dużej wagi do tego gdzie „nadpisuje” plik, szczególnie jeśli malware wyłącza wszelkie narzędzia do ochrony danych (w tym tzw ochronę Systemu).
Dlatego metoda Guttmana stosuje ponad 30 iteracji zapisów z różnym wzorem? Polecam https://en.wikipedia.org/wiki/Data_erasure – artykuł o standardach usuwania danych zatwierdzonych przez różne instytucje.
Jasne, na komputerze firmowym ?
Jak mi ktoś zaszyfruje moje filmy przyrodnicze dla dorosłych, bede bardzo zly
https://blockchain.info/address/1KXw7aJR4THWAxtnxZYzmysdLXVhLfa97n?filter=2
Już 8 BTC
Nowa (trzecia) wersja DMA Locker-a opisana jest tutaj: https://blog.malwarebytes.org/intelligence/2016/02/dma-locker-strikes-back/
jeśli szyfrowanie jest XOR=em to
XOR-owanie pliku zaszyfrowanego plikiem niezaszyfrowanym da nam klucz szyfrowania..