Daha önceki Android’de İzin Almadan İzin Kullanmak yazısında bahsedildiği üzere korunmayan komponentler diğer uygulamalar tarafından kötü niyetli olarak kullanılabilmektedir. Content Provider’ların sunmuş olduğu veriler okunabilir, servislere ve activity’lere izin almadan kontrolsüz bir şekilde erişilebilir ve bazı işlemler yaptırılabilir. Bu bağlamda güvenlik testi yaparken uygulanacak adımlardan bir tanesi güvensiz komponentlerin tespit edilmesi olacaktır. Korunmayan, güvensiz komponentlerin tespiti sırasında kullanılabilecek araçlardan bir tanesi Drozer aracıdır. Drozer, Android uygulama testleri için geliştirilmiş bir framework’tür. Android’in metasploiti olarak düşünülebilir.
Drozer ile çalışabilmek için birbirleriyle haberleşen biri Android cihazda (emulatörde), diğeri bilgisayarda olmak üzere iki adet drozer uygulaması indirilmelidir. Aşağıdaki bağlantıdan drozer agent apk dosyası ve drozer console uygulaması kullanılan işletim sistemine uygun olarak indirilebilir.
(Bu yazıda client uygulaması Ubuntu işletim sistemine uygun olarak seçilecektir)
adb install agent.apk
komutu çalıştırılarak drozer agent uygulaması cihaza kurulmaktadır. İndirilen drozer console client’ı da arşiv dosyasından çıkartılarak
dpkg -i drozer2.x.x.deb
komutu ile de bilgisayara kurulabilir. Uygulamanın doğru kurulduğunu anlamanın kolay yolu drozer’ı çalıştırmaktır. Drozer çalıştırıldığında aşağıdaki gibi bir yardım menüsü görüntüsüyle karşılaşılmalıdır.
Daha sonra cihazda bulunan drozer uygulaması çalıştırılmalı ve sağ alt köşsedeki buton vasıtasıyla drozer uygulaması aktifleştirilmelidir.
Drozer aktif hale getirildikten sonra aşağıdaki gibi bir ekran ile karşılaşılacaktır.
Görüldüğü üzere drozer sunucusu Android cihazda 31415 portundan bağlantıları beklemektedir. Bu işlemden sonra adb aracı kullanılarak bilgisayardaki lokal 31415 portuna gelen socket bağlantılarının, cihaz/emülatör’ün 31415 portuna yönlendirilmesi gerekmektedir. Çünkü drozer uygulamasının bilgisayara kurulan console uygulaması 31415 portuna bağlantı isteği göndermektedir. Aynı zamanda cihaz/emülatör’de çalışan drozer uygulaması da 31415 portundan dinleme yapmaktadır.
adb forward tcp:31415 tcp:31415
komutu bu işlem için kullanılmaktadır. Bu yönlendirmeyi yaptıktan sonra bilgisayarda
drozer console connect
komutu çalıştırılacak cihaz/emülatör’deki drozer sunucusu ile bağlantı kurulması sağlanmaktadır. Bütün adımlar doğru yapıldığı taktirde aşağıdaki gibi bir ekran görüntüsüyle karşılaşılacaktır.
Bu sırada cihazdaki uygulama arayüzünde bağlantının kurulduğuna dair veriler de görülebilmektedir.
Drozer uygulaması başarılı bir şekilde çalıştırıldıktan sonra cihazda bulunan güvensiz komponentler testpit edilebilmektedir.
Güvensiz service’lerin tespit edilmesi
Drozer üzerinden
dz> run app.service.info
komutu çalıştırılarak export edilmiş ve/veya intent-filter tanımlanmış fakat zamanda herhangi bir izin tarafından korunmayan service’lerin listesi elde edilebilir. Örnek olarak aşağıdaki ekran görüntüsünde drozer tarafından tespit edilen güvensiz servis bulunan uygulamalardan bir tanesi whatsapp uygulamasıdır.
Aynı komuta -f parametresi ile keyword verilebilir ve böylece istenilen herhangi bir keyword için arama daraltılabilir. Benzer bir şekilde -a parametresi ile birlikte uygulama paket ismi verilerek arama daraltılabilir. -p parameteresi verilerek permission ile de arama yapılabilmektedir.
dz> run app.service.info -f whatsapp
ve
dz> run app.service.info -a com.whatsapp
Korunmasız servisler yine drozer üzerinden çalıştırılabilmektedir. Bunun için drozer’dan
dz> run app.service.start –component KOMPONENT_ADI SERVIS_ADI
komutu çalıştırılabilir. Örnek olarak whatsapp uygulamasının
com.whatsapp.accountsync.AccountAuthenticatorService
servisini çalıştırmak için
dz> run app.service.start –component com.whatsapp com.whatsapp.accountsync.AccountAuthenticatorService
komutu çalıştırılmalıdır. Servis çalıştırılması ile ilgili tüm ayrıntılar için -h parametresi ile help dosyası görüntülenebilmektedir.
-p parametresi ile yapılan arama sonucu da aşağıdaki şekilde bir sonuç verecektir.
Güvensiz service’ler ile yapılabilecekler daha çok fazla işlem vardır. Ancak bu yazı içerisinde daha fazla detaya girilmeyecektir. Detaylı bilgi için drozer komutlarına -h parametresi verilerek yardım menüsü görüntülenebilmektedir.
Güvensiz activity’lerin tespit edilmesi
dz> run app.activity.info
komutu ile gerçekleştirilmektedir. Yine -a parameteresi ile birlikte paket adı; ve -f parametresi ile de herhangi bir keyword verilerek arama daraltılabilmektedir. Ve yine -p parametersi ile arama, izne göre de daraltılabilmektedir. Detaylar için -h parametresi kullanılarak yardım ekranı görüntülenebilir.
Güvensiz activity’ler, service’lere benzer bir şekilde
dz> run app.activity.start –KOMPONENT_ADI ACTIVITY_ADI
run app.activity.start –component com.ouz.second com.ouz.second.SecondAppMainActivity
Güvensiz content provider’ların tespit edilmesi
Drozer üzerinden benzer bir şekilde
dz> run app.provider.info –permission null
komutu ile tespit edilmektedir. Detaylar için -h parametresi kullanılarak yardım ekranı görüntülenebilir.
Bu yazıda amaç Drozer aracını kullarak güvensiz komponentlerin tespit edilmesi idi. Daha detaylı testler ve adımlar için drozer’ın yardım menüsü kullanılabilir. İlerleyen günlerde drozer ile daha detaylı işlemlerin yapıldığı yazılar yayınlanacaktır.