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)

Drozer Agent apk uygulaması bağlantıdan indirilerek cihaza/emülatöre adb aracı üzerinden kurulacaktır. adb aracı Android SDK ile birlikte gelen ve  cihaz/emülatör ile iletişime geçmek amacıyla kullanılan bir araçtır. Android SDK /platform-tools dizini altında yer almaktadır. Android cihaz bilgisayara bağlandıktan sonra (emülatör ayağa kaldırıldıktan sonra)

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.

Önceki yazıda yer alan first uygulaması yine drozer tarafından tespit edilmiştir.

-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.