OzzTech - Android Reverse Mühendisliği Araçları

Android Reverse Mühendisliği Araçları

Android Reverse Mühendisliği Araçları

Bu yazımda sizlere son zamanlarda kullanılmaya başlanan android reverse mühendislik araçları olan Dexcalibur, House, MobSF ve Quark'ın ne olduğunu açıklayacağım. Bir sonraki yazımda ise bu araçları kötü niyetli örnekler üzerinde android reverse mühendislik aracı olarak kullanımlarını örnekler vererek göstereceğim.

Bazı mühendisler android kötü amaçlı yazılımı Apktool, Baksmali ve bir decode araçlarını kullanarak reverse etmektedir. Daha deneyimli mühendislerden bazıları ise muhtemelen otomatik plug-in kullanarak, komut dosyaları (Radare, JEB için) yazarak veya Frida kullanarak hook uygularlar. Bunların ardından henüz yeni çıkmış araçlar; 2015 yılında MobSF, 2018 yılında House, 2019 yılında Quark ve Dexcalibur. Bu yazımda, bu dört aracı açıklayarak, bu araçların Android reverse mühendislikte (RE) kullanımlarına odaklanacağız.

  • Dexcalibur ve House, Frida için web front-end olarak görülebilir. Bunlar, Frida hooklarını ilginç fonksiyonlar üzerinde ayarlamaya veya özelleştirmeye yardımcı olurlar.
    • Dexcalibur aracı ile Frida hookları basit mouse tıklamalarıyla etkinleştirilebilir. Özelleştirme yapmanızın gerektiği durumlar dışında, Frida hooklarının nasıl uygulandığını biraz bilmeniz yeterlidir.
    • House aracının web arayüzü Frida şablonlarını yükler. Bu şablonlar istediğiniz gibi özelleştirilebilir ve çalıştırılabilir. Yalnızca bazı görevler örneğin sınıf numaralandırma, HTTP erişim izleme isteğe göre değiştirilemeyip press button şeklindedir.
  • MobSF, açık kaynaklı otomatik, Android/iOS/Windows için penetrasyon testi, kötü amaçlı yazılım analizi, statik ve dinamik analiz yapabilen güvenlik değerlendirme çerçevesidir. Bu araç sampleye genel bir bakış için yardımcı olan hem statik analiz hem de Frida hooklarına dayanan dinamik analiz özelliklerinin ikisine birden sahiptir.
  • Quark diğerlerinden farklıdır ve yalnızca statik analiz için çalışır. Quark'ın motoru, samplenin kodunu ayrıştırarak şüpheli API çağrıları ve izinlerin kombinasyonlarını tespit eder. Kombinasyonlaın detayı kurallarda açıklanmıştır. Bir GitHub deposunda 150'den fazla kural vardır ve kolay bir şekilde ek kurallar oluşturulabilir.

Ortak görevler için Android Reverse Araçları Kullanımı

  1. Kötü amaçlı yazılım paketini açma

Kötü amaçlı yazılım analizcileri genellikle paketlenmiş Android kötü amaçlı yazılımlarıyla karşı karşıya gelirler. ApkProtect ve Bangcle paketlenmiş kötü amaçlı yazılım örneklerindendir. Kötü amaçlı yük, tek amacı reverse mühendisliği daha zor hale getirmek ve yükü gizlemek olan bir paketleyici tarafından ''açılarak'' APK'da gizlenir. En çok tercih edilen uygulama ise yaygın uygulama, DexClassLoader'ı kullanarak gizli bir DEX dosyasını dinamik olarak yüklemektir. Dört araç da DexClassLoader'ın kullanımını algılar. Quark bunu basit bir kuralla tespit ederken diğerleri üçü Frida hooklarına güvenir.
Android API'sinde, DexClassLoader'ın yapıcısının ilk tezi, dinamik olarak yüklenecek DEX dosyasının yoludur. Dexcalibur, House ve MobSF yöntem argümanlarını gösterir ve böylece DEX'in yolunu gösterebilmektedirler. Daha sonra analizcinin yalnızca adb pull kullanarak bu konumda yürütülebilir dosyayı alması ve analiz etmesi yeterlidir.
Varsayılan olarak öyle olsa bile Dexcalibur ile DexClassLoader'ın tarandığından emin olmalıyız . Eğer değilse, 'Probe ON' düğmesine tıklayın. Herhangi bir nedenden dolayı hook bulunmuyorsa, "Statik Analiz" sekmesinden arayabilirsiniz.
Sadece DexClassLoader'ı hooklamamaya dikkat edin çünkü benzer sınıf yükleyiciler vardır örneğin PathClassLoader (artık kullanımdan kaldırılmış olan DexFile yerine geçer) ve InMemoryDexClassLoader. Android 8.0 ile tanıtılan InMemoryDexClassLoader bellekten bir DEX yükü yükler. Sonuç olarak, cihazda saklanacak tam bir yol veya dosya bulunmaz. Böyle bir senaryoda çözüm, yük bayt dizisini otomatik olarak bir dosyaya boşaltan Frida hook eklemektir.

