Mobil uygulama güvenlik testlerinin en zor aşamalarıdan biri belki de test ortamının kurulmasıdır. Uygulamaların doğru çalışması, içi içe kurulan sanal makinaların performansı hep sıkıntı konusu olmuştur. Genymotion (Android VM) bu konuda işleri oldukça basitleştirmiştir. Hızlı ve stabil olması, dosyaların tut sürükle ile sanal androide aktarılabilmesi uygulamanın en büyük artılarıdır.
Tabi ki bu performansının altında yatan sebep x86 mimarisi üzerine kurulmuş olmasıdır. Bu, ARM mimarisiyle ilgili bazı problemleri ortaya çıkarsada yazının devamında konuyla ilgili bir çözüm sunulmuştur. Ayrıca uygulama geliştiriciler için IntelliJ IDEA, Eclipse eklentileride mevcut. Bu yazıda Genymotion uygulamasının kurulumundan ve kısaca kullanıma hazır hale getirilmesinden bahsedilecektir.
Kurulum öncesi
Kurulum ortamı olarak Mac OS X kullanılmıştır. Proxy aracı olarak Burp Suite Free kullanılmıştır. Burp Suite yerine OWASP’ın ZAP uygulaması da kullanılabilir.
Eğer kurulum Windows üzerinde yapılacaksa aşağıda verilen Genymotion bağlantısında hem Virtualbox hem Genymotion içeren bir kurulum dosyası mevcuttur. Bu dosya kullanılarak hiç bir özel ayar yapmaya gerek kalmadan “Next” diyerek kurulum tamamlanabilir. Her ne kadar kurulum Mac OS X üzerinde yapılsada Genymotion’ın kullanımı Windows üzerinde de aynıdır.
Genymotion bu linkten sisteme göre indirilir. (İndirmek için ücretsiz olarak üye olmak gerekli)
Virtualbox indirilir ve kurulur.
Burp Suite Free kurulu değilse indirilebilir ve kurulum rehberi takip edilebilir.
OWASP ZAP kullanılacaksa aynı şekilde indirilebilir ve kurulum videosundan yararlanılabilir.
Kurulum
Virtualbox kurulduktan sonra, Genymotion kurulum dosyasına tıklanır ve uygulamalar diğer Mac uygulama kurulumlarında olduğu gibi Applications klasörüne sürükleyip bırakılır.
Biri grafik arayüzü olan biri shell olan 2 tane Genymotion uygulaması kurulur.
Uygulama çalıştırıldığında şekildeki henüz sanal bir makinenin kurulmadığından bahsediliyor.
Bu pencerede Yes diyoruz.
Sanal android makinesini indirebilmek için burada Genymotion’ı indirirken oluşturduğumuz üyelikle giriş yapılması gerekiyor. Connect diyoruz ve kullanıcı adı/parolayla giriş yapıyoruz.
Burada kurmak istediğimiz sanal android cihazını seçiyoruz ve Next diyoruz. Seçtiğimiz sanal makinenin adını değiştirebileceğimiz ve özelliklerini görüntüleyebileceğimiz bir sayfa çıkıyor. Tamamsa Next diyoruz ve Genymotion indirmeye başlıyor.
İndirme işlemi bittikten sonra sanal makinede hazır hale gelmiş oluyor. Settings menüsünden sanal makina ve Genymotion ile ilgili ayarları yapmak mümkün. Genymotion halihazırda ADB yüklü geliyor. Ancak ADB sekmesi altında, sistemde ADB yüklü ise yolunu gösterip kullanılabilir.
Aşağıda belirtilen anahtar işaretine tıklayarak işlemci ve RAM miktarı, klavye ve ekran çözünürlüğü gibi bazı ayarlar yapılabilir.
Ayarlamaları yaptıktan sonra Play tuşuna basılır ve yaklaşık 15 saniye sonra sanal Android makinesi kullanıma hazır hale geliyor. Burada HTC One 4.3 sanal Android imajı kurulmuştur.
(OpenGL hatası alınıyorsa buradan)
Bundan sonra mobil uygulama güvenlik testlerinde en önemli konulardan birisi, uygulamanın sunucularla kurduğu bağlantılarda araya girme konusudur.
Araya girmek için Burp Suite Free uygulaması kullanılmıştır. Burada amaç sanal Androiddeki trafiği host makinada(Mac OS X) Burp Suite’in çalıştığı porttan geçirmektir.
Mobil uygulama bağlantılarını host makine üzerinden geçirmek ve yakalamak için sanal Android’de Settings > Wi-Fi’ya girilir. WiredSSID üzerinde basılı tutulur. Çıkan seçeneklerden “Modify network” ardındanda “Show advanced options” denilir ve Proxy ayarları değiştirilir. Burada IP olarak asıl makina(Host)nın IPsi girilir. Port olarak tercihe göre değişmekle beraber Burp’un öntanımlı portu olan 8080 kullanılabilir.
Burp Suite’te proxy eklemek için Burp Suite’i açıp(Java yüklü bilgisayarlarda çift tıklamayla tüm işletim sistemlerinde çalışır.) aşağıdaki ekran görüntüsündeki gibi ayarları değiştirmek gerekir. İzlenecek sıra Proxy > Options > Binding şeklindedir.
‘Bind to port’ için Android’de girilen port ve ‘Bind to adrress’ için ‘Specific address’ ve IP olarak Android’de girilen host IP’si girilir.
Proxy aktif hale getirildiğinde HTTP bağlantılarının yakalandığı görülecektir.
HTTPS bağlantılarında araya girmek için Burp Suite’in sertifikasının da indirilmesi gerekir. Eğer Burp zaten kuruluysa Firefox üzerinden Advanced > Certificates > View Certifacates sırası izlenir ve kurulu sertifikalar arasından PortSwigger CA bulunup seçilir. Export ile dışarıya aktarılır. Aktarırken uzantının .cer olduğuna dikkat etmek gerekir. Sonra bu sertifika tut sürükle ile direk sanal android üzerinde bırakılır. Eğer Burp kurulu değilse yazının başında verilen link takip edilip kurulum tamamlanmalıdır. O işlem sırasında elde edilen sertifika direk olarak sanal Android’e sürüklenip bırakılır.
Sertifika, bu durumda sanal Android üzerinde File Manager Downloads klasörü altında yer
alır. Sertifikayı yüklemek için “Settings > Security > Install from SD card” yolu izlenir.
Android otomatik olarak sertifikayı ekran görüntüsündeki gibi bulacaktır. OK denir ve böylece sertifika kurulumuda başarılıyla tamamlanmıştır.
Artık HTTPS bağlantıları içinde araya girilebilir. Örnek bir uygulama Facebook uygulaması üzerinde yapılmıştır. Bunun için harici indirilen facebook.apk dosyası sanal android üzerine kopyalanmıştır. Burada INSTALL_FAILED_CPU_ABI_INCOMPATIBLE gibi bir hata alınabilir.
Şekildeki gibi Facebook kullanıcı adı/parola bilgisi girilmiştir.
Aşağıda görülebileceği gibi araya girilmiştir. Kullanıcı adı/parola bilgisi açık bir şekilde görülebilir.
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE Hatası
Genymotion, yazının başında da bahsedildiği gibi x86 mimarisi üzerine geliştirilmiştir. Geliştiricileri bir süre önce ARM Translation ve Google Play Apps’i kaldırdılar. Bu nedenle sadece ARM üzerinde çalışan uygulamaları kurarken INSTALL_FAILED_CPU_ABI_INCOMPATIBLE hatası alınabilir. Bunun için aşağıdaki adımlar uygulanarak bu sorunlar aşılabilir.
-
Önce ARM Translation v1.1 ve sahip olduğunuz Android versiyonuna uyumlu Google Apps buradan indirilmelidir.(HTC One 4.2.2 ve Galaxy Nexus 4.3 sürümleri için çalışan sürüm gapps-jb-20130813-signed.zip dosyasıdır.)
-
İndirilen ARM Translation zip dosyası sanal Android üzerine sürüklenip bırakılır ve flash ile ilgili çıkan uyarıya OK denir.
-
Sanal Android reboot edilir.
Şimdi Facebook uygulaması kurulmaya çalışıldığında başarılı olduğu görülebilir.
Bu 3 adım bu hatadan kurtulmak için yeterlidir. 4. ve 5. adımlarda, ikinci indirilen zip dosyası ve onun kurulması Google uygulamaları ile ilgilidir.
-
Android versiyonuna göre indirilen ikinci zip dosyası sanal Android’e kopyalanır. Bu kopyalama işleminde de flash ile ilgili uyarı gelecektir OK denir. Ardından bazı Google uygulamalarıyla ilgili hatalar verebilir(Beklenen bir şey).
-
Sanal Android tekrar reboot edilir.
Android’de Google uygulamalarının kurulduğu görülebilir.
OpenGL Hatası
Sanal Android başlatılırken resimdeki gibi bir hata ile karşılaşılıyorsa, muhtemelen ekran kartı sürücüsünün(driver) güncel olmamasından kaynaklanıyordur. Güncel sürücünün indirilmesiyle problem aşılabilir. Diğer küçük ihtimal ise ekran kartının OpenGL desteklememesidir.
Ayrıca bunların dışında Genymotion, sanal bir işletim sistemi üzerinde kurulduysa (örneğin VMware üzerinde kurulu bir Windowsta yüklenmeye çalışılıyorsa) yine bu hatayı verecektir ve şu an için bir çözümü yoktur.
Ipuçları
-
Mac OS X üzerinden(diğerlerinde de olabilir) sanal Android’e klavyedeki bazı karakterler yazmayabilir(Özellikle @ karakteri). Bunun için sanal Android’de anasayfada gelen Genymotion Configuration uygulamasına tıklayarak klavye tercihini Virtual keyboard seçebilirsiniz.(Sanal makine ilk kurulduğunda Virtual keyboard aktiftir.)
-
Androidi kapatmak için direk olarak kırmızı çarpıya basmak yerine daha meşakkatli ama sağlıklı bir yöntem olan, sağ alt köşedeki küçük oka tıklayıp ekran görüntüsündeki gibi güç simgesine uzun basarak Power off diyebilirsiniz.
Referanslar:
Genymotion kurulum
Google Apps(zip dosyaları)
Ender AKBAS – ender.akbas@bga.com.tr