"Enter"a basıp içeriğe geçin

Frida kullanarak kod enjekte etme

Bu yazımda sizlere Frida nedir? Frida nasıl kullanılır? Fridadan korunma yolları? sorularını cevaplayacak ve nasıl kullanacağımızı özetleyeceğim. Daha önceki yazılan makalelerde genellikle SSL Pinning üzerinden bahsedilsede Frida daha ciddi işler içinde kullanılabilir.

Frida nedir

Frida JavaScript kodlarıyla Android işletim sisteminde (ve daha birçok işletim sisteminde) kod enjekte etmeyi ve uygulama içinde kodları değiştirerek yönetmeyi sağlar.

Frida nasıl kullanılır?

Frida kullanmak için ihtiyacınız olan programlar / cihazlar şunlardır;

  1. Root uygulanmış android cihaz
  2. Frida tools

Rootlu cihazınız bulunmuyor ise avd kullanarak rootlu cihaz üretebilirsiniz. (avd cihazlarında google play servisleri aktif değil ise rootlamaya gerek yoktur zaten kendisi “adb root” komudu ile rootlu şekilde çalışır. Fakat google play servisleri var ise https://github.com/newbit1/rootAVD kullanarak rootlama işlemi yapabilirsiniz)

Ayrıca Genymotion gibi sistemlerle de kendi emulatörünüzü oluşturarak kullanabilirsiniz. Size önerim kendi cihazınızda bunu yapmamanız. Root kişisel cihazlarda ihtiyaç olmadıkça kullanılmamalı.

Kurmaya Başlayalım

Ben kurulumu choco üzerinden anlatacağım, eğer sizde kurulu değilse benzer komutları diğer işletim sistemlerinde kullanabilir windows ise indirebilirsiniz.

choco install python

Windows 10 – Windows 11 işletim sistemlerinde python programını microsoft store üzerinden indirmek daha mantıklıdır. Çünkü bu işletim sistemlerinde python.exe microsoft storeye yönlendirir. https://stackoverflow.com/questions/47539201/python-is-not-recognized-windows-10

Python zorunludur. Çünkü frida tools python üzerinde çalışır. Şimdi ise frida tools kuralım.

pip install frida-tools
pip install objection 
pip install frida

indirdikten sonra hemen çalıştıralım.

frida-ps -U

Bu kod çalışıyorsa frida başarılı bir şekilde çalışıyor demektir.

Fridayı cihaza kurmak

Fridayı cihaza kurmanız gerekmekte. Cihaza kurmak için öncelikle abi sürümünü öğrenmemiz gerekmekte. Cihazın abi sürümü işlemcinin mimarisidir.

adb shell getprop ro.product.cpu.abi

Bu kodu kullandığınızda alacağınız çıktı (bende arm64-v8a) farklı olabilir. Dolayısıyla https://github.com/frida/frida/releases kısmından size uygun frida server dosyasını indirmelisiniz. Ardından pushlayalım.

adb push <frida-serverin dizini> /data/local/tmp/

Ardından chmod tanımlaması yapmamız gerekiyor.

adb shell chmod 777 /data/local/tmp/frida-server

Çalıştırmak için;

adb shell "su -c '/data/local/tmp/frida-server &'

Frida ile enjeksiyon yapmak

Frida ile enjeksiyon yapmak için javascript diline azda olsa hakim olmanız gerekiyor. https://github.com/Andromeda606/HackMe üzerinden indirdiğimiz projeyi açalım.

Burada basit bir uygulama var. Butona basıldığında bir diyalog çıkıyor ve admin olup olmadığımıza göre şifremizi veriyor. Haliyle admin olmadığımızdanda şifreyi alamıyoruz. Kodu inceleyelim.

Boolean isAdmin(){
     return admin;
}

isAdmin değişkenini kontrol etmemiz gerekiyor. Dolayısıyla frida scriptimizi açalım.

Java.perform(function () {
    const MainActivity = Java.use('com.andromeda.hackme.MainActivity');
    const isAdmin = MainActivity.isAdmin;
    isAdmin.implementation = (v) => {
        return Java.use("java.lang.Boolean").$new(true);
    }
});

Kodu anlayalım.

Java.perform: Javanın yüklendiği zaman kodun çalışması gerektiğinden kodlarımızı bu fonksiyonun içine yazarız.

Java.use: smali kodlarından yazdığınız dosyayı çağırır. Biz örnek amaçlı com.andromeda.hackme.MainActivity yazdık ve MainActivity içerisine girdik.

implementation: Fonksiyonu değiştirmek için kullandık.

Şimdi kodu çalıştıralım.

frida -U -f com.andromeda.hackme -l frida.js --no-paus

ve ardından!

Fridadan nasıl korunurum

Proguard (mı?)

Aslında Fridadan Proguard gibi sistemler kullanarak kurtulamazsınız. Kurtulmanın en iyi yolu cihazda yüksek işlemler yapmamaktır. Mesela bu örnekte admin şifresini uygulama içinde sunduk sunucu üzerinden sunsaydık sunucuda düzenleme yapamayacakları için hiçbir şekilde bulamazlardı. Uygulamalardaki en önemli güvenlik sorunu burada başlar. Root kontrolü yapmanız hiçbir şeyi değiştirmez. Hazır olarak herkesin kolayca erişebileceği bir antiroot kod betiği var.

Cihazı önemli bulmayın

Cihaz içerisinde yüksek işlemler yapmayın. Zaten şunuda unutmamalısınız kimse yüksek pil tüketen bir uygulamayı kullanmak istemez. Dolayısıyla yukarıda da açıkladığım gibi kesinlikle cihazda yüksek seviye işler yapmayın.

Yok mu bunu engelleyen hazır kod!?

Hayır. Engelleyen bir kod varsada onunda engellemesini aşan bir kod bulunmakta. Instagram güvenlik önlemi almak için fridadan korunma amaçlı şifreleme algoritması geliştirdi. Fakat yinede nafile.

Anti-Frida kodları

Burada, c ile yazılan bir kütüphane olmasına rağmen eski olması ve bununda engellenebilir olması yüzünden pek bir şey ifade etmemekte.

Kapanış

Bu yazıda size Frida kullanımını anlattım. Daha fazla Frida ile alakalı örnekler, yazılar ve içerikler gelecek. Takip etmeyi unutmayın.

Tek Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir