Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Skutki publikowania PoC

Dodany 2 czerwca 2016, 12:42 CEST
Tagi:

Marzenia cyberprzestępcy

Można wyróżnić dwie zasadnicze cechy systemu ochrony Androida:

  1. bez wiedzy użytkownika nie można pobrać pliku na niezainfekowane urządzenie;
  2. bez wiedzy użytkownika nie można inicjować instalacji aplikacji osób trzecich.

To znacząco komplikuje życie twórcom szkodliwego oprogramowania: aby zainfekować urządzenie mobilne, muszą uciekać się do forteli socjotechniki. Ofiara jest dosłownie wmanewrowywana w zainstalowanie trojana. Z pewnością nie zawsze jest to możliwe, ponieważ użytkownicy stają się coraz bardziej świadomi i nie tak łatwo jest ich zmylić.

Niewidoczna instalacja szkodliwej aplikacji na urządzeniu mobilnym bez wiedzy użytkownika to bez wątpienia marzenie wielu twórców szkodliwego oprogramowania. Aby tego dokonać, należy znaleźć i wykorzystać lukę w systemie Android. Takie luki zostały już zidentyfikowane: mowa tu o CVE-2012-6636, CVE-2013-4710 i CVE-2014-1939.

Luki te umożliwiają wykonanie dowolnego kodu na urządzeniu przy pomocy specjalnie stworzonej strony HTML zawierającej kod JavaScript. Wspomniane luki zostały usunięte, począwszy od wersji Android 4.1.2. 

Byłoby wspaniale, gdyby można było powiedzieć, że wszystko jest już w porządku, niestety tak nie jest. Nie można zapomnieć o trzeciej właściwości Androida: producent urządzenia odpowiada za tworzenie i dystrybucję aktualizacji systemu operacyjnego dla określonego modelu urządzenia.

Aktualizacja systemu operacyjnego Android jest zdecentralizowana: każda firma wykorzystuje własną wersję Androida, skompilowaną przy użyciu własnych kompilatorów i dostarczaną wraz z własną optymalizacją, sterownikami, nakładkami i innymi dodatkami. Niezależnie od tego, kto znalazł lukę i czy osoba ta poinformowała o tym twórcę tego systemu operacyjnego, opublikowanie aktualizacji jest imperatywem każdego producenta. Tylko producenci są w stanie pomóc użytkownikom.   

Aktualizacje są publikowane dość regularnie, ale dotyczy to głównie flagowych modeli telefonów: nie wszyscy producenci aktywnie wspierają wszystkie swoje modele.

Publicznie dostępny szczegółowy opis luk w zabezpieczeniach systemu Android dostarcza twórcom szkodliwego oprogramowania całą niezbędną wiedzę. Potencjalna ofiara exploitów może pozostawać nią przez długi czas: określmy to terminem „niekończący się 0-day”. Problem ten może być rozwiązany jedynie poprzez zakup nowego urządzenia.   

To, w połączeniu z publicznie dostępnymi opisami luk w zabezpieczeniach oraz przykładami wykorzystania tych luk, skłoniło twórców szkodliwego oprogramowania do opracowania exploita i przeprowadzenia ataków „drive-by” na urządzenia mobilne.

Infekcja strony internetowej

Ataki typu „drive-by” przeprowadzane na komputery niczego niepodejrzewających użytkowników zapewniają cyberprzestępcom dużą liczbę potencjalnych ofiar (jeśli uda im się umieścić szkodliwy kod na popularnych stronach internetowych) oraz niewidoczność (o ile użytkownicy nie podejrzewają, że są zainfekowani). Również właściciele zmodyfikowanych stron internetowych mogą przez długi czas nie wiedzieć, że zostali zainfekowani.

Sposób umieszczenia kodu oraz inne cechy ataku pozwalają zidentyfikować strony internetowe zainfekowane w wyniku tej samej „infekcji”. Przez dość długi czas obserwowaliśmy typową infekcję, która dotknęła co najmniej kilkadziesiąt rosyjskich stron internetowych różnego typu i o różnej liczbie odwiedzających, w tym dobrze znane i popularne zasoby (na przykład strony internetowe o dziennej odwiedzalności na poziomie 25 000 – 115 000 użytkowników). Infekcja stron internetowych z tej grupy charakteryzuje się wykorzystywaniem tych samych domen pośrednich, podobieństwem umieszczonego w nich szkodliwego kodu, sposobu umieszczenia kodu (w większości przypadków jest on umieszczany w tej samej domenie co poszczególny plik JavaScript) jak również szybkimi i zsynchronizowanymi zmianami w kodzie na wszystkich zainfekowanych stronach internetowych po tym, jak zostanie wykryty szkodliwy kod.

