Koledzy ZitMo: kradzież SMSowych haseł jednorazowych przez aplikację “E-Security”

Data publikacji: 25/04/2013, Łukasz Siewierski

ransomeware

Do laboratorium CERT Polska trafiła próbka złośliwego oprogramowania na platformę Android, która została przeznaczona dla polskich użytkowników bankowości elektronicznej. Plik zawierający aplikację nosi nazwę e-security.apk, a jej ikona jest pokazana na obrazku po lewej stronie. Malware jest dosyć prosty, ale skutecznie realizuje zadanie do którego został zaprojektowany – kradzież haseł jednorazowych do kont bankowości elektronicznej. Jednocześnie, po uruchomieniu, wyświetlany jest komunikat w języku polskim informujący o rzekomym zwiększeniu bezpieczeństwa transakcji internetowych i w związku z tym rzekomej konieczności przeprowadzenia pewnych działań …

Powyżej przedstawiono wyniki skanowania próbki w serwisie VirusTotal.

Instalacja certyfikatu E-Security AES256

Proces instalacji aplikacji odbywa się wieloetapowo. Na początku komputer ofiary musi zostać zainfekowany złośliwym oprogramowaniem. Po tej infekcji, kiedy użytkownik wejdzie na stronę internetową swojego banku, ukazuje mu się komunikat o możliwości instalacji aplikacji, która jest „certyfikatem E-Security”, który „pozwoli wykorzystywać szyfrowanie algorytmem AES o długości klucza 256 bitów”. Komunikat ten jest wyświetlany za pomocą ataku man in the browser, który został dokładnie opisany w naszym ostatnim raporcie. W celu ściągnięcia tego „certyfikatu” należy wybrać system operacyjny wykorzystywany przez nasz telefon komórkowy, a następnie podać jego numer. Przykład takiego komunikatu znajduje się poniżej.

Na podany numer telefonu przychodzi następnie wiadomość SMS, której nadawca podaje się za nasz bank. W jej treści znajduje się odsyłacz do pliku z aplikacją przeznaczoną dla naszego systemu operacyjnego. Co ciekawe, przestępcy oferują również instrukcję tłumaczącą jak włączyć instalację aplikacji z nieznanych źródeł. Wymóg włączenia takiej opcji tłumaczony jest faktem, że jest to „opracowanie autorskie” banku przez co „Twój smartfon może blokować jego instalację”.

Po instalacji użytkownik jest proszony o uruchomienie aplikacji i wprowadzenie kodu „E-Security”. Jest to kod, który zostanie wyświetlony po uruchomieniu się aplikacji (jak przedstawiono po prawej) i jest on unikalny dla danego telefonu, ponieważ powstaje na bazie numeru IMEI. Dzięki temu, że użytkownik wprowadzi kod przestępcy są pewni, że uruchomił aplikację oraz mogą przypisać danemu numerowi telefonu login i hasło do bankowości elektronicznej. Jak widać tekst pokazujący się po uruchomieniu aplikacji jest napisany po polsku, więc grupa docelowa jest jasno określona.

Działanie zabezpieczeń 256 bytowych

Aplikacja do swojego działania wymaga większości uprawnień jakie istnieją na urządzeniach z Androidem. Może mieć to na celu utrudnienie analizy aplikacji i ukrycie jej prawdziwych zamiarów. Najważniejsze jednak są dwa wpisy z pliku AndroidManifest.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1
2
3
4
5
6
7
8</div></td>
<td>
<div class="text codecolorer">&lt;service android:name=".SecurityService" android:enabled="true" /&gt;
&lt;receiver android:name=".SecurityReceiver"&gt;
&lt;intent-filter android:priority="2147483647"&gt;
&lt;action android:name="android.provider.Telephony.SMS_RECEIVED" /&gt;
&lt;action android:name="android.intent.action.NEW_OUTGOING_CALL" /&gt;
&lt;action android:name="android.intent.action.BOOT_COMPLETED" /&gt;
&lt;/intent-filter&gt;
&lt;/receiver&gt;</div></td>
</tr>
</tbody>
</table>

Oznaczają one, iż aplikacja zainstalowała usługę SecurityService oraz odbiorcę zdarzeń o nazwie SecurityReceiver, który ma reagować na zdarzenie odebrania wiadomości SMS, wykonania połączenia głosowego oraz zakończenia procesu uruchamiania telefonu komórkowego.

