Motorul principal de invatare a masinilor Zimperium, z9, are un palmares dovedit de detectare a exploatatilor de zile zero. Am anuntat recent o extindere a cadrului care detecteaza malware-uri mobile necunoscute anterior. Aceasta extensie este cunoscuta sub numele de „z9 pentru Mobile Malware” si a fost anuntata oficial in septembrie 2017. Pe plan intern, numele de cod a fost „Cogito”, astfel ca acest blog de cercetare va folosi acest nume in tot.

Pe un bazin de aproximativ 1800 de probe colectate din Play Store1, Cogito a detectat doua dintre ele ca fiind rauvoitoare in cateva secunde. Aceasta postare prezinta procesul pe care echipa noastra a facut-o pentru a valida detectarea comportamentala a Cogito a celor doua aplicatii daunatoare.

Verificand informatiile comportamentale extrase de Cogito am observat ca acele probe sunt cu adevarat agresive la afisarea anunturilor. De fapt, anunturile pe ecran complet sunt afisate de fiecare data:

  • O aplicatie este instalata, actualizata sau dezinstalata;
  • Se declanseaza un steag pentru serviciile de accesibilitate;
  • Ecranul este deblocat;
  • Utilizatorul navigeaza de la o pagina la alta a aplicatiei.

Una dintre cele doua aplicatii continea, de asemenea, un cod cu adevarat suspect pentru anunturile cu clicuri auto emise de Facebook.

Metadate pentru aplicatii

Informatiile actualizate despre aplicatie au fost urmatoarele (chiar inainte de a fi eliminate de Google):

Nume aplicatie: Telefon

curatator Dev Nume pachet: com.life.read.physical.trian

Link Magazin Play: (eliminat din Play) play.google.com/store/apps/details?id=com.life.read.physical.trian

Numar de descarcare: 10.000-50.000

E-mail pentru dezvoltator: [email protected]

Link-ul confidentialitatii: https://dxirlpbjoseri.cloudfront.net/products/h6skoorpc/privacy.html

Numele aplicatiei: Cel mai bun curat pentru junk

Nume pachet: core.clean.com.scanningapp

Link Store Link: (eliminat din Play) play.google.com/store/apps/details?id=core.clean.com.scanningapp

Numar de descarcare: 100.000 -500.000

E-mail pentru dezvoltator: [email protected]

Link pentru confidentialitate: https://d2c1shkqljaenk.cloudfront.net/products/xhaj052dn/privacy.html

Ceea ce ne-a atras atentia au fost e-mailurile dezvoltatorilor si link-urile de confidentialitate. La prima vedere, cele doua aplicatii par a fi incarcate de dezvoltatori diferiti, cu adrese de e-mail diferite si cu link-uri de confidentialitate diferite.

Inceperea investigatiei

O investigatie corecta a pachetului com.life.read.physical.trian a dezvaluit codul destinat sa pacaleasca SDK-ul Facebook Ads si sa genereze clicuri false pe reclamele generate de aplicatie. In momentul analizei initiale (4 septembrie 2017), ID-urile de anunturi Facebook utilizate de aplicatie erau deja revocate, deoarece, in faza de preluare a anunturilor, un server „Fara umplere” a fost generat de server.

Codul folosit pentru a genera clicuri pe reclame este intr-adevar simplu si consta in utilizarea API-ului MotionEvent pentru a crea un eveniment de atingere falsa, cu coordonate aleatoare in caseta Anunturi si cu un timp de clic aleatoriu. Evenimentul tactil este apoi trimis la vizualizarea Anunturilor folosind metoda dispatchTouchEvent (). Echipa noastra a produs putin PoC pentru a arata ca tehnica poate fi dezvoltata in continuare pentru a genera un eveniment de atingere fals aproape similar cu un eveniment tactil real generat de utilizatorul care atinge ecranul.

In timpul analizei pachetului core.clean.com.scanningapp, o metoda de afisare a „Politicii de confidentialitate” catre utilizator a facut referire la acelasi link de confidentialitate prezent pe pagina Google Play Store. Asa ca am decis sa aruncam o privire asupra acesteia, mai ales ca ceva despre forma e-mailului si a link-ului erau suspecte.

