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

Najbardziej zaawansowany trojan dla Androida

Dodany 7 czerwca 2013, 13:13 CEST
Tagi:

Niedawno trafiła do nas aplikacja dla Androida w celu analizy. Już na pierwszy rzut oka wiedzieliśmy, że była wyjątkowa w swoim rodzaju. Wszystkie ciągi w pliku DEX były zaszyfrowane, a kod – zaciemniony.    

Plik okazał się wielofunkcyjnym trojanem, który potrafi: wysyłać SMS-y na numery premium; pobierać inne szkodliwe programy, instalować je na zainfekowanym urządzeniu i/lub wysyłać dalej za pośrednictwem Bluetootha; zdalnie wykonywać polecenia w konsoli. Obecnie, produkty firmy Kaspersky Lab wykrywają ten szkodliwy program jako Backdoor.AndroidOS.Obad.a. 

android_trojan_01.png

Twórcy szkodliwego oprogramowania zwykle próbują maksymalnie skomplikować kod w swoich tworach, aby utrudnić życie ekspertom ds. szkodliwego oprogramowania. Rzadko jednak zdarza się, aby maskowanie w mobilnym szkodliwym oprogramowaniu było tak zaawansowane jak w przypadku szkodnika Obad.a. Co więcej, to kompletne zaciemnienie kodu nie było jedyną podejrzaną rzeczą w tym nowym trojanie.

Sztuczki trojana

Twórcy Backdoor.AndroidOS.Obad.a znaleźli błąd w popularnym oprogramowaniu DEX2JAR – program ten jest zazwyczaj wykorzystywany przez analityków w celu przekonwertowania plików APK w bardziej wygodny format Java Archive (JAR). Ta zauważona przez cyberprzestępców luka zaburza konwersję kodu bajtowego Dalvika do kodu bajtowego Javy, co ostatecznie komplikuje analizę statystyczną tego trojana. 

Cyberprzestępcy znaleźli błąd w systemie operacyjnym Android, który odnosi się do przetwarzania pliku AndroidManifest.xml. Plik ten znajduje się w każdej aplikacji dla Androida i służy do opisywania struktury aplikacji, określania parametrów jej uruchomienia itd. Szkodliwe oprogramowanie modyfikuje AndroidManifest.xml w taki sposób, że nie spełnia standardów Google’a, ale nadal jest poprawnie przetwarzany na smartfonie dzięki wykorzystywaniu zidentyfikowanej luki. Wszystko to znacznie utrudniło przeprowadzenie dynamicznej analizy tego trojana.

Twórcy Backdoor.AndroidOS.Obad.a wykorzystali również inny, nieznany wcześniej błąd w systemie operacyjnym Android. Wykorzystanie tej luki pozwala szkodliwym aplikacjom uzyskać rozszerzone przywileje administratora urządzenia bez pojawiania się na liście aplikacji, które posiadają takie przywileje. W efekcie, nie jest możliwe usunięcie szkodliwego programu ze smartfonu, po tym jak uzyska on rozszerzone przywileje.

Na koniec warto dodać, że Backdoor.AndroidOS.Obad.a nie posiada interfejsu i działa w tle. 

Analiza kodu

W tej szkodliwej aplikacji wszystkie zewnętrzne metody są wywoływane za pośrednictwem mechanizmu refleksji. Wszystkie ciągi są zaszyfrowane, łącznie z nazwami klas i metodami. 

android_trojan_02_auto.png

Każda klasa posiada lokalną metodę deskryptora, która uzyskuje niezbędny do zaszyfrowania ciąg z lokalnie aktualizowanej tablicy bajtów. Wszystkie ciągi są „ukryte” w tej tablicy.   

android_trojan_03_auto.png

Najważniejsze ciągi zawierające adres serwera C&C przechodzą dodatkowy etap szyfrowania. W tym celu trojan sprawdza najpierw, czy istnieje dostęp do internetu, następnie pobiera stronę facebook.com. Wydobywa określony element tej strony i wykorzystuje go jako klucz deszyfrujący. W ten sposób Backdoor.AndroidOS.Obad.a może odszyfrować adresy C&C tylko wtedy, gdy istnieje dostęp do internetu. Cecha ta jeszcze bardziej komplikuje analizę tego szkodnika.   

