Petya: Trojan dwa w jednym

Infekowanie g艂贸wnego rekordu rozruchowego (MBR) nie jest niczym nowym w 艣wiecie szkodliwych program贸w. Ju偶 w 1994 roku pojawi艂 si臋 wirus OneHalf, kt贸ry infekowa艂 MBR i szyfrowa艂 zawarto艣膰 dysku. Jednak szkodnik ten nie wy艂udza艂 pieni臋dzy. W 2011 r. zacz臋艂y rozprzestrzenia膰 si臋 trojany blokuj膮ce MBR (Trojan-Ransom.Win32.Mbro), kt贸re infekowa艂y g艂贸wny rekord rozruchowy i uniemo偶liwia艂y dalsze za艂adowanie si臋 systemu operacyjnego. Ofiara musia艂a zap艂aci膰 okup, aby problem zosta艂 rozwi膮zany. Jednak wyleczenie systemu zainfekowanego takimi trojanami by艂o 艂atwe, poniewa偶 poza MBR-em programy te zwykle nie szyfrowa艂y 偶adnych danych na dysku.  

Obecnie pojawi艂o si臋 nowe zagro偶enie, kt贸re znacznie przewy偶sza to z przesz艂o艣ci. Trojan Petya (wykrywany przez produkty firmy Kaspersky Lab pod nazw膮 Trojan-Ransom.Win32.Petr) infekuje MBR, uniemo偶liwiaj膮c normalne za艂adowanie systemu, i szyfruje g艂贸wn膮 tabel臋 plik贸w (MFT) - istotny element systemu plik贸w - blokuj膮c tym samym normalny dost臋p do plik贸w na dysku twardym.  

Scenariusz infekcji

Osoby rozprzestrzeniaj膮ce trojana Petya atakuj膮 swoje potencjalne ofiary, wysy艂aj膮c wiadomo艣ci spamowe zawieraj膮ce odsy艂acze, kt贸re pobieraj膮 archiwum ZIP. Archiwum to kryje plik wykonywalny trojana oraz obraz JPEG. Nazwy plik贸w s膮 w j臋zyku niemieckim (Bewerbungsunterlagen.PDF.exe, Bewerbungsmappe-gepackt.exe), wygl膮daj膮 jak 偶yciorysy kandydat贸w do pracy i s膮 wymierzone w personel HR w krajach niemieckoj臋zycznych.  

petya_eng_1_auto.jpg

Zawarto艣膰 archiw贸w pobranych z odsy艂aczy w spamie

Cyberprzest臋pcy nie silili si臋 na automatyczn膮 eskalacj臋 przywilej贸w - manifest pliku wykonywalnego trojana zawiera nast臋puj膮cy standardowy rekord:

petya_eng_2.png

Je艣li u偶ytkownik uruchomi szkodliwy plik wykonywalny trojana Petya, system Windows wy艣wietli standardowe 偶膮danie UAC eskalacji przywilej贸w. Je艣li administratorzy poprawnie skonfigurowali system (tzn. UAC jest w艂膮czony, a u偶ytkownik nie pracuje z konta administratora), trojan nie b臋dzie w stanie dalej dzia艂a膰.

Niestety, u偶ytkownik, kt贸ry posiada przywileje pozwalaj膮ce mu zgodzi膰 si臋 na 偶膮danie UAC, cz臋sto nie docenia potencjalnych zagro偶e艅 zwi膮zanych z uruchomieniem nieznanego oprogramowania z podwy偶szonym poziomem uprawnie艅.

Jak to dzia艂a

Plik wykonywalny i paker

Infekcja przy u偶yciu trojana Petya rozpoczyna si臋 od uruchomienia szkodliwego pliku wykonywalnego. Pr贸bki omawianego trojana, kt贸re Kaspersky Lab otrzyma艂 do analizy, s膮, podobnie jak wi臋kszo艣膰 innych pr贸bek szkodliwego oprogramowania, chronione przy pomocy specjalnego pakera. W momencie uruchomienia si臋 pliku wykonywalnego zaczyna dzia艂a膰 kod szkodliwego pakera - wypakowuje szkodliwy plik DLL Setup.dll do nowo przydzielonego obszaru RAM, a nast臋pnie przekazuje mu kontrol臋.  

