Wykorzystanie technologii WebAPK do ataku phishingowego

1. Wstęp

Zespół CSIRT KNF przeprowadził szczegółową analizę strony internetowej zgłoszonej przez firmę RIFFSEC (https://twitter.com/getriffsec/status/1676663509617131520). Wynikiem tej analizy było odkrycie wyrafinowanego ataku phishingowego, który wykorzystywał technologię WebAPK do instalacji szkodliwej aplikacji na urządzeniach z systemem Android.

 

 

2. Technologia WebAPK

WebAPK to technologia umożliwiająca tworzenie aplikacji webowych, które mogą być instalowane na urządzeniach z systemem Android jako natywne aplikacje. Jest to część szerszego trendu zwanego Progressive Web Apps (PWA), który ma na celu zwiększenie funkcjonalności i wydajności aplikacji internetowych.

WebAPK działa poprzez generowanie pliku APK (Android Package Kit) dla aplikacji internetowej. APK to format pliku używany przez system operacyjny Android do dystrybucji i instalacji aplikacji mobilnych. Kiedy użytkownik decyduje się na "dodanie do ekranu głównego" aplikacji internetowej, system Android automatycznie generuje plik APK dla tej aplikacji.

Kluczowym elementem technologii WebAPK jest plik manifest.json, który jest plikiem konfiguracyjnym dla aplikacji internetowej. Plik manifest.json zawiera informacje takie jak nazwa aplikacji, ikony, kolor motywu, orientacja ekranu i URL startowy. Dzięki temu system Android wie, jak wyglądać powinna aplikacja i jak się zachowywać.

Jednym z głównych atutów technologii WebAPK jest to, że pozwala ona na instalację aplikacji internetowych bezpośrednio z przeglądarki, bez konieczności korzystania z Google Play Store.

 

3. Przebieg ataku

Atak rozpoczynał się od wysłania ofiarom wiadomości SMS, które sugerowały konieczność aktualizacji aplikacji bankowości mobilnej. Link zawarty w wiadomości prowadził do strony, która za pomocą technologii WebAPK instalowała szkodliwą aplikację na urządzeniu ofiary. Kluczowe było to, że proces instalacji nie wywoływał typowych ostrzeżeń o instalacji z niezaufanych źródeł.

4. Szkodliwa aplikacja

Po instalacji, aplikacja prezentowała użytkownikowi interfejs imitujący panel logowania do bankowości mobilnej. Kolejne ekrany prosiły użytkownika o podanie loginu, hasła, kodu 2FA oraz kodu sms, który był już wykorzystywany do autoryzacji operacji.

 

 

 

 

5. Podsumowanie

Atak phishingowy oparty na technologii WebAPK stanowi poważne zagrożenie, ze względu na możliwość instalacji szkodliwej aplikacji bez wyświetlania typowych ostrzeżeń związanych z instalacją z niezaufanych źródeł. Aplikacja ta następnie imitowała interfejs bankowości mobilnej, aby wyłudzić od użytkowników dane logowania i kody autoryzacyjne. Jednym z głównych atutów technologii WebAPK jest to, że pozwala ona na instalację aplikacji internetowych bezpośrednio z przeglądarki, bez konieczności korzystania z Google Play Store. To oznacza, że aplikacje WebAPK mogą być dystrybuowane bezpośrednio przez twórców, omijając proces zatwierdzania Google Play Store. Jednak ta sama cecha, która czyni WebAPK atrakcyjnym dla deweloperów, czyni go również atrakcyjnym dla osób o złych zamiarach, jak pokazuje opisany atak phishingowy. Bez odpowiednich zabezpieczeń, technologia WebAPK może być wykorzystana do instalacji szkodliwych aplikacji, które mogą wykradać dane użytkowników lub inaczej naruszać ich prywatność.

 

6. Działanie WebAPK w praktyce:

 

 

  1. Użytkownik otwiera stronę w przeglądarce,
  2. Przeglądarka wysyła żądanie HTTP GET do serwera.
  3. Serwer odpowiada na żądanie, wysyłając odpowiedź HTTP 200 zawierającą HTML, CSS, JS.
  4. Przeglądarka wyświetla stronę użytkownikowi.
  5. Użytkownik kliknięcie na przycisk instalacji WebAPK.
  6. Przeglądarka wysyła żądanie instalacji WebAPK do serwera.
  7. Serwer odpowiada na żądanie, wysyłając manifest aplikacji.
  8. Przeglądarka wyświetla monit o instalację użytkownikowi.
  9. Użytkownik akceptuje instalację.
  10. Przeglądarka instaluje WebAPK na urządzeniu użytkownika.
  11. Użytkownik uruchamia WebAPK na swoim urządzeniu Android.
  12. Android zleca przeglądarce pobranie zawartości strony zdefiniowanej w manifeście.
  13. Przeglądarka wysyła kolejne żądanie HTTP GET do serwera.
  14. Serwer odpowiada na żądanie, wysyłając odpowiedź HTTP 200 zawierającą HTML, CSS, JS.
  15. Przeglądarka ładuje stronę w WebAPK na Androidzie.
  16. Android wyświetla stronę w WebAPK użytkownikowi.

 

Dane próbki:

MD5: ae12fd46fe868dc4384db26e6f745cce

SHA1: 1c24f4398caae9179028b5415ed980f0ad18f4a7

SHA256:113be611bcb64b04dfaca2481d8108e94ff41a56fb81f8aef190d4161acd983d

App Name: IKO

Package Name: org.chromium.webapk.a798467883c056fed_v2

Main Activity: org.chromium.webapk.shell_apk.h2o.H2OOpaqueMainActivity

 CERTIFICATE

md5: 6504436573451911f10b2be6ad7d560c

sha1: 0fa9a1b93dac4cc5a0a88d08f6949dc11e5275b0

sha256: fe71ef0d9897374f009d3c930c3eac31f523a29d42ad4898f366b1f220769bd1

Subject: C=US, O=Google, OU=Chrome WebAPK, CN=CA

 

Aplikacja jest podpisana certyfikatem Google Chrome przez co w ustawieniach systemu widnieje jako zainstalowana przez Google Play Protect:

 

 

Na podstawie analizy AndroidManifest.xml (jest to plik definiujący aplikację i jej zachowanie w systemie) można powiedzieć że:

1. Wersja SDK: Aplikacja została skompilowana przy użyciu wersji SDK 34, o nazwie kodowej "VanillaIceCream". Wersja kodu aplikacji to "1", a wersja nazwy to również "1". To oznacza, że aplikacja została zbudowana z wykorzystaniem najnowszych narzędzi dostępnych w momencie tworzenia.

2. Pakiet: Nazwa pakietu aplikacji to "org.chromium.webapk.a798467883c056fed_v2". Jest to unikalny identyfikator aplikacji w systemie Android.

3. Uprawnienia: Aplikacja wymaga uprawnienia do wysyłania powiadomień. To oznacza, że aplikacja może wyświetlać powiadomienia na urządzeniu użytkownika.

4. Zapytania: Aplikacja definiuje zapytania do obsługi intencji związanych z akcją VIEW i zarządzaniem danymi z zaufanej aktywności sieciowej. To oznacza, że aplikacja może obsługiwać linki do stron internetowych i zarządzać danymi związanych z zaufanymi aktywnościami sieciowymi.

5. Aktywności: Aplikacja definiuje kilka aktywności, w tym aktywności do wyświetlania strony, zarządzania danymi, wyświetlania ekranu startowego i obsługi powiadomień. Każda z tych aktywności ma określone zachowanie i jest odpowiedzialna za różne aspekty interakcji użytkownika z aplikacją.

6. Dane: Aplikacja definiuje różne metadane, takie jak wersja shell APK, host runtime, nazwa aplikacji hosta runtime, URL startowy, tryb wyświetlania, kolor tematu, kolor tła, identyfikator ikony, URL ikony i URL manifestu sieciowego.

Instalacja i uruchomienie aplikacji, a następnie uruchomienie aktywności Chrome.

 

  1. System Android otrzymuje intencję PACKAGE_ADDED dla pakietu org.chromium.webapk.a798467883c056fed_v2. Ta intencja jest wysyłana, gdy pakiet jest dodawany do systemu. W tym przypadku różne aplikacje otrzymują tę intencję.
  2. System Android uruchamia główną aktywność (H2OOpaqueMainActivity) aplikacji org.chromium.webapk.a798467883c056fed_v2. To jest typowe dla aplikacji Android, które mają zdefiniowaną aktywność główną, która jest uruchamiana, gdy użytkownik otwiera aplikację.
  3. System Android następnie uruchamia nowy proces dla aktywności H2OOpaqueMainActivity aplikacji org.chromium.webapk.a798467883c056fed_v2. W Androidzie każda aktywność działa w swoim procesie, co zapewnia izolację i zabezpiecza przed awariami innych aktywności.
  4. Na koniec System Android uruchamia aktywność SameTaskWebApkActivity z aplikacji Chrome, aby wyświetlić stronę webową. To jest typowe dla aplikacji webowych, które są wyświetlane w przeglądarce Chrome na Androidzie.

Podsumowanie części technicznej

W wyniku naszej analizy, stwierdziliśmy, że szkodliwa aplikacja, wykorzystująca technologię WebAPK, działała poprzez uruchomienie aktywności Chrome. Następnie ładowała stronę zdefiniowaną w pliku AndroidManifest.xml (<meta-data android:name="org.chromium.webapk.shell\_apk.startUrl" android:value=„https://george.ikopl.online/app/„/>).

Jednym z wyzwań w przeciwdziałaniu takim atakom jest fakt, że aplikacje WebAPK generują na każdym urządzeniu różne nazwy pakietów i sumy kontrolne. Są one dynamicznie budowane przez silnik Chrome, co utrudnia wykorzystanie tych danych jako wskaźników kompromitacji (IoC).

Dodatkowo, wykrywanie takich aplikacji przez systemy antywirusowe jest skomplikowane i często niemożliwe. Z tego powodu, jednym z najbardziej skutecznych sposobów przeciwdziałania takim atakom jest wykrywanie i blokowanie stron internetowych, które wykorzystują mechanizm WebAPK do przeprowadzania ataków phishingowych. Zdecydowanie rekomendujemy podejście skoncentrowane na identyfikacji i blokowaniu tych stron, aby zminimalizować ryzyko dla użytkowników.

 

Analiza wykonana przez:

Łukasz Cepok