Dupa o verificare rapida a legaturilor de confidentialitate din cele doua aplicatii, unele lucruri au fost clare:

  • listarea de fisiere a adresei URL a CloudFront din linkul de confidentialitate gasit in pachetul core.clean.com.scanningapp dezvaluie prezenta unor fisiere si foldere interesante distribuite de CDN (de exemplu, Ad /, Ad / su.apk, Ad / 404_c .txt etc.);
  • ambele adrese URL prezinta aceeasi structura de fisiere si foldere, ceea ce sugereaza ca, desi Play Store prezinta doi dezvoltatori diferiti, aplicatiile se bazeaza cumva pe acelasi CDN pentru a obtine documentul cu politica de confidentialitate.

Investigarea CDN si descoperirea pluginului Ztorg Ads

Lista completa de fisiere interesante prezente in CDN este urmatoarea:

  • Ad / 404_c.txt
  • Ad / 47001_0.txt
  • Ad / ban.txt
  • Ad / conf_ban.txt
  • Ad / conf_lis.txt
  • Ad / inner.txt
  • Ad / ss.apk
  • Ad / start_inner.txt
  • Ad / su.apk

In afara de fisierele enumerate anterior, exista alte fisiere si foldere inaccesibile legate de jurnalele (de exemplu, gplogs).

Sa incepem cu fisierele Ad / ss.apk si Ad / su.apk. Cele doua fisiere au aceeasi dimensiune, dar hash-ul este diferit. Dupa o inspectie rapida a fisierului ss.apk, a fost clar ca o parte din acesta a fost codata intr-un fel; de fapt, nu era un fisier APK valid. Comparand fisierele su.apk si ss.apk octeti cu octeti, este usor de observat ca doar primii 2048 de octeti ai fisierului ss.apk sunt codati. Pentru a fi mai precis, se aplica o codare XOR cu un singur octet cu cheie = 0xFF la primii octeti 2048 de ss.apk. Dupa decodare, putem vedea ca ss.apk este egal cu su.apk si continutul este doar un singur fisier classes.dex. Codul este usor ofuscat cu nume de clasa / camp fara sens si siruri codate. Dupa analiza, putem vedea ca codul pune in aplicare functii automate de clic pe anunturi si abonamente automate pentru anunturi;

Codul se bazeaza pe configuratia descarcata de pe un URL care nu mai este viu: kmd.phaishey.com/ft/ si foloseste IMSI-ul telefonului pentru a obtine fisierul de configurare corect (de ex. MCC_c.txt, IMSI_0.txt sau IMSI_1.txt) . Analizand lista de fisiere interesante distribuite de CDN, am observat fisierele 404_c.txt si 47001_0.txt. Ele sunt in mod clar cele doua fisiere de configurare solicitate de cod, dar sunt gazduite pe CloudFront CDN (de exemplu, 47001 este IMSI Bangladesh, 404 este India MCC).

  • Fisierul 404_c.txt contine valorile pentru unele variabile utilizate de codul Java;
  • Fisierul 47001_0.txt contine o lista de URL-uri de abonament codate Base64 si codul JavaScript specific pentru automatizarea abonamentului.

Pentru a recapitula, codul se conecteaza la un server pentru a obtine fisierele de configurare (folosind IMSI, deci probabil ca abonamentele sunt bazate pe locatie), iar dupa nasterea WebView, codul Javascript este executat in bucla pentru a abona utilizatorul la diferitele oferte preluate. de pe server. Avand in vedere faptul ca su.apk contine doar un fisier classes.dex, este clar ca se presupune ca este incarcat si executat la runtime de o aplicatie, astfel incat am clasificat fisierul ca un plugin.

Pe parcursul analizei am verificat adresa URL de configurare pentru a intelege de ce a fost scazuta si am observat ca KasperskyLab a reusit sa gaseasca o bucata de cod care se conecteaza la acelasi domeniu (dar subdomeniu diferit): c.phaishey.com/ft/. Cercetarea2 arata un cod cu adevarat similar cu ceea ce am gasit (aceeasi utilizare a IMSI, acelasi domeniu C&C si un cod similar cu clic automat) si este clar ca aplicatiile sunt legate unele de altele.

Investigatiile continua

Cercetatorii KasperskyLab au spus ca codul este legat de campania Ztorg, iar de-a lungul lunilor, au observat ca de mai multe ori au fost disponibile picaturi Ztorg pe Play Store. Asa ca am decis sa mergem mai departe si sa intelegem daca alte aplicatii infectate au fost incarcate si publicate.

