Zaloguj się do usług
bezpieczeństwa
14 kwietnia 2022
Phishingowa aplikacja w oficjalnym sklepie

Nawet aplikacja z oficjalnego sklepu nie musi być legalna! Niestety. Mimo coraz lepszych sposobów Google na wykrycie oszustw/złośliwych aktywności na etapie publikacji zdarzają się aplikacje, które przechodzą przez ochronne sito. Dlaczego? Dlatego, że w zasadzie... nie robią nic złośliwego. To tylko phishing, opakowany w formę pliku APK. Przyjrzyjmy się jednemu z przykładów, aplikacji podszywającej się pod „Orlen Inwestycje”.

Po zainstalowaniu aplikacji (bez konieczności zgody na instalację aplikacji zewnętrznych – w momencie testowania była ona dostępna w Sklepie Play) i jej uruchomieniu ukazuje się następujący formularz:

 

Wygląd bliźniaczo przypomina stronę graficzną popularnych stron, podszywających się pod inwestycje naftowego giganta. Po prostu, dla uwiarygodnienia, zostały one zamienione w formę aplikacji mobilnej.

Do pobrania URL z formularzem phishingowym aplikacja używa platformy Firebase. Pobrane dane wyglądają następująco: 

{"af_id":"ZskNNfyEQYMbgpPeYVDZ8j","message_welcome":"https:\/\/app.neogara.com\/api\/pub\/links?apiKey=h4mNLOctjHCLRMNsBc","show_ad":"true"}

W polu “message_welcome” znajduje się  interesujący nas url. Aby otrzymać kompletny adres, który umożliwi przekierowanie na docelowy formularz, należy przyjrzeć się następującej części kodu aplikacji:

String string = this.sharedPreferences.getString("conv_camp", "");
String
string2 = this.sharedPreferences.getString("sub1", "");

String string3 = this.sharedPreferences.getString("sub2", "");
String string4 = this.sharedPreferences.getString("sub3", "");
String string5 = this.sharedPreferences.getString("sub4", "");
String string6 = this.sharedPreferences.getString("sub5", "");
String string7 = this.sharedPreferences.getString("sub6", "");
String string8 = this.sharedPreferences.getString("sub7", "");
String string9 = this.sharedPreferences.getString("URL", "");
String
string10 = this.sharedPreferences.getString("deviceID", "");
String
string11 = this.sharedPreferences.getString("af_ID", "");

SharedPreferences.Editor edit9 = this.sharedPreferences.edit();
edit9.putString("SAVED_URL", string9 + string + string2 + string3 + string4 + string5 + string6 + string7 + string8 + "&sub_id_8={clickKey}&deviceID=" + string10 + "&afid=" + string11 + "&appId=com.orlenpl.financer").apply();

Interesuje nas pole “SAVED_URL” z tzw. “Udostępnionych preferencji” (ang. Shared preferences). Po dodaniu niezbędnych parametrów do zapytania http get otrzymujemy URL:

hxxps://app[.]neogara.com/api/pub/links?apiKey=h4mNLOctjHCLRMNsBc&deviceID=123451234&afid=ZskNNfyEQYMbgpPeYVDZ8j&appId=com.orlenpl.financer

Prowadzi on do serii przekierowań. Na jednej z tych domen znajduje się też formularz ze ścieżką “/test” z treścią w języku rosyjskim.