Sınıf yükleyicileri bağlamanın (hooking) yanı sıra, dinamik olarak paketi açmak için birkaç yöntem daha vardır bunlar; dosya oluşturma veya silme (Java düzeyinde veya sistem düzeyinde) ve belleği boşaltma.

Bazı akıllı kötü amaçlı yazılım parçaları, DEX'i yerel kitaplıklardan dinamik olarak yükler. Daha sonra başka bir yazıda örneklerle açıklayacağım Android/MoqHao da bu şekilde yüklenmektedir. Dört araç yardımıyla bile analiz etmek zordur (daha sonra göstereceğim). Yerel kod için VM tabanlı paketleyicilerin ve paketleyicileri için çalışmalar olduğunu, ancak henüz kötü amaçlı yazılımlarda kullanılmadığını unutmayın.

2. Dinamik olarak yüklenen DEX'i analiz etme

Dexcalibur, House, MobSF ve Quark tümüde, dinamik olarak yüklenmiş bir DEX'in içine erişim sağlamada zorlanır.
Bu zorluklar RE (reverse mühendislik) için bir problemdir, çünkü bu aslında tipik olarak ilginç kötü niyetli özellikli yükleri tutan dinamik olarak yüklenmiş DEX'tir, oysa DEX'i (paketleyici) tekrar paketlemenin geriye dönmeyi zorlaştırmanın dışında hiç önemi yoktur.
Bu sorunu çözmek için iki yol vardır:
Manuel çözüm: Yük DEX'i alın ve ardından bir decode ile analiz yapın. Unutmayın yalnızca Quark veri yükü DEX'i işleyebilir, diğer üçü DEX'i desteklemez.
Otomatik çözüm: Dinamik olarak yüklenen DEX'in içine takılan bir Frida hooku yazın. Ancak unutmayın ki böyle bir hook yazmak deneyim ister. Frida hookunu yazdıktan sonra hooku dinamik analiz aracına yükleyin. Teorik olarak hepsinde çalışması gerekir ama sadece House ile çalıştı ki House ile bile süreç güvenilir ve stabil değil çünkü bazen çalışıyor, bazen çalışmıyor.

3. Gizleme dizeleri

Kötü amaçlı yazılım analizcilerinin bir başka tipik görevi ise dize gizlemedir. Gizleme kodunun yakından reverse edilmesinden sonra uygulanan bağımsız bir programla statik olarak bu görev yapılabilir. JEB gibi bazı gelişmiş kod çözücüler otomatik olarak şifre çözme ve gizleme yapabilir veya özel komut dosyalarının yürütülmesine izin verir.

Diğer yol ise dinamik analizdir. Bu yöntem diğerinden çok daha hızlıdır çünkü neredeyse RE veya kod yoktur. Ancak dezavantajı, sadece karşılaştığı kodu gizlemesidir. Bu strateji, de-obfuscation işlevlerinin hooklanmasıyla (bunun sebebi statik tersine mühendislik yoluyla bulmak içindir) veya standart şifreleme kullanılıyorsa, düz metni almak için Cipher.doFinal() gibi yöntemlerden oluşur.
Dexcalibur ile, "Statik Analiz" sekmesinde gizleme ve çözme yöntemini arayın. Ardından, hook yazısını hafifçe düzenleyin. 'ON' durumuna getirmek için 'Prob OFF' düğmesine tıklayın. Böylece buna karşılık gelen Frida hookunu ekler. Ardından, 'Hook' sekmesinde, hooku seçin ve çıktıyı görüntülemek için kodunu hafifçe düzenleyin.