Ancheta noastra a inceput acolo unde am lasat-o: pe CDN si link-uri de confidentialitate. De fapt, cautarea pe Google cu anumite intrebari specifice ne-a dat rezultate bune:

  • intext: cloudfront.net/products/ intext: privacy.html intext: „Magic Browser”
  • intext: cloudfront.net/products/ intext: privacy.html intext: „Noise Detector”

Dupa cum era de asteptat, ambele aplicatii analizate in cercetarile anterioare au legatura de confidentialitate indreptata catre acelasi CDN. Conexiunea este acum mai puternica si cu putin efort, am reusit sa gasim mult mai multe aplicatii cu link-ul de confidentialitate indreptat catre CloudFront. Toate documentele de politica de confidentialitate au aceeasi structura, asa ca am decis sa verificam in alte locuri ceva asemanator cu acesta, iar cu putin noroc am gasit diferite conturi github.io care gazduiesc acelasi fisier (cu exceptia numelui aplicatiei care se schimba, evident, de la aplicatie la aplicatie).

Toate fisierele sunt gazduite pe aceeasi cupa Amazon S3:

  • toate fisierele private.html: hxxps: //pajhdf.s3.amazonaws.com/? prefix = products
  • toate dosarele: hxxxps: //pajhdf.s3.amazonaws.com/? delimiter = /

Din nefericire, unele fisiere si foldere interesante nu sunt accesibile (de exemplu, program, tmp), dar toate dosarele legate de fisierul privacy.html sunt accesibile si am avut o modalitate de a colecta toate pachetele bazate pe CDN pentru link-ul de confidentialitate. Fara surpriza, atat Browserul Magic, cat si Detectorul de zgomot sunt pe lista.

In acest moment, am pregatit cateva scripturi pentru a prelua toate pachetele posibile din Play Store, toate informatiile lor si am inceput sa le analizam.

Analiza aplicatiilor

Am inceput sa monitorizam zilnic aplicatiile de pe Play Store. Unele dintre ele sunt adesea actualizate, dar de cele mai multe ori modificarile aduse codului sunt aproape inexistente (de exemplu, doar versiunea aplicatiei sau o anumita denumire a variabilei). Dar monitorizand numarul de descarcari, am observat varfuri mari de descarcare in cateva zile. Rezumand aceste picuri ciudate, e-mail-uri generate aleatoriu ale dezvoltatorului si link-ul ciudat catre acelasi CDN, este clar ca ceva este oprit cu fiecare pachet din aceasta „retea”.

Ca exemplu, pe 14 septembrie, pachetul com.well.bestlight, actualizat ultima data pe 24 august, contorul descarcarilor sale a crescut de la 10.000-50.000 la 50.000-100.000 in cateva ore, in ciuda aplicatiei nu este de obicei in topul listelor de trenduri. , foarte suspect.

Acelasi lucru s-a intamplat si cu alte pachete care nu sunt cele mai trending ale aceleiasi retele:

[wpsm_comparison_table id = ”1 ″ class =” ”]

In lunile anterioare, aplicatiile legate de Ztorg au folosit un truc simplu pentru a se ascunde de detectarea Play Store: o aplicatie legitima este incarcata si actualizata cu cod legitim de ceva timp, apoi o versiune rau intentionata este impinsa si eliminata in cateva ore; doar timpul necesar pentru a infecta unele dispozitive.

In afara de doar colectarea pachetelor actualizate pe Play Store, am reusit sa preluam versiunile anterioare ale acelorasi pachete si era clar ca, candva, o aplicatie legitima includea cod rau intentionat. Ancheta este inca in desfasurare, dar au fost descoperite trei pachete semnificative disponibile pe Play Store si care contin cod potential rau intentionat: com.funny.tzfe, com.hot.mini.goo.wwer.poer si com.optimizer.mybooster.

com.funny.tzfe

Pachetul com.funny.tzfe contine un fisier numit sql.data in active: este un fisier codat (XOR cu un singur octet cu cheie = 0xF) la care se face referire din codul Java. Dupa decodare, acesta este incarcat dinamic si executat de aplicatie. Codul rau intentionat este o varianta a su.apk gasita pe CDN care foloseste URL-ul http://lmk.phaishey.com/ze/ pentru a obtine configuratiile. Codul contine, de asemenea, ceea ce pare a fi un truc anti-emulator, urmatorul URL este contactat: a.erdfojrmfs.com. Folosind comparatia comportamentala Cogito, putem vedea cum fisierele su.apk si sql.data impartasesc aproape toate aceleasi coduri:

