Locky: program szyfruj膮cy, kt贸ry szturmem zdobywa 艣wiat
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.
Geografia atak贸w
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.
Jak to dzia艂a
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:
- Kontaktuje si臋 z serwerem kontroli (C&C) i zg艂asza infekcj臋;
- Otrzymuje publiczny klucz RSA-2048 i ID infekcji z serwera kontroli, zapisuje te dane w rejestrze;
- Wysy艂a informacje dotycz膮ce j臋zyka zainfekowanego systemu operacyjnego, otrzymuje tekst 偶膮dania okupu od cyberprzest臋pc贸w, kt贸ry zostanie wy艣wietlony ofierze, zapisuje tekst w rejestrze;
- Szuka plik贸w o okre艣lonych rozszerzeniach na dyskach lokalnych, szyfruje je;
- Usuwa kopie plik贸w;
- Rejestruje si臋 w celu automatycznego uruchomienia si臋 (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run);
- Szuka i szyfruje pliki z okre艣lonymi rozszerzeniami na dyskach sieciowych i w sieciowych zasobach plik贸w bez przydzielonego symbolu dysku;
- Wy艣wietla ofierze 偶膮dania okupu od cyberprzest臋pc贸w;
- Ko艅czy sw贸j proces i usuwa w艂asne dane z systemu.
Fragment kodu okre艣laj膮cego j臋zyk systemu operacyjnego
Szyfrowanie pliku
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
呕膮dania okupu
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
Komunikacja z C&C
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.
- Powiadomienie o infekcji i 偶膮danie klucza.
id=<id infekcji>
&act=getkey&affid=<id partnera zapisany w kodzie trojana>
&lang=<j臋zyk systemu operacyjnego>
&corp=<informacja o tym, czy trojan dzia艂a w korporacyjnej wersji systemu operacyjnego>
&serv=<informacja o tym, czy trojan dzia艂a w serwerowej wersji systemu operacyjnego>
&os=<wersja systemu operacyjnego>
&sp=<wersja dodatku service pack systemu operacyjnego>
&x64=<informacja o architekturze systemu operacyjnego - 32- lub 64-bity>
S膮dz膮c po parametrze affid, Locky jest dystrybuowany za po艣rednictwem programu afiliowanego lub partnerskiego.
- Wysy艂anie listy zaszyfrowanych 艣cie偶ek.
id=<id infekcji>
&act=report&data=<lista 艣cie偶ek>
Dla ka偶dego obs艂u偶onego nap臋du trojan wysy艂a do C&C list臋 wszystkich 艣cie偶ek do wszystkich zaszyfrowanych plik贸w.
- Wysy艂anie statystyk dla ka偶dej obs艂u偶onej stacji stacji dysk贸w.
id=<id infekcji>
&act=stats&path=<艣cie偶ka>
&encrypted=<liczba zaszyfrowanych plik贸w>
&failed=<liczba b艂臋d贸w>
&length=<艂膮czny rozmiar 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:
- Modu艂 antyspamowy wykrywa wiadomo艣ci e-mail wysy艂ane przez dystrybutor贸w trojana;
- Programy 艂aduj膮ce skrypty s膮 wykrywane przez statyczne i heurystyczne sygnatury ochrony poczty e-mail i plik贸w za pomoc膮 werdykt贸w: Trojan-Downloader.MSWord.Agent, Trojan-Downloader.JS.Agent, HEUR:Trojan-Downloader.Script.Generic;
- Plik wykonywalny trojana jest wykrywany przez sygnatury ochrony antywirusowej plik贸w jako Trojan-Ransom.Win32.Locky;
- Nieznane pr贸bki trojana Locky s膮 proaktywnie wykrywane przez modu艂 Kontroli systemu przy u偶yciu werdyktu PDM:Trojan.Win32.Generic.
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:
- Nie otwieraj za艂膮cznik贸w w e-mailach pochodz膮cych od nieznanych nadawc贸w;
- Regularnie wykonuj kopi臋 zapasow膮 swoich plik贸w i przechowuj kopie zapasowe na wymiennych no艣nikach pami臋ci lub w chmurze - nie trzymaj ich na swoim komputerze;
- Regularnie stosuj uaktualnienia dla swoich antywirusowych baz danych, systemu operacyjnego oraz innego oprogramowania zainstalowanego na komputerze;
- W ramach zarz膮dzania dost臋pem do wsp贸艂dzielonych folder贸w sieciowych utw贸rz oddzielny folder sieciowy dla ka偶dego u偶ytkownika.
Bardziej szczeg贸艂owe informacje dotycz膮ce ochrony przed trojanami ransomware s膮 dost臋pne na tej stronie.
殴ród艂o: Kaspersky Lab