W ostatnim czasie obserwowaliśmy kolejną kampanię złośliwego systemu wymierzoną w użytkowników urządzeń mobilnych z systemem Android. Szkodliwa aplikacja, podszywa się pod aplikację banku PKO BP – IKO. Po analizie okazało się, iż w atakach wykorzystywany jest obserwowany po raz pierwszy w Polsce trojan bankowy Coper.
Kampania
W dniu 28 grudnia 2021 dostaliśmy pierwsze zgłoszenie o podejrzanym SMSie w którym nadawca wiadomości prosi o odnowienie systemu poprzez "aktywację" aplikacji:
Na uwagę zasługuje słowo "chakerskich" pisane przez ch i brzmiące dziwnie po polsku zdanie "Prosimy odnowić system". Oczywiście złośliwa domena od razu znalazła się na naszej liście ostrzeżeń, a dla samej domeny pkobq.pl został wystawiony wniosek o usunięcie z rejestru.
Po kliknięciu w link zawarty w wiadomości SMS, użytkownik zostaje przeniesiony na fałszywą stronę banku PKO BP. Jest ona przygotowana profesjonalnie i przypomina prawdziwą stronę aplikacji IKO.
Atakujący przygotowali instrukcję dla użytkownika krok po kroku w jaki sposób zainstalować aplikację i nadać jej dodatkowe uprawnienia. Po pierwszym uruchomieniu pojawia się okno, które w natarczywy sposób domaga się wyrażenia zgody na korzystanie z usług ułatwień dostępu (ang. accessibility services).
Ułatwienia dostępu, mają z założenia wspomagać obsługę systemu osobom niepełnosprawnym, ale są one często wykorzystywane przez złośliwe oprogramowanie do przejęcia kontroli nad urządzeniem. o ile użytkownik zgodzi się, aby złośliwe oprogramowanie korzystało z tej funkcjonalności, może ono samodzielnie imitować działania użytkownika jak klikanie w przyciski, czy zamykanie okien. W efekcie przejmuje ono pełną kontrolę nad urządzeniem.
Ciekawą obserwacją jest to, iż przez pewien czas, aktor kampanii do hostowania złośliwego pliku APK używał platformy GitHub. Jednak po usunięciu kilku kolejnych kont zdecydował się na kierowanie użytkowników bezpośrednio na aplikację znajdującą się na jego stronie.
Pobierany plik oczywiście nie jest prawdziwą aplikacją banku, ale próbką mało znanego, złośliwego systemu z rodziny Coper. Jedyny na te chwile dostępny materiał na jego temat pochodzi z analizy dokonanej przez firmę Dr.WEB, gdy była ona używana do infekowania użytkowników z Kolumbii: https://news.drweb.com/show/?i=14259
Analiza techniczna
Po zdekompilowaniu pliku APK, np. narzędziem JADX, na pierwszy rzut oka nie wydaje się on szczególnie interesujący – większość klas jest pusta i nie widać w nich żadnych ciekawych funkcjonalności. Możemy zacząć podejrzewać, iż aplikacja została w jakiś sposób spakowana.
Naszą uwagę może przykuć klasa która odwołuje się do załączonej biblioteki natywnej EzSNRfTMfY.
Możemy również stwierdzić jej obecność korzystając z przeglądarki plików projektu. Na poniższym screenie jest widoczna jako libEzSNRfTMfY.so.
Kolejnym krokiem będzie więc analiza tej biblioteki, a w szczególności wywoływanej z niej funkcji snlOMCujSZmMAS. W tym celu możemy skorzystać np. z dekompilatora dostępnego w IDA Pro.
Dostęp do zdekompilowanego kodu bardzo pomaga w ustaleniu działania biblioteki. gwałtownie dochodzimy do wniosku, iż deszyfruje ona załączony plik ziwnopuf, korzystając z szyfru RC4 i stałego klucza – w tym przypadku 3O10TAjsBlehWNa8e7vUgOWHlRH1T4Tr.
Działanie tego kodu możemy bardzo prosto zasymulować, korzystając ze stworzonej przez nas biblioteki do pracy nad złośliwym oprogramowaniem – Malduck. Kod z jej wykorzystaniem pozwalający odszyfrować plik ziwnopuf wygląda następująco:
Wynikowy plik dex jest już o wiele ciekawszy.
Niektóre łańcuchy znaków są szyfrowane ponownie dzięki RC4 i klucza 7BLiz2PK6wbk1mhp, ale również tym razem nie sprawia to zbyt wiele problemu i analogicznie możemy wykorzystać Malduck.
Wynikowo dostaniemy odszyfrowane stringi. Jednym z nich są wykorzystywane serwery C&C: 'https://s22231232fdnsjds.top/PArhFzp5sG2sN/|https://s32231232fdnsjds.top/PArhFzp5sG2sN/|https://s42231232fdnsjds.top/PArhFzp5sG2sN/'
Spędzając trochę czasu w dalszej analizie możemy ustalić, iż zapytania i odpowiedzi są szyfrowane dzięki szyfru AES w trybie blokowym ECB, a następnie kodowane z wykorzystaniem Base64:
Natomiast klucz dla tego szyfrowania jest generowany korzystając z funkcji skrótu MD5 – 54569d2aaae7176335a67bf72e86736f:
Potrafiąc odszyfrować komunikację możemy przeanalizować jak ona wygląda, a następnie spreparować odpowiedni pakiet podszywający się za zainfekowane urządzenie. Więcej informacji o protokole komunikacji można znaleźć w raporcie Dr.WEB. Dzięki nawiązaniu takiej komunikacji, możemy uzyskać odpowiedź od serwera z aktualnymi danymi konfiguracyjnymi, m.in listą aplikacji, dla których autor przygotował webinjecty, czy dodatkowe domeny C&C.
W przypadku nieprawidłowego zapytania serwer udaje zwykły serwer HTTP, jednak można dostrzec zakomentowaną informację o błędzie w dekodowaniu zapytania – <!-- aes_err: -->:
Na uwagę zasługuje lista webinjectów, czyli aplikacji dla których złośliwe oprogramowanie będzie próbowało wykraść dane. W większości przypadków mają one dopisek .test który powoduje, iż nie zadziałają one i mogą sugerować wczesną fazę rozwoju oprogramowania. Gdy je usuniemy dostajemy następującą listę targetowanych aplikacji:
Ciekawe jest to, iż na chwilę obecną nie znajdziemy na niej polskich aplikacji, co nie znaczy, iż infekcja tym złośliwym oprogramowaniem nie jest groźna. Poza mechanizmem webinjectów Coper pozwala m.in na przechwytywanie i wysyłanie SMSów, czy uruchomienie keyloggera.
IOC
Pliki APK:
IKO.apk | @steve229898 | 368f4b4d74a749ff55d76e929b52fedd |
2.iko_com.mindsoonvfk_IKO.apk | @bechertfidor | aebe71b857e868b1af752f90255aaab5 |
2.iko_com.stoptravelg_IKO.apk | @bechertfidor | d2d8027baebf285703dc753219574d3e |
3.iko_com.growmainwkmm_IKO.apk | @fidorde | d6f521d9e83160ee06d71dc217c56693 |
IKO.apk | d6f521d9e83160ee06d71dc217c56693 |
Serwery C&C zaszyte na stałe w próbkach:
- https://s22231232fdnsjds[.]top/PArhFzp5sG2sN/
- https://s32231232fdnsjds[.]top/PArhFzp5sG2sN/
- https://s42231232fdnsjds[.]top/PArhFzp5sG2sN/
Dynamiczne serwery C&C:
- https://s122231232fdnsjds[.]top/
- https://s222231232fdnsjds[.]top/
- https://s322231232fdnsjds[.]top/