Firmware-level Android Backdoor via libandroid_runtime Zygote Injection

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Przegląd

Manipulacja łańcuchem dostaw pliku /system/lib[64]/libandroid_runtime.so może przejąć android.util.Log.println_native, tak że każda aplikacja forkowana z Zygote wykonuje kod atakującego. Backdoor Keenadu dodaje pojedyncze wywołanie wewnątrz println_native, które uruchamia native dropper. Ponieważ wszystkie procesy aplikacji wykonują ten kod, granice sandboxa Androida i uprawnienia per-app są w praktyce pomijane.

Dropper path: native patch → RC4 → DexClassLoader

  • Hooked entry: dodatkowe wywołanie wewnątrz println_native do __log_check_tag_count (wstrzyknięta statyczna biblioteka libVndxUtils.a).
  • Payload storage: blob zaszyfrowany RC4 osadzony w .so, zapis do /data/dalvik-cache/arm[64]/system@framework@vndx_10x.jar@classes.jar.
  • Load & execute: DexClassLoader ładuje jar i wywołuje com.ak.test.Main.main. Logi runtime używają taga AK_CPP (artefakt triage).
  • Anti-analysis: przerywa działanie w aplikacjach systemowych Google/Sprint/T-Mobile lub jeśli istnieją pliki kill-switch.
  • Zygote role split:
    • W system_server → tworzy instancję AKServer.
    • W każdej innej aplikacji → tworzy instancję AKClient.

Binder-based client/server backdoor

  • AKServer (uruchamiany w system_server) wysyła chronione broadcasty:
    • com.action.SystemOptimizeService → binder interface dla klientów.
    • com.action.SystemProtectService → binder interface dla pobranych modułów.
  • AKClient (wewnątrz każdej aplikacji) odbiera interfejs przez broadcast i wykonuje transakcję attach, przekazując wrapper IPC, dzięki któremu server może załadować dowolny DEX wewnątrz bieżącego procesu aplikacji.
  • Udostępnione uprzywilejowane operacje (przez SystemProtectService): nadawanie/odbieranie dowolnych uprawnień dla dowolnego pakietu, pobieranie geolokalizacji oraz eksfiltrowanie informacji o urządzeniu. To centralizuje obejście uprawnień przy jednoczesnym wykonywaniu kodu w wybranych docelowych aplikacjach (Chrome, YouTube, launcher, aplikacje zakupowe itp.).

C2 staging, crypto, and gating

  • Host discovery: Base64 → gzip → AES-128-CFB deszyfrowanie z kluczem MD5("ota.host.ba60d29da7fd4794b5c5f732916f7d5c"), IV "0102030405060708".
  • Victim registration: zbiera IMEI/MAC/model/OS, szyfruje kluczem MD5("ota.api.bbf6e0a947a5f41d7f5226affcfd858c"), POST do /ak/api/pts/v4 z parametrami m=MD5(IMEI) i n=w|m (typ sieci). Odpowiedź data jest zaszyfrowana w ten sam sposób.
  • Activation delay: C2 dostarcza moduły dopiero po ~2,5 miesiącach od “activation time” w żądaniu, co utrudnia uruchamianie w sandboxie.
  • Module container (proprietary):
struct KeenaduPayload {
int32_t  version;
uint8_t  padding[0x100];
uint8_t  salt[0x20];
KeenaduChunk config;   // size + data
KeenaduChunk payload;  // size + data
KeenaduChunk signature;// size + data
} __packed;
  • Integralność: sprawdzenie pliku MD5 + podpis DSA (tylko operator posiadający klucz prywatny może wydawać moduły).
  • Deszyfrowanie: AES-128-CFB, klucz MD5("37d9a33df833c0d6f11f1b8079aaa2dc" + salt), IV "0102030405060708".

Persistencja i wskazówki kryminalistyczne

  • Umiejscowienie w łańcuchu dostaw: złośliwa biblioteka statyczna libVndxUtils.a linkowana do libandroid_runtime.so podczas budowy (np. vendor/mediatek/proprietary/external/libutils/arm[64]/libVndxUtils.a).
  • Audyt firmware: obrazy firmware są dostarczane jako Android Sparse super.img; użyj lpunpack (lub podobnego) aby wyodrębnić partycje i sprawdzić libandroid_runtime.so pod kątem dodatkowych wywołań w println_native.
  • Artefakty na urządzeniu: obecność /data/dalvik-cache/arm*/system@framework@vndx_10x.jar@classes.jar, znacznik logcat AK_CPP, lub chronione broadcasty o nazwach com.action.SystemOptimizeService/com.action.SystemProtectService wskazują na kompromitację.

Źródła

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks