RootBeer ile Android Root Tespiti: Güvenlik Analizi

RootBeer ile Android Root Tespiti: Güvenlik Analizi

Android işletim sistemli cihazlarda root erişimi, güvenlik açıklarının kapısını aralayabilir. Bu yazıda, RootBeer uygulaması kullanılarak Android cihazlarda root tespitinin nasıl yapıldığını, uygulamanın izlediği teknik yöntemleri ve potansiyel riskleri detaylı şekilde ele alıyoruz.

RootBeer, Android cihazlarda root erişimi olup olmadığını tespit eden bir güvenlik uygulamasıdır.
Bu çalışma, root erişimi olmayan bir cihaz üzerinden RootBeer’in analiz mekanizmasını anlamaya
yöneliktir. Cihazımızı rootbeer ile tarayıp rootlu olup olmadığına bakıyoruz sonra apk dosysasına
bakıyoruz.

1. Root Management Uygulamaları Kontrolü

Root erişimi sağlayan uygulamalar (örneğin Magisk Manager, SuperSU) sistem dizinlerinde
aranır. RootBeer şu tip dizinleri kontrol eder:

private static final String[] ROOT_INDICATORS = {
      “/system/xbin/su”,
     “/system/bin/su”,
     “/system/app/Superuser.apk”,
     “/system/app/SuperSU.apk”,
     “/su/bin”
};

Bu dizinlerdeki dosyalar, cihazın rootlu olduğunu gösterir. Ayrıca Build.TAGS içinde “test-keys”
etiketi varsa, bu da root erişiminin bir göstergesidir:

static Boolean isRooted() {
  if (Build.TAGS != null && Build.TAGS.contains(“test-keys”)) {
    return true;
}
for (String path : ROOT_INDICATORS) {
   if (new File(path).exists()) return true;
}
    return false;
}

2. Potansiyel Tehlikeli Uygulamalar

Bu bölümde, cihazda yüklü olan root ile ilişkili uygulamaları kontrol etmek için PackageManager
kullanılır. Örneğin BusyBox Installer veya Root Checker gibi uygulamaların varlığı root şüphesini
artırır.

public static boolean hasDangerousApps(Context context) {
  final String[] dangerousApps = {
    “com.noshufou.android.su”,
    “com.thirdparty.superuser”,
    “eu.chainfire.supersu”,
    “com.koushikdutta.superuser”,
    “com.zachspong.temprootremovejb”,
    “com.ramdroid.appquarantine”,
    “stericson.busybox”,
    “com.joeykrim.rootcheck”
};
PackageManager pm = context.getPackageManager();
for (String packageName : dangerousApps) {
 try {
   pm.getPackageInfo(packageName, 0);
   return true;
   } catch (PackageManager.NameNotFoundException e) {}
}
   return false;
}

3. Root Gizleme Uygulamaları

MagiskHide gibi araçlar root izlerini gizlemek için sistem dosyalarını değiştirir veya mount
çıktısını manipüle eder. Bu durumda cihazın /proc/mounts çıktısı analiz edilerek gerçek sistem
izinleri kontrol edilebilir.

public static boolean isMountPathSuspicious() {
try {
   BufferedReader reader = new BufferedReader(new FileReader(“/proc/mounts”));
   String line;
   while ((line = reader.readLine()) != null) {
     if (line.contains(“/system”) && line.contains(“rw”)) {
      return true;
  }
}
   reader.close();
} catch (IOException e) {}
return false;
}

4. Test-Keys Kontrolü

Cihazın işletim sistemi “test-keys” ile imzalanmışsa, bu üretici dışı bir yazılımın yüklendiğini ve
cihazın root edilmiş olabileceğini gösterir. Bu kontrol, Build.TAGS üzerinden yapılır:

if (Build.TAGS != null && Build.TAGS.contains(“test-keys”)) {
return true;
}

5. BusyBox Binary

Rootlu sistemlerde sıkça kullanılan BusyBox’ın varlığı ve versiyonu kontrol edilir. Aşağıdaki regex
deseni, BusyBox çıktısından versiyon bilgisini çıkartmak için kullanılır:

private static final Pattern BUSYBOX_VERSION_PATTERN =
 Pattern.compile(“^(?i:busybox)\\s([\\W\\w]+)\\s(?:\\([\\W\\w]+\\))\\s(?:multi-call
binary.)$”);

6. SU Binary Kontrolü

Android sistemde su binary’si varsa bu çok kuvvetli bir root göstergesidir. Aşağıdaki kod, su
binary’sinin klasik yollarını kontrol eder:

public static boolean isSuBinaryPresent() {
 String[] paths = {
  “/system/bin/su”,
  “/system/xbin/su”,
  “/sbin/su”,
  “/su/bin/su”
};
for (String path : paths) {
  File file = new File(path);
  if (file.exists() && file.canExecute()) {
    return true;
   }
}
 return false;
}

7. Yazılabilir Sistem Dizini (RW Paths)

Root edilmiş sistemlerde /system gibi dizinler salt okunur (read-only) yerine yazılabilir (read –
write) durumda olabilir. Bu kontrol BusyBox ya da Toybox komutları üzerinden yapılır:

String primaryBinary = null;
Cmd.Result result5 = Cmd.builder(“command -v mount”).execute(shell);
if (result5.getExitCode() == 0 && result5.getOutput().size() > 0) {
     String mountApplet = result5.getOutput().get(0);
     Cmd.Result result6 = Cmd.builder(“stat -c %N ” + mountApplet).execute(shell);
     if (result6.getExitCode() == 0 && result6.getOutput().size() > 0) {
         Cmd.Result result7 = result6.getOutput().get(0).contains(“busybox”) ?
          Cmd.builder(“command -v busybox”).execute(shell) :
          Cmd.builder(“command -v toybox”).execute(shell);
     if (result7.getExitCode() == 0 && result7.getOutput().size() > 0) {
      primaryBinary = result7.getOutput().get(0);
     }
   }
}

8. SELinux Flag Is Enabled

SELinux durumu, Android cihazların güvenliğinde önemli bir göstergedir. Eğer cihaz ‘permissive’
moddaysa, bu root edilmiş olabileceğini gösterir. RootBeer bu kontrolü aşağıdaki yapı ile sağlar:

public class SELinux {
  private final State state;

public enum State {
    DISABLED,
    PERMISSIVE,
    ENFORCING
   }
public SELinux(State state) {
    this.state = state;
   }
}

9. Magisk Specific Checks

Magisk modülleri veya izleri tespit edilmeye çalışılır. RootBeer, Magisk’in kurulu olup olmadığını
anlamak için paket adlarını kontrol eder ve sistemde bazı özel yolları tarar:

SUAPPS.put(SuBinary.Type.MAGISKSU, new String[]{“com.topjohnwu.magisk”});
Ayrıca aşağıdaki yollar da kontrol edilir:

– /sbin/.magisk

– /cache/.disable_magisk

 

Sonuç olarak, RootBeer uygulaması Android cihazlarda root erişimini tespit etmek için etkili bir çözüm sunar; mobil güvenlik stratejilerinde bu tür araçların doğru kullanımı, tehditleri erkenden fark edip önlem almak açısından kritik öneme sahiptir.

Tüm bu analizlere ait örnek APK dosyasını ve RootBeer uygulamasının test edildiği kaynak dosyaları GitHub üzerinden erişime açtım. İncelemek veya kendi testlerinizi yapmak için aşağıdaki bağlantıyı kullanabilirsiniz.

Apk dosyasını ve RootBeer uygulamasını Github adersimde bulabilirsiniz:

RootBeer/ at main · MehmetKg/RootBeer

Mobil dünyasına ilginiz varsa aşağıdaki makaleyi de okumanızı tavsiye ederim.

Yeni Android NoviSpy Casus Yazılımı Qualcomm Zero-Day Açıklarıyla İlişkilendirildi

About The Author

No Responses

Reply