BiznetBiznet

Alien Bankacılık Zararlı Yazılımı Analizi

Yazar: Fatih Kayran

Cerberustan Alien’a Geçiş ve Tarihçe

2019 yılında gözlenmeye başlanan Cerberus Android zararlı yazılımı, 2020 yılı Ağustos ayında kaynak kodunun yayınlanması ile birlikte gücünü kaybettiğini gözlemlemeye başladık. Google Play Protect tarafından Cerberus zararlısının kolayca tespit edilebilmesi sebebiyle saldırganlar / dolandırıcılar MaaS (Malware as a Service) olarak adlandırılan kiralık zararlı yazılım servislerinden, yeni ortaya çıkmış olan Alien Bankacılık Zararlı Yazılımına büyük bir yönelim göstermeye başladılar.

Cerberus’un geriye dönük incelemeleriyle beraber Cerberus V1 ve Alien’in kod yapısı arasında birçok benzerliği keşfettik. 2020 yılı Ocak ayında bilinen tehdit aktörlerinden “-ring0-“ yeni bir Android Trojanı geliştirdiğinden bahseden bir gönderi yayınlamıştır.

Kronolojik sıralama olarak olay zincirini incelediğimizde Alien ve Cerberus zararlı yazılımlarının ortak bir zaman dilimindeki etkileşimlerini gözlemleyebilmekteyiz.

  • Haziran 2019 – Cerberus v1 bankacılık zararlı yazılımı MaaS (Malware as a Service) olarak kiralanmaya başladı.
  • 18 Ocak 2020 – Alien bankacılık zararlı yazılımı Maas olarak kiralanmaya başladı. (Alien bu süre zarfında “Authenticator ve 2FA Stealer” özelliklerine sahiptir.)
  • 3 Nisan 2020 – Cerberus V2 zararlı yazılımının piyasaya sürüldü. (Cerberus v1 ve v2 arasındaki en büyük farkların “Authenticator ve 2FA Stealer” olduğu belirlenmiştir.)
  • 10 Ağustos 2020 – Cerberus zararlı yazılımının kaynak kodları yazarları tarafından yayınlandı.

18 Ocakta ortaya çıkmış olan Alien’in “Authenticator ve 2FA Stealer” kapasitesine sahip olması ve aylar sonra Cerberus’un aynı kod parçası ile bu özelliklere sahip olması şüphe uyandırmakta ve gruplar / şahıslar arasında bir bağlantı olduğunu işaret etmektedir. Buna ek olarak “ring0” Cerberus kaynak kodunun çeşitli yerlerinde geçmektedir

Kronolojik sıralama incelendiği zaman Alien zararlı yazılımının yazarının Cerberus zararlısından sorumlu gruba üye olduğu ya da Cerberus kaynak koduna erişimi olduğu düşüncesi güçlenmektedir. Cerberus grubunun dağılmasında “yetersiz eleman” sorununun da olması (forum üzerinden ANDROID kullanıcısı tarafından doğrudan ifade edilmiştir), tehdit aktörünün Cerberus grubunun bir parçası olup sonradan “kendi işini kurmaya karar verdiği” düşüncesini de desteklemektedir.

Şuan ki zaman diliminde Cerberus ve Alien zararlılarının yazarı ve Cerberus grubu arasındaki bağlantı ile ilgili kesin bir yorum yapılamasa da, Cerberus ve Alien zararlılarının kod benzerliğinden yola çıkarak kardeş olduklarını söylemek yanlış bir ifade olmayacaktır.

Alien’ın Özellikleri

Alien bankacılık zararlısının bir başka bankacılık zararlısı olan Cerberus’un önceki versiyonlarından birinin kopyası olduğu kod karşılaştırılması sonucu anlaşılmıştır. Alien’e Cerberus’tan miras kalmış özellikleri incelemek ve detaylı bilgi için Cerberus Banking Trojan Analysis raporumuzu okuyabilirsiniz.

Diğer özelliklerinin ve komuta kontrol sunucusu ile iletişim kurarken kullandığı kelimelerin ve sonucunda gerçekleşenlerin Cerberus ile aynı olduğu görülmüştür. Bu bölümün sonunda bold ile belirtilmiş kelimeler Cerberus zararlısında bulunmamaktadır, Alien’e özgüdür.

Bu kelimelerden clear_cache saldırganın bulaşma sonrasında tercihen uzaktan yüklebileceği yeni kodları ve işlevleri barındıran dosyayı (patch.ring0.run) silmeye yarar. Muhtemelen saldırganın ek zararlı yamasını yüklemesi sırasında oluşabilecek sorunlara karşı bir kaçış komutu olarak eklenmiştir.

add_socks5, run_socks5, stop_socks5, update_socks5 kelimeleri ise saldırganın kurban cihazının iletişim portlarına tünelleme yapabilmesini sağlayan özelliği tetikler. Bu özellik NAT veya güvenlik duvarı arkasındaki kurbanları etkilemeyebilmektedir.

