Android Malware Analizi - DroidDream

Provido

Katılımcı Üye
21 Eki 2015
477
1
Android Malware Analizi - DroidDream


Tüm malware ile alakalı analizlerim blogumda bulunmaktadır. Ancak malware Windows işletim sistemi ile sınırlı değildir. MacOS, Linux, IoT ile ilgili işletim sistemlerinde malware bulunur. Bu makalede, 2011 yılında meşhur olan Android malware DroidDream hakkında konuşacağım. Android versiyonu 2.3 (Gingerbread) den eski olan telefonları etkiledi.


Android uygulamalar Java üzeriden yazıldı. .class bit kodu (derlendikten sonraki Java kaynak kodu) sonrasında .dex bit koduna dönüştürülüyor (DEX derleyicisi kullanılarak). .dex bit kodu Linux üzerinde HAL (Donanım Soyutlama Katmanı) üstünde bulunan Android RunTime tarafından tüketildi (ya da Android’in eski versiyonu olan Android Dalvik Sanal Makinesi).


Hybrid – Analysis’den DroidDream’s APK dosya örneğini elde edebildim. APK zip dosyası, incelemek için .jar dosyasına dönüştüreceğimiz .dex dosyasını içermektedir. Dex – jar dönüşümü dosyada kayba yol açıyor, bu yüzden bir çok anlamı olmayan ve garip yerlere gitmiş break ve return ifadelerini bulabilirsiniz. Ayrıca, bu örnek için dinamik analizini es geçtim çünkü benim amacım kaynak kodu analizi üstünde durmak.


Hadi başlayalım!


unyInS.png




Temel Statik Analizi


Dosya İmzası


50 4B 03 04 APK dosyasının imzasıdır ve offset 0’da bulunur.

Hashler


MD5: ecad34c72d2388aafec0a1352bff2dd9


SHA256: 83e813b09918219649863cc7140d715d6df6e5fc77a208f6be6be48ec5a4a475


AndroidManifest.xml


AndroidManifest.xml dosyası şunları içermektedir:


• Hedef Android SDK,
• Uygulamanın giriş noktasını,
• Uygulama Aktivitelerini,
• Oluşturulan Hizmetleri ve
• Uygulama tarafından gereken izinleri.


Ayrıca DroidDream’in kodu ana uygulamanın bir parçasıdır, bu durumda Süper Gitar Solo oluyor. Bu yüzden hedef Android SDK ana uygulama ile alakalı olabilir ve malware olmayabilir. Ancak, malware hedef SDK sürümünden önceki sürümlerde çalışacağından emin olabilirsiniz. Bu durumda, DroidDream Android Gingerbread’den önceki Android sürümlerinde başarılı bir şekilde çalışmıştır.


com.android.root.main paketi uygulamanın giriş noktasıdır. Bu varyantta sadece com.android.root.Setting hizmeti malware tarafından başlatılmıştır. İnternet ve telefon araması ile alakalı çoklu izinleride kullanıyor.


unyNzc.png

unC1qQ.png

unyXSe.png



Gelişmiş Statik Analizi


com.android.root.main.class dosyasında tek önemli kod parçası com.android.root.Setting servisi başlatan kod. Geri kalan kodlar ana uygulamaya ait.


unCWbe.png



İlgilendiğimiz ilk madde, sabit kodlanmış bir anahtar kullanarak sabit kodlanmış bir şifreli URL’nin şifresini çözmektir. adbRoot.class içindeki adbRoot.crypt() fonksiyonu, tek anahtarlı bir XOR işlemi kullanarak argümanını çözer. Şifresi çözülmüş URL http://184.105.245.17:8080/GMServer/GMServlet.


unycBN.png




Daha sonra cihaz bilgilerini belirlemek için birkaç işlev çağırır, aynı sabit kodlanmış anahtarı kullanarak şifreler ve yukarıdaki XML formatındaki URL’ye gönderir.


unC656.png



Cihaz bilgilerini gönderdikten sonra, DroidDream, exploid exploitini yürütmeye devam eder.


unC0rM.png




Exploid exploiti APK dosyasının assets/exploid dosyasının içinde bulunur. Önce exploit yapar sonra ayrıcalıkları yükseltmeye başlar.


unCAln.png

unSPE8.png



Exploit başarılı olursa, örnekteki WiFi durumunu değiştirmeye çalışır. Buradaki kaynak kodu baya kafa karıştırıcı, bu yüzden mantığımın doğru olup olmadığından emin değilim. Koda göre, WiFi durumu değişmiş gözüküyor ancak, bunu yapmasındaki sebebi anlamadım.WiFi başlangıçta kapalı ise açmak mantıklıdır.



unSo2o.png



Örnek, su binary dosyasını /system/bin/ dizinine yerleştirmeye devam eder. Su binary dosyası root erişimi kazanabilmesi için bir uygulama tarafından çağrılmalıdır. Bu örnekte, su binary profil olarak adlandırıldı. ELF dosyası, assets/profile dizininden /system/bin/profile dizinine kopyalandı, SUID biti üzerine kuruldu ve çalıştırıldı.



unSE7U.png



su binary başarılı olarak yerleştirildikten sonra, örnek, WiFi ayarını eski haline getiriyor.



unSuRS.png



Örnek bunlardan sonra exploid dosyasını cihazdan siliyor.



unSxNb.png



Şimdi örnek, kendisine root erişimi verecek olan başka bir exploiti çalıştırmaya hazırlanıyor, RageAgainstTheCage. Bu exploit APK da assets/rageagainstthecage dosyasında bulunuyor.



unS52s.png



Bu noktada, exploit başarılı olursa malware root erişimine sahip olacak; exploit aşaması burada biter. Exploit sonrası aşama başlar.


Örnek com.android.providers.downloadsmanager paketinin kurulup kurulmadığını kontrol eder. Kurulmadıysa, assets/sqlite.db dosyasını /system/app/DownloadProvidersManager.apk yerine kopyalar.



unSIAQ.png



DownloadProvidersManager.apk, Java bayt kodu formatında olan kod bloğunda root erişimi ile yüklenir. Ne yazık ki, örneği gönderen kişi onu değiştirmiş ve tüm RootCommand() fonksiyonlarını devre dışı bırakmış.


Bayt kodunun neden kapsam dışı olduğunu açıklarken, APK’ları yüklemek için bir fonksiyon çağırır (bu makalede gösterildiği gibi) runRootCommand() bayt koduna çok benzeyen bir çağırma fonksiyonudur.



unSNye.png



DownloadProvidersManager.apk’yı kurduktan sonra, com.android.root.Setting servisi çıkar.



unSOiN.png



Not: Bu noktadan sonra yaptığım analiz sadece DownloadProvidersManager.apk dosyasını ilgilendirmektedir.


Temel Statik Analizi


Hashler


MD5: a891aa9095fd2f21cedb41d882916b09


SHA256: 94ea44688feb558e2786e52fbfa46d90984e40c0980e28035fd2311d5f17f8e3


AndroidManifest.xml


DownloadProvidersMnager.apk yayın alıcısı olarak kuruldu (Root ayrıcalığı sayesinde). Bu apk, DownloadManageService adında bir kaç izin isteyen bir servis çalıştırır.



unScRq.png

unSh20.png

unSzth.png




Gelişmiş Statik Analizi


Kullanıcı arama ile alakalı işlem yaptığında (aramaya cevap verdiğinde, aramayı reddettiğinde) ya da telefonu yeniden başlattığında DownloadManageService servisi başlatılacaktır.


unS4jS.png



Bir görev, 2 dakika sonra her 2 saatte bir çalışacak şekilde planlanmıştır.


unS9ds.png



Ana kodun görevi çalıştırma zamanı 23:00 ile 08:00 arasındadır. Bu aynı zamanda çoğu insanın uyuduğu zamandır.



unuPse.png



İndirilen uygulamaları sorgular.


unuRjq.png



URL’yi daha önce olduğu gibi aynı anahtarla şifresini çözer.



unund0.png



Cihaz ve indirilen uygulamalar hakkındaki bilgiyi içeren bir XML payload oluşturur.



unuTXn.png

unuLao.png



Örnek, XML payloadu daha önce şifresini çözdüğü URL’ye gömer.


unuNzU.png



Daha sonra C&C ile bağlanır ve kullanıcının cihaz bilgilerini gönderir. Bundan sorumlu kod, Java bayt kodudur.



unuXSA.png

unucB1.png



Örnek, daha sonra C&C sunucusuna bağlanmak için bir sonraki zamanı belirler ve bu değeri depolar. Örnek bu değeri nereden elde ediyor emin değilim ancak C&C serverı ile olan iletişimine inanıyorum. İçinde NextConnectTime adlı bir öğeye sahip bir XML payload alır.



unuinf.png

unusXG.png

unuBeS.png



Cihaz ve indirilen uygulamaların bilgilerini uygulama veritabanında sakladıktan sonra, zamanlanmış görev tamamlanır.


Özet


DroidDream, başka bir meşru uygulamanın içine yerleştirilmiş Android tabanlı bir malwaredir. WiFi, çoklu izinler kullanır, arka plan hizmetini başlatır ve gömülü bir APK dosyayı yükler. Uygulamanın sanal alanından çıkmak için iki Linux yerel ayrıcalıklı exploit yürütür ve cihazda root erişimi kazanır. Root erişimini kazandıktan sonra, hemen hemen her şeyi yapabilir. Ancak, benim incelediğim varyantta sadece cihaz ve indirilen uygulamaların bilgilerini C&C sunucusuna gönderip bıraktı.


Okuduğunuz için teşekkürler!


Bu makalemde, Android Zararlısı – DroidDream için analizimi açıkladım. Bu Android malware’in kapasitesini anladıktan sonra, mobil cihazların masaüstü bilgisayarlardan veya sunuculardan daha az korunduğunun farkına varmak oldukça korkutucu ancak malware aynı derecede yıkıcı olabilir.



 
Son düzenleme:

DeSTuRSuZz_

Kıdemli Üye
10 Ara 2015
3,577
4
Her şey çok güzel, eline sağlık ancak
Cihaz ve indirilen uygulamalar hakkındaki bilgiyi içeren bir XML yükü oluşturur.
cümlesinde XML payload yazmak daha iyi olacaktır. Globalde bu şekilde ifade edilir.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.