Android – Bankacılık Zararlı Yazılım Analizi [ANUBIS]
Android dünyasında zararlı yazılımların sayısı gün geçtikçe artmaktadır. Bu zararlı yazılımlar Google Play Store’dan da yayılmaktadır. Evet, güvenli diye nitelendirdiğimiz Play Store’un koruması bazı zamanlarda yetersiz kalabilmektedir.
Güvenlik uzmanları bu uygulamaları ortaya çıkarmak, tespit etmek için çalışsa da bazen iş işten geçmiş olabilmektedir. Bu zararlı uygulamalar(dropper) genel olarak farklı bir zararlı indirerek bankacılık uygulamalarını hedef almaktadır.
Son zamanlarda, Türkiye’yi de hedef alan bu zararlı yazılımların sayısında büyük artış yaşandı. Bu analizde de benzer bir uygulamanın indirdiği “Anubis II” türevi olan bir zararlı uygulamayı inceleyeceğiz.
Testlere başladığımız zaman zararlı uygulamanın hash bilgisi virustotal vb. yerlerde bulunmuyordu. Yeni bir zararlı türeviydi.
VirusTotal Linki;
Statik Analiz;
Uygulamanın aldığı izin listesine bakacak olursak, kendisinden şüphe duymaya başlıyoruz:
Uygulama, telefonunu bana teslim et diyor resmen. Tek tek izinleri açıklamaya gerek yok, benim ilk dikkatimi çeken; mesaj alıp vermesinin yanısıra, mesajlara cevap gönderiyor olması.
Tüm izinlere tek çerçevede bakarsak uygulama RAT gibi görünüyor. Zararlı yazılımın, telefonunuzu uzaktan yönetebilmek amacıyla kurgulandığını söylemek mümkün.
Uygulamanın kaynak kodlarına baktığımızda kodların obfuscate(karmaşıklaştırma) edilmiş olduğunu görmekteyiz:
Uygulama ne ile derlenmiş diye bakalım dediğimizde;
Burdan herhangi bir ekmek çıkmadı bize.
Uygulamayı de-obfuscate edip kaynak kodlarını açık şekilde elde etmek için önünüzde birden fazla yol var.
- Hali hazırda sadeleştirme/de-obfuscation uygulamalarını denemek; dex-oracle , simplify gibi
- Kısa yöntem ama yetersiz.
- Kendi de-obfuscation kodunuzu yazmak
- Uzun yöntem, sonucu belirsiz ?
- Daha low level’e inerek(smali || assembly) uygulamayı analiz etmek
- Uzun yöntem, sonucu belirsiz ?
- Uygulamanın sınıflarına kanca(hook) atıp, analiz etmek
Basit (jar’ı extract etmek basit olmayabiliyor 🙂 ) ve pratik olarak 4. adımı uygulamak üzere dinamik analize geçiyoruz
Dinamik Analiz;
Uygulama sanal vm ortamında(genymotion) yükleyip kuruyoruz.
Dosyayı sürükleyip sanal cihaza bırakabilirsiniz yada terminalden kurabilirsiniz;
adb install 2767.apk
Uygulamayı kurarken gerekli kancaları(hooking) da atmışsanız logcat çıktısında aşağıdaki bilgileri görmek mümkün;
... {"timestamp":1547649006124,"result":{"descriptor":55},"class":"libcore.io.IoBridge","method":"open","type":"file","args":["\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.jar","577"]} {"timestamp":1547649006126,"result":{"fd":{"descriptor":55},"shouldClose":true,"guard":{},"mode":577},"hooked_method":"newInstance","hooked_class":"java.lang.reflect.Constructor","args":[["\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.jar"]],"class":"java.lang.reflect.Method","method":"invoke","type":"reflection"} ... D/dalvikvm( 2799): DEX prep '/data/data/com.rsjqvjp.pdmozu/app_files/rsznrt.jar': unzip in 1ms, rewrite 56ms {"timestamp":1547649006433,"class":"dalvik.system.DexFile","method":"dalvik.system.DexFile","type":"dex","args":["\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.jar","\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.dex","0"]} {"timestamp":1547649006433,"result":{"mCookie":-1203249256,"mFileName":"\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.jar","guard":{}},"class":"dalvik.system.DexFile","method":"loadDex","type":"dex","args":["\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.jar","\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.dex","0"]} {"timestamp":1547649006434,"class":"dalvik.system.DexClassLoader","method":"dalvik.system.DexClassLoader","type":"dex","args":[":\/data\/data\/com.rsjqvjp.pdmozu\/app_files\/rsznrt.jar","\/data\/data\/com.rsjqvjp.pdmozu\/app_files","dalvik.system.PathClassLoader[DexPathList[[zip file \"\/data\/app\/com.rsjqvjp.pdmozu-1.apk\"],nativeLibraryDirectories=[\/data\/app-lib\/com.rsjqvjp.pdmozu-1, \/system\/lib]]]"]} ...
Uygulamanın jar dosyasını ‘/data/data/com.rsjqvjp.pdmozu/app_files/’ dizininde ‘rsznrt.jar’ adında bıraktığını görüyoruz.
İlgili jar dosyası daha sonra dex formatına çevrildikten sonra otomatik olarak kaldırılıyor. Gerekli scriptleri yazdıktan sonra jar dosyasını elde etmek mümkün.
Jar dosyasını elde edince işimiz daha kolay. Elde ettiğimiz Jar dosyasını java decompiler (jadx-gui vb.) aracı ile açtıktan sonra kaynak kodlara açık şekilde ulaşabiliyoruz 🙂
Kodları böyle çiçek gibi gördükten sonra;
Bundan sonrası açık kodu analiz etmeye kalıyor.
Kaynak kodlarına bakmadan önce, Anubis hakkında bilmemiz gereken; bu uygulama aslında bir RAT(Remote Access/Administration Tool) . Bu nedenle bu uygulamayı oluşturan saldırganların aşağıdaki gibi bir arayüz ekranı var aslında;
Uygulama kodlarında da bunu görmek mümkün;
Bağlantı;
Ses kaydedici;
Ekran görüntüsü;
Telefonda yönetici/admin hakkı elde etmek;
Detaylı bilgi için;
https://developer.android.com/reference/android/app/admin/DevicePolicyManager
SMS işlemleri;
Endpoint/CC işlemleri;
Twitter adresi de ne alaka derseniz; şuan ilgili hesap kapatıldığı için net birşey söylemek mümkün değil. Ama eski anubis türevlerinde twitter adresinden atılmış bir twit ile CC adreslerinin kullanıldığını biliyoruz;
Örneğin, yukarıdaki Twitter adresi bir CC adresi, decode ediliği zaman aşağıdaki CC adresine erişmek mümkün;
http://erhgefhsdfsdg[.]com
Ortam kontrolü;
Anti-Analiz tekniği olarak kullanılmış.
Sensor Kontrolü;
Anti-Analiz tekniği olarak kullanılmış.
Dosya Şifreleme(Ransomware);
Sunucu iletişimi;
Ve CCs;
Uygulama yetenekleri;
Arama yönlendirme;
Bu fonksiyonda, saldırganlar kullanıcının telefonunu yönlendirerek, para transferi işlemlerinde bankanın kullanıcıya erişmesini engelliyor.
Uygulamanın etkilediği, telefon üzerinde hedef aldığı uygulama listesi paket içerisinde statik olarak eklenmiş .
Türkiye’den de birçok bankanın yer aldığı bu liste şu şekilde;
at.spardat.bcrmobile at.spardat.netbanking com.bankaustria.android.olb com.bmo.mobile com.cibc.android.mobi com.rbc.mobile.android com.scotiabank.mobile com.td cz.airbank.android eu.inmite.prj.kb.mobilbank com.bankinter.launcher com.kutxabank.android com.rsi com.tecnocom.cajalaboral es.bancopopular.nbmpopular es.evobanco.bancamovil es.lacaixa.mobile.android.newwapicon com.dbs.hk.dbsmbanking com.FubonMobileClient com.hangseng.rbmobile com.MobileTreeApp com.mtel.androidbea com.scb.breezebanking.hk hk.com.hsbc.hsbchkmobilebanking com.aff.otpdirekt com.ideomobile.hapoalim com.infrasofttech.indianBank com.mobikwik_new com.oxigen.oxigenwallet jp.co.aeonbank.android.passbook jp.co.netbk jp.co.rakuten_bank.rakutenbank jp.co.sevenbank.AppPassbook jp.co.smbc.direct jp.mufg.bk.applisp.app com.barclays.ke.mobile.android.ui nz.co.anz.android.mobilebanking nz.co.asb.asbmobile nz.co.bnz.droidbanking nz.co.kiwibank.mobile com.getingroup.mobilebanking eu.eleader.mobilebanking.pekao.firm eu.eleader.mobilebanking.pekao eu.eleader.mobilebanking.raiffeisen pl.bzwbk.bzwbk24 pl.ipko.mobile pl.mbank alior.bankingapp.android com.comarch.mobile.banking.bgzbnpparibas.biznes com.comarch.security.mobilebanking com.empik.empikapp com.empik.empikfoto com.finanteq.finance.ca com.orangefinansek eu.eleader.mobilebanking.invest pl.aliorbank.aib pl.allegro pl.bosbank.mobile pl.bph pl.bps.bankowoscmobilna pl.bzwbk.ibiznes24 pl.bzwbk.mobile.tab.bzwbk24 pl.ceneo pl.com.rossmann.centauros pl.fmbank.smart pl.ideabank.mobilebanking pl.ing.mojeing pl.millennium.corpApp pl.orange.mojeorange pl.pkobp.iko pl.pkobp.ipkobiznes com.kuveytturk.mobil com.magiclick.odeabank com.mobillium.papara com.pozitron.albarakaturk com.teb ccom.tmob.denizbank com.tmob.tabletdeniz com.vakifbank.mobilel tr.com.sekerbilisim.mbank wit.android.bcpBankingApp.millenniumPL com.advantage.RaiffeisenBank hr.asseco.android.jimba.mUCI.ro may.maybank.android ro.btrl.mobile com.amazon.mShop.android.shopping || com.amazon.windowshop com.ebay.mobile ru.sberbankmobile || ru.sberbank.spasibo || ru.sberbank_sbbol || ru.sberbank.mobileoffice || ru.sberbank.sberbankir ru.alfabank.mobile.android || ru.alfabank.oavdo.amc || by.st.alfa || ru.alfabank.sense || ru.alfadirect.app ru.mw com.idamob.tinkoff.android || ru.tcsbank.c2c || ru.tinkoff.mgp || ru.tinkoff.sme || ru.tinkoff.goabroad ru.vtb24.mobilebanking.android || ru.bm.mbm || com.vtb.mobilebank || com.bssys.VTBClient || com.bssys.vtb.mobileclient com.akbank.android.apps.akbank_direkt || com.akbank.android.apps.akbank_direkt_tablet || com.akbank.softotp || com.akbank.android.apps.akbank_direkt_tablet_20 || com.fragment.akbank com.ykb.android || com.ykb.android.mobilonay || com.ykb.avm || com.ykb.androidtablet || com.veripark.ykbaz com.softtech.iscek || com.yurtdisi.iscep || com.softtech.isbankasi || com.monitise.isbankmoscow com.finansbank.mobile.cepsube || finansbank.enpara || com.magiclick.FinansPOS || com.matriksdata.finansyatirim || finansbank.enpara.sirketim || com.vipera.ts.starter.QNB || com.redrockdigimark com.garanti.cepsubesi || com.garanti.cepbank || com.garantibank.cepsubesiro || com.matriksdata.finansyatirim || biz.mobinex.android.apps.cep_sifrematik || com.garantiyatirim.fx com.tmobtech.halkbank || com.SifrebazCep || eu.newfrontier.iBanking.mobile.Halk.Retail || tr.com.tradesoft.tradingsystem.gtpmobile.halk || com.DijitalSahne.EnYakinHalkbank com.ziraat.ziraatmobil || com.ziraat.ziraattablet || com.matriksmobile.android.ziraatTrader || com.matriksdata.ziraatyatirim.pad de.comdirect.android de.commerzbanking.mobil de.consorsbank com.db.mm.deutschebank de.dkb.portalapp || com.de.dkb.portalapp com.ing.diba.mbbr2 de.postbank.finanzassistent mobile.santander.de de.fiducia.smartphone.android.banking.vr fr.creditagricole.androidapp fr.axa.monaxa fr.banquepopulaire.cyberplus net.bnpparibas.mescomptes com.boursorama.android.clients com.caisseepargne.android.mobilebanking fr.lcl.android.customerarea com.paypal.android.p2pmobile com.wf.wellsfargomobile || com.wf.wellsfargomobile.tablet || com.wellsFargo.ceomobile com.usbank.mobilebanking com.usaa.mobile.android.usaa com.suntrust.mobilebanking com.moneybookers.skrillpayments.neteller com.moneybookers.skrillpayments com.clairmail.fth com.konylabs.capitalone || com.yinzcam.facilities.verizon com.chase.sig.android com.infonow.bofa || com.bankofamerica.cashpromobile uk.co.bankofscotland.businessbank || com.grppl.android.shell.BOS com.rbs.mobile.android.natwestoffshore || com.rbs.mobile.android.natwest || com.rbs.mobile.android.natwestbandc com.rbs.mobile.investisir || com.phyder.engage || com.rbs.mobile.android.rbs || com.rbs.mobile.android.rbsbandc uk.co.santander.santanderUK || uk.co.santander.businessUK.bb || com.sovereign.santander com.ifs.banking.fiid4202 || com.fi6122.godough com.rbs.mobile.android.ubr com.htsu.hsbcpersonalbanking com.grppl.android.shell.halifax com.grppl.android.shell.CMBlloydsTSB73 com.barclays.android.barclaysmobilebanking com.unionbank.ecommerce.mobile.android || com.unionbank.ecommerce.mobile.commercial.legacy com.snapwork.IDBI || com.idbibank.abhay_card || src.com.idbi || com.idbi.mpassbook com.ing.mobile com.snapwork.hdfc com.sbi.SBIFreedomPlus hdfcbank.hdfcquickbank com.csam.icici.bank.imobile in.co.bankofbaroda.mpassbook com.axis.mobile cz.csob.smartbanking cz.sberbankcz sk.sporoapps.accounts || sk.sporoapps.skener com.cleverlance.csas.servis24 org.westpac.bank || nz.co.westpac au.com.suncorp.SuncorpBank org.stgeorge.bank org.banksa.bank au.com.newcastlepermanent au.com.nab.mobile au.com.mebank.banking au.com.ingdirect.android || MyING.be com.imb.banking2 com.fusion.ATMLocator au.com.cua.mb com.commbank.netbank || com.cba.android.netbank com.citibank.mobile.au || com.citibank.mobile.uk || com.citi.citimobile org.bom.bank com.bendigobank.mobile || me.doubledutch.hvdnz.cbnationalconference2016 au.com.bankwest.mobile com.bankofqueensland.boq com.anz.android.gomoney || com.anz.android || com.anz.SingaporeDigitalBanking || com.anzspot.mobile || com.crowdcompass.appSQ0QACAcYJ || com.arubanetworks.atmanz || com.quickmobile.anzirevents15 at.volksbank.volksbankmobile || de.fiducia.smartphone.android.banking.vr || it.volksbank.android || it.secservizi.mobile.atime.bpaa || de.fiducia.smartphone.android.securego.vr || com.unionbank.ecommerce.mobile.commercial.legacy com.isis_papyrus.raiffeisen_pay_eyewdg at.easybank.mbanking || at.easybank.tablet || at.easybank.securityapp at.bawag.mbanking || com.bawagpsk.securityapp || at.psa.app.bawag com.pozitron.iscep com.vakifbank.mobile || com.pozitron.vakifbank com.starfinanz.smob.android.sfinanzstatus || com.starfinanz.mobile.android.pushtan || com.entersekt.authapp.sparkasse || com.starfinanz.smob.android.sfinanzstatus.tablet com.starfinanz.smob.android.sbanking com.palatine.android.mobilebanking.prod fr.laposte.lapostemobile || fr.laposte.lapostetablet com.cm_prod.bad || com.cm_prod.epasal || com.cm_prod_tablet.bad || com.cm_prod.nosactus mobi.societegenerale.mobile.lappli com.bbva.netcash com.bbva.bbvacontigo || com.bbva.bbvawallet es.bancosantander.apps || com.santander.app es.cm.android || es.cm.android.tablet || com.bankia.wallet com.jiffyondemand.user com.latuabancaperandroid com.latuabanca_tabperandroid com.lynxspa.bancopopolare com.unicredit it.bnl.apps.banking it.bnl.apps.enterprise.bnlpay it.bpc.proconl.mbplus it.copergmps.rt.pf.android.sp.bmps it.gruppocariparma.nowbanking it.ingdirect.app it.nogood.container it.popso.SCRIGNOapp posteitaliane.posteapp.apppostepay com.abnamro.nl.mobile.payments com.triodos.bankingnl nl.asnbank.asnbankieren nl.snsbank.mobielbetalen com.btcturk com.finansbank.mobile.cepsube com.ingbanktr.ingmobil com.kuveytturk.mobil com.magiclick.odeabank com.mobillium.papara com.pozitron.albarakaturk com.teb com.tmob.denizbank com.ykb.android finansbank.enpara tr.com.hsbc.hsbcturkey tr.com.sekerbilisim.mbank com.att.myWireless com.vzw.hss.myverizon com.Plus500 eu.unicreditgroup.hvbapptan com.targo_prod.bad com.db.pwcc.dbmobile com.db.mm.norisbank com.bitmarket.trader com.plunien.poloniex com.bitmarket.trader com.mycelium.wallet com.bitfinex.bfxapp com.binance.dev com.btcturk com.binance.odapplications com.blockfolio.blockfolio com.crypter.cryptocyrrency io.getdelta.android com.edsoftapps.mycoinsvalue com.coin.profit com.mal.saul.coinmarketcap com.tnx.apps.coinportfolio com.coinbase.android com.portfolio.coinbase_tracker de.schildbach.wallet piuk.blockchain.android info.blockchain.merchant com.jackpf.blockchainsearch com.unocoin.unocoinwallet com.unocoin.unocoinmerchantPoS com.thunkable.android.santoshmehta364.UNOCOIN_LIVE wos.com.zebpay com.localbitcoinsmbapp com.thunkable.android.manirana54.LocalBitCoins com.thunkable.android.manirana54.LocalBitCoins_unblock com.localbitcoins.exchange com.coins.bit.local com.coins.ful.bit com.jamalabbasii1998.localbitcoin zebpay.Application com.bitcoin.ss.zebpayindia com.kryptokit.jaxx
IOCs;
Uygulamada geçen C2 adresleri de şu şekilde;
http://69[.]com/ https://twitter[.]com/ermando07225597 http://sositehuypidarasi[.]com http://ktosdelaetskrintotpidor[.]com
Dosya Hash bilgileri;
SHA256: | fd69bc7cf471b30e34e8cc09b8640518b4662bff54c7e5e166426ab95cf1f948 |
SHA256: | 5a75a2160c54c6e80ba432a903e3d70bea9a8259d724f2df0d2874e0e4052f71 |
Sonuç ve Çözüm Önerileri;
Görüldüğü üzere, bu tür zararlı uygulamalar telefon üzerinde her hareketi yapabilmekte. Son kullanıcı veya uygulama sahiplerinin(banka vb.) alabileceği bazı çözüm önerilerim;
Son kullanıcı / Telefon sahipleri;
- Telefonlarında güncel antivirüs programı yüklemek
- Her virüs programı iyi değil tabi, ücretsiz olanlardan önerim Dr. Web
- Google Play dışında harici bir market vb. yerden uygulama indirmemek
- Crack’li uygulamaları kullanmamak
- İndirme istatistiklerine bakarak, popüler olmayan uygulamalardan uzak durmak
Uygulama sahipleri;
- Telefonda kurulu paketlerin listesini çekerek, kullandığınız blacklist ile uygulamanızı beslemek
- Telefonda kurulu paketlerin kullandığı izin listelerini çekerek, tehlikeli uygulama varsa son kullanıcıyı uyarmak ve kendi sisteminize de alarm göndermek
- Android’in belirttiği ‘Not for use by third-party applications.’ açıklaması ile ilişkili tüm izin listesi bu listeye eklenebilir. (39 Tane)
- https://developer.android.com/reference/android/Manifest.permission
- Örnek olarak, incelediğimiz bu zararlının kullandığı ‘SEND_RESPOND_VIA_MESSAGE’ ve ‘BROADCAST_SMS‘ izni de bu listede yer almaktadır.
- https://stackoverflow.com/questions/7937794/how-to-get-installed-applications-permissions
- https://developer.android.com/reference/android/content/pm/PackageInfo#permissions
- Android’in belirttiği ‘Not for use by third-party applications.’ açıklaması ile ilişkili tüm izin listesi bu listeye eklenebilir. (39 Tane)
Yararlı olması dileğiyle.
And, thanks for inspiring & helping Lukas 🙂
…
17 January 2019 at 15:24
teşekkürler
22 February 2020 at 15:30
Harika yararlı bir makale olmuş gerçekten