Merhaba arkadaşlar,
Statik analiz bir uygulamanın kodunu çalıştırmadan inceler; ama bazı davranışlar ancak uygulama çalışırken ortaya çıkar: hangi fonksiyonun ne değer döndürdüğü, SSL doğrulamasının gerçekte yapılıp yapılmadığı, bir kök kontrolünün nasıl çalıştığı. İşte burada dinamik analiz ve Frida devreye girer. Frida, çalışan bir sürece kod enjekte ederek fonksiyonları canlı izlemenizi (hooking) sağlayan açık kaynak bir araçtır. Bu rehberde Frida'yı resmi belgelerine dayanarak kurmayı ve yalnızca kendi geliştirdiğiniz, kendi cihazınızdaki bir lab uygulaması üzerinde temel dinamik analizi anlatıyorum. Başkasına ait uygulamalarda kullanmak yasa ve lisans ihlalidir.
Konuda Anlatılacaklar
- Dinamik analiz ve hooking nedir?
- Lab ortamı: emülatör ve kendi uygulamanız
- Frida kurulumu (host ve cihaz)
- Süreçleri listeleme ve bağlanma
- İlk hook: bir fonksiyonu izleme
- Örnek: kendi kök kontrolünüzü gözlemleme
- Etik sınırlar ve savunma dersleri
Dinamik Analiz ve Hooking Nedir?
Dinamik analiz, uygulamayı gerçek/sanal bir cihazda çalıştırırken davranışını inceler. Hooking, bir fonksiyonun çağrılmasını araya girerek yakalamak; argümanlarını, dönüş değerini görmek ve isterseniz değiştirmektir. Frida bunu, hedef sürece bir ajan (JavaScript ile yazılmış) enjekte ederek yapar. Bu teknik hem saldırı hem savunma tarafında kullanılır; biz savunma ve kendi kodunu anlama amacıyla ele alıyoruz.
Lab Ortamı: Emülatör ve Kendi Uygulamanız
Güvenli ve yasal bir lab için:
- Android Studio ile bir Android Emülatör (tercihen Google APIs imajı, root erişimi kolay olan) kurun.
- Analiz edeceğiniz uygulama sizin yazdığınız basit bir test uygulaması olsun. OWASP'ın MASTG projesi, tam da bu amaç için savunmasız örnek uygulamalar (MAS Test Apps) sağlar.
- Asla Play Store'dan indirdiğiniz üçüncü taraf bir uygulamaya müdahale etmeyin.
Frida Kurulumu (Host ve Cihaz)
Frida iki parçadan oluşur: bilgisayarınızdaki komut satırı araçları ve cihazdaki frida-server. Resmi belgelere göre host tarafı:
pip install frida-tools
frida --versionfrida-tools; frida, frida-ps, frida-trace gibi komutları içerir. Cihaz tarafı için cihazın mimarisine uygun frida-server sürümünü resmi GitHub sürümlerinden indirip (yalnızca kendi root'lu emülatörünüze) yükleyin:
adb push frida-server /data/local/tmp/
adb shell "su -c 'chmod 755 /data/local/tmp/frida-server'"
adb shell "su -c '/data/local/tmp/frida-server &'"Süreçleri Listeleme ve Bağlanma
frida-server çalışırken, USB üzerinden bağlı cihazdaki uygulamaları listeleyin. Resmi belgelere göre -U USB cihazını, -a yüklü uygulamaları, -i ise ek bilgiyi gösterir:
frida-ps -U
frida-ps -Uaiİkinci komut, yüklü uygulamaları paket adlarıyla birlikte listeler. Kendi test uygulamanızın paket adını (örneğin org.benim.lab) buradan not alın.
İlk Hook: Bir Fonksiyonu İzleme
Basit bir Frida ajanı JavaScript ile yazılır. Aşağıdaki script, kendi uygulamanızdaki bir Java metodunu yakalayıp argüman ve dönüş değerini yazdırır. Java.perform ve Java.use, Frida'nın resmi JavaScript API'sinin parçasıdır:
// izle.js
Java.perform(function () {
var Hesap = Java.use("org.benim.lab.Hesaplayici");
Hesap.topla.implementation = function (a, b) {
console.log("[+] topla cagrildi: a=" + a + " b=" + b);
var sonuc = this.topla(a, b);
console.log("[+] donen deger: " + sonuc);
return sonuc;
};
});Scripti kendi uygulamanıza enjekte ederek çalıştırın:
frida -U -l izle.js -f org.benim.lab-f uygulamayı Frida'nın başlatmasını sağlar (spawn), böylece en baştan izlersiniz. Konsola, uygulama o metodu her çağırdığında argümanlar ve dönüş değeri düşer.
Örnek: Kendi Kök Kontrolünüzü Gözlemleme
Birçok uygulama cihazın root'lu olup olmadığını kontrol eder. Kendi lab uygulamanıza basit bir kök kontrolü fonksiyonu yazıp, Frida ile bu fonksiyonun ne döndürdüğünü gözlemleyin:
// kok-gozlem.js
Java.perform(function () {
var G = Java.use("org.benim.lab.GuvenlikKontrol");
G.rootluMu.implementation = function () {
var r = this.rootluMu();
console.log("[*] rootluMu() -> " + r);
return r; // sadece gozlem; degeri degistirmiyoruz
};
});Buradaki önemli savunma dersi: Dinamik analizle kök kontrolü gibi istemci tarafı korumaların değiştirilebildiğini görürsünüz. Bu yüzden güvenlik kararlarını yalnızca istemciye bırakmayın; kritik doğrulamaları sunucu tarafında da yapın. Kendi uygulamanızda bu zafiyeti görmek, onu nasıl sertleştireceğinizi öğretir.
İleri Seviye: Etik Sınırlar ve Savunma Dersleri
Frida çok güçlü bir araçtır ve bu güç sorumluluk getirir:
- Yalnızca kendi uygulamalarınızda veya yazılı izinli (bug bounty kapsamı dahilinde) hedeflerde kullanın.
- İstemci tarafı korumalar (kök tespiti, SSL pinning, kurcalama tespiti) saldırganı yavaşlatır ama tek başına yeterli değildir.
- Savunma için: kritik iş mantığını ve yetkilendirmeyi sunucuda tutun, hassas verileri istemcide tutmayın, obfuscation ve bütünlük kontrolleri ekleyin.
- Dinamik analiz bulgularınızı OWASP MASTG testleriyle eşleştirerek raporlayın.
Frida ayrıca iOS, Windows, Linux ve macOS süreçlerinde de çalışır; mantık her yerde aynıdır: çalışan koda araya girip davranışı gözlemlemek.
Sonuç
Frida, bir uygulamanın çalışırken gerçekte ne yaptığını görmenin en etkili yollarından biri. Kendi lab uygulamanızda frida-tools ve frida-server ile kurulum yapın, frida-ps ile süreçleri bulun, basit bir Java.perform hook'u ile fonksiyonları izleyin ve istemci tarafı korumaların neden tek başına yetmediğini kendi gözünüzle görün. Bu bilgiyi yalnızca kendi kodunuzu güçlendirmek için kullanın. Siz Frida ile hangi senaryoları test ettiniz? Yorumlarda paylaşın.
Kaynakça
- Frida, Installation: https://frida.re/docs/installation/
- Frida, Android kurulum: https://frida.re/docs/android/
- Frida, JavaScript API (Java): https://frida.re/docs/javascript-api/
- Frida, frida-ps: https://frida.re/docs/frida-ps/
- OWASP MASTG, Dynamic Analysis: https://mas.owasp.org/MASTG/
- OWASP MAS Test Apps: https://mas.owasp.org/MASTG/apps/
- Android Studio Emulator: https://developer.android.com/studio/run/emulator
Yasal Uyarı
Frida ve dinamik analiz teknikleri yalnızca kendinize ait uygulamalar, kendi cihazınız veya sahibinden yazılı izin aldığınız (ör. bug bounty kapsamındaki) hedefler üzerinde kullanılmalıdır. Başkasına ait uygulama veya cihazlara izinsiz müdahale, lisans ihlaline ve 5237 sayılı Türk Ceza Kanunu'nun 243, 244 ve 245. maddeleri kapsamında suça yol açar. TurkTeam yalnızca savunma ve eğitim amaçlı paylaşımları destekler.
Görsel: TurkTeam özgün kapak ve diyagramları
Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).