Niektóre ciągi są dodatkowo zaszyfrowane. Lokalny dekryptor otrzymuje zakodowany ciąg w Base64 i odkodowuje go. Odkodowany ciąg jest najpierw odszyfrowywany przy użyciu operacji XOR z użyciem klucza MD5, a następnie dodatkowo deszyfrowany przy użyciu ciągu MD5 "UnsupportedEncodingException". W celu uzyskania klucza MD5 ten sam lokalny dekryptor deszyfruje kolejny ciąg, który jest następnie wykorzystywany jako argument dla MD5. W ten sposób zabezpieczone są kluczowe ciągi, takie jak nazwa funkcji SendTextMessage.       

android_trojan_04_auto.jpeg

Rozpoczęliśmy naszą analizę i zdołaliśmy rozszyfrować wszystkie ciągi:

android_trojan_05_auto.png

Mając w ręku wyniki procesu odszyfrowywania szkodnika, udało nam się odtworzyć algorytm roboczy aplikacji. 

Zdobywanie przywilejów

Natychmiast po uruchomieniu aplikacja próbuje uzyskać prawa administratora urządzenia. 

android_trojan_06.jpeg

Jak już pisaliśmy wcześniej, jedną z cech tego trojana jest to, że szkodliwa aplikacja nie może zostać usunięta po tym, jak uzyska prawa administratora: wykorzystując nieznaną wcześniej lukę w Androidzie, szkodliwa aplikacja może korzystać z rozszerzonych praw, ale nie jest wymieniona jako aplikacja z prawami administratora urządzenia. 

android_trojan_07.png

Poinformowaliśmy już Google o luce w zabezpieczeniach Androida pozwalającej na uzyskanie praw administratora urządzenia.

Dzięki rozszerzonym prawom administratora urządzenia trojan może zablokować monitor urządzenia na czas do 10 sekund. Zwykle ma to miejsce po podłączeniu urządzenia do darmowej sieci Wi-Fi lub aktywowaniu Bluetootha; przy ustanowionym połączeniu trojan może skopiować siebie oraz inne szkodliwe aplikacje na inne zlokalizowane w pobliżu urządzenia. Możliwe, że w ten sposób Backdoor.AndroidOS.Obad.a próbuje uniemożliwić użytkownikowi wykrycie szkodliwej aktywności.   

Ponadto, trojan próbuje uzyskać prawa administratora poprzez wykonanie polecenia “su id”.

android_trojan_08.png 

Komunikacja z właścicielami

Informacja o tym, czy zostały uzyskane prawa superużytkownika, jest wysyłana do serwera C&C. Uzyskanie praw administratora może postawić cyberprzestępców w korzystnej pozycji podczas zdalnego wykonywania poleceń na konsoli. 

Po pierwszym uruchomieniu szkodliwa aplikacja zbiera następujące informacje i wysyła je do serwera C&C pod adresem androfox.com: 

  • Adres MAC urządzenia z Bluetoothem
  • Nazwa operatora
  • Numer telefonu
  • IMEI
  • Saldo na koncie użytkownika telefonu
  • Czy uzyskano prawa administratora urządzenia
  • Czas lokalny 

Zebrane informacje są wysyłane do serwera w postaci zaszyfrowanego obiektu JSON.

android_trojan_09_auto.png

Informacje te są wysyłane do aktualnego serwera C&C za każdym razem, gdy zostanie ustanowione połączenie. Ponadto, szkodliwy program zgłasza swój obecny status swojemu właścicielowi: wysyła aktualną tabelę numerów premium i prefiksów, na które należy wysyłać wiadomości tekstowe (parametr “aos”), listę zadań (“task”) i listę serwerów C&C. Podczas pierwszej sesji komunikacyjnej z C&C wysyła pustą tabelę oraz listę adresów C&C, które zostały odszyfrowane w opisany wyżej sposób. Podczas sesji komunikacyjnej trojan może otrzymać uaktualnioną tabelę numerów premium oraz nową listę adresów C&C.    

W odpowiedzi serwer C&C wysyła kolejny obiekt JSON, który po odszyfrowaniu może wyglądać tak: 

{ "nextTime":1,"conf":{ "key_con":"oKzDAglGINy","key_url":"3ylOp9UQwk",
"key_die":"ar8aW9YTX45TBeY","key_cip":"lRo6JfLq9CRNd6F7IsZTyDKKg8UGE5EICh4xjzk"}}