Metoda ataku jest standardowa (nawet jeśli została poddana pewnym zmianom) i jest wykorzystywana co najmniej od 2014 roku. Jest ona standardowa również ze względu na to, że celem są użytkownicy systemu Windows. Jednak jakiś czas temu, gdy cyberprzestępcy dokonali regularnej modyfikacji kodu na zainfekowanych stronach internetowych, odkryliśmy nowy skrypt zamiast „powszechnego” skryptu, który wrzuca exploity flash. Sprawdzał on, czy w parametrze Użytkownik-Agent przeglądarki występuje „Android 4” i działał z narzędziami nietypowymi dla systemu Windows. Anomalia ta skłoniła nas do dokładnego zbadania funkcjonalności skryptu i bliższemu przyjrzeniu się infekcji.  

22 stycznia 2016 roku wykryliśmy kod JavaScript, który wykorzystywał lukę z systemie Android. W ciągu zaledwie 3 dni, 25 stycznia 2016 roku znaleźliśmy nową modyfikację tego skryptu, zawierającą większą liczbę niebezpiecznych funkcji.

Skrypty

Wykryliśmy dwie główne modyfikacje skryptu:

Skrypt 1: wysyłanie SMS-ów

Jedynym celem pierwszego skryptu jest wysyłanie wiadomości SMS ze słowem „test” na numer telefonu cyberprzestępców. Aby go osiągnąć, twórcy szkodliwego oprogramowania wykorzystali klienta Android Debug Bridge (ADB), który znajduje się na wszystkich urządzeniach z tym systemem. Skrypt wykonuje polecenie sprawdzania, przy użyciu Android Debug Bridge Daemon (ADBD), czy na urządzeniu istnieje wersja ADB. Wynik wykonania tego polecenia jest wysyłany do serwera cyberprzestępców.   

Kod umożliwiający wysyłanie SMS-ów jest zakomentowany. W praktyce, nie może zostać wykonany. Jednak, jeśli jest niezakomentowany, wtedy urządzenia z wersją Androida starszą niż 4.2.2 mogą wykonać polecenia podane przez twórców szkodliwego oprogramowania. W przypadku nowszych wersji Androida, lokalne połączenie ADBD (w trybie Loopback) jest zabronione na urządzeniu. 

android_drive_eng_1_auto.png

Wysłanie SMS-a na zwykły numer nie oznacza dużej straty dla ofiary, ale nic nie powstrzymuje twórców szkodliwego oprogramowania przed zamianą numeru testowego na numer o podwyższonej opłacie.

Pierwsza szkodliwa modyfikacja skryptu nie powinna spowodować poważniejszych problemów użytkownikom, nawet jeśli cyberprzestępcy mogliby wysłać SMS na krótki numer. Większość operatorów mobilnych posiada funkcję Advice-of-Charge, która nie stosuje żadnych opłat za pierwszy SMS na numer premium: musi zostać wysłana kolejna wiadomość z określonym tekstem. Nie można tego zrobić z poziomu kodu JavaScript dla omawianego przypadku. Z tego powodu prawdopodobnie pojawiła się druga modyfikacja skryptu.      

Skrypt 2: plik karty SD

Drugi skrypt jest dropperem, który umieszcza szkodliwy plik na karcie SD.

Przy pomocy prostych instrukcji część skryptu zostaje odszyfrowana. W pierwszej kolejności z ciągu zostają usunięte separatory:  

android_drive_eng_2.png

Następnie, ciąg jest zapisywany na karcie SD w pliku MNAS.APK:

android_drive_eng_3_auto.png

Ciąg musi zostać wykonany. Utworzona w efekcie aplikacja powinna zostać zainstalowana w systemie:

android_drive_eng_4_auto.png

Jednak kod ten nadal jest zakomentowany.

Przyjrzyjmy się dokładniej skryptowi. Skrypt posiada warunek dotyczący określonej wersji Androida (wymagana jest wersja 4).

android_drive_eng_5.png

Naturalnie, twórcy szkodliwego oprogramowania wiedzą, które wersje są podatne na ataki, i nie próbują uruchomić skryptu w systemie Android 5 lub 6.

Podobnie jak w przypadku pierwszego skryptu, drugi skrypt posiada warunek ADB po stronie centrum kontroli:

android_drive_eng_6.png

android_drive_eng_7.png


W tym przypadku, warunek ten nie będzie miał żadnego wpływu; jednak wersja ADB jest naprawdę niezbędna, ponieważ nie wszystkie wersje obsługują lokalne połączenie z ADBD.

Przeanalizowaliśmy kilka modyfikacji drugiego skryptu, co pozwoliło nam prześledzić tor myślenia twórców szkodliwego oprogramowania. Najwyraźniej, ich głównym celem było dostarczenie ofierze pliku APK.

A zatem, niektóre wcześniejsze modyfikacje skryptu wysyłają dane dotyczące każdego wykonanego polecenia do centrum kontroli:

android_drive_eng_8.png

W tym przypadku, karta SD jest sprawdzana pod kątem obecności pliku MNAS.lock. Jeśli nie zawiera go, wtedy skrypt próbuje stworzyć plik MNAS.APK o zerowym rozmiarze przy użyciu Touch Utility.  

