Bir önceki yazıda yeni çıkan android reverse mühendisliği araçları hakkında bilgi vermiştim. Bu yazımda bu araçları kullanarak vaka çözümü örneklerini göstermek istiyorum. Kullanılan android reverse araçları ve modelleri aşağıda belirtilmiştir:
- Dexcalibur v0.7.9 ve House Mart 2021 sürümü
- MobSF 3.4.4 beta
- Quark version 21.5.1
TEST ÖRNEKLERİ
Bu yazıda bahsettiğimiz Android kötü amaçlı örnekleri aşağıdaki tabloda listelenmiştir. Bu örnekler hem yeni hem de paketleme ve yerel kitaplık gibi belirli özellikleri bulunduğu için seçilmiştir.
Android/Oji. G!worm
Mayıs 2021’de gerçek olmayan COVID-19 aşı kayıt kampanyasıyla birlikte Android solucanı Oji, tekrardan ortaya çıktı. Oji Hindistandaki belirli operatör kullanıcılarına sms yoluyla yayılmaktadır. Bu gelen sms üzerinden kurbandan uygulamayı WhatsApp’ta paylaşması istenir. Analiz edilen vakada AES/CBC (blok şifre çalışma kipleri) kullanılmakta, ancak16’nın katı olmadığı için şifre metninin şifresi çözülmüyor yani kod yanlış.
İlk olarak, kullanılan android reverse araçları hepsi de üçüncü taraf kitlerden alınan kodların (bu örnekte com.startapp kullanır) kötü amaçlı kısım (com.omcamra.sevendra) arasındaki farkı çözemedikleri için büyük ölçüde etkilenirler.
Quark, kötü amaçlı yazılımın kişileri okuduğunu tespit eder (‘Hassas verileri oku (SMS, CALLLOG, vb gibi’). Diğer sonuçlar bu tespit ile çok alakalı olmamakla birlikte üçüncü taraf kitler tarafından oluşturulan alarmlarla kirlenir. Bu kötü amaçlı yazılım örneğinin genel tehdit düzeyi “Orta Risk” ve “toplam puan 153″olduğundan dolayı analiz için uygun görünmemektedir.
MobSF‘nin statik analizi diğerine kıyasla daha fazla fayda sağlamış olsa da yine de üçüncü taraf kitleri ile kirlenmiştir. Bu araçtaki tablolar, zarar verici işlemdeki kodun yolunu gösterir, bu nedenle üçüncü taraf kodunu (örn. StartApp) üzerini çizmek daha kolaydır. Dinamik analizi ile inceleme yapıldığında, iyi bir şekilde çalışsa da arayüzü, sütunların kaydırılmasının zor olması, arama yapılmaması nedeniyle pek kullanışlı değil. Büyük ihtimalle bu küçük sorunlar yeni versiyonlarında geliştirilecektir.
Bu özel örnekte, şifre çözülemediği için akıllara şu soru gelmekte ”bu koddan kaynaklı bir hata mı?” ancak bunu MobSF ile tespit etmek zordur. Android’in logcat üzerinde gösterilir ama çok fazla satır var ve belirli bir vurgulama yok.
6-0411:07:58.2621908319083WSystem.err: java.lang.Exception: [decrypt] error:1e00006a:Cipherfunctions:OPENSSL_internal:DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH
06-0411:07:58.262 19083 19083 WSystem.err:
atcom.oncamra.sevendra.ghaluuu.c(ghaluuu.java:240)
House, kötü amaçlı yazılımı tespit etmede seçilecek en iyi araç olmasa da izleme bölümü sayesinde fayda sağlar. Örneğin, diğer araçların House kadar kolay gösteremediği IPC bölümünü izleme imkanı sunmasıyla, WhatsApp için kopyalanan mesajı açıkça gösterir.
Android/Flubot
Android/Flubot kısaca paketlenmiş bir kötü amaçlı yazılımdır. Bir önceki yazıda paketlenmiş olanların neden zorluk yarattığını anlatmıştık (yazıya ulaşmak için). Bu yazıda açıklanan dört araç paketlendiğini tespit edebilmektedir. Quark diğerlerine göre biraz daha az nettir.
Paketleyici, başlatıldıktan sonra simgesini gizler. Bu gizlemeyi tespit edebilen tek araç ise Quark’tır. MobSF özelliği yoktur ve Dexcalibur ve House bunun için tasarlanmamıştır.
Android Flubot CnC (command and control) ile haberleşir. İletişim, sabit kodlanmış bir genel RSA switchi üzerinden şifrelenir. Domain adları ise DGA algoritması ile oluşturulur. House ile HTTP izleyebilirsiniz ki bu özelliği gerçekten ilginçtir.
Payload, dize gizleme (obfuscation) kullanarak, üst üste overlay saldırıları yaparak, Play Protect’i devre dışı bırakma ve otomatik SMS gönderimi gibi şeyler için Erişilebilirlik hizmetlerini kötüye kullanır. Dinamik olarak yüklenen kod ile çalıştırıldıkları için bu özellikler otomatik şekilde algılanamaz.
Android/Alien
Android/Alien, bir RAT’dir. Yani kiralık bir banking Truva Atı’dır. Overlay saldırıları, SMS mesajlarını kontrol etme ve çalma ve kişi listesini toplama gibi diğerleriyle ortak özellikleri bulunur. Hatta Flubot ile aynı paketleyiciyi kullanır vebu sayede bir sürü şey yapabilir bunlar; kilit desenini alma, Google Authenticator kodunu alma, Gmail şifresini alma, arama yönlendirme, dosyaları ve yüklü uygulamaları listeleme, SMS’leri toplama ve hattaistenmeyen SMS gönderme, kişiler, ses kaydı gibi hassas uygulamalara erişim vb. elde edebilir. Diğer durumlarda olduğu gibi, analiz üçüncü taraf kodu tespit edilemediği için örneğin paketlenmiş olmasından etkilenir.
Bir yükü dinamik yüklemeye ek, bu kötü amaçlı yazılım harici bir APK indirme yeteneğine sahiptir (buna ‘dinamik modül’ der) ve bunu ring0.apk
içinde saklar.
House, izleme sekmesi sayesinde “HTTP” bölümünde uzak sunucuyu, “FILEIO” bölümünde ring0.apk dosyasının oluşturulmasını ve “Shared Preferences” bölümünde kötü amaçlı yazılımın canlı olarak konfigürasyonunu gösterir.
Android/Sandr
Android/Sandr ya da diğer adlarıyla SandroRAT veya DroidJack, 2014’te oluşturulan bir Android RAT’tır. Diğer RAT’larda olduğu gibi, SMS müdahalesi, telefon görüşmelerinin ses kaydı, ekran ve video yakalama gibi işleveri bulunur. Bu özel örnek, Java Kryonet soket kitaplığını kullanarak 1028 numaralı bağlantı noktasında bir CnC 062e1a582086.ngrok.io ile bağlantı kurar.
Quark, Sandr’ın birçok özelliğini tespit eder:
⦁ Kryonet soketi üzerinden CnC’ye bağlantı
⦁ Bir güncelleme APK’sını indirip yükleme yeteneği
⦁ Birkaç kural, SMS ve arama günlüklerine erişim örneğin, ‘Hassas verileri oku (SMS, CALLLOG, vb.)’, ‘URI’den (SMS, CALLLOGS) datanın sorgulanması…
⦁ ‘Kaydedilen sesi/videoyu bir dosyaya kaydet’, ‘Kaydı başlat’ adlı kurallar aracılığıyla ses / video kaydı alması
⦁ SMS gönderme.
Android/MoqHao
Android/MoqHao, yerel bir kitaplık kullanılarak paketlenmiştir, bu kötü amaçlı yazılım örneğinin hedefinde bankalar vardır ve birkaç arka kapı komutu sergiler.
Bu örneğin tütüphanesi ARM platformları için hazırlandığından dolayı, analiz edilmesi zormuş gibi gelir. Ama teoirede zor olmaması gerekir çünkü ARM, Android için ortaktır emülatörleri vardır. Uygulamada, bu emülatörler çok yavaştır. Emülatör kullanarak geçici bir çözüm aransa da yeterli fayda sağlamadığı için en son Android 11’i kullanıyor. Bu da demek oluyor ki dinamik analiz çalışmıyor. Statik analiz de DEX yükündeki Quark hariç pek başarılı değil. Sonunda, bu örnek en iyi şekilde iyi bir decode ile reverse edilir.
Son olarak android reverse mühendisliği araçları için genel bir değerlendirme yapmak gerekirse,
- Quark’ı çalıştırın. Kötü niyetli davranışları ortaya çıkarmak için tasarlanmıştır. Kurulumu kolaydır ve örnekleri hızlıca analizini yaparak işler. Genel bir sonuç için Quark’ın çıktısını hızla ayrıştırın, bunu hızlıca yapın yoksa yanlış pozitifler olacaktır.
- MobSF’nin statik analizini çalıştırın ve Quark’ın ortaya çıkardığı her şeyi inceleyin. Özellikle Android API, URL ve Domain tablosuna bakın. Analizini yaptığınız yazılımı bir decodeda açın ve paketlenip paketlenmediğini kontrol edin ve yapabildiğiniz kadar statik analize devam edin.
- Statik analiz uzun sürüyorsa ve dinamik analiz ile hızlanma ihtimali varsa, ne yapmak istediğimize bağlı olarak aracı seçin. Örneğin hangi büyük Android API’lerini çağırdığını kontrol etmek gerekiyorsa, MobSF’nin ‘Live Monitor’ özelliğini kullanın. HTTP kullanımını izlemek istiyorsak House’un monitör ‘HTTP’ sekmesini kullanın. Paketi açmak için herhangi bir android reverse aracı (Dexcalibur, House, MobSF) işe yarayacaktır.
- Dexcalibur’u kullanarak belirli yöntemleri hooklamak veya hangilerinin hooklanacağını seçebilirsiniz.