Android Zararlı Yazılım Analizi : Anubis

Anubis

anubis

Anubis incelediğim ilk karmaşık android zararlı yazılımlarından birisi oldu. Android zararlı yazılımlarının kullandığı teknikler hakkında bilgi sahibi olmamda önemli rol oynadı. Bu yazıda da anubisin kullandığı teknikleri sizlerle paylaşmak istedim.

Anubis “Banker” ailesine ait bir zararlı yazılım. Banker nedir ? Banka uygulamarını hedef alan zararlı yazılımlar. Mazain’in 2016’da yayınladığı açık kaynak bankbot temel alınarak yine
mazain tarafından geliştirilen bir zararlı. Kiralama usulüyle dönen bir olay. Neyse bu kısım çok önemli değil.

Anubisi kiralayan kişiler, Mart 2018’den Nisan 2019’a kadar Google Play Store’da Türk kullanıcıları hedef alan birçok uygulama yayınladı. Google Play Store’dan topladığım uygulamalar:

gplay

Anubisin sahip olduğu özellikleri listeleyecek olursak:

  • Overlay saldırıları ile online bankacılık bilgisi çalmak
  • Ransomware ( SDCardda bulunan dosyaların şifrelenmesi )
  • SMS interception / Call forwarding
  • RAT
  • Keylogger

Yok yok anlayacağınız.

Zararlının dağıtılması için iki yol kullanılıyor. Dropper uygulamalar ve direk zararlının kendisini dağıtan siteler.

Dropperlar

Dropper terimini yüklendikten sonra asıl zararlıyı indiren uygulamalar için kullanıyoruz. Bu uygulamaları Play Store’da görüyoruz. Direk zararlının kendisini dağıtan siteler için örnek : whatsapp güncellemesi gibi sahte siteler. Burdan indirilen uygulamalar direk zararlının kendisi oluyor genelde.

Neden Play Store için dropper kullanıyolar ? Çünkü yakalanma riski daha az. Mesela bazi dropperlar adim sayar kullaniyor. Siz emulatorde actiginizda adim sayilmayacagi icin zararli test ortaminda calismiyor. Hatta Play Protecti atlatabilmek icin zararli bulundugu agin google ipsi olup olmadigini kontrol ediyor.

Peki bu dropper uygulamalar nasıl başka bir uygulama yükleyebiliyor ?
Androidde REQUEST_INSTALL_PACKAGES isminde uygulamaların alabileceği bir yetki var. Bu yetkiye sahip uygulamalar başka bir uygulama yükleyebiliyor. Dropper uygulamalar bu izni alıyor.
Bence Play Store’un şuanki durumunu ve zararlıların dağıtım şekline bakacak olursak bu izin çok tehlikeli ve kesinlikle telefona bir uygulama yüklenirken kesinlikle kontrol edilmesi gerekiyor.

Sosyal Mühendislik

Dropper uygulamalar telefona yüklendikten sonra kullanıcıya farkettirmeden işlemlerini yapmak isteyecektir. Öncelikle dropper uygulamalar daha değerli kurban yakalayabilmek için
Döviz Çeviri gibi finans ile alakalı uygulama ismi kullanıyorlar. Bu uygulamalar genellikle başka bir uygulamanın taklidi oluyor ve aynı isime sahip oluyorlar. Örneğin :

14 13 12 11 10 9 8 7
6 5 4 3 2 1

( trendingi goruyorsunuz :frowning: )

Bu uygulamalar nasıl çalışıyor ondan bahsedeyim. Yüklendikten sonra uygulama kısayolunu anaekrandaki uygulama listesinden kaldırıyor. Bu androidin developerlara sunduğu bir özellik neden bilinmez. Neden bunu yapıyor tabiki silinme riskini azaltmak için. Diyelim siz bir uygulama yüklediniz ama istediğin şekilde çalışmadı ne yapıyorsunuz ? Hemen uygulamayı bulup silersiniz. Kısayol silindiği için bu sefer ayarlara gidip uygulamayı orda bulup silmeniz gerekicek. Bu kadarla kalmıyor tabi. Bunu düşündükleri icin Güncelleme hatası göstererek sizi taklit edilen uygulamanın bulunduğu Play Store linkine yönlendiriyor. Siz uygulamayı yüklediğinizde uygulama kısayollarında ilki saklandığı için aynı icona sahip tek bir uygulama kalıyor. Böylece siz asıl uygulamayı kullanırken arka planda dropper uygulama istediği işlemleri yapıyor. Eğer ayarlardan uygulama listesine giderseniz aynı icon ve isme sahip iki uygulama görüyorsunuz.

