🔍 Contexte

Publié le 31 mars 2026 par McAfee Labs (auteur : Ahmad Zubair Zahid), cet article présente les résultats d’une investigation approfondie sur une campagne de rootkit Android baptisée Operation NoVoice, distribuée via le Google Play Store officiel.

🎯 Vecteur d’infection et distribution

  • Plus de 50 applications malveillantes publiées sur Google Play (nettoyeurs, jeux, galeries photos) ont été identifiées, totalisant au moins 2,3 millions de téléchargements.
  • Aucun sideloading requis, aucune permission inhabituelle demandée.
  • Les composants malveillants sont enregistrés sous com.facebook.utils, se fondant dans le SDK Facebook légitime.
  • Le payload initial est dissimulé dans une image polyglotte (payload chiffré après le marqueur IEND du PNG).

⚙️ Chaîne d’infection en 8 étapes

  1. Stage 1 – Delivery : Extraction et déchiffrement du payload enc.apkh.apk depuis les assets de l’app.
  2. Stage 2 – Gatekeeper : Chargement de libkwc.so qui vérifie l’environnement (15 contrôles anti-analyse, géofencing Beijing/Shenzhen, détection émulateur, Xposed, VPN).
  3. Stage 3 – Plugin : Framework plugin “kuwo” avec check-in C2 toutes les 60 secondes ; plugins livrés via images polyglotte déguisées en icônes (warningIcon).
  4. Stage 4 – Exploit : security.jar envoie les identifiants matériels au C2 qui retourne des exploits ciblés. 22 exploits récupérés, dont une chaîne : use-after-free IPv6 + vulnérabilité driver Mali GPU + désactivation SELinux.
  5. Stage 5 – Rootkit : CsKaitno.d remplace libandroid_runtime.so et libmedia_jni.so par des wrappers malveillants (ARM32/ARM64). jkpatch modifie le bytecode framework compilé sur disque.
  6. Stage 6 – Watchdog : Daemon watch_dog vérifie l’installation toutes les 60 secondes, force un redémarrage si nécessaire. Survit à la réinitialisation d’usine (Android 7 et inférieur).
  7. Stage 7 – Injection : À chaque démarrage, toutes les apps héritent du code attaquant. BufferA (installeur silencieux) et BufferB (outil post-exploitation principal, deux canaux C2 indépendants).
  8. Stage 8 – Theft : Payload PtfLibc (hébergé sur Alibaba Cloud OSS) cible WhatsApp : copie de la base de données de chiffrement, extraction des clés Signal, clonage de session.

🌍 Géographie et cibles

Les taux d’infection les plus élevés sont observés au Nigeria, Éthiopie, Algérie, Inde et Kenya, régions où les appareils anciens sous Android 7 ou inférieur sont répandus.

🏗️ Infrastructure C2

  • Domaines séparés par fonction : enrollment (fcm.androidlogs.com), C2 principal (stat.upload-logs.com), fallback (config.updatesdk.com), CDN exploits (download.androidlogs.com), tâches BufferB (prod-log-oss-01.oss-ap-southeast-1.aliyuncs.com), exfiltration (api.googlserves.com).
  • Domaine de fallback hardcodé : api.googlserves.com (imitation de trafic Google).

🔗 Attribution

Plusieurs indicateurs lient NoVoice à la famille Android.Triada (notamment Triada.231) : même propriété système os.config.ppgl.status pour marquer les appareils compromis, même technique de remplacement de libandroid_runtime.so.

📋 Type d’article

Publication de recherche technique détaillée par McAfee Labs, visant à documenter une campagne active, fournir des IoCs exploitables et informer la communauté CTI et les partenaires (App Defense Alliance, Google).

🧠 TTPs et IOCs détectés

TTP

  • T1436 — Masquerading (Defense Evasion)
  • T1406 — Obfuscated Files or Information (Defense Evasion)
  • T1544 — Ingress Tool Transfer (Command and Control)
  • T1437 — Application Layer Protocol (Command and Control)
  • T1533 — Data from Local System (Collection)
  • T1646 — Exfiltration Over C2 Channel (Exfiltration)
  • T1398 — Boot or Logon Initialization Scripts (Persistence)
  • T1625 — Hijack Execution Flow (Persistence)
  • T1629.003 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
  • T1422 — System Network Configuration Discovery (Discovery)
  • T1426 — System Information Discovery (Discovery)
  • T1523 — Evade Analysis Environment (Defense Evasion)
  • T1582 — SMS Control (Collection)
  • T1409 — Stored Application Data (Collection)
  • T1474 — Supply Chain Compromise (Initial Access)
  • T1475 — Deliver Malicious App via Authorized App Store (Initial Access)

