Nieszablonowe zagrożenie z ciekawą metodą monetyzacji – więcej zaszyfrowanych plików to większy okup!
Spora rozprzestrzenia się za pośrednictwem urządzeń USB, podobnie jak Gamarue czy Dinihou, szyfrując pliki na zainfekowanym komputerze. Przedstawiamy sposób w jaki szkodnik zaraża system oraz szyfruje zasoby, a także w niespotykany do tej pory sposób wymusza okupu.
Załącznik pocztowy HTA – pospolity wektor ataku
Spora została wykryta przez właścicieli witryny ID Ransomware. O istnieniu wirusa poinformował na Twitterze MalwareHunterTeam. Specjaliści zajmujący się malwarem, a także użytkownicy Twittera, byli zaskoczeni profesjonalną stroną autorów ransomware oraz nietypowym rozliczaniem okupu. Większość witryn z tej kategorii przedstawia się bardzo skromnie. Pierwszą próbkę wirusa zaprezentował członek Bleepingcomputer oraz omówił ją na forum dyskusyjnym w odpowiednim temacie (Spora support topic).
Próbka to aplikacja HTA z zaciemnionym kodem VBScript. Jak wynika z informacji zamieszczonych przez Bleepingcomputer wiadomość dostarczono jako załączniki w formacie ZIP. Sprawdzenie pliku na Virus Total pokazało następującą nazwę pliku Скан-копия _ 10 января 2017г. Составлено и подписано главным бухгалтером. Экспорт из 1С.a01e743_рdf.hta.
Plik HTA zapisuje plik JScript do %TEMP%\close.js, a następnie go wykonuje. Z kolei plik JScript jest dropperem dla dokumentu Word zapisywanego w %TEMP%\doc_6d518e.docx oraz dla pliku PE (Portable Executable) zapisywanego jako %TEMP%\81063163ded.exe.
Oba pliki są otwierane przez close.js. Dokument Word otwierany jest z parametrem do wyświetlania okna, które ma skupiać na sobie uwagę natomiast plik PE zawiera parametry ukrywające okno MS Office. W rezultacie dokument jest otwierany przez domyślną aplikację dla plików .docx, Word, ale pojawia się komunikat o błędzie, wywołanym przez uszkodzony plik. Plik PE 81063163ded.exe wydaje się mieć losową nazwę, jest on jednak zhardkodowany przez dropper. To spakowany plik wykonywalny UPX zawierający payload.
Komunikat o błędzie pojawia się po otwarciu uszkodzonego dokumentu
Robak – podobne działanie do Dinihou i Gamarue
ZCryptor uznano pierwszym malwarem stanowiącym połączenie wirusa i ransomware ze względu na wykorzystanie autorun.inf. Spora idzie o krok dalej, posługując się tymi samymi technikami co Dinihou i Gambarue.
Funkcjonalność autorun.inf została usunięta w Windows 7, a także zaktualizowana siedem lat temu na Windows XP oraz Windows Vista. W gruncie rzeczy stała się ona nieefektywną techniką rozprzestrzeniania wirusów za pośrednictwem przenośnych dysków. Niemniej Spora, Dinihou i Gamarue zamiast autorun.inf używają skrótów (.LNK files)
Spora dodaje ukryty atrybut do plików i folderów na pulpicie, przenośnych dyskach oraz dysku systemowym. Ukryte foldery i pliki przy standardowych opcjach ustawień są oczywiście niewidoczne. Spora następnie umieszcza skróty systemu Windows z tą samą nazwą i ikoną co ukryte pliki i foldery jako widzialny zamiennik. Plik .LNK otwiera oryginalny plik, aby uniknąć jakichkolwiek podejrzeń i jednocześnie uruchamia złośliwe oprogramowanie. Na przykład folder C:\Windows zostanie ukryty i utworzy się plik o nazwie C:\Windows.lnk.; wygląda on dokładnie tak samo jak oryginalny folder zakładając, że w systemie Windows ustawione są standardowe opcje.
Plik .LNK wykorzystuje następującą komendę, aby uruchomić wirusa otwierając oryginalny plik. Jeśli oryginalny plik jest folderem otworzy Eksploratora Windows, żeby wyświetlić jego zawartość:
/c explorer.exe „<originalfile>” & type „<worm>” > „%%tmp%%\<worm>” & start „<originalfile>” „%%tmp%%\<worm>
Robak kopiuje się jako ukryty plik razem z .LNK files, a nazwa pliku jest generowana przez obliczenie sumy kontrolnej CRC32 dla Volume Serial Number.
Wynik jest określany przez wzór %08x%04x%04x%02x%02x%02x%02x%02x%02 (zobacz adres 0x405492). To oznacza, że nazwa dla pliku malware przedstawia się następująco a277a133-ecde-c0f5-1591-ab36e22428bb.exe.
Funkcja oblicza CRC32 podstawie VolumeSerialNumber dysku. Plik .LNK i kopia złośliwego oprogramowania znalazły się w katalogu głównym dysku systemowego.
Wirus usuwa wartość rejestru HKCR\lnkfile\isShortcut w skutek czego ikony skrótu nie pokazują charakterystycznej wygiętej strzałki w lewym dolnym rogu ikony, która mogłaby zasygnalizować użytkownikowi, że coś jest nie tak.
Wirusa uaktywnia prosta nawigacja po folderach i pulpicie oraz podwójne kliknięcie. Wykorzystując tę strategię nie tylko rozprzestrzenia się on na przenośnych dyskach, ale również szyfruje nowo powstałe pliki w systemie. Następuje blokada systemu operacyjnego i urządzenie jest niezdolne do przechowywania zasobów lub jakiejkolwiek pracy z dokumentami, dopóki wirus nie zostanie usunięty.
Funkcja, która usuwa wartość IsShortcut w rejestrze.
Szyfrowanie
Spora nie zmienia nazw zaszyfrowanych plików i skupia się na niewielkim zestawie rozszerzeń. Procedura szyfrowania pokazana jest na poniższej grafice:.backup, 7z, .rar, .zip, .tiff, .jpeg, .jpg, .accdb, .sqlite, .dbf, .1cd, .mdb, .cd, .cdr, .dwg, .psd, .pdf, .odt, .rtf, .docx, .xlsx, .doc, .xls
Spora generuje parę kluczy RSA – C1 i C2 (1024 bit). Nowo wygenerowany klucz publiczny RSA C2 służy do szyfrowania plików z kluczami AES KEY File 1 oraz AES KEY File 2, które są także utworzone przez opisywany ransomware.
Utworzony prywatny klucz RSA C1 jest zapisywany w pliku .KEY. Ten plik jest zaszyfrowany przy użyciu nowo utworzonego klucza AES Key B (256 bit). Publiczny klucz RSA A2 jest używany do zaszyfrowania klucza AES Key B. Zaszyfrowany klucz B jest dołączany do pliku .KEY.
Kolejnym ważnym plikiem w procesie szyfrowania Spora jest dokument z rozszerzeniem .LST zawierający listę wszystkich zaszyfrowanych plików z zaatakowanego komputera. Nowo utworzony klucz AES jest wykorzystany do zaszyfrowania tej listy zablokowanych plików.
Zaszyfrowana treść pliku. KEY. i zaszyfrowany klucz AES są zapisywane na dysk. Klucz AES F jest zaszyfrowany przez publiczny klucz RSA A i zawartość pliku .LST jest zaszyfrowana przy użyciu klucza AES F (256 bit).
Stosując ten schemat szyfrowania Spora nie musi pozyskiwać kluczy z serwera, wystarczy praca w trybie offline. Natomiast ofiara ataku musi przekazać plik .KEY do serwisu gdzie dokonuje płatności okupu.
Plik .KEY może być rozszyfrowany jedynie przez autora wirusa. Używając prywatnego klucza RSA A1, można odszyfrować klucz AES B, który został dołączony do pliku .KEY. Istnieje też możliwość odszyfrowania pozostałej zawartość pliku .KEY zawierającego prywatny klucz usera RSA C1 przy wykorzystaniu klucza AES B.
Następnie napastnicy mogą umieścić klucz prywatny RSA C1 w narzędziu deszyfrującym i przesłać go użytkownikowi po otrzymaniu płatności. To działanie gwarantuje, że prywatny klucza RSA A1 nie zostanie ujawniony, a narzędzie deszyfrujące zadziała tylko w przypadku jednego użytkownika. Co oznacza, że istnieje wyłącznie jeden prywatny klucz RSA A1 dla większej liczby infekcji. Jeśli klucz zostanie upubliczniony lub zostanie przechwycony przez organy ścigania, może on posłużyć do odszyfrowania plików zaszyfrowanych przez ransomware Spora. Możemy określać go mianem Master Key.
Strona płatności Spora posiada chat oraz oferuje kilka pakietów deszyfrowania różniących się ceną.
Statystyki dotyczące zaszyfrowanych plików
Spora wprowadza podział na 6 różnych grup plików ze względu na ich rozszerzenie.
Pozycja | Kategoria | Rozszerzenia plików |
1 | dokumenty Office | .odt, .rtf, .docx, .xlsx, .doc, .xls |
2 | ||
3 | CorelDraw, AutoCAD, Photoshop | .cdr, .dwg, .psd |
4 | Bazy danych | .accdb, .sqlite, .dbf, .1cd, .mdb, .cd |
5 | Obrazy | .tiff, .jpeg, .jpg |
6 | Archiwum | .backup, .7z, .rar, .zip |
Plik .KEY zapisuje te dane w formie date|user name|locale|cat1|cat2|cat3|cat4|cat5|cat6, na przykład: 13.1.2017|horst|USA|10|2|3|0|103|51
Te same dane będą wykorzystywane do nazewnictwa pliku .LTS, .KEY oraz wiadomości z żądaniem okupu. Weźmy pod uwagę następującą trójkę plik .KEY, .LST oraz żądanie okupu.
• RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.LST
• RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.KEY
• RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.HTML
Dwie pierwsze litery nazwy pliku są to ustawienia regionalne – w naszym przykładzie to RU. Kolejne pięć liter to znaki to początek hash MD5 dla zawartości pliku .KEY – 30215. Następnie mamy parametry plików, które musza być dekodowane przy użyciu tabeli poniżej:
0 1 2 3 4 5 6 7 8 9 I Odstęp |
Z X R O A H F G E K T Y |
Oznacza to, że nazwa pliku RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY – zawiera wskazanie lokalizacji jako rosyjskie, liczba 30215 rozpoczyna hash MD5, 12971 zaszyfrowanych dokumentów Office, 6370 zaszyfrowanych plików PDF, 8 zaszyfrowanych plików CorelDraw/AutoCAD/Photoshop, 9 zaszyfrowanych plików baz danych, 16632 zaszyfrowanych zdjęć oraz 114 zaszyfrowanych archiwów.
Po przesłaniu pliku .KEY do strony płatności Spora na podstawie ilości zaszyfrowanych plików zostaje ustalona wysokość okupu. Poniższa tabela pokazuje wysokość opłat za deszyfracje plików.
Dokumenty Office | CorelDraw/AutoCAD/Photoshop | Bazy danych | Zdjęcia | Archiwa | Okup w USD | |
2284 | 1550 | 0 | 0 | 1211 | 89 | 79-100 |
489 | 471 | 0 | 4 | 796 | 6 | 79-100 |
5223 | 374 | 206 | 12 | 12694 | 198 | 90-120 |
7991 | 7341 | 0 | 2194 | 8587 | 782 | 128-170 |
11160 | 9354 | 24 | 69 | 9774 | 242 | 146-190 |
12851 | 5188 | 1851 | 51 | 331031 | 1281 | 199-250 |
21173 | 7087 | 5 | 149 | 7069 | 730 | 214-270 |
25146 | 25829 | 29598 | 5463 | 105943 | 5818 | 280-350 |
138964 | 95087 | 218249 | 846 | 277541 | 22449 | 280-350 |
11810 | 7272 | 15306 | 10 | 27651 | 1471 | 280-350 |
30503 | 2135 | 40098 | 37 | 25271 | 1580 | 280-350 |
26375 | 20505 | 12178 | 3016 | 31505 | 2487 | 280-350 |
82319 | 40707 | 16931 | 314 | 38520 | 3607 | 280-360 |
Specyficzne zachowania Spora.
Spora nie potrafi ominąć UAC – czyli kontroli konta użytkownika. Oznacza to, że użytkownik zostanie zapytany czy złośliwe oprogramowanie może dokonać zmian na komputerze ofiary.
Spora usuwa pliki tzw. kopii w tle dzięki którym system ma możliwość powrotu do poprzednich wersji plików (VSS – volume shadow copy services). Taki zabieg uniemożliwia systemowi Windows naprawianie błędów systemu podczas kolejnego uruchomienia.
Mechanizm UAC. Lista zaangażowanych plików
Nazwy plików | Opis | SHA256 | Wykryty jako |
Скан-копия _ 10 января 2017г. Составлено и подписано главным бухгалтером. Экспорт из 1С.a01e743_рdf.hta | HTA dropper | 3fb2e50764dea9266ca8c20681a0e0bf60feaa34a52699cf2cf0c07d96a22553 | Script.Trojan-Dropper.Spora.A |
close.js | JScript dropper | e2fe74d890ddb516b4f21a6588c6e0bdbf3dd6f8c5116d707d08db7ebddf505a | Script.Trojan-Dropper.Spora.G |
81063163ded.exe, a277a133-ecde-c0f5-1591-ab36e22428bb.exe | Spora PE plik, spakowany za pomocą UPX | dbfd24cd70f02ddea6de0a851c1ef0f45f18b4f70e6f3d0f2e2aec0d1b4a2cbf | Win32.Worm.Spora.B |
doc_6d518e.docx | Uszkodzony dokument Word | 0ba39054a70802d0b59a18b873aab519e418dc9b0c81400d27614c9c085409ad | |
Windows.lnk | skrót złośliwego pliku | Win32.Worm.SporaLnk.A | |
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.HTML | żądanie okupu | ||
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.KEY | Zawiera statystki, ID kampanii, nazwę użytkownika, lokalizację, oznaczenie czasu, prywatny RSA klucz C1; zaszyfrowane | ||
RU302-15XRK-GXTFO-GZTET-KTXFF-ORTXA-AYYYY.LST | Lista zaszyfrowanych plików |