Czasami mam ochotę spojrzeć w oczy jakiemuś twórcy wirusów i zapytać: po co i dlaczego? Z odpowiedzią na pytanie „jak” poradzimy sobie sami, ale odkrycie, co myślał dany twórca złośliwego oprogramowania, byłoby bardzo interesujące. Zwłaszcza gdy trafiamy na takie „perły”.
Bohaterem dzisiejszego artykułu jest interesujący przykład ransomware'a. Został pomyślany jako kolejne „programy wymuszające”, ale jego techniczna realizacja bardziej przypomina czyjś złośliwy żart. O tej realizacji dzisiaj porozmawiamy.
Niestety, śledzenie cyklu życia tego enkodera jest praktycznie niemożliwe – jest zbyt mało statystyk na jego temat, ponieważ, na szczęście, nie zdobył on popularności. Dlatego pominiemy jego pochodzenie, metody infekcji i inne wzmianki. Opowiemy jedynie o naszym spotkaniu z Wulfric Ransomware i o tym, jak pomogliśmy użytkownikowi uratować jego pliki.
I. Jak to się wszystko zaczęło
Do naszego laboratorium antivirusowego często zgłaszają się osoby, które padły ofiarą ransomware'ów. Pomagamy niezależnie od tego, jakie produkty antywirusowe mają zainstalowane. Tym razem skontaktował się z nami człowiek, którego pliki zostały zainfekowane przez nieznany enkoder.
Dzień dobry! Pliki na magazynie plików (samba4) zostały zaszyfrowane bez hasła dostępu. Podejrzewam, że infekcja przyszła z komputera córki (Windows 10 z domyślną ochroną Windows Defender). Komputer córki nie był włączany od tego czasu. Pliki są głównie w formacie .jpg i .cr2. Rozszerzenie plików po szyfrowaniu: .aef.
Otrzymaliśmy od użytkownika próbki zaszyfrowanych plików, notatkę o okupu oraz plik, który prawdopodobnie jest kluczem potrzebnym twórcy ransomware'a do odszyfrowania plików.
To wszystkie nasze wskazówki:
- 01c.aef (4481K)
- hacked.jpg (254K)
- hacked.txt (0K)
- 04c.aef (6540K)
- pass.key (0K)
Spójrzmy na notatkę. Ile bitcoinów tym razem?
Tłumaczenie:
Uwaga, twoje pliki zostały zaszyfrowane!
Hasło jest unikalne dla twojego komputera.Zapłać kwotę 0.05 BTC na adres bitcoin: 1ERtRjWAKyG2Edm9nKLLCzd8p1CjjdTiF
Po dokonaniu płatności wyślij mi e-mail, dołączając plik pass.key na Wulfric@gmx.com z powiadomieniem o płatności.Po potwierdzeniu wyślę ci dekrypter do plików.
Możesz zapłacić bitcoinami online na różne sposoby:
— płatność kartą kredytową
O bitcoinach:
Jeśli masz jakieś pytania, napisz do mnie na Wulfric@gmx.com
Jako bonus opowiem, jak twój komputer został zhakowany i jak chronić go w przyszłości.
Patetyczny wilk, który ma pokazać ofierze powagę sytuacji. Możliwe, że mogło być gorzej.

Rys. 1. -Jako bonus opowiem, jak chronić swój komputer w przyszłości. –Wygląda na legitne.
II. Zaczynamy pracę
Na początek przyjrzeliśmy się strukturze przesłanego próbki. Cudów nie ma, nie przypominał pliku uszkodzonego przez ransomware. Otwieramy edytor szesnastkowy i sprawdzamy. W pierwszych 4 bajtach zawarty jest oryginalny rozmiar pliku, następne 60 bajtów to same zera. Najciekawsza część znajduje się na końcu:

Rys. 2 Analizujemy uszkodzony plik. Co od razu rzuca się w oczy?
Okazało się to do bólu proste: 0x40 bajtów z nagłówka zostało przeniesionych na koniec pliku. Aby odzyskać dane, wystarczy je przenieść z powrotem na początek. Dostęp do pliku został przywrócony, ale zaszyfrowana pozostała nazwa, co jest już bardziej skomplikowane.

Rys. 3. Zaszyfrowana nazwa w Base64 wygląda jak bezsensowny zbiór znaków.
Spróbujmy rozwiązać pass.key, wysłany przez użytkownika. Widzimy w nim 162-bajtową sekwencję znaków w ASCII.

Rys. 4. 162 znaki, pozostawione na PC ofiary.
Jeśli się przyjrzeć, można zauważyć, że znaki powtarzają się z określoną częstotliwością. To może sugerować użycie XOR, gdzie występują powtórzenia, a częstotliwość zależy od długości klucza. Dzieląc ciąg na 6 znaków i stosując różne sekwencje XOR, nie uzyskaliśmy żadnego sensownego wyniku.

