W lutym 2016 roku Internetem wstrząsnęła epidemia wywołana nowym trojanem wyłudzającym okup: Locky (wykrywanym przez produkty firmy Kaspersky Lab jako Trojan-Ransom.Win32.Locky). Trojan ten aktywnie rozprzestrzenia się do dnia dzisiejszego. Produkty firmy Kaspersky Lab zarejestrowały próby zainfekowania użytkowników tym trojanem w 114 krajach na całym świecie.
Z analizy próbek wynika, że trojan ten to całkowicie nowe zagrożenie typu ransomware, które zostało napisane od zera. A zatem, czym jest Locky i jak możemy się przed nim zabezpieczyć?
Rozprzestrzenianie
W celu rozprzestrzeniania tego trojana cyberprzestępcy rozsyłają masowe wysyłki z załączonymi szkodliwymi programami ładującymi.
Początkowo, szkodliwe wiadomości spamowe zawierały załączony plik DOC z makrem, które pobierało trojana Locky ze zdalnego serwera i wykonywało go.
Wiadomość spamowa z załączonym szkodliwym dokumentem
Fragment szkodliwego makra
Produkty firmy Kaspersky Lab wykrywają pliki zawierające szkodliwe makra jako Trojan-Downloader.MSWord.Agent oraz HEUR:Trojan-Downloader.Script.Generic.
Należy zauważyć, że we współczesnych wersjach Microsoft Office automatyczne wykonywanie makr jest wyłączone ze względów bezpieczeństwa. Jednak doświadczenie pokazuje, że użytkownicy często włączają makra ręcznie, nawet w dokumentach z nieznanych źródeł, co może mieć destrukcyjne konsekwencje.
W momencie pisania tego tekstu szkodliwy spam nadal jest rozsyłany, jednak zamiast załączonych plików DOC stosowane są obecnie archiwa ZIP zawierające jeden lub więcej zaciemnionych skryptów w JavaScript. Wiadomości są pisane w większości w języku angielskim, chociaż pojawiły się również wersje dwujęzyczne.

Wiadomość spamowa w j. angielskim z załączonym archiwum

Wiadomość w j. niemieckim i angielskim z załączonym archiwum
Użytkownikowi proponuje się ręczne uruchomienie skryptów.

Zawartość archiwum załączonego do wiadomości
Fragment zarchiwizowanego skryptu
Po uruchomieniu skrypt pobiera trojana Locky ze zdalnego serwera i uruchamia go.
Produkty firmy Kaspersky Lab wykrywają te programy ładujące skrypty jako Trojan-Downloader.JS.Agent i HEUR:Trojan-Downloader.Script.Generic.
Kaspersky Security Network zarejestrował ataki trojana Locky w 114 krajach. Poniżej znajduje się lista państw, w których trojan ten był najczęściej wykrywany:
|
Państwo |
Liczba ataków |
|
Niemcy |
3989 |
|
Francja |
2372 |
|
Kuwejt |
976 |
|
Indie |
512 |
|
Chiny |
427 |
|
Afryka Południowa |
220 |
|
Stany Zjednoczone |
188 |
|
Włochy |
128 |
|
Hiszpania |
105 |
|
Meksyk |
92 |
Należy zauważyć, że statystyki te dotyczą jedynie przypadków, w których został wykryty rzeczywisty trojan, i nie obejmują wykryć na wczesnym etapie identyfikowanych jako szkodliwy spam lub szkodliwy downloader.
Geografia ataków programu o nazwie Trojan-Ransom.Win32.Locky
Jak widać, opisywany trojan przeprowadza ataki w praktycznie wszystkich regionach świata. Na podstawie listy języków obsługiwanych na stronie umożliwiającej zapłatę okupu (zobacz szczegóły poniżej) możemy określić, które państwa traktowane są przez cyberprzestępców jako główne cele.
Trojan Locky to plik wykonywalny o rozmiarze około 100 kilobajtów. Został napisany w języku C++ przy użyciu STL i skompilowany w Microsoft Visual Studio. Podczas uruchomienia kopiuje się do %TEMP%\svchost.exe i usuwa strumień danych NTFS Zone.Identifier ze swojej kopii – w ten sposób po uruchomieniu pliku Windows nie wyświetli komunikatu informującego, że plik ten został pobrany z internetu i może być potencjalnie niebezpieczny. Następnie trojan uruchamia się z lokalizacji %TEMP%.
Po uruchomieniu trojan sprawdza, czy istnieją poniższe klucze rejestru i jaka jest ich zawartość.
|
Ścieżka |
Typ |
Wartość |
|
HKEY_CURRENT_USER\Software\Locky\id |
REG_SZ |
ID infekcji |
|
HKEY_CURRENT_USER\Software\Locky\pubkey |
REG_BINARY |
Publiczny klucz RSA w formacie MSBLOB |
|
HKEY_CURRENT_USER\Software\Locky\paytext |
REG_BINARY |
Tekst wyświetlany ofierze |
|
HKEY_CURRENT_USER\Software\Locky\completed |
REG_DWORD |
Status (czy szyfrowanie zostało zakończone) |
Jeśli w kluczach rejestru istnieją już dane (jest tak, w przypadku gdy trojan ten uruchomił się już wcześniej, ale jego poprzednia sesja z jakiegoś powodu nie powidła się), Locky odczytuje te dane i kontynuuje proces infekcji.
Jeśli uruchamia się po raz pierwszy, trojan wykonuje następujące działania:
Fragment kodu określającego język systemu operacyjnego
Trojan szuka plików odpowiadających danej liście rozszerzeń. Następnie pliki są szyfrowane w sposób opisany poniżej.
Lista rozszerzeń plików, które podlegają szyfrowaniu
Dla każdego pliku, który odpowiada rozszerzeniu znajdującemu się na liście, trojan generuje nowy klucz 128-bitowy i szyfruje zawartość pliku przy użyciu algorytmu AES-128 w trybie CTR. Zaszyfrowany plik otrzymuje nazwę <identyfikator składający się z 16 znaków HEX><16 losowych znaków HEX>.locky. Następnie na koniec pliku dodawana jest następująca struktura:
Struktura dodawana przez trojana na koniec zaszyfrowanego pliku
W składni języka C strukturę tę można opisać w następujący sposób:
|
2 3 4 5 6 7 8 9 |
struct file_data { uint32_t start_marker; //Znacznik początku struktury = 0x8956FE93 char id[16]; //ID infekcji uint8_t aes_key[256]; //klucz AES zaszyfrowany algorytmem RSA-2048 uint32_t name_marker; //Znacznik początku nazwy pliku zaszyfrowanego przy użyciu AES (= 0xD41BA12A po zaszyfrowaniu) uint8_t orig_name[520]; //Oryginalna nazwa pliku zaszyfrowanego przy użyciu AES WIN32_FILE_ATTRIBUTE_DATA attr; //Oryginalne atrybuty pliku zaszyfrowanego przy użyciu AES |
|
|
}; |
|
|
|
Dołączona struktura opisana w składni języka C
Po zaszyfrowaniu plików użytkownika trojan wyświetla następujący komunikat z żądaniem okupu od cyberprzestępców.
Żądanie okupu w j. angielskim
Żądanie okupu w j. niemieckim
Komunikat dotyczący okupu zawiera adres „tajnego serwera” cyberprzestępców, na którym umieścili oni informacje dotyczące okupu żądanego za program deszyfrujący. Wszystkie cztery odsyłacze w wiadomości prowadzą do tej samej strony internetowej w sieci Tor.
Podczas wcześniejszych kampanii spamowych strona umożliwiająca zapłatę okupu wyglądała tak:
Wczesna wersja strony dotyczącej żądania okupu trojana Locky
Na stronie tej cyberprzestępcy sugerowali, aby ofiary płaciły w bitcoinach w celu odszyfrowania zaszyfrowanych plików na swoich komputerach. Przedstawiali również swoje zalecenia odnośnie tego, gdzie i jak uzyskać tę kryptowalutę.
Zawartość i rozkład strony zmieniały się z czasem. Obecnie strona ta jest dostępna w ponad 20 językach (wybór języka następuje z listy rozwijalnej) i wygląda tak:
Najnowsza wersja strony umożliwiającej zapłacenie okupu żądanego przez trojana Locky
Jeśli rzucimy okiem na kod źródłowy tej strony, zauważymy pełną listę obsługiwanych języków. Cyberprzestępcy naturalnie traktują państwa odpowiadające tych językom jako główne cele tego trojana ransomware. Co ciekawe, lista nie zawiera języka rosyjskiego oraz innych języków krajów należących do Wspólnoty Niepodległych Państw. Z jakiegoś powodu cyberprzestępcy nie chcą atakować użytkowników w państwach, w których mieszkańcy posługują się tymi językami – co potwierdzają statystyki KSN.