IOC

  • Domaines : api.googlserves.com
  • Domaines : api.uplogconfig.com
  • Domaines : avatar.ttaeae.com
  • Domaines : awslog.oss-accelerate.aliyuncs.com
  • Domaines : check.updateconfig.com
  • Domaines : config.googleslb.com
  • Domaines : config.updatesdk.com
  • Domaines : dnskn.googlesapi.com
  • Domaines : download.androidlogs.com
  • Domaines : fcm.androidlogs.com
  • Domaines : log.logupload.com
  • Domaines : logserves.s3-accelerate.amazonaws.com
  • Domaines : prod-log-oss-01.oss-ap-southeast-1.aliyuncs.com
  • Domaines : sao.ttbebe.com
  • Domaines : stat.upload-logs.com
  • Domaines : upload.crash-report.com
  • Domaines : nzxsxn.98kk89.com
  • Domaines : 98kk89.com
  • SHA256 : 03e62ac5080496c67676c0ef5f0bc50fc42fc31cf953538eda7d6ec6951979d8
  • SHA256 : 066a096a3716e02a6a40f0d7e6c1063baecbebc9cbcc91e7f55b2f82c0dad413
  • SHA256 : 0751decd391fa76d02329b0726c308206e58fc867f50283aa688d9fe0c70e835
  • SHA256 : 07a9d41c1c775def78a017cf1f6e65266382e76de0f05400b3296e2230979664
  • SHA256 : 0f28c49b24070a36dec09dd9d4b768e1ef6583b4891eca2e935a304ce704fcce
  • SHA256 : 106edd06b6961c3d38edfefd2869ee05285f11b68befe145b124794d0e79e766
  • SHA256 : 183e9174e51786be77d1341bcf7f05514f581823532028119c5844a8a5111848
  • SHA256 : 1e0376330ff9e97f798870da8433c81e39f3591c82497ca1f6b5f00878d0221a
  • SHA256 : 1e7fe0ae7546162f23ff4f6e570f51b38562bf4f0ffd9305533b43d19574be38
  • SHA256 : 1e8b048c8d32662f340787893d9ca824b039c14fb91bcc16e185a8bb872e0b80
  • SHA256 : 224e2395d3df96cf19e0b7be9731452da5b568026d81bd0981e48893f6a66859
  • SHA256 : 2c2c965f3d091693bc6906fc2ed8d03ffccb84e0665841f2d073c2f0a09261bc
  • SHA256 : 30504104f232a990f8226ff746b1718aafb727ce111d5a538962cc5e06c4259a
  • SHA256 : 3937b0bec287662fd82fca4693c8b3619b8c61eca7fe6efa7540c1ae291f8759
  • SHA256 : 4830a985f064974e6b5d19ae95d645d01fb57edd975a4fce5a1453c2ada70d4e
  • SHA256 : 4f7825647bab001298f768302d0eeb6e0d639d401dc8b5bf60a4b9841a93c980
  • SHA256 : 4fbf1906fe02745cbf0350563440e9a05d19cd4a27c4fb6b67436392a18a0cd4
  • SHA256 : 54224288aa9fa3d4281fb91ad7b202fbc3e5708b173e319b6b450ad15bcdab43
  • SHA256 : 594521e642fee75d474d8d0be839ebe9341f30196b19555882499145bf00746b
  • SHA256 : 721d92d30fbb90fe643507055baa4cce937c8659f1520be1bbce7f9669af6f84
  • SHA256 : 7d90ee0be5eb63fbaa6839efdd6217b482576b1bab553731cac0b55f2fa1e6fa
  • SHA256 : 7f00991e63154a79ea220b713fcfb2ef8b8db923a75366a61e9bc30d9c355274
  • SHA256 : 8cd77df7cf2242105b12297071ad1d11e91264f9de311d1b082666da19134476
  • SHA256 : 974a5d005d3cfe4c63bd7a46ca72c6716c6c6de397d2e3e19b1730def31f7825
  • SHA256 : 98819230a6c3f5092517ada9652e9156e338acc27d29e4647b3cb69cddb668cb
  • SHA256 : 98db4904c3299b8ac383dd177c3cde87af25c088df1988f484427aab3b5c4e0d
  • SHA256 : 9b9f55c4a68385e4a739c7d11159c9b4ab006660142331e8bdc477b5eba62aad
  • SHA256 : a02694b5de7a8a6ef3024d53e54a54a676f992bfa1e070f07827ab9b5dd1365c
  • SHA256 : a1e77c148f190b6bfdd40ce657722e902a31cedecab669dd6f78f38b6b18ddf7
  • SHA256 : a430123efe9611f322fbc3c459fc5ec13abbb0def88ba3ec56a05a361a51a9ac
  • SHA256 : ab6365bf7e6c7fba6867b44a80e8bf653c7b66ff91204ee3e2981b6532fea7ee
  • SHA256 : b4438ac1694e3a08a994750a7ac76399c48d5d3446e90ebebbea1f8694bf3dd5
  • SHA256 : b8087e3535d395210b80637be35da6ae8e10450b6fb87de62a284d5d7397cd17
  • SHA256 : bf47dc1577c8b862c4e849a7ce52e143239f2f7274421befa902baf4bd1c4a19
  • SHA256 : c332166f720e4d2f6f9b59993559df05281e7d2fbd56f90a7f2399a0ac620295
  • SHA256 : c509a98d0823add0c1440a7b043586eb5a8069fbb776ca36252f5b7653c92cb7
  • SHA256 : c517b26dfc8ffd5de7f49966ff3391475f80299ebc6ad9988bf166029cf76c91
  • SHA256 : cf945c433aa80120be10566b9f1ae88e043f96872996f599b75bb57c74248e56
  • SHA256 : d72d96c6f299fe961dd98655e0468e45ed3ac03df0cfa499e27d4c399e304500
  • SHA256 : db1168f2cb3b25ef65e06eb4e788ddda237a428fbce0725de1e9d70b36e96833
  • SHA256 : ddc4da4c63c8bc7df53c3c7fe350b56ad31f313c7d95b472dc45a9fcf85273f0
  • SHA256 : df00753933359d7369668eddeb0dc2565f075c78e4b46f3cabd2e8ff31eda42e
  • SHA256 : e32c8a869585c107ccd1586b5edebc1d8eaa18017c2dd39b6267eec4db7f7410
  • SHA256 : e5b8d25ef612f0240ce28fbffd550fd4e0b9abdbf325e3ff85718e8312b70c2b
  • SHA256 : e5f3aa5ef6b5b5fa94a921b55f52aa2c1011486b7370f1585deb6d571325ebcb
  • SHA256 : ec79443aa53864e4d322b8fa8fd4aad0ef878221f01e7d32512694ba24992aee
  • SHA256 : f654c5f926ebfcded4c0d07590972536280454e2501dc8a525390402fa945ff1
  • SHA256 : f7c664ea66c43a82801ed7da23369af1e285857c1a4bf200147b716715f09d3f
  • SHA256 : fc3b06c36feb38ed62f3034e428e814d6e1ac06ec1569ea22428374b8d15d848
  • SHA256 : fd62c2bfa2277eff8787926f9976aa4a11235a18a9a543ced71a509c6ebf2bf2
  • Fichiers : enc.apk
  • Fichiers : h.apk
  • Fichiers : libkwc.so
  • Fichiers : sec.jar
  • Fichiers : hex.jar
  • Fichiers : CsKaitno.d
  • Fichiers : asbymol
  • Fichiers : bdlomsd
  • Fichiers : jkpatch
  • Fichiers : watch_dog
  • Fichiers : libandroid_runtime.so
  • Fichiers : libmedia_jni.so
  • Fichiers : security.jar
  • Fichiers : PtfLibc

Malware / Outils

  • NoVoice Rootkit (other)
  • CsKaitno.d (other)
  • BufferA (other)
  • BufferB (backdoor)
  • PtfLibc (stealer)
  • watch_dog (other)
  • jkpatch (other)
  • libkwc.so (loader)
  • Android.Triada (other)

🔗 Source originale : https://www.mcafee.com/blogs/other-blogs/mcafee-labs/new-research-operation-novoice-rootkit-malware-android/