W późniejszych modyfikacjach skryptu zadanie dostarczenia pliku APK do ofiary zostało zrealizowane przy użyciu polecenia ECHO, które umożliwia stworzenie na urządzeniu dowolnego pliku o dowolnej zawartości:

android_drive_eng_9_auto.png

W wyniku wykonania polecenia ECHO na karcie SD zostaje utworzony szkodliwy plik APK.

Trojan

Drugi skrypt, w postaci, w jakiej go wykryliśmy, stworzył i zapisał na karcie SD szkodliwy plik, który również wymagał wykonania. Jako że skrypt droppera nie zawiera mechanizmu wykonywania trojana, zadanie to musi zostać wykonane przez użytkownika.

Plik APK „zrzucony” ze skryptu może być wykrywany przez Kaspersky Lab jako Trojan-Spy.AndroidOS.SmsThief.ay. Od początku 2016 roku zdołaliśmy znaleźć cztery modyfikacje tego trojana. 

Twórcy szkodliwego programu wykorzystują nazwę „example.training” wewnątrz kodu trojana:

android_drive_eng_10_auto.png

Jednocześnie szkodliwy plik posiada wystarczające przywileje do przeprowadzenia pełnych ataków na portfel ofiary poprzez wysłanie wiadomości SMS:

android_drive_eng_11_auto.png

android_drive_eng_12_auto.png
Pierwszym działaniem, jakie przeprowadza szkodliwy kod po tym, jak zostanie wykonany, jest żądanie praw administratora urządzenia. Po uzyskaniu tych praw ukryje się na liście aplikacji, utrudniając tym samym swoje wykrycie i usunięcie:

android_drive_eng_13_auto.png

Trojan będzie czekał na przychodzące wiadomości SMS. Jeśli spełnią określone reguły, np. jeśli przyjdą z numeru jednego z największych rosyjskich banków, wtedy od razu zostaną przesłane do twórców szkodliwego oprogramowania jako SMS:

android_drive_eng_14_auto.png

Ponadto, przechwycone wiadomości zostaną przesłane do serwera cyberprzestępców:

android_drive_eng_15_auto.png

Oprócz serwera kontrolującego cyberprzestępcy wykorzystują numer kontrolny w celu komunikowania się z trojanem: wymiana danych następuje w obrębie wiadomości SMS.

Numer kontrolny znajduje się pierwotnie w szkodliwym kodzie:

android_drive_eng_16.png

Trojan czeka na określone polecenia przesyłane z centrum kontroli oraz w wiadomościach SMS pochodzących z numeru kontrolnego.

Polecenie zmiany numeru kontrolnego może przyjść z serwera cyberprzestępców:

android_drive_eng_17.png

Z numeru kontrolnego mogą przychodzić następujące polecenia:

  • SEND: wyślij SMS na wskazany numer z określonym tekstem;
  • STOP: przestań wysyłać wiadomości SMS;
  • START: zacznij wysyłać wiadomości SMS.

W obecnej chwili funkcjonalność trojana ogranicza się do przechwytywania i wysyłania wiadomości SMS.

Podsumowanie

Zadanie przeprowadzenia masowego ataku na użytkowników mobilnych jest realizowane poprzez infekowanie popularnego zasobu, na którym znajduje się szkodliwy kod, który potrafi wykonać dowolne polecenie cyberprzestępców na zainfekowanym urządzeniu mobilnym. W przypadku ataków opisanych w tym artykule nacisk położono na urządzenia rosyjskich użytkowników: urządzenia te są stare i nieaktualizowane (zainfekowane zostały domeny rosyjskie). 

Zainteresowanie twórców szkodliwego oprogramowania atakami „drive-by” na urządzenia mobilne z pewnością nie zmniejszy się i wciąż będą opracowywane coraz to nowsze metody przeprowadzania takich ataków.

Twórcy szkodliwego oprogramowania będą zwracali większą uwaga na publikacje laboratoriów badawczych dotyczące luk umożliwiających zdalne wykonanie kodu i nadal będą przeprowadzane próby ataków przy użyciu exploitów mobilnych.

Nie ma również wątpliwości, że jakkolwiek kuszące jest publikowanie informacji dotyczących luk 0-day, warto powstrzymać się od prezentowania szczegółowych przykładów exploitów (Proof of concept). Opublikowanie takich przykładów spowoduje prawdopodobnie, że ktoś stworzy w pełni funkcjonalną wersję szkodliwego kodu.   

Mamy dobrą wiadomość dla właścicieli starych urządzeń: nasze rozwiązanie Kaspersky Internet Security potrafi chronić wasze urządzenie, śledząc zmiany na karcie SD w czasie rzeczywistym i usuwając szkodliwy kod, jak tylko zostanie zapisany na karcie SD. Dlatego nasi użytkownicy są chronieni przed zagrożeniami znanymi Kaspersky Lab, które są rozprzestrzeniane metodą drive-by download.