Rys. 5. Widzi powtarzające się stałe w środku?
Postanowiliśmy wyszukać stałe, bo tak, to też da się zrobić! I wszystkie one ostatecznie prowadziły do jednego algorytmu − Batch Encryption. Po przeanalizowaniu skryptu stało się jasne, że nasz ciąg to nic innego jak rezultat jego działania. Warto wspomnieć, że to wcale nie jest ransomware, tylko po prostu kodownik, który zamienia znaki na 6-bajtowe sekwencje. Żadnych kluczy ani innych tajemnic 🙁

Rys. 6. Fragment oryginalnego algorytmu nieznanego autorstwa.
Algorytm nie działałby poprawnie, gdyby nie jeden szczegół:

Rys. 7. Zatwierdzone przez Morpheusa.
Za pomocą odwrotnej substytucji przekształcamy ciąg z pass.key w tekście o długości 27 znaków. Szczególną uwagę zwraca tekst ludzki (prawdopodobnie) 'asmodat'.

Rys. 8. USGFDG=7.
Ponownie pomoże nam Google. Po krótkim poszukiwaniu znajdujemy interesujący projekt na GitHubie – Folder Locker, napisany w .Net i wykorzystujący bibliotekę 'asmodat' z innego konta na 'Gicie'.

Rys. 9. Interfejs Folder Locker. Zdecydowanie sprawdziliśmy pod kątem złośliwego oprogramowania.
Narzędzie to jest szyfratorem dla Windows 7 i wyżej, które jest rozpowszechniane z otwartym kodem źródłowym. Przy szyfrowaniu wykorzystywane jest hasło, które jest niezbędne do późniejszego odszyfrowania. Umożliwia pracę zarówno z pojedynczymi plikami, jak i z całymi katalogami.
Jej biblioteka wykorzystuje symetryczny algorytm szyfrowania Rijndael w trybie CBC. Warto zauważyć, że rozmiar bloku został wybrany na 256 bitów – w przeciwieństwie do standardu AES, w którym wielkość jest ograniczona do 128 bitów.
Nasz klucz jest formowany zgodnie ze standardem PBKDF2. Przy czym hasłem jest SHA-256 z wprowadzonego w narzędziu ciągu. Musimy tylko znaleźć ten ciąg, aby sformować klucz odszyfrowania.
Cóż, wróćmy do już zdejmowanego szyfru pass.key. Pamiętacie ten ciąg z zestawem cyfr i tekstem 'asmodat'? Spróbujmy wykorzystać pierwsze 20 bajtów ciągu jako hasło dla Folder Locker.
Patrzcie, działa! Słowo kluczowe pasuje i wszystko świetnie się odszyfrowało. Sądząc po symbolach hasła – jest to reprezentacja HEX określonego słowa w ASCII. Spróbujmy wyświetlić słowo kluczowe w formie tekstowej. Otrzymujemy 'shadowwolf'. Czy już czujecie symptomy wilkołactwa?
Zajrzyjmy jeszcze raz na strukturę zaatakowanego pliku, teraz już znając mechanizm działania lokalera:
- 02 00 00 00 – tryb szyfrowania nazw;
- 58 00 00 00 – długość zaszyfrowanej i zakodowanej w base64 nazwy pliku;
- 40 00 00 00 – rozmiar przeniesionego nagłówka.
Czerwonym i żółtym kolorem wyróżniono zaszyfrowaną nazwę i przeniesiony nagłówek odpowiednio.

Rys. 10. Czerwonym kolorem wyróżniono zaszyfrowaną nazwę, żółtym – przeniesiony nagłówek.
A teraz porównajmy zaszyfrowane i odszyfrowane nazwy w zapisie szesnastkowym.
Struktura odszyfrowanych danych:
- 78 B9 B8 2E – śmieci utworzone przez narzędzie (4 bajty);
- 0C 00 00 00 – długość odszyfrowanej nazwy (12 bajtów);
- dalej idzie, właściwie, nazwa pliku i dopełnienie zerami do żądanej długości bloku (padding).

Rys. 11. IMG_4114 wygląda znacznie lepiej.
III. Wnioski i podsumowanie
Wracając do początku. Nie wiemy, jakie motywy kierowały autorem Wulfric.Ransomware i jaki cel miał na myśli. Z pewnością dla przeciętnego użytkownika efekt pracy nawet takiego oprogramowania szyfrującego wydaje się ogromnym problemem. Pliki są zablokowane. Wszystkie nazwy zniknęły. Zamiast znanego obrazu – na ekranie wilk. Zmuszają do czytania o bitcoinach.
Prawda, że tym razem pod przebraniem „strasznego szyfratora” kryła się taka absurdalna i bezsensowna próba wyłudzenia, gdzie przestępca używa gotowych programów i zostawia klucze prosto na miejscu zbrodni.
Swoją drogą, o kluczach. Nie mieliśmy złośliwego skryptu ani trojana, dzięki któremu moglibyśmy zrozumieć, jak powstał ten pass.key – mechanizm pojawiania się pliku na zainfekowanym komputerze pozostaje nieznany. Pamiętam jednak, że w swojej notatce autor wspominał o unikalności hasła. Otóż, słowo kluczowe do deszyfrowania jest tak samo unikalne, jak unikalna jest nazwa użytkownika shadow wolf 🙂
A jednak, cień wilka, po co i dlaczego?
Źródło: habr.com
