MOBİLE AUDİT NEDİR?
Teknolojinin gelişmesiyle kullandığımız uygulamaların oranı her geçen gün hızla artmaktadır. Geliştirilen bu uygulamaların daha verimli çalışması için bir takım analizlerden geçmesi gerekmektedir. Uygulamada bulunan bir kötücül yazılım cihaza büyük oranda zarar verebilir. Cihazdaki verilere ulaşabilir, işlevlerini düzgün yerine getirememesini sağlayabilir veya telefonu tamamen savunmasız hale getirebilir bu nedenle uygulamaları yüklemeden önce incelemek için Mobile Audit kullanılabilir. Mobile Audit sayesinde, geliştirilen uygulamanın kaynak kodu incelenerek uygulamada bulunan güvenlik açıklıkları ve sorun teşkil edebilecek zafiyetleri gözlemleyebiliriz. Mobile Audit sayesinde APK dosyasının tüm bilgilerini ortaya çıkartabilir ve tüm bulguları CWE standartlarına göre kategorize edebiliriz. Mobile Audit, uygulamaların verdiği izinleri, sertifikaları görmemize olanak sağlamaktadır. Ayrıca bu bulguları düzenleyip önem derecesine göre dizayn edip gerekli incelemeleri yapabilir veya duruma göre silebiliriz. İsteğe göre incelenen uygulama PDF şeklinde dışa aktarılabilir ve incelemeye devam edilebilir.
MOBİLE AUDİT KURULUM
İlk olarak sistemimize Docker Compose yüklememiz gerekmektedir. Kısaca Docker-compose bir tek dosya içerisinde karmaşık yapıların tanımlanıp bir komutta birden fazla konteynerin çalışmasını sağlayan bir araçtır.
sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose//sudo chmod +x /usr/local/bin/docker-compose2-)docker-compose –version
komutunu girerek release dosyasını indiriyoruz. “uname” komutundaki –m ve –s parametreleri sistemin donanım mimarisini ve çekirdek sürümünü tanımlamaktadır.
Sistemimize;
sudo chmod +x /usr/local/bin/docker-compose
bu komut yardımı ile çalıştırma izni veriyoruz.
Sistemimizde Docker Compose’un bulunduğunu
docker-compose version
komutu ile kontrol edelim ve sürüm incelemesini yapalım.
Sistemimize github üzerinden
sudo apt-get install https://github.com/mpast/mobileAudit.git
komutu ile Mobile Audit uygulamasını indirelim.
Konteyneri çalıştırmak için
docker-compose up
komutunu kullanın.
Uygulama başlatıldıktan sonra kontrol paneline erişmek için http://localhost:8888/ adresine giderek uygulama üzerinde inceleme yapmaya başlayabilirsiniz.
GİRİŞ SAYFASI
Sistemimizi kurduktan sonra inceleme yapabilmemiz için üye girişi yapmamız gerekmektedir. Eğer üye değilseniz yeni bir kullanıcı oluşturmanız gerekir. Üye girişini tamamladıktan sonra karşınıza fotoğraftaki sayfa çıkacaktır. Oluşturduğunuz kullanıcı sayesinde incelemek istediğiniz dosyaların taramasını yapabilirsiniz. “New app” butonuna tıklayıp yeni bir uygulama ekleyebilirsiniz.
Mobile Audit’e ekleyeceğimiz uygulama için başlangıç olarak bir isim belirlemek ve açıklama yapmak gerekir. Bu isim ve açıklamayı istediğiniz şekilde düzenleyebilirsiniz. Daha sonra uygulamaya girdiğinizde bu koyduğunuz isim ve açıklama sayesinde hangi uygulamayı incelediğinizi daha kolay anlayabilirsiniz.
İsim ve açıklama kısmını oluşturduktan sonra sıra inceleyeceğimiz APK dosyasını Mobile Audit uygulamasına yüklemeye gelmektedir. APK kısmından “browse” diyerek incelemek istediğimiz apk dosyasını seçebiliriz. Upload diyerek incelemek istediğimiz APK dosyasını sisteme yüklemesini bekliyoruz.
İnceleyeceğimiz APK dosyası sisteme başarıyla yüklenmiş olduğunu gözlemleyebiliriz. Artık dosya üzerinde incelemelere başlayabiliriz.
MOBİLE AUDİT MENÜ
Tarama sonucunda dosyamız üzerinde inceleme yapabileceğimiz başlıklar; Uygulama bilgileri, Güvenlik bilgileri, İzinler, Aktiviteler, Bileşenler, Bulunan bulgular, Güvenilen uygulamalar, Sertifikalar, Stringler, Dosyalar ve veri tabanlarını inceleyebiliriz. Tarama sonucundan bulunan verileri export ederek PDF halinde incelemesini de yapabilmekteyiz.
APPLİCATİON INFO
Application Info, taramak istediğimiz uygulama hakkında genel bilgiler vermektedir. Bu genel bilgilerin içerisinde ikon, app name, package, version name, version code, min-max verison, target-effective version, dosya boyutu, md5 ve sha256 değerlerini görebilmekteyiz.
SECURİTY INFO
Security Info, uygulamada bulunan güvenlik bilgilerini önem derecesine göre sıralamaktadır. Kritik olarak 1, yüksek seviye de 432, orta seviye de 905,düşük seviye de 299, güvenlik sorunu olmayan 248 dosya olduğunu ve toplamda 1885 adet dosya bulduğunu göstermektedir. Güvensiz dosyalar uygulama ve cihazlar için büyük sorunlar teşkil etmektedir. Raporlanarak düzeltilmesi uygulama geliştiricileri tarafından önemlidir.
PERMİSSİONS
Permissions ile uygulamanın bizden istediği izinlerin isimlerini, türünü, önem derecesini kontrol edebiliriz. Tarama yaptığımız uygulamada görüldüğü gibi tehlikeli ve normal sayılan izinler mevcuttur. Bu izinlerden high seviyede olanları birlikte inceleyelim.
- READ_EXTERNAL_STORAGE
Uygulama harici depolama kısmından okumasına izin vermektedir. - READ_CONTACTS
Uygulamaya, kullanıcının kişi verilerini okuma izni vermektedir. - RECEIVE_SMS
Uygulamaya, SMS mesajlarını alma izni vermektedir. - READ_PHONE_STATE
Mevcut durumda bulunan hücresel ağ bilgileri, PhoneAccountve yani devam etmekte olan aramaların durumu ve cihazda kayıtlı olan kişilerin listesi dâhil olmak üzere telefon durumuna salt okunur erişim sağlamaktadır. - WRITE_EXTERNAL_STORAGE
Bir uygulamanın başka bir harici depolama birimine yazmasına izin vermektedir. - RECORD_AUDIO
Uygulamanın ses kaydetmesine izin vermektedir. - CALL_PHONE
Uygulama, kullanıcı herhangi bir aramayı onaylamadan ve çevirici ara yüzüne giriş sağlamadan telefon görüşmesini başlatma izni vermektedir. - SYSTEM_ALERT_WINDOW
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY ile diğer tüm uygulamalar üzerinde pencere oluşturmasına izin verir. - ACCESS_FINE_LOCATION
Tam konuma erişmesine izin verilmektedir. - SEND_SMS
Uygulamaya, SMS mesajları gönderme izni vermektedir.
ACTİVİTİES
Activites kısmında uygulamanın yaptığı işlemler, sayfalar görünmektedir. Aktivitelerin ID numarası, ismi ve main bloğunu görebiliriz. Bu dosyaların yaptığı işlemler zafiyet barındırmaktadır. Components kısmında detaylı olarak inceleyeceğiz.
COMPONENTS
Components kısmında hizmet, etkinlik ve hizmet sağlayıcıların; ID numarası, türü, isimi ve intent bölümlerini inceleyebiliriz. İçe aktarılan kitaplıkların ve dosyaların listelenmiş halini görüntülememize olanak sağlar.
“zgndakurwcuekeqrfdnq.fpyiwfj.akuqrwinirnuwgewwwpft.opzsdswiddt” adlı dosyada ACTION_SEND kullanıldığından dolayı etkinliklere veri gönderme işlemi yapılabilir. Görüldüğü gibi SMS verilerine erişilerek işlem yapılabiliyor.
FİNDİNGS
Findings bölümünde java kodlarının statik bir analizi yapılmaktadır. Burada mevcut olan güvenlik zafiyetlerini gösterir ve bu güvenlik açıklıklarının önem derecesini bize vermektedir.
Fotoğrafta görüldüğü gibi “Insecure functions” kısmının detaylı incelemesini yapacağız. Bu güvenlik açığının “high” seviyede olduğunu görmekteyiz. “/sources/com/adobe/creativesdk/color/internal/controller/harmony/HarmonyTheme.java” java kodunda bulunduğunu ve 34. satırda “return this.m_rule.nativeVal();” kısmında CWE-95 açıklığının bulunduğunu görebiliriz.
CWE kısaca yazılım mimarisinde bulunan bir kod zayıflığı listesini belirtmektedir. CWE-95 ise bir saldırganın rastgele kod çalıştırmasına veya kodun değiştirilmesine izin verebilir.
SECURİTY BEST PRACTİCES
Security Best Precties, uygulamada bulunan xml dosyalarına ulaşmıştır. Xml dosyasında hangi satırda neye izin verildiğini görebilmekteyiz. Prevent exported components bölümünde verilen izinlerde başka bir uygulamaya veri gönderilebildiğini ve bu uygulamanın ContentProvider nesnelerine erişmesine izin verilmemesi gerektiği belirtilmiştir.
CERTİFİCATES
Certificates bölümünde uygulamanın kullandığı sertifikaları inceleyebiliriz. Sertifikanın ID numarası, version bilgileri, subject, issuer, hash-singature algoritmaları, seri numaraları ve SH1-SHA256 formatlarına erişebilmekteyiz.
FİLES
Files sekmesi ise dosyaların incelemesini ve türünü göstererek hangi dosyalara ulaştığını gösteriyor. Png, properties, html, xml dosyası ve diğer dosya türlerini inceleyebiliriz.
STRİNGS
String sekmesi res dizininde bulunan metin dosyalarını analiz etmektedir. Bu dosyalar hassas verileri ve hesapları içeriyor olabilir. Aşağıda bulunan fotoğrafta String bölümünde hex türünde bir şifreleme kullanılmıştır. Bunun incelmesini yaptığımızda hangi seviyede olduğunu görebiliyoruz. Hex verileri şifreleme yöntemi olarak kullanılmamalıdır.
DATABASES
EXPORT
Export bölümünü kullanarak tarama sonucunu PDF şeklinde indirebilir daha sonra tekrardan inceleyebilirsiniz.