downloader

Ve uygulamayı silmeye çalışırsanız size hata veriyor ?

Sistem Güncellemesi ?

Dropper yüklendikten sonra ikinci aşama için başka bir uygulama telefona indiriliyor. Eğer kullanıcı REQUEST_INSTALL_PACKAGES iznini uygulamaya verirse ikinci uygulama yüklenebiliyor.
İndirilen uygulamalar Anubisin asıl zararlı kısmı. Bu uygulamaların silinmemesi için yine bir nevi sosyal mühendislik yapıyorlar. Bu uygulamalardan bazılarının icon ve isimleri şu şekilde :

Flash Player Guncellemesi Guncelleme Operator Guncellemesi Servis Guncellemesi Sistem Guncellemesi
flash gunc ope servis sys

Bu iconlarla öncelikle kullanıcıya gerçek bir uygulama hissi yaratılmaya çalışıyor. Öte yandan kullanıcının bu uygulamaları açması içinde “tıklanabiletesi” yüksek isimler seçiliyor. Uygulama açıldığında Accessibility izni istiyor ve ekrana herhangi birşey verilmeden anaekrana geri dönüyor. Açıldıktan sonra tabiki yine kendi kısayolunu saklıyor.

dropped

Bir anlığına çıkan onay mesajını gördünüzmü ? Birazdan değinicem

Persistence

Masaüstü zararlı yazılımları “persistence” yani devamlılıklarını sağlayabilmek için kendilerini Startup klasorune yazarlar. Böylece bilgisayar her başlatıldığında zararlı yazılımda başlatılır. Peki androidde durum ne ? Yine güzel bir iznimiz var RECEIVE_BOOT_COMPLETED Bu izni alan uygulamalar telefon açılmasını bir receiver aracılığı ile anlayabiliyorlar ve uygulama başlatılabiliyor.

Zararlıyı silmek

Diyelim kullanıcı birşeylerden şüphelendi ve zararlıyı silmek istedi. Ama silmek için ayarlardan uygulamaya tıkladığında sistem uygulamarı silinemez diye bir mesajla karşılaşıp anaekrana yönlendiriliyor. Sistem uygulamaları aslında varolan bir kavram. Eğer uygulamalar device admin yetkisi alırsa bu yetkiyi kaldırmadan uygulamayı silemiyorsunuz. Fakat uygulama bizden device admin yetkisi almıyor. Nasil yapiyor bakalim

Accessibility

Bu işi nasıl yaptığını anlamak için önce accesebility neymiş onu öğrenelim.
Official android sayfasından : Accessibility Services run in the background and receive callbacks by the system when AccessibilityEvents are fired. Such events denote some state transition in the user interface, for example, the focus has changed, a button has been clicked, etc. Such a service can optionally request the capability for querying the content of the active window.

Diyorki accesebility ile çalışan uygulamalar kullanıcının aktivitelerini takip edebilir, butona bastığını, odağın değiştiğini anlayabilir. Ekstradan bazı olayları kendi başına yapabilir mesela butonlara tıklama (çıkan mesaj kutusunu hatırlayın)

Anubis bu izni aldıktan sonra accesebility eventlerini takip ediyor. Takip ettiği eventler şu şekilde:

  • TYPE_VIEW_CLICKED
  • TYPE_VIEW_FOCUSED
  • TYPE_VIEW_TEXT_CHANGED
  • TYPE_WINDOW_STATE_CHANGED

Silinmemek için öncelikle TYPE_WINDOW_STATE_CHANGED eventini takip ediyor. Bu event yeni bir pencere açıldığında tetikleneniyor. Siz ayarlara gittiğinizde - ayarlar com.android.settings paket adına sahip bir uygulama- yeni bir pencere açılmış oluyor. Bu eventin detaylarında tabiki hangi uygulama başlatılmış oda yazıyor. İkinci olarak uygulama adı com.android.settings kontrolu yapiliyor. Ardından eğer eventin detaylarında bazı stringler varsa kullanıcıya mesaj kutusu gösterip bir fonksiyon çağırıyor. Silinmemek için gerçekleştirdiği kontroller şu şekilde:

check

İlk olarak zararlının ismi - ki başka uygulamalarda bu hatayı cikarmasin -

  • Servis Guncellemesi (this.a.i(this))

Sonrasında

  • uninstall (this.f)
  • to remove (this.g)

Eğer tüm koşullar doğruysa a() fonksiyonunu çağırıyor. Bu fonksiyon bir AlertDialog başlatıyor ve size hata mesajını gösteriyor. Uygulamanın gösterilebilr bir içeriği de olmadığı için android kullanıcıyı ana ekrana yönlendiriyor. Siz uygulama listesinden zararlıya tıkladığınızda bu olaylar gerçekleşiyor ve silemiyorsunuz. Silebilmek için önce Accesibility iznini kapatmanız gerekiyor. Kapattığınız an zararlı sürekli size izin vermeniz için istekte bulunacak tabi. İzni kaldırdıktan sonra telefonu safe modda başlatırsanız uygulamayı kaldırabilirsiniz. Veya com.android.settings dışında paket adına sahip bir uygulama yöneticiniz varsa burdan da uygulamayı kaldırabilirsiniz. Oda olmazsa adb ile bağlanıp silebilirsiniz.

hata

Keylogger

TYPE_WINDOW_STATE_CHANGED dan bahsettik gelelim diğer eventlere.

  • TYPE_VIEW_CLICKED
  • TYPE_VIEW_FOCUSED
  • TYPE_VIEW_TEXT_CHANGED

Telefonda açtığınız, tıkladığını her input kutusu bu eventlerden birisini tetikliyor. Hangi uygulamada olursanız olun. Mesela TYPE_VIEW_TEXT_CHANGED eventi tetiklendi ve zararlımız bu eventi yakaladı. Sadece obj = accessibilityEvent.getText().toString(); kodu ile zararlı değişen yazıyı okuyabiliyor. Ne güzel dimi … Bu işi yapan kod parçası:

text

Event type 16 = TYPE_VIEW_TEXT_CHANGED

Accesiblity iznini verdikten sonra saniyelik gözüken ekranı hatırladınız mı? Accesbilty ile uygulama butonlara basabiliyor. Kullanıcıdan habersiz…

for ( node : source.findAccessibilityNodeInfosByText(this.e)) {
                node.performAction(16);
}

Evet doğru bildiniz action 16 = ACTION_CLICK ve this.e’de StringYes stringi bulunmakta. Yani zararli bizim yerimize butona basiyor.

Play Protect

Zararlı dropper tarafından yüklense de Play Protect açıksa düzenli aralıklarla cihazdaki uygulamaları tarıyor. Bu sebeple zararlı play protecti kapatmaya çalışıyor tabiki.

playprotect

Paket Listesi

Zararlı yüklendiğinde komuta kontrol sunucusuna ilk yolladığı şeylerden birisi paket listesi. Bazen bu liste başka nedenlerle kullanılabiliyor. Mesela diyelim telefonunzda banka uygulaması var ama hiç kullanmıyosunuz. Size uygulamayı açtırmak için “hesabınıza para girişi oldu” gibi içeriği olan sms yolluyor ve sizde gidip uygulamayı açıyorsunuz. Zararlı da overlay ile sizin bilgilerinizi çalıyor.

Overlay Saldırısı

Android zararlısı yazan insanlar kullanıcıyı ağlarına düşürebilmek için değişik yollara başvuruyorlar. Overlayde bunlardan birisi. Çoğu android zararlısı artık bu yöntemi kullanıyor. Hedef uygulama açıldığında zararlı tetikleniyor ve kullanıcıya açılan uygulamaya ait sahte bir sayfa çıkarıyor. Göstermek daha kolay olucak sanırım.

overlay

(Tüm tr bankalarını hedef alıyor)

Gösterilen giriş ekranı asıl uygulamaya benzer olduğu için kullanıcı hiç şüphelenmeden bilgilerini giriyor. Birkez girerseniz size bu ekranı bir daha göstermiyor ve banka uygulamasına giriş yapabiliyorsunuz ki şüphelenmeyin. Peki bu olayı nasıl yapıyor ?

Process Taraması

