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.