Bengisu Gün
6 min readMar 30, 2021

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.

No responses yet