Cyberprzest臋pcy zwykle wykorzystuj膮 pakery w celu unikni臋cia wykrycia - obej艣cia statycznych sygnatur, oszukania analizatora heurystycznego itd. Badaj膮c pakera trojana Petya, zauwa偶yli艣my nietypow膮 sztuczk臋 stosowan膮 przez cyberprzest臋pc贸w.

Cyberprzest臋pcy cz臋sto pr贸buj膮 stworzy膰 pakera w taki spos贸b, aby spakowany szkodliwy plik wykonywalny w mo偶liwie najwi臋kszym stopniu przypomina艂 standardowy legalny plik. Czasami podmieniaj膮 fragment kodu legalnego pliku na szkodliwy. Tak by艂o r贸wnie偶 w przypadku trojana Petya. Ciekawostk臋 stanowi tu fakt, 偶e szkodliwym kodem zast膮piono cz臋艣膰 standardowej, wygenerowanej przez kompilator biblioteki DLL 艣rodowiska uruchomieniowego, podczas gdy funkcja WinMain pozosta艂a nietkni臋ta. Rysunek poni偶ej pokazuje przej艣cie, pocz膮wszy od punktu wej艣cia ("start"). Jak wida膰, funkcja wypakowania szkodliwego kodu (kt贸r膮 okre艣lili艣my mianem "evil") jest wywo艂ywana z legalnej funkcji __calloc_crt, kt贸ra stanowi cz臋艣膰 kodu 艣rodowiska uruchomieniowego.      

petya_eng_3_auto.png

Diagram przej艣膰 pomi臋dzy funkcjami szkodliwego pakera

Dlaczego zrobiono to w ten spos贸b? Najwidoczniej, tw贸rcy szkodliwego pakera pr贸bowali zmyli膰 nieuwa偶nego badacza lub automatyczne mechanizmy analizy: plik wygl膮da na legalny - WinMain nie zawiera szkodliwego kodu - dlatego mo偶e zosta膰 przeoczony. Poza tym, je艣li punkt przerwania zosta艂 ustawiony w WinMain podczas debugowania, wtedy szkodliwy kod b臋dzie dzia艂a艂 (i wy艣le system do BSOD, o czym napiszemy szczeg贸艂owo w dalszej cz臋艣ci) i zostanie wykonany, zanim jeszcze zostanie osi膮gni臋ty punkt przerwania.

Kaspersky Lab wykry艂 pr贸bki trojana Petya, kt贸re podszywaj膮 si臋 pod legalne pliki napisane w j臋zyku C/C++ oraz Delphi.

Szkodliwa biblioteka DLL

Setup.dll jest bibliotek膮 DLL z jednym tylko eksportem: _ZuWQdweafdsg345312@0. Jest napisany w j臋zyku C i skompilowany w Microsoft Visual Studio. Cyberprzest臋pcy wykorzystali implementacj臋 algorytm贸w kryptograficznych dost臋pnych w bibliotece publicznej mbedtls (wcze艣niej polarssl). Setup.dll nie jest zapisywany na dysku twardym jako oddzielny plik, ale zawsze pozostaje w pami臋ci RAM.

Kiedy Setup.dll przejmuje kontrol臋, odszyfrowuje dane zawarte w sekcji ".xxxx", a nast臋pnie przechodzi do infekowania komputera ofiary.

petya_eng_4_auto.png

Zaszyfrowana sekcja ".xxxx" zawieraj膮ca dane

petya_eng_5_auto.png

Fragment odszyfrowanych danych z sekcji ".xxxx"