NextTime to kolejne połączenie z serwerem C&C

conf to ciągi konfiguracyjne. 

Ciągi konfiguracyjne mogą zawierać instrukcje łączenia się z nowymi serwerami C&C, tablicami numerów z prefiksami oraz kluczami z adresami docelowymi dla wiadomości tekstowych oraz nowe zadania z parametrami. Ponadto, klucze do szyfrowania ruchu (key_cip) mogą być wysłane do conf.    

Cyberprzestępcy mogą również wykorzystywać wiadomości tekstowe w celu kontrolowania trojana. Ciągi konfiguracyjne mogą również zawierać ciągi kluczy (key_con, key_url, key_die), których trojan będzie szukał w przychodzących wiadomościach tekstowych.   

Każda przychodząca wiadomość tekstowa jest analizowana pod kątem obecności któregoś z tych kluczy. W przypadku znalezienia klucza wykonywane jest odpowiednie działanie:

key_con: natychmiast ustanawia połączenie C&C;

key_die: usuwa zadania z bazy danych;

key_url: łączy się z nowym serwerem C&C. Po tej instrukcji musi zostać podany adres nowego serwera C&C. W ten sposób cyberprzestępcy mogą stworzyć nowy serwer C&C i wysłać jego adres do zainfekowanego urządzenia w wiadomościach tekstowych zawierających ten klucz. To spowoduje, że wszystkie zainfekowane urządzenia połączą się na nowo z nowym serwerem. 

Jeżeli klucz instrukcji „send text message” zostanie znaleziony w conf, trojan wyśle wiadomość na numery dostarczone przez serwer C&C. W ten sposób zainfekowane urządzenia nie będą nawet potrzebowały połączenia internetowego, aby otrzymywać instrukcję wysyłania płatnych wiadomości tekstowych.

android_trojan_10_auto.png

Instrukcje C&C 

Trojan otrzymuje instrukcje z serwera C&C i zapisuje je w bazie danych. Każda instrukcja zarejestrowana w bazie danych zawiera swój numer sekwencyjny, czas, kiedy ma zostać wykonana oraz parametry.

Lista poleceń:

  1. Wyślij wiadomość tekstową. Parametry zawierają liczbę i tekst. Odpowiedzi są usuwane.
  2. PING.
  3. Otrzymuj saldo konta za pośrednictwem USSD.
  4. Działaj jako proxy (wysyłaj określone dane na określone adresy i przekazuj odpowiedź).
  5. Łącz się określonymi adresami (clicker).
  6. Pobierz plik z serwera i zainstaluj go. 
  7. Wyślij listę aplikacji zainstalowanych w smartfonie do serwera.
  8. Wyślij informacje o zainstalowanej aplikacji określonej przez serwer C&C.
  9. Wyślij dane kontaktowe użytkownika do serwera.
  10. Zdalna powłoka. Wykonaj polecenia w konsoli określone przez cyberprzestępcę.
  11. Wyślij plik do wszystkich wykrytych urządzeń z Bluetoothem.

Ta lista poleceń dla Obad.a pozwala szkodliwemu programowi rozprzestrzeniać pliki za pośrednictwem Bluetootha. Serwer C&C wysyła trojanowi lokalny adres pliku, który należy pobrać na zainfekowane urządzenie. Na polecenie serwera C&C szkodliwy program skanuje w poszukiwaniu najbliższych urządzeń z włączonym połączeniem Bluetooth i próbuje wysłać do nich pobrane pliki.

Mimo tak imponujących możliwości Backdoor.AndroidOS.Obad.a nie jest bardzo rozpowszechniony. W ciągu 3-dniowego okresu obserwacyjnego na podstawie danych z Kaspersky Security Network ustalono, że próby instalacji trojana Obad.a stanowiły nie więcej niż 0,15% wszystkich prób infekowania urządzeń mobilnych różnym szkodliwym oprogramowaniem.

Na zakończenie chcielibyśmy dodać, że Backdoor.AndroidOS.Obad.a bardziej przypomina szkodliwe oprogramowanie dla systemu Windows niż inne trojany dla Androida pod względem swojej złożoności i liczby nieopublikowanych luk, jakie wykorzystuje. To oznacza, że złożoność szkodliwych programów tworzonych dla Androida wzrasta w szybkim tempie, podobnie jak ich liczba.