Lista języków obsługiwanych przez stronę umożliwiająca zapłacenie okupu żądanego przez trojana Locky
Kod trojana zawiera od jednego do trzech adresów IP C&C. Ponadto, kod ten zawiera algorytm generujący nowe adresy C&C (DGA, domain generation algorithm) w zależności od bieżącego dnia, miesiąca i roku. Przy użyciu tego algorytmu każdego dnia generowanych jest sześć adresów C&C. Pseudokod ilustrujący algorytm DGA Locky’ego został zaznaczony na zrzucie ekranu poniżej.
Pseudokod algorytmu generowania domeny C&C trojana Locky
Komunikacja z C&C następuje przy użyciu protokołu HTTP. Trojan wysyła żądanie POST do adresu w formacie http://<cnc_url>/main.php; przesyłane dane są szyfrowane przy pomocy prostego algorytmu symetrycznego.
Przyjrzyjmy się możliwym rodzajom przesyłanych parametrów.
Sądząc po parametrze affid, Locky jest dystrybuowany za pośrednictwem programu afiliowanego lub partnerskiego.
Dla każdego obsłużonego napędu trojan wysyła do C&C listę wszystkich ścieżek do wszystkich zaszyfrowanych plików.
Należy zauważyć, że cyberprzestępca gromadzi bardzo szczegółowe dane statystyczne dla każdej infekcji. Inne, wcześniej analizowane rodziny oprogramowania ransomware nie były tak skrupulatne jeśli chodzi o gromadzenie statystyk.
Środki ochrony
Produkty firmy Kaspersky Lab zapewniają ochronę przed trojanem ransomware Locky na wszystkich etapach ataku:
Zapobieganie infekcjom
Locky to typowy trojan ransomware, który nie różni się znacząco od innych rodzin oprogramowania ransomware pod względem wewnętrznej organizacji czy zasad działania. Mimo to przykuł uwagę badaczy, ze względu na dużą aktywność i szerokie rozpowszechnienie. Według danych KSN, produkty Kaspersky Lab zablokowały ataki trojana Locky w ponad 100 państwach na całym świecie – jak dotąd żaden inny trojan ransomware nie przeprowadził ataków w tak wielu państwach jednocześnie.
W celu zabezpieczenia się przed tym trojanem ransomware należy podjąć następujące środki zapobiegawcze:
Bardziej szczegółowe informacje dotyczące ochrony przed trojanami ransomware są dostępne na tej stronie.
Analizy
Blog