Na wy偶szym poziomie abstrakcji dzia艂ania biblioteki Setup.dll sprowadzaj膮 si臋 do nast臋puj膮cych krok贸w:

  1. Ponownie zapisz rekord rozruchowy na dysku twardym przy u偶yciu w艂asnego szkodliwego programu 艂aduj膮cego;
  2. Wygeneruj klucz, ID infekcji i inne informacje pomocnicze, a nast臋pnie zapisz je na dysku twardym;
  3. Spowoduj przerwanie dzia艂ania systemu i powt贸rne uruchomienie, przekazuj膮c tym samym kontrol臋 szkodliwemu programowi 艂aduj膮cemu.

Przyjrzyjmy si臋 teraz dok艂adnie, w jaki spos贸b wszystko to jest implementowane w trojanie. Wcze艣niej jednak nale偶y zdefiniowa膰 zastosowane terminy.

Sektor dysku twardego - minimalna adresowalna jednostka dysku twardego, zwykle o rozmiarze 512 bajt贸w.

G艂贸wny rekord startowy (MBR) - kod oraz dane zapisane w Sektorze 0. Po inicjalizacji sprz臋tu kod ten jest wykorzystywany do uruchomienia komputera. Sektor ten zawiera r贸wnie偶 tabel臋 partycji dysk贸w twardych. Dysk podzielony z udzia艂em MBR mo偶e mie膰 do czterech partycji g艂贸wnych, a maksymalny rozmiar partycji wynosi oko艂o 2,2 TB. 

Tabela partycji GUID (GPT) - nowocze艣niejszy standard uk艂adu dysku twardego. Obs艂uguje do 128 partycji, z kt贸rych ka偶da ma rozmiar do 9,4 ZB (1 ZB = 1021 bajt贸w).

Wr贸膰my teraz do omawianego trojana. Setup.dll potrafi infekowa膰 dyski partycjonowane wed艂ug starego standardu MBR lub bardziej wsp贸艂czesnego standardu GPT. Wyst臋puj膮 dwie alternatywne ga艂臋zie sekwencji wykonywania w szkodliwym programie; wyb贸r zale偶y od danych w polu PartitionStyle struktury PARTITION_INFORMATION_EX.

petya_eng_6_auto.png

Wyb贸r ga艂臋zi wykonywania w celu zainfekowania dysku w zale偶no艣ci od tego, czy dysk posiada partycjonowanie MBR czy GPT

Infekowanie dysku z MBR

Podczas infekowania dysku z MBR Setup.dll wykonuje nast臋puj膮ce dzia艂ania:

  1. Szyfruje sektor 0 (pierwotny kod i dane MBR-a) poprzez prost膮 operacj臋 XOR 0x37 (ASCII '7'), zapisuje wynik do sektora 56;
  2. Szyfruje sektory 1-33 przy u偶yciu tej samej operacji XOR 0x37;
  3. Generuje dane konfiguracyjne dla szkodliwego programu 艂aduj膮cego, zapisuje je do sektora 54;
  4. Tworzy sektor weryfikacji 55 zawieraj膮cy powtarzaj膮cy si臋 bajt 0x37;
  5. Kopiuje sygnatur臋 NT dysku oraz tabel臋 partycji zapisan膮 z oryginalnego MBR-a do w艂asnego programu 艂aduj膮cego pierwszego poziomu; zapisuje szkodliwy kod pierwszego poziomu do sektora 0 dysku i zapisuje kod drugiego poziomu do sektor贸w 34-50 (okre艣lanych tutaj jako szkodliwy program 艂aduj膮cy);
  6. Wywo艂uje funkcj臋 NtRaiseHardError, kt贸ra powoduje zawieszenie si臋 systemu operacyjnego (BSOD - "blue screen of death").

Gdy dysk z MBR-em zosta艂 zainfekowany, pocz膮tek dysku posiada nast臋puj膮c膮 struktur臋:

Numer sektora

Zawarto艣膰

0

Szkodliwy program 艂aduj膮cy pierwszego poziomu

1 - 33

Zaszyfrowane sektory 1-33 (XOR 0x37)