Dalsza analiza pokazuje, że w rzeczywistości tylko zdarzenie otrzymania wiadomości SMS jest przetwarzane przez klasę SecurityReceiver. Złośliwe oprogramowanie obsługuje cztery typy komunikatów wysyłanych za pomocą SMS. W przypadku gdy przychodzi wiadomość sterująca jest ona zawsze ukrywana przed ofiarą.

Komunikat „get info”

SMS jest uznawany za zawierający komunikat „get info”, jeśli zaczyna się od znaku krzyżyka (#) a następnie w jego treści znajduje się numer telefonu zaczynający się od znaku „+”. W odpowiedzi, pod numer znajdujący się w treści SMSa wysyłany jest następująca wiadomość:

1
Model: AC: H: AltC: V: Mf:/

Przy czym   to model telefonu,   jest unikalnym identyfikatorem telefonu powstałym z numeru IMEI,   określa czy działalność programu jest ukryta,   mówi o tym czy przekierowania SMS są aktywne,   jest wersją złośliwego oprogramowania (w tym przypadku 1.2.9),   oznacza producenta telefonu, a   wersję systemu operacyjnego. Przykład komunikatu i odpowiedzi przedstawiony jest po lewej stronie.

Komunikat „new number”

SMS jest uznawany za zawierający komunikat „new number”, jeśli zaczyna się od ukośnika (/) a następnie w jego treści znajduje się numer telefonu zaczynający się od znaku „+”. Od tego momentu wszystkie SMSy przychodzące na zainfekowany numer są przekazywane na numer znajdujący się w treści wiadomości. Dzięki temu przestępcy są w stanie przechwycić jednorazowe hasło SMSowe przychodzące na zainfekowany telefon. Przykład takiego działania zaprezentowany jest po prawej stronie. Dzięki temu, że wiadomości mogą być przekazywane na inny numer niż ten, z którego przychodzą komunikaty sterujące, przestępcy są w stanie jeszcze bardziej ukryć swoje działanie.

Komunikat „fin”

SMS jest uznawany za zawierający komunikat „fin”, jeśli zaczyna się od przecinka (,). Komunikat ten musi przyjść od numeru, na który były przekazywane wiadomości SMS i wyłącza to przekazywanie. Dzięki temu ofiara może się nawet nie zorientować, że przez jakiś (najprawdopodobniej krótki) czas jej wiadomości zamiast dochodzić do niej były przekazywane przestępcom.

Komunikat „uninstall”

SMS jest uznawany za zawierający komunikat „uninstall”, jeśli zaczyna się od wykrzyknika (!). W wyniku tego komunikatu złośliwe oprogramowanie jest wyłączane. Z naszej analizy wynika, że nie może być później aktywowane, zatem wysłanie wykrzyknika skutecznie zablokuje możliwość przechwytywania haseł jednorazowych.

Logowanie oraz dodatkowa funkcjonalność

Malware E-Security posiada dodatkową funkcjonalność raportowania treści wiadomości SMS pod podany adres URL. W próbce, która analizowaliśmy funkcjonalność ta została jednak wyłączona i nie jest w pełen sposób zaimplementowana. Najprawdopodobniej oprogramowanie miało co kilka minut przesyłać pod zadany, zapisany w próbce w zaciemniony sposób, adres URL listę wiadomości SMS jakie przyszły do ofiary. Niestety nasza próbka zawierała tylko pusty adres URL, ale mimo wszystko algorytm „odszyfrowywania” adresu jest w niej obecny.

Malware E-Security bardzo dokładnie loguje swoją działalność. Poniżej fragment pliku logowania, który został wyprodukowany w naszym laboratorium przez malware na telefonie z systemem Android. Powstał on po wysłaniu wiadomości typu „get info” na zainfekowany telefon. Przez AlternativeControl oznaczane jest w oprogramowaniu sterowanie za pomocą wiadomości SMS.

1
2
3
4
I/SSuite ( 1904): AlternativeControl called
I/SSuite ( 1904): AlternativeControl control message GET INFO
I/SSuite ( 1904): SendControlInformation called number is +486xxxxxxxx
I/SSuite ( 1904): Model:GT-Sxxxx AC:1xxxxxxx3 H:0 AltC:0 V:1.2.9 Mf:samsung/2.2.1

Informacja o próbce

Próbka, która trafiła do naszego laboratorium nosiła nazwę e-security.apk, a jej skróty SHA-1 oraz MD5 przedstawione są poniżej.

1
2
e55c3a9586a858ee931c21ec7cae90276e7ddc16
02462f235a01a6f8287900d04598b4a4