Prawidłowe stosowanie kryptografii jest trudne a autorzy złośliwego oprogramowania również popełniają błędy. Mogą z tego skorzystać ofiary jednego z najnowszych wariantów ransomware, którego twórcy pomylili 128 cyfr ze 128 bajtami.
Oprogramowanie szyfrujące pliki na dysku użytkownika i wymuszające okup za ich odszyfrowanie staje się coraz popularniejsze. Najwyraźniej przychody z tej działalności muszą być spore, ponieważ konkurencja jest duża. Na szczęście okazuje się, ze nie wszyscy autorzy ransomware prawidłowo wdrażają szyfrowanie plików, dzięki czemu w jednym z wariantów możliwe jest ich odszyfrowanie.
Pechowy wybór ofiary
Niedawno powstały gatunek ransoware o nazwie BitCrypt zaraził komputer pewnego użytkownika, szyfrując wszystkie zdjęcia jego syna. Użytkownik oczywiście nie miał kopii bezpieczeństwa, nie licząc kilku zdjęć wrzuconych na Facebooka. Miał za to w zanadrzu tajną broń – był nią ojciec chrzestny dziecka, pracujący w firmie Cassidian Cybersecurity. Wobec możliwej utraty zdjęć chrześniaka wszystkie ręce zostały wezwane na pokład i zespół przystąpił do analizy problemu.
Niestety ofiara infekcji znajdowała się 400 km dalej i nie było na miejscu nikogo, kto mógłby pomóc, zatem analiza zaczęła się od zdjęcia ekranu zarażonego komputera. Była na nim krótka informacja o zaszyfrowaniu wszystkich plików oraz wskazówka, by odwiedzić witrynę bitcrypt.info i podać na niej kod DRU-84-539467. Dodatkowo informacja zawierała adres zapasowej strony w sieci Tor na wypadek, gdyby poprzedni link był już nieaktywny. Strona wskazana w instrukcji została założona 3 lutego 2014 i zawierała jedynie formularz służący do podania numeru infekcji (obecnie domena została zawieszona).
Po zalogowaniu użytkownik otrzymywał kolejne instrukcje, obejmujące, jak się pewnie domyślacie, płatność w BTC. Cena nie była wygórowana – jedynie 0,4 BTC, co po ówczesnym kursie oznaczało ok. 260 euro, obecnie oczywiście znacznie mniej (autor ransomware musi sobie pluć w brodę…). Co ciekawe, na adres portfela podany w komunikacie faktycznie dotarło kilka płatności.
Analiza szyfrowania
Program twierdził, że używa szyfrowania RSA z kluczem o długości 1024 bitów, obecnie uznawanego za nie do złamania w domowych warunkach (oficjalnie nikomu do tej pory się nie udało). Na szczęście badaczom udało się znaleźć kopię złośliwego programu w serwisie VirusTotal, zatem postanowili zweryfikować to twierdzenie. Po rozpakowaniu próbki w środku znaleziono kod stworzony w Delphi i przystąpiono do jego analizy.
Na początku działania programu losowany jest jeden z 1000 przechowywanych w programie kluczy RSA, który zostanie wykorzystany w procesie szyfrowania plików, a jego identyfikator zapisywany jest w numerze infekcji, przekazywanym użytkownikowi. Program wybiera jedynie pliki z kilkunastoma najpopularniejszymi rozszerzeniami i szyfruje je za pomocą algorytmu AES w trybie CTR. Dla każdego pliku losowane jest 16-znakowe hasło, z którego za pomocą funkcji PBKDF2 z 1000 interacji i losową solą generowany jest klucz o długości 192 bitów, używany następnie w szyfrowaniu AES. Klucz AES jest następnie szyfrowany algorytmem RSA i zapisywany w zaszyfrowanej formie razem z plikiem.
Teoretycznie trudno znaleźć lukę w tym sposobie postępowania. Kiedy jednak badacze przyjrzeli się kluczowi RSA, zaczęli świętować. Okazało się, że autorowi programu pomyliły się bajty z cyframi. Zamiast stworzyć klucz o długości 128 bajtów (1024 bitów), klucz tworzony przez program ma 128 cyfr, czyli 464 426 bity. Zamiast RSA-1024 niemożliwego do złamania mamy zatem do czynienia z RSA-464 RSA-426, a klucze o zbliżonej długości były łamane już w roku 1994.
Podsumowanie
Autorzy odkrycia na tym nie poprzestali i wykorzystując dostępne implementacje algorytmów faktoryzacji stworzyli narzędzie w Pythonie, służące do odszyfrowywania plików BitCrypta. Cały proces na czterordzeniowym procesorze zajmuje ok 2 dni, zatem jest w zasięgu praktycznie każdego poszkodowanego. Mimo tego przypominamy, by jednak robić kopie bezpieczeństwa najważniejszych plików – nie każdy autor złośliwego oprogramowania robi takie błędy.
Komentarze
sORRY ale w jaki sposob 128 cyfr to 464 bity ?
Tu znajdziesz wyjaśnienie: http://stackoverflow.com/questions/7150035/calculating-bits-required-to-store-decimal-number.
W skrócie: bo 2 do potęgi 464 jest większe od największej liczby 128-cyfrowej.
dzienks
Nie chcę wyjść na czepialskiego złośliwca ale trudno jeżeli wyjdę. Podsumujmy, nie masz bladego pojęcia z matematyki (odpowiedź na twoje pytanie, średnio uzdolniony uczeń gimnazjum powinien znaleźć w przeciągu 15 minut, za pomocą kartki i ołówka), informatyki (nie wiesz nic na temat reprezentacji liczb w pamięci) i języka polskiego (dzienks -> dzienkuje != dziękuje). Przepraszam
Dzieki że mi powiedziałeś ze nie wiem, bo tego tez nie wiedziałem że nie wiem .
jak to łamanie przebiega wstawia sie kolejne klucze i patrzy kiedy wyjdzie obrazek czy jak?
do tego używany jest HMAC: http://en.wikipedia.org/wiki/HMAC, odpowiada on za integralność danych
Polega na rozłożeniu na czynniki iloczynu dwóch dużych liczb pierwszych. Poszukaj jakiegoś tekstu o RSA, tam wszystko znajdziesz.
Ooooo tego tez nie wiedzialem a chcialem sie dowiedziec, skad program łamiacy jakies hasło wie ze znalazl odpowiedz…
Kluczem do „dobrej kryptografi” jest zapewnienie, aby PRNG (pseudorandom number generator) był faktycznie random. Jeśli którykolwiek z elementów jest przewidywalny (mimo, że wygląda na losowy), to całe szyfrowanie jest do d… . Jeśli coś jest przewidywalne to nie jest losowe.
Akurat artykuł nie jest o tym. Nawet jakbyś miał świetnego RandGena to i tak nic Ci to nie da, bo – jak wspomina autor artykułu – RSA-464 jest stosunkowo proste do złamania. Czyt. faktoryzacja klucza 464-bitowego jest jest stosunkowo proste.
zgadzam się, natomiast to była ogólna i luźna uwaga dot. kryptografii, jak stosunkowo prosty błąd na początku, może skutkować położeniem całego pomysłu, dokładnie tak jak w przypadku w artykule.
Potrzeba 426 bitów, a nie 464:
2^n = 10^128
n = log2(10^128)
n = 425,21
zatem po zaokrągleniu w górę mamy 426 bity, a więc RSA-426 (i tak też jest obecnie podane w oryginalnym artykule po angielsku, ale podejrzewam że wcześniej też mieli błąd i dlatego również u Was się on pojawił :) ).
Pozdrawiam.
O, dzięki, jak to wszystkich i wszędzie trzeba sprawdzać :) Poprawione.
Heh, nadal jest błąd: zamiast na RSA-426 poprawiłeś na RSA-424 :P
Dzisiaj jest ciężki dzień… ;)
Link do decrypta nie działa. Warto by go zapisać 'na później’ i do anal izy. Gdybyście poprawili, albo podesłali na emila byłbym wdzięczny.
Pozdrawiam z piwnicy.
Aha. To sam bitbucket leży..
ddos dla zyskania na czasie, zanim wszyscy się dowiedzą? :P
Już się naprawiło :)
Ma ktoś execa zrobionego z pliku *.py bo jakoś nie chce to u mnie działac .
Jacek
Cześć,
Padłem ofiarą tego świństwa, większość plików na hdd mam z dodanym rozszerzeniem *bitcrypt2
Czy ktoś poradzi jak się tego pozbyć?
Cześć,
Ktoś może wie jak rozszyfrować pliki z rozszerzeniem ucusiyf? Koń trojanski znowu zaatakował tym razem moje pliki doc i pdf. Z góry dziękuję za pomoc.
Witam. Przepraszam, że nie piszę tu na temat, ale mam pewien problem z komputerem. Otóż tak: Mój komputer nie może może otworzyć systemu (ustawienia, menu , sklep itp.) chociaż wcześniej mógł. Mam system Windows 8.1 i wcześniej działał jakby nic się z nim nie działo. Nawet mój program antywirusowy (kupiony w sklepie i dodatkowo polecany) przestał działać i został skasowany. Nie mogę nic zainstalować ani na odwrót. Nie wiem co się dzieje. Próbowałam wszystkiego co mogłam, ale nie mogę nawet zrobić resetu, bo jest zablokowany. Proszę o pomoc.
zakodowało mi wszystkie pliki a mam zdjęcia meza który nie dawno mi zmarł i nie mogę ich wyswietlic .zostały zakodowane przy uzyciu szyfru RSA-2048 oraz AES-128 co mam zrobić nie mam zadnych teraz pamiątek po mezu.podane jakies linki sa ale nie wiem co zrobic