34 - 50

Szkodliwy kod drugiego poziomu

...

54

Sektor konfiguracji szkodliwego programu

55

Sektor weryfikacji (zape艂niony bajtem 0x37)

56

Zaszyfrowany oryginalny kod MBR-u (XOR 0x37)

Infekowanie dysku z GPT

Podczas infekowania dysku z GPT Setup.dll wykonuje wi臋cej dzia艂a艅:

  1. Na podstawie danych g艂贸wnego nag艂贸wka GPT otrzymuje adres kopii nag艂贸wka GPT;
  2. Szyfruje kopi臋 nag艂贸wka GPT przy u偶yciu XOR 0x37;
  3. Wykonuje wszystkie dzia艂ania, kt贸re s膮 wykonywane podczas szyfrowania dysku z MBR-em.

Gdy dysk z GPT zosta艂 zainfekowany, pocz膮tek dysku posiada nast臋puj膮c膮 struktur臋:

Numer sektora

Zawarto艣膰

0

Szkodliwy program 艂aduj膮cy pierwszego poziomu

1 - 33

Zaszyfrowane sektory 1-33 (XOR 0x37)

34 - 50

Szkodliwy kod drugiego poziomu

...

54

Sektor konfiguracji szkodliwego programu

55

Sektor weryfikacji (zape艂niony bajtem 0x37)

56

Zaszyfrowany oryginalny kod MBR-u (XOR 0x37)

...

Backup LBA -
Backup LBA + 33

Zaszyfrowana kopia nag艂贸wka GPT (XOR 0x37)

Generowanie danych konfiguracyjnych

W sektorze konfiguracji (sektor 54) trojan przechowuje dane, jakich potrzebuje do zaszyfrowania MFT i odszyfrowania ich, je艣li ofiara zap艂aci okup. Generowanie danych konfiguracyjnych obejmuje nast臋puj膮ce kroki: 

  1. Setup.dll generuje losowy ci膮g o d艂ugo艣ci 16 znak贸w [1-9, a-x, A-X]; ci膮g ten b臋dziemy okre艣la膰 jako has艂o;
  2. Generuje par臋 kluczy: ec_session_priv (prywatny klucz, losowa du偶a liczba ca艂kowita) + ec_session_pub (klucz publiczny, punkt na standardowej krzywej eliptycznej secp192k1);
  3. Oblicza tajny klucz sesji: session_secret = ECDH (ec_session_priv, ec_master_pub); klucz publiczny cyberprzest臋pc贸w ec_master_pub znajduje si臋 w kodzie trojana;
  4. Oblicza aes_key = SHA512(session_secret) - wykorzystywane s膮 tylko pierwsze 32 bajty sumy kontrolnej;
  5. Szyfruje ci膮g "password" przy u偶yciu operacji XOR z zastosowaniem pierwszych 16 bajt贸w ec_session_pub: has艂o_xor = ec_session_pub[0, 15] xor has艂o;
  6. Szyfruje wynik przy u偶yciu AES-256 z zastosowaniem klucza aes_key: has艂o_aes_encr = AES_enc(has艂o_xor);
  7. Tworzy array ec_session_data = [ec_session_pub, has艂o_aes_encr];
  8. Oblicza base58: ec_session_data_b58 = base58_enc(ec_session_data);
  9. Wykorzystuje wynik do obliczenia SHA256: digest = sha256(ec_session_data_b58);
  10. Tworzy tablic臋: ec_data = [check1, check2, ec_session_data_b58], gdzie check1, check2 stanowi膮 bajty obliczane wed艂ug wzor贸w:
    a = digest[0] & 0xF;
    b = (digest[0] & 0xF) < 10;
    check1 = (digest[0] >> 4) + 0x57 + ((digest[0] >> 4) < 10 ? 0xD9 : 0);
    check2 = a + 0x57 + (b ? 0xD9 : 0);
  11. Na podstawie "has艂a" tworzy klucz dla szyfrowania MFT;