Bağlantınının başarısız olması veya patch.ring0.run paketinin yüklenmemiş olması halinde  saldırgana “Socks connection to server ? is not possible, port ? is busy[143523#]” hata mesajını gönderir. İncelememiz sırasında bu özelliği barındıran “patch.ring0.run” paketini elde edemediğimizden dolayı paketin içeriği incelenememiştir. Saldırgan bu paketi kullanarak ele geçirilmiş cihazdaki zararlı yazılıma sonradan özellik ekleyebilir.

.
.
        if (!((_Utils)object).a((Context)this, ((_Utils)object).j((Context)this, this.b.O), (String)object2, string, string4, string2, string3).equals(this.a("Zjc="))) {
            object = new StringBuilder();
            ((StringBuilder)object).append(this.a("Socks connection to server "));
            ((StringBuilder)object).append(string);
            ((StringBuilder)object).append(this.a(" is not possible, port "));
            ((StringBuilder)object).append(string4);
            ((StringBuilder)object).append(this.a(" is busy[143523#]"));
            object = ((StringBuilder)object).toString();
            this.a.f((Context)this, this.b.Z, (String)object);
            object = this.a;
            ((_Utils)object).h((Context)this, ((_Utils)object).j((Context)this, this.b.O));
            this.stopSelf();
            return;
        }
.
.

“patch.ring0.run”paketi olsun veya olmasın, Alien 45555 portunda çalışacak bir vekil sunucu başlatabilmektedir.

.
.
 public final void run() {
                try {
                    ServerSocket serverSocket = new ServerSocket(45555);
                    Object object = _SOCKS5.this.a;
                    Object object2 = _SOCKS5.this.a("ProxyServer");
                    Object object3 = new StringBuilder();
                    ((StringBuilder)object3).append(_SOCKS5.this.a("Port="));
                    ((StringBuilder)object3).append(serverSocket.getLocalPort());
                    ((_Utils)object).a((String)object2, ((StringBuilder)object3).toString());
                    do {
.
.

Türkiye’de Etkilenebilecek Kurumlar

Alien zararlı yazılımı Cerberus yazılımının kullandığı sahte ekran giydirme sisteminin (zararlı yazılımın geliştiricileri tarafından injection olarak isimlendirilmektedir) aynısını kullanmaktadır. Cihazda kurulu olarak bulunan uygulamaları sorgulayabilecek olan saldırganlar, özel sahte ekranlarını geliştirip cihaza gönderebilmektedir. Injection ekranlarının hazırda olduğu bilinen ve Türkiye’de bulunan kurumların listesi aşağıdaki gibidir.

  • com.akbank.android.apps.akbank_direkt
  • com.albarakaapp
  • com.finansbank.mobile.cepsube
  • com.garanti.cepsubesi
  • com.ingbanktr.ingmobil
  • com.kuveytturk.mobil
  • com.magiclick.odeabank
  • com.mobillium.papara
  • com.paribu.app
  • com.pozitron.iscep
  • com.pttfinans
  • com.teb
  • com.tmobtech.halkbank
  • com.vakifbank.mobile
  • com.ykb.android
  • com.ziraat.ziraatmobil
  • finansbank.enpara
  • tr.com.hsbc.hsbcturkey
  • tr.com.sekerbilisim.mbank

Indicator of Compromise

Not: Bu kısım zararlı yazılımın sistemde veya ağda tespitini kolaylaştırabilecek bilgiler içermektedir. Zararlı yazılım MaaS (Malware-as-a-Service) biçiminde kiralandığından saldırgan veya IOC verileri tüm zararlı yazılımları ortaya çıkarmak için yeterli olmayabilir.

Alınabilecek Önlemler

  • Üçüncü parti kaynaklardan, cihaza uygulamaların yüklenmesi Android ayarlarından devredışı bırakılmalıdır.
  • Anti-malware yazılımı (Google Play Protect gibi) cihazlara kurulmalı, güncel ve çalışır durumda tutulmalıdır.
  • Yüklenen uygulama erişilebilirlik izinleri istiyorsa bu uygulamaya şüpheyle yaklaşılmalıdır. Bankacılık zararlı yazılımları kullanıcıya bu izin ekranlarını sürekli göstererek, kullanıcıları yıldırma yoluyla bu izinleri almaktadırlar.
  • Uygulamalara kullanım sırasında gerekmeyen izinler verilmemelidir. Geçici olarak verilen izinler, ilgili işlemler tamamlandıktan sonra kaldırılmalıdır.
  • Mobil işletim sistemleri güncel tutulmalıdır.
  • Toplu olarak yönetilen cihazlarda, güvenlik önlemleri MDM sunucularında da kontrol edilmelidir.

Android 11 İle Gelen Güvenlik Özellikleri

Google uzun bir beta test sürecinin ardından nihayet Android 11 versiyonu kullanıcıları ile buluşturmuştur. Android bu son versiyonu ile kullanıcılarına hassas verilerinin kontrolü konusunda daha fazla yetki vermektedir. Android 11’in en önemli güvenlik özelliklerinin detayları aşağıdaki gibidir.

One-time Permissions

Bir uygulama aşağıdaki izinlere erişmek istediğinde kullanıcılar sadece bir kerelik o izinleri isteyen uygulamaya verme yetkisine sahiptirler.

  • Konum
  • Mikrofon
  • Kamera

Kullanıcı istenilen izini uygulamaya bir kerelik verdiğinde, uygulama kapanına kadar, uygulama o izne sahip olmaktadır. Eğer uygulama kapatılıp tekrar açılırsa, kullanıcı istenilen izinleri tekrardan vermesi gerekmektedir. Bu özellik sayesinde arka planda çalışan bazı uygulamalar kritik izinlere sahip olamayacaktır.

Blocked Permissions

Kullanıcı bir uygulamanın istediği izinleri iki kere engellerse Android tarafından o uygulamanın izin istemesi engellenmektedir. Uygulamanın düzgün bir şekilde çalışması isteniyorsa kullanıcı ayarlardan o uygulamaya istediği izinleri vermelidir.

Overlay Permissions

Android platformunda en ciddi saldırılardan biri overlay saldırılarıdır. Bu saldırılar gerçek uygulama çalıştırılması için tıklandıktan hemen sonra kullanıcıdan alınan yetki sayesinde webview ile desteklenen sahte bir uygulama ekranıyla kullanıcıların bilgilerinin elde edilmesiyle gerçekleştirilmektedir. Yani kullanıcılar bilgilerini asıl uygulamaya girdiğini zannederken saldırganlar tarafından oluşturulmuş sahte uygulamaya girmektedirler. Bu durum uygulama üzerinde farklı bir ekranın belirmesi özelliğinden kaynaklı gerçekleşmekteydi.

Android 11 ile beraber, uygulamalar bir kullanıcıyı direkt olarak izin ekranına götüremeyecektir. Bir uygulama overlay izni istediğinde kullanıcı tarafından overlay izninin ayarlardan el ile verilmesi gerekmektedir. Böylece herhangi bir zararlı yazılımın gerekli izinleri alması zorlaştırılmıştır. 

Background Location Access

Bir uygulama konum bilgisine erişmek istediğinde, Android 11 bu uygulamanın aktif olarak çalışıp çalışmayacağına göre izin vermektedir. Yani uygulama sadece çalışırken konum izinlerini alabilmektedir. Arka planda çalışarak konum bilgisine erişmek isteyen bir uygulama kullanıcıdan ekstra izin almak zorundadır.

Bu ekstra izin istekleri birkaç adımdan oluşmaktadır. Her adımda birkaç defa “Tamam”, “İzin ver” butonlarına tıklanmak zorundadır. Böylece uygulamanın ihtiyacı olandan fazla veriye erişmesi engellenmektedir.

Eğer kullanıcı arka planda konum izinlerine erişilmesini istiyorsa ayarlardan gerekli işlemleri yapabilmektedir.

Permissions Auto-Reset

Eğer bir uygulama kullanıcı tarafından hassas bilgilere erişim izni aldıysa ve 1 aydan fazla bir süredir kullanılmıyorsa Android bu uygulamnın almış olduğu izinleri iptal etmektedir. Yani kullanıcı tekrardan uygulamaya girip istenilen izinleri vermesi gerekmektedir. Böylelikle bir uygulamanın kurulduktan sonra uzun bir süre kritik izinlere sahip olup zararlı davranışlar sergilemesinin önüne geçilmeye çalışılmıştır.

Scoped Storage

Uygulamalar kendi verilerinin haricinde diğer uygulamalar tarafından oluşturulan verilere erişemeyecektir. Yani her bir uygulama için kendi izole sandbox ortamı oluşturulmuştur. Bir uygulama diğer bir uygulamanın sandbox alanına erişemeyecektir. Dolayısıyla veri sızıntılarına karşı bir kat daha önlem alınmıştır.

Ek olarak bazı iyileştirme ve güncellemeler şöyledir:

  • BiometricPrompt API üzerinde iyileştirmeler
  • Uygulamaların veri paylaşımlarını kolaylaştırmak için güvenli depolama iyileştirmeleri
  • Güvenlik odaklı bazı bileşenlerin sanitizer kullanımında genişletmeler
  • GPS gizliliğinin arttırılması için GnssAntennaInfo sınıfının eklenmesi

Kaynaklar

https://thehackernews.com/2020/09/android-11-security-privacy.html
https://developer.android.com/about/versions/11/privacy
https://developer.android.com/reference/android/location/GnssAntennaInfo
https://www.wired.com/story/android-11-privacy-and-security-features/

Cyberwise Research Task Force

Ali Rıza Şahinkaya – alis@cyberwise.com.tr
Can Atakan Işık – cani@cyberwise.com.tr
Rıdvan Ethem Canavar – ridvanc@cyberwise.com.tr
Fatih Kayran – fatihk@cyberwise.com.tr

fatih.kayran
Yazar: fatih.kayran