Unele API sunt diferite (dupa cum putem vedea din barele verzi si rosii, care inseamna respectiv cod adaugat si eliminat), dar intreaga structura comportamentala este pastrata intre cele doua fisiere; acest lucru este suficient pentru a spune ca ambele sunt conectate, fiind pluginuri Ztorg.

com.hot.mini.goo.wwer.poer

Pachetul com.hot.mini.goo.wwer.poer contine doua fisiere numite custom1.text si custom2.text in folderul resurse; ambele fisiere sunt utilizate pentru a decoda siruri si resurse. Codul se conecteaza la un server, hxxp: //customgo.aavhgoogr.com/homefile/ si descarca un fisier numit customtext2.ttf care este apoi salvat ca customtext2.jar si dezarhivat. Codul disfunctionat contine, de asemenea, ceea ce par a fi verificari anti-emulatoare, in special urmatoarele domenii sunt contactate: custom1.weiojiore.com si custom2.weiojiore.com. Cu presupusul domeniu C&C offline, nu am putut descarca fisierul customtext2.ttf pentru inspectie.

com.optimizer.mybooster

Pe 27 septembrie, pachetul com.optimizer.mybooster a fost incarcat in Play Store cu unele diferente fata de versiunile anterioare. In special, doua fisiere (FastBoosterLite3.txt si OaceOaT8w5Xda6wa) au fost adaugate la active si o clasa Java a fost injectata. Fisierul FastBoosterLite3.txt nu este un fisier text, dar se pare ca este versiunea „lite” a aceluiasi pachet. Extensia txt a fost adaugata probabil ca o forma slaba de ascundere a extensiilor. Desi fisierul OaceOaT8w5Xda6wa este un pachet GZip, nu exista nicio referinta despre acesta in codul Java (si nici in codul nativ), asa ca arata ciudat. Dupa o cautare rapida, este clar ca noul cod Java injectat si fisierul OaceOaT8w5Xda6wa fac parte din cadrul VirtualApp3, care permite dezvoltatorului sa creeze un spatiu virtual pentru a instala si rula un APK pe acesta. Codul Java injectat arata modul in care este creat spatiul virtual si ca daca fisierul de configurare a fost descarcat (de la urmatoarea adresa URL: hxxp: //parl.kuxwmuzuz.com/app/fastbooter/conf.txt) de catre aplicatie contine optiunea isStartVA set la 1, apoi FastBoosterLite3.txt trebuie instalat si executat. Avand in vedere cantitatea de permisiuni solicitate de pachet, daca o aplicatie rau intentionata este instalata in loc de FastBoosterLite3, decat jocul este facut si acest lucru ar trebui sa fie luat in considerare ca aplicarea sa fie suspendata.

Ca o nota laterala, dupa extragerea fisierului GZip OaceOaT8w5Xda6wa, am obtinut un fisier binar nedetectat de libmagic, dar binwalk a dezvaluit prezenta anteturilor ZIP la anumite compensari specifice. Fisierul era un pachet ZIP rasturnat, impartit in bucati si reasamblat intr-o ordine gresita. Din fericire, la sfarsitul fiecarui bloc scramblat, a fost anexat un octet reprezentand pozitia initiala. Dupa remedierea lui cu un editor hex, am obtinut o arhiva ZIP complet functionala. ZIP contine un fisier classes.dex ofuscat care aparent implementeaza o logica de afisare a reclamelor pentru o companie chineza numita Youmi. Asa cum am spus anterior, fisierul nu pare sa fie trimis nicaieri in cod, astfel incat este probabil neutilizat si nu are legatura cu ancheta.

Comparatie comportamentala a pachetelor monitorizate

In urma comparatiei efectuate pentru fisierele sql.data si su.apk, am decis sa corelam comportamental toate pachetele colectate in timpul monitorizarii. Fara surprindere, multi dintre ei au avut rezultate foarte similare. De fapt, in timpul analizei, am vazut clar aceeasi structura adoptata in diferite APK-uri (de exemplu, nume similare, structuri similare de pachete Java, active sau resurse similare). Urmatoarea este o comparatie cu unele pachete alese aleatoriu in setul de aplicatii analizate:

Dupa cum se poate observa, aplicatiile cu aceleasi comportamente fac parte dintr-un grup de culori specific; intrucat numele aplicatiei sugereaza ca jocurile sunt deopotriva una cu cealalta, acelasi lucru se aplica aplicatiilor foto si curatatorilor de telefon (desi acest ultim grup a fost impartit in doua, din cauza capacitatilor de curatare si stimulare).

In general, avem un set de aplicatii care afiseaza agresiv reclame catre utilizator, incearca sa profite de serviciile de accesibilitate si, uneori, sa treaca de la aplicatii legitime la cele potential nedorite, incluzand codul Java nou, active codate si conectarea la diferite adrese URL pentru a descarca suplimentar fisiere sau configuratii (de ex. aavhgoogr.com, kuxwmuzuz.com, phaishey.com). Rezumand adresa falsa a dezvoltatorului, link-ul de politica, comentariile si ratingurile in Play Store, numele generat la intamplare dat fiecarui pachet, dovezile aceluiasi cod in APK-uri diferite si prezenta unor aplicatii rau intentionate (de exemplu, cele doua APK-uri raportate de KasperskyLab si pachetele analizate) fac parte din aceeasi retea,

Conexiuni intre aplicatii

Testand unele dintre aplicatiile de pe un emulator, am observat ca fiecare dintre ele contine o piata falsa (numita „piata publicitara”) care arata o lista de aplicatii care trebuie descarcate. Cele mai multe dintre ele fac parte din lista care vine de la CDN, astfel incat, din nou, exista o conexiune, chiar daca aparent fiecare aplicatie este incarcata pe Play Store de un cont de dezvoltator diferit.

In urmatoarele videoclipuri, putem vedea cum pe piata falsa exista o frecventa mare a aplicatiilor conectate, iar al doilea videoclip arata cum o aplicatie profita de puterea Serviciului de accesibilitate pentru a identifica si face clic pe ferestrele de alerta cu un „OK” incorporat buton (de exemplu, acest tip de capacitate a fost gasit in diferite esantioane, in special in rapelele telefonului si in cele mai curate).

Google si Facebook

Pe parcursul investigatiei, am reusit sa luam contact atat cu Google Play Protect, cat si cu echipele de calitate si frauda a traficului Facebook.

Echipa Google Play Protect a confirmat prezenta fraudelor de clic pe anunturi intr-un set de pachete pe care le-am trimis ca confirmare si am procedat la eliminarea acestora din Play Store:

[wpsm_comparison_table id = ”2 ″ class =” ”]

Dintre toate pachetele colectate de pe CDN, unele au fost eliminate din Play Store inainte si in timpul analizei noastre. Din lista de pachete pe care le monitorizam, urmatoarele nu mai sunt accesibile:

Echipa Facebook Quality and Fraud a confirmat faptul ca unele dintre pachetele pe care le-am furnizat implementau trucuri cu clic automat pe anunturile Facebook. De asemenea, au confirmat ca contul de Facebook Ads din spatele mai multor pachete este acelasi, chiar daca contul de dezvoltator Play Store este diferit. Aceasta este confirmarea ca cumva dezvoltatorul din spatele intregii retele este acelasi.

Lista pachetelor inca vii in Play Store:

  • com.photo.optimize.master
  • com.collage.pic.editor
  • com.hot.fflmachine
  • com.player.kmplayer
  • com.heartful.heartfulpuzzle
  • com.ocean3d.paper.dynamic
  • com.jiubang.fastestflashlight
  • com.pop.leisure.plan.user.love
  • com.gray.timer.phonecleanerpro
  • com.funny.check.blood.weapon
  • mglobals.mobile.centernews
  • com.pond3d.wall.paper
  • com.plus.personality.master
  • com.paper.exquisite.watch

Concluzie

Validarea noastra manuala a confirmat detectarea comportamentala a Cogito a celor doua aplicatii daunatoare. Din cand in cand, vom documenta alte exemple de detectare / validare care considera ca comunitatea de securitate mobila va beneficia de intelegere.

Referinte

  1. APK-urile descarcate au fost preluate din topul zilnic generat de 42matters: https://42matters.com/docs/app-market-data/file-dump/top-google-charts
  2. https://securelist.com/ztorg-from-rooting-to-sms/78775/
  3. https://github.com/asLody/VirtualApp

Multumiri speciale cercetatorilor zLabs, Matteo Favaro (@fvrmatteo), Simone Margaritelli (@evilsocket), Gianluca Braga (@ Matrix86_), Nicolas Trippar (@ntrippar), Tamir Zahavi-Brunner (@tamir_zb), Rani Idan (@raniXCH) si Ziv Zeira pentru ajutor in acest proces.