Zararlının x uygulaması başladı şeklinde bir bilgiye sahip olması gerekiyor. Androidde aslında böyle bir API yok. Peki x uygulamasının başladığını nasıl biliyor ? Eğer siz sürekli cihazda çalışan uygulama listesini alır ve bu listenin en üstündeki uygulamayı kontrol ederseniz yeni bir uygulama başlatılıp başlatılmadığını anlayabilirsiniz. Bir şekilde uygulama listesini alıcaksınız ve bunu while döngüsüne sokucaksınız bu kadar. Uygulama listesini alma işi biraz karmaşık. Çünkü Android’i yazan abilerimizde bu olayların farkında ve çıkan her yeni android versiyonunda process listesini alma işini gittikçe zorlaştırdılar. Mesela API 21’den öncesinde bir uygulama hiçbir ek izin almadan tüm listeyi alabiliyordu. 21’den sonra o fonksiyonları kaldırdılar. Bu sefer başka yöntemler bulundu. Biliyorsunuzki android linux tabanlı. Siz bir process hakkında tüm bilgileri /proc/pid klasorunde bulabiliyorsunuz. Anubis bunu kullanarak diğer processler hakkında bilgi topluyor. API 23’ten sonra bu olayda kalktı. Bu sefer başka bir yol bulundu. PACKAGE_USAGE_STATS. Bu izini alıp cihazda çalışan diğer uygulamalar hakkında bilgi toplanabiliyor. Anubis bu API aralıklarına göre anlattığım yollara başvuruyor. ( API 21 ve API 23 aralığında uygulamamızı korumak için bir yol buldum bunu paylaşacağım ileride sizlerle )

Açılan uygulamayı öğrendikten ne yapıyor peki ? Androidde her uygulama kendisini kullanıcı interaction’ına bağlı kalmadan başlatabiliyor. Bunu kullanarak banka uygulamasını üzerine bir webView çıkarıyor. Bunu yapmak için bir izne gerek yok. ( AMA Android 9dan itibaren bu olay nerdeyse tamamen kalktı. Artık kullanıcıdan belli bir izin alınmadan uygulamalar ekrana herhangi bir arayüz çıkaramıyor. İlla tıklayacaksınız icona )

Girdiğiniz bilgileri de komuta kontrol sunucusuna yolluyor.

webView

Pil sorunları

Tabi while döngüsünde sürekli çalıştığı için fazla pil harcıyor ve battery optimizer uygulamalar tarafından öncelikli olarak kapatılmak isteneceği için REQUEST_IGNORE_BATTERY_OPTIMIZATIONS iznini alıyor. Ayrıca bu izinle beraber telefon uykuda olsa bile uygulama arka planda çalışabiliyor.

SMS Interception ve Arama Yönlendirme

Burası baya korkutucu. Zararlı SMS_READ iznini OTP kodlarını okumak için alıyor. Üstüne birde default SMS uygulaması olmak isteyerek size gelen smsleri silme özelliğine sahip. Bunu da sizin hesabınızdan para çekildiğini anlamamanız için yapıyor.

Arama yönlendirme ?? Hesabınızdan yüklü miktarda para çekilirse veya şüpheli bir durum oluşursa bankanın ilgili birimleri sizi arar. Fakat cihazınıda zararlı varsa bu arama başka bir numaraya yönlendiriliyor. Zararlıyı kullanan kişi. Oda evet ben çektim vs diyip bankayı inandırıp olayda şüphe bırakmamaya çalışıyor.

callforward

Sonuc

Cok teknik detaya girmeden size dilim döndüğünce anubisin genel özelliklerinden bahsetmeye çalıştım. Umarım yeni birşeyler öğrenmişsinizdir.

Referans

Yazinin basindaki resim

8 Likes

Overlay olayı baya etkili bir yöntemmıs. Özellikle phishing saldirilari icin baya etkili olabilir. Merak ettigim şu, boyle bir tezgahı Google’ın anlaması ve saldirganin post ettirdigi web sitesini black-list alma suresi tahmini ne kadar? Anladıktan sonra application Google Play’den kaldırılıyor mu?

1 Like

Google’ın Dropperları anlaması biraz zor. Genelde bu uygulamaları bizim şikayetimiz üzerine kaldırıyorlar. Daha hızlı sonuç alınması için Play Store’un guvenlik kısmına bakan kişilere mail atıyorum. Bulunduktan sonra kaldırılması cok zaman almiyor maximum 1 gün. Ama bulunana kadar 500-1000 kisi tarafindan indirilmiş oluyor genelde.

3 Likes