petya_eng_7.png

Pseudokod tworz膮cy klucz dla szyfrowania MFT

12    Generuje IV - 8 losowych bajt贸w, kt贸re b臋d膮 wykorzystywane podczas szyfrowania MFT;

13    Generuje ID infekcji i wykorzystuje je do tworzenia "spersonalizowanych" adres贸w URL dla stron internetowych wykorzystywanych do p艂acenia okupu.

Ostatecznie struktura danych konfiguracyjnych wygl膮da nast臋puj膮co:

petya_eng_8.png

W sk艂adni j臋zyka C struktur臋 t臋 mo偶na przedstawi膰 w nast臋puj膮cy spos贸b:

9_eng_petya.png

Tak wygl膮daj膮 dane konfiguracyjne po zapisaniu na dysku twardym:

petya_eng_10_auto.png

Nale偶y zauwa偶y膰, 偶e je艣li u偶ytkownik wy艂膮czy sw贸j komputer po tym etapie i nie w艂膮czy go ponownie, wyrz膮dzona szkoda b臋dzie minimalna, poniewa偶 nie jest trudno odszyfrowa膰 dane zaszyfrowane przy u偶yciu 1-bajtowego XOR. Dobra rada: je艣li uruchomisz nieznany plik i tw贸j system nagle zawiesi si臋, pokazuj膮c niebieski ekran, powiniene艣 wy艂膮czy膰 komputer i zwr贸ci膰 si臋 o pomoc do wykwalifikowanego specjalisty. Specjalista powinien by膰 w stanie zidentyfikowa膰 infekcj臋 trojana Petya i przywr贸ci膰 sektory dysku zaszyfrowane przy u偶yciu XOR. 

Je艣li jednak komputer zosta艂 powt贸rnie uruchomiony, wtedy rozpoczyna si臋 etap trzeci dzia艂ania trojana - szkodliwy kod zapisany do sektor贸w 0 i 34-50.

Szkodliwy program 艂aduj膮cy

Po powt贸rnym uruchomieniu kontrol臋 przejmuje kod w sektorze 0 (program 艂aduj膮cy pierwszego poziomu). 艁aduje on g艂贸wny szkodliwy kod drugiego poziomu z sektor贸w 34-50 do pami臋ci i przekazuje mu kontrol臋. Kod ten, z kolei, otrzymuje dost臋pne w systemie informacje dotycz膮ce dysk贸w twardych, szuka dysku, na kt贸rym zosta艂a zapisana konfiguracja, odczytuje dane konfiguracyjne z sektora 54 i, w zale偶no艣ci od warto艣ci w polu "config.state", zaczyna szyfrowanie (je艣li warto艣膰 r贸wna si臋 0) lub prosi u偶ytkownika o podanie zakupionego klucza deszyfracji (je艣li warto艣膰 wynosi 1).  

petya_eng_11_auto.png

Fragment kodu implementuj膮cego logik臋 trojana

Szyfrowanie MFT

G艂贸wna tabela plik贸w (MFT) stanowi struktur臋 danych z informacjami dotycz膮cymi ka偶dego pliku oraz folderu w woluminie sformatowanym w NTFS, systemie plik贸w, kt贸ry jest wykorzystywany we wszystkich wsp贸艂czesnym wersjach systemu Windows. Tabela ta zawiera dane wymagane do znalezienia ka偶dego pliku na dysku. Mo偶na j膮 por贸wna膰 do spisu tre艣ci w ksi膮偶ce, wskazuj膮cego, na kt贸rej stronie mo偶na znale藕膰 dany rozdzia艂. Podobnie, MFT wskazuje, w kt贸rym klastrze logicznym jest zlokalizowany plik.  

W艂a艣nie ten obszar krytyczny jest atakowany przez trojana Petya. Je艣li warto艣膰 "config.state" jest r贸wna 0 podczas uruchomienia, wykonuje nast臋puj膮ce on dzia艂ania:

  1. Wy艣wietla fa艂szywy komunikat sprawdzania dysku:

petya_eng_12_auto.png

  1. Odczytuje klucz "config.salsa_key" z sektora konfiguracji do lokalnej tablicy; ustawia warto艣膰 tego pola na zero na dysku, ustawia warto艣膰 pola "config.state" na 1;
  1. Szyfruje sektor weryfikacji 55 przy u偶yciu szyfru strumieniowego Salsa20; sektor ten jest wcze艣niej zape艂niony bajtem 0x37 (patrz sekcja "Infekowanie dysku z MBR" powy偶ej); 
  2. Szuka MFT ka偶dej partycji na ka偶dym po艂膮czonym dysku twardym;
  3. Szyfruje dane MFT przy u偶yciu szyfru Salsa20. Szyfrowanie jest wykonywane w cz臋艣ciach 8 sektor贸w (tj. rozmiar ka偶dej cz臋艣ci wynosi 4 KB). Licznik zaszyfrowanych cz臋艣ci znajduje si臋 w sektorze 57 pierwszego dysku.
  4. Po zako艅czeniu szyfrowania, system zostaje ponownie uruchomiony.

Po ponownym uruchomieniu Petya wy艣wietla animowany obraz migaj膮cej czerwonej i bia艂ej czaszki narysowanej w stylu ACCII-art

petya_eng_13_auto.gif

Je艣li u偶ytkownik wci艣nie jakikolwiek przycisk, trojan wy艣wietli tekst, kt贸ry bez ogr贸dek informuje ofiar臋 o tym, co si臋 wydarzy艂o. 

呕膮danie okupu i odszyfrowanie

petya_eng_14_auto.png

Na ekranie tym Petya wy艣wietla odsy艂acze do losowych stron internetowych s艂u偶膮cych do zap艂acenia okupu, zlokalizowanych w sieci Tor (adresy s膮 wyszczeg贸lnione w config.mal_urls) oraz "indywidualnego kodu odszyfrowania", kt贸ry ofiara musi poda膰 na dowolnej z powy偶szych stron. W rzeczywisto艣ci "kod" ten stanowi zawarto艣膰 pola "config.ec_data" z 艂膮cznikiem co sze艣膰 znak贸w. 

A zatem, w jaki spos贸b cyberprzest臋pcy planuj膮 odszyfrowa膰 MFT i czy w og贸le s膮 w stanie to zrobi膰?

"Klucz": pole na tym ekranie przyjmuje ci膮g tekstowy od u偶ytkownika. Ci膮g ten jest sprawdzany pod k膮tem d艂ugo艣ci (wymagany jest ci膮g maj膮cy 16 znak贸w), a nast臋pnie trojan wykorzystuje go do obliczenia 32-bajtowej warto艣ci "salsa_key" (przy u偶yciu algorytmu om贸wionego w sekcji "Generowanie danych konfiguracyjnych"). Nast臋pnie trojan pr贸buje odszyfrowa膰 sektor weryfikacji 55 przy u偶yciu tego klucza i sprawdza, czy odszyfrowany sektor jest ca艂kowicie wype艂niony bajtem 0x37. Je艣li tak, klucz uwa偶a si臋 za poprawny, a Petya wykorzystuje go do odszyfrowania MFT. Nast臋pnie, odszyfrowuje wszystkie sektory pocz膮tkowe zaszyfrowane przy u偶yciu XOR 0x37, odszyfrowuje oryginalny MBR i sk艂ania u偶ytkownika do powt贸rnego uruchomienia komputera.   

A zatem, poprawny ci膮g, jaki nale偶y wprowadzi膰 w polu "Key:", jest dok艂adnie tym samym ci膮giem "has艂o", kt贸ry jest generowany w pierwszym kroku podczas tworzenia danych konfiguracyjnych.

petya_eng_15_auto.png

Komunikat na ekranie wy艣wietlany po udanym odszyfrowaniu

Pozostaje pytanie: sk膮d cyberprzest臋pcy znaj膮 ten ci膮g, aby m贸c go przekaza膰 ofierze, kt贸ra zap艂aci艂a okup? 呕adna automatyczna komunikacja nie jest nawi膮zywana z serwerami kontroli podczas ca艂ego cyklu 偶ycia infekcji. Odpowied藕 tkwi w opisie algorytmu generowania danych konfiguracyjnych.   

Ofiar臋 sk艂ania si臋 do r臋cznego wprowadzenia swojego "indywidualnego kodu odszyfrowania" ec_data na stronie internetowej wykorzystywanej do zap艂aty okupu. Cyberprzest臋pca mo偶e wtedy wykona膰 nast臋puj膮ce dzia艂ania:

  1. Odszyfrowa膰 base58: base58_dec(ec_session_data_b58) = ec_session_data = [ec_session_pub, has艂o_aes_encr]
  2. Obliczy膰 session_secret = ECDH(ec_session_pub, ec_master_priv), zgodnie z w艂a艣ciwo艣ciami Elliptic curve Diffie-Hellman, gdzie ec_master_priv to prywatny klucz znany tylko tw贸rcom trojana;  
  3. Obliczy膰 aes_key = SHA256(session_secret);
  4. Odszyfrowa膰 AES-256: has艂o_xor = AES_dec(has艂o_encr);
  5. Znaj膮c ec_session_pub, obliczy膰 pierwotne has艂o w oparciu o has艂o_xor.

Strona s艂u偶膮ca do zap艂acenia okupu

Gdy odwiedzamy stron臋 w sieci Tor pod adresem URL podanym przez trojana, pojawia si臋 witryna wymagaj膮ca podania CAPTCHA, a nast臋pnie zostaje za艂adowana g艂贸wna strona p艂atno艣ci okupu. Wzrok od razu przykuwa rozk艂ad strony z sierpem i m艂otem oraz s艂owem "ransomware" w pseudo cyrylicy. Wygl膮da to na parodi臋 Zwi膮zku Radzieckiego w stylu gry Red Alert.   

petya_eng_16_auto.png

Na stronie tej znajduje si臋 licznik czasu pokazuj膮cy, kiedy kwota okupu b臋dzie dwukrotnie wy偶sza, jak r贸wnie偶 regularnie aktualizowane odsy艂acze do wiadomo艣ci oraz publikacji zwi膮zanych z trojanem Petya.

Wci艣ni臋cie przycisku "Start the decryption process" spowoduje przej艣cie na stron臋 prosz膮c膮 o podanie warto艣ci "ec_data", kt贸ra teraz jest okre艣lana jako "tw贸j identyfikator" nie za艣 "tw贸j indywidualny kod odszyfrowania". Wydaje si臋, 偶e cyberprzest臋pcy wci膮偶 nie zdecydowali si臋, jak nazwa膰 t臋 cz臋艣膰.

petya_eng_17_auto.png

Gdy u偶ytkownik wprowadza ten ci膮g, strona wy艣wietla wysoko艣膰 okupu w bitcoinach, informacje odno艣nie tego, jak zakupi膰 bitcoiny, oraz adres, na kt贸ry nale偶y wys艂a膰 pieni膮dze.

Ponadto, istniej膮 dwie inne strony na tej witrynie: FAQ i Support.

petya_eng_18_auto.png

Strona FAQ

Strona FAQ jest interesuj膮ca pod tym wzgl臋dem, 偶e zawiera fa艂szywe informacje: w rzeczywisto艣ci RSA nie jest w 偶aden spos贸b wykorzystywany przez trojana na 偶adnym etapie infekcji. 

petya_eng_19_auto.png

Strona Support

Na stronie wsparcia u偶ytkownik mo偶e wys艂a膰 wiadomo艣膰 do cyberprzest臋pc贸w. Wyr贸偶nia si臋 w szczeg贸lno艣ci jedna fraza: "Prosimy pisa膰 wiadomo艣膰 w j臋zyku angielskim, nasz rosyjskoj臋zyczny personel nie zawsze jest dost臋pny". To sugeruje, 偶e co najmniej jedna osoba w grupie m贸wi po rosyjsku.

Rozk艂ad geograficzny

Jak ju偶 zauwa偶yli艣my wcze艣niej, wiadomo艣ci spamowe s膮 wymierzone w u偶ytkownik贸w niemieckoj臋zycznych. Statystyki KSN wyra藕nie pokazuj膮, 偶e Niemcy s膮 g艂贸wnym celem cyberprzest臋pc贸w.

20_auto.png

Top 5 pa艅stw zaatakowanych przez trojana Petya wed艂ug liczby zaatakowanych u偶ytkownik贸w:

Pa艅stwo

Liczba zaatakowanych u偶ytkownik贸w

1

Niemcy

579

2

Chiny

19

3

Indie

8

4

Japonia

5

5

Rosja

5

Podsumowanie

Po przeanalizowaniu trojana Petya odkryli艣my, 偶e stanowi on nietypow膮 hybryd臋 programu blokuj膮cego MBR oraz szyfruj膮cego dane: nie tylko uniemo偶liwia uruchomienie systemu operacyjnego, ale r贸wnie偶 blokuje normalny dost臋p do plik贸w zlokalizowanych na dyskach twardych atakowanej maszyny.

Chocia偶 trojan Petya wyra藕nie r贸偶ni si臋 od wi臋kszo艣ci program贸w ransomware, kt贸re pojawi艂y si臋 w ostatnich latach, nie mo偶na okre艣li膰 go jako co艣 zasadniczo nowego. Koncepcje, na kt贸rych opiera si臋 ten trojan, mo偶na by艂o spotka膰 ju偶 we wcze艣niejszych szkodliwych programach; tw贸rcy trojana Petya po prostu po艂膮czyli je wszystkie w jednym tworze. Nale偶y jednocze艣nie stwierdzi膰, 偶e implementacja kodu niskiego poziomu w celu zaszyfrowania i odszyfrowania danych przed uruchomieniem si臋 systemu operacyjnego wymaga pewnych umiej臋tno艣ci technicznych.   

Inn膮 ciekawostk膮 dotycz膮c膮 trojana Petya jest pseudosowiecki uk艂ad graficzny na stronie p艂atno艣ci okupu; nazwa trojana r贸wnie偶 pasuje do obrazu "rosyjskiego trojana" kreowanego przez cyberprzest臋pc贸w. Nie ma pewno艣ci odno艣nie tego, czy tw贸rcy tego trojana pochodzili z Rosji lub innych republik by艂ego Zwi膮zku Radzieckiego; jednak tekst na stronie p艂atno艣ci sugeruje, 偶e w gangu znajduje si臋 co najmniej jedna osoba rosyjskoj臋zyczna.    

Produkty firmy Kaspersky Lab chroni膮 u偶ytkownik贸w przed omawianym zagro偶eniem: pliki wykonywalne trojana Petya s膮 wykrywane przy u偶yciu werdyktu Trojan-Ransom.Win32.Petr; ponadto, mechanizm analizy zachowania proaktywnie wykrywa nawet nieznane wersje tego trojana przy u偶yciu werdyktu PDM:Trojan.Win32.Generic.

PS jak odszyfrowa膰 dane, nie p艂ac膮c okupu

8 kwietnia kilku niezale偶nych badaczy donios艂o o znalezieniu metody przywr贸cenia has艂a bez p艂acenia okupu cyberprzest臋pcom. Metoda ta opiera si臋 na algorytmie genetycznym; przy u偶yciu 8-bajtowego IV (przechowywanego w sektorze konfiguracji 54) oraz zawarto艣ci zaszyfrowanego sektora weryfikacji 55 mo偶na obliczy膰 warto艣膰 has艂a generowanego przez klucz salsa, kt贸ry mo偶e by膰 wykorzystywany do odszyfrowania MFT. 

殴ród艂o: Kaspersky Lab