Diğer yol ise dinamik analizdir. Bu yöntem diğerinden çok daha hızlıdır çünkü neredeyse RE veya kod yoktur. Ancak dezavantajı, sadece karşılaştığı kodu gizlemesidir. Bu strateji, de-obfuscation işlevlerinin hooklanmasıyla (bunun sebebi statik tersine mühendislik yoluyla bulmak içindir) veya standart şifreleme kullanılıyorsa, düz metni almak için Cipher.doFinal() gibi yöntemlerden oluşur.
Dexcalibur ile, "Statik Analiz" sekmesinde gizleme ve çözme yöntemini arayın. Ardından, hook yazısını hafifçe düzenleyin. 'ON' durumuna getirmek için 'Prob OFF' düğmesine tıklayın. Böylece buna karşılık gelen Frida hookunu ekler. Ardından, 'Hook' sekmesinde, hooku seçin ve çıktıyı görüntülemek için kodunu hafifçe düzenleyin.

Diğer yol ise dinamik analizdir. Bu yöntem diğerinden çok daha hızlıdır çünkü neredeyse RE veya kod yoktur. Ancak dezavantajı, sadece karşılaştığı kodu gizlemesidir. Bu strateji, de-obfuscation işlevlerinin hooklanmasıyla (bunun sebebi statik tersine mühendislik yoluyla bulmak içindir) veya standart şifreleme kullanılıyorsa, düz metni almak için Cipher.doFinal() gibi yöntemlerden oluşur.
Dexcalibur ile, "Statik Analiz" sekmesinde gizleme ve çözme yöntemini arayın. Ardından, hook yazısını hafifçe düzenleyin. 'ON' durumuna getirmek için 'Prob OFF' düğmesine tıklayın. Böylece buna karşılık gelen Frida hookunu ekler. Ardından, 'Hook' sekmesinde, hooku seçin ve çıktıyı görüntülemek için kodunu hafifçe düzenleyin. Çıktı değişkenini "data" JSON öğesine ekleyin. Aşağıda kod paylaşılmıştır.

var ret = meth_xxx.call(this ,arg0);
/* In data, add "ret" to display the output */
send({ id:"yyyyyyy=",
msg:"javax.crypto.Cipher.doFinal(<byte>[])<byte>[]", data:{ret}, action:"Nonebefore", after:true
});

Komuta ve kontrol (CnC) serverıyla iletişim

CnC'nin IP adresini doğrudan tespit edebilen araç yoktur ancak yine de yardımcı olabilirler. Örneğin, MobSF'nin statik analizi, kötü amaçlı yazılım tarafından kullanılan etki alanlarını ve IP adreslerinin listesini oluşturur. Uygulamada, genellikle yanlış pozitifler vardır ve bazen araç, özellikle kötü amaçlı yazılım paketlendiğinde, CnC'yi es geçer.

Bazı kötü amaçlı yazılımlarda, kötü amaçlı kod, CnC'nin veya bağlantı kurduğu herhangi bir uzak host bilgisayarın IP adresini gizler. Dinamik analiz, bu gibi durumlarda oldukça yardımcıdır çünkü ortaya çıkan IP adresini ve adlarını otomatik toplar. Örneğin, Dexcalibur ile URL yapıcısı ve openConnection() yöntemi için hooklar ekleyebilirsiniz.

anti-reverse hilelerini atlayın

Android kötü amaçlı yazılımları bazen taklitcileri, hata ayıklayıcıları, köklü ortamları ve hatta Frida hooklarını algılamaya çalışır. Bunun statik analiz üzerinde hiçbir etksi yoktur ancak dinamik analizi zorlaştırır. Tipik olarak korumalar, belirli API'lerin kullanımına, adlandırılmış kanallara, işlemlere, sembollere veya uygulamalara (örn. com.noshufou.android.su), hata ayıklamaya/default değerlere, yığın izleme veya libc düzeyinde kontrollere dayalıdır.
Kötü amaçlı yazılım analizcisinin yapacağı ilk şey, bu korumaları tespit etmekten ibarettir. Bunu yapmak için MobSF, paketleyicileri, şaşırtmacaları, sanal makine karşıtı ve hata ayıklamaya karşı hileleri belirlemeye odaklanan bir araç olan APKiD'ye güvenir. Quark aracıyla isDebuggerConnected kullanımını algılamak için bir kural uygulanabilir ama Quark tasarımı gereği diğer hileleri çoğunlukla bulamaz. Çünkü; Quark belirli dizileri, dosyaları, kanalları veya süreçleri algılayamaz.


İlginizi Çekebilecek Makaleler
FortiWeb Kurulumu 4- Admin Şifresi Değiştirme
Siber Güvenlik

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme

Ocak 23, 2022 10:21

FortiWeb kurulumunu anlattığımız serinin dördüncü yazısında Admin şifresi nasıl değiştirceğinizi, saat ve günü nasıl...

Metasploittable 2
Siber Güvenlik

Metasploittable 2

Ocak 22, 2022 11:57

Metasploittable 2 Nedir? Neden Kullanılır? Nasıl Kurulur? Metasploittable 2 Metasploit firması tarafından bizlerin güvenli...

FortiWeb Kurulumu 3- Firmware Güncellenmesi
Siber Güvenlik

FortiWeb Kurulumu 3- Firmware Güncellenmesi

Ocak 22, 2022 11:56

FortiWeb kurulumunu anlattığımız serinin üçüncü yazısında Firmware güncellemesini anlatacağız. FortiWeb cihazınız gönderildiğinde en son...

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama
Siber Güvenlik

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama

Ocak 21, 2022 7:50

FortiWeb kurulumu yazımızın ikinci serisinde Web UI veya CLI bağlamanın nasıl yapılacağını anlatacağız. Eğer...

Yapay Zeka Nedir?
Yazılım Geliştirme

Yapay Zeka Nedir?

Ocak 20, 2022 10:57

Sürekli olarak değişen, gelişen ve oldukça hızlı bir şekilde boyut atlayan, günümüze kadar gelen...

Trellix Adıyla 2 Dev şirket McAfee ve FireEye
Siber Güvenlik

Trellix Adıyla 2 Dev şirket McAfee ve FireEye

Ocak 20, 2022 10:56

Yeni birleştirilen güvenlik ekipleri McAfee ve FireEye yeni bir isim açıkladı: “Trellix”. Başka bir...

Zoho Kritik Kusur İçin Yama Yayınladı
Siber Güvenlik

Zoho Kritik Kusur İçin Yama Yayınladı

Ocak 20, 2022 10:56

Kurumsal yazılım üreticisi Zoho, Pazartesi günü Desktop Central ve Desktop Central MSP’de, tehdit aktörlerinin...

FortiWeb Kurulumu
Network

FortiWeb Kurulumu

Ocak 19, 2022 12:38

Bu yazı ile başlayarak sizlere FortiWeb kurulumu yaparken nelere dikkat etmeniz gerektiğini ve nasıl...

FortiWeb Nedir?
Siber Güvenlik

FortiWeb Nedir?

Ocak 19, 2022 9:42

FortiWeb, Fortinet’in web uygulamaları için oluşturduğu bir web firewall’udur (WAF). Fortiweb iş açısından son...

İletişim
OZZTECH Bilgi Teknolojileri olarak siber güvenlik danışmanlığı ve bilgi güvenliği eğitimleri alanlarında 10 yılı aşkın bir süredir ülkemizin önde gelen kurumlarına hizmet vermeye devam etmektedir. Detaylı bilgi ve danışmanlık hizmetlerimiz için aşağıdaki formu kullanarak veya [email protected] adresimiz üzerinden bizlerle iletişime geçebilirsiniz.