660 likes | 707 Views
Mobil Uygulama Gu00fcvenliu011fi (Mobile Security)<br><br>www.cihanozhan.com
E N D
Mobile SecurityMobile Device and Application SecurityCihan Özhan | DeepLab.co | Developer/Hacker, AI Engineer, Data Master
Mobile AppSec 101 İhtiyacı Mobil uygulamaların %85’inde güvenlikzaafiyetleri var. Mobil Uygulamaların %49'u KişiselVerileriSızdırarakGDPR'yiİhlalEdiyor General Data Protection Regulation (Genel Veri GüvenliğiYönetmeliği) - https://gdpr.eu/
App’inGüvenli mi? • Android uygulamalarının %73’ü hassasverilerisistemlog’larınasızdırıyor. • iOS uygulamaların %18’i hassasverilerisistemlog’larınasızdırıyor. • 7 iOS uygulamasından 1’i güvenliolmayan HTTP(insecure HTTP) kullanıyor. • 5 Android uygulamasından 1’i güvenliolmayan HTTP(insecure HTTP) kullanıyor.
WebVs.MobileSecurity OWASP Web Top-10 : https://owasp.org/Top10/ OWASP Mobile Top-10 : https://owasp.org/www-project-mobile-top-10/
Mobile App Security Testing device native / hybrid programming lang. Android / iOS / diğer
MobileInfrastructures OWASP Web Top-10 : https://owasp.org/Top10/ OWASP Mobile Top-10 : https://owasp.org/www-project-mobile-top-10/
Android, Linux çekirdeğinindeğiştirilmişbirsürümünevediğeraçıkkaynaklıyazılımlaradayalı, öncelikleakıllıtelefonlarve tablet gibidokunmatikekranlımobilcihazlariçintasarlanmışbirmobilişletimsistemidir.
Linux Kernel • Android mimarisininkalbidir. Runtime(çalışmazamanı) sırasındagerekliolanekransürücüleri, kamerasürücüleri, Bluetooth sürücüleri, sessürücüleri, belleksürücüleri vb. gibimevcuttümsürücüleriyönetir. • Platform Libraries • Platform library’leri, Android geliştirmedesteğisağlamakiçinçeşitli C/C++ çekirdeklibrary’lerive Media, Graphics, Surface Manager, OpenGL vb. Java tabanlıkitaplıklarıiçerir. • Application Runtime • Android Runtime ortamı, Android'inenönemliparçalarındanbiridir. Çekirdeklibrary’lerve Dalvik Virtual Machine (DVM) gibibileşenleriiçerir. Esasolarak, application framework içintemelsağlarveuygulamamızı core library’leryardımıylagüçlendirir. • Application Framework • Application Framework, biraygulamaoluşturmakiçinkullanılanbirkaçönemli class sağlar. Donanımerişimiiçingenelbirsoyutlama(abstraction) sağlarveayrıcauygulamakaynaklarıyla(application resources) kullanıcıarabirimininyönetilmesineyardımcıolur. Genelolarak, belirlibir class oluşturabileceğimizvebuclass’ıUygulamalaroluşturmaiçinyararlı hale getirebileceğimizhizmetlerisağlar. • Applications • Uygulamalar Android mimarisininenüstkatmanıdır. home, contacts, camera, gallery vb. gibi pre-installed uygulamalarve Play Store’danindirilen chat uygulamaları, oyunlar vb. gibi third-party uygulamalarsadecebukatmanayüklenir.
APKveAPK Yapısı! • APK, Android Package(bazenAndroid Package Kit veyaAndroid Application Package) anlamınagelir. APK birarşivdosyasıdır, yanibirdenfazladosyavebunlarlailgilibazı meta verileriçerir. • Bir APKdosyası, Apktool, WinRAR, 7-Zipvediğersıkıştırmauygulamalarıtarafındanaçılabilir.
Android Components & Lifecycle • Activity • Activity’leruygulamalarınsunumkatmanıdır. Uygulamamızınkullanıcıarayüzü, Activity sınıfınınbirveyadahafazlauzantısı(extensions) etrafındaoluşturulmuştur. Activity’ler, Fragment veView’lerikullanaraklayout’uayarlarveçıktıyıgörüntülerveayrıcakullanıcınıneylemlerine(user actions) yanıtverir. • Services • Servisler, uygulamamızınarkaplandakigörünmezçalışanlarıgibidir. Bu bileşenlerbackend’deçalışır, verikaynaklarınızı(data sources) veactivity’lerinizigünceller, notification’larıve broadcast intent’leritetikler. Uygulamalaraktifolmadığında da bazıgörevleriyerinegetirirler. • Content Provider • Uygulamaverileriniyönetmekvekalıcıkılmakiçinkullanılır, ayrıca SQL veritabanıileetkileşimegirer. Ayrıca, application boundary’ninötesindekiverileripaylaşmaktan da sorumludurlar. Belirlibiruygulamanın Content Provider’ları, diğeruygulamalardanerişimeizinverecekşekildeyapılandırılabilirvediğeruygulamalartarafındansunulan Content Provider’lar da yapılandırılabilir.
Android Components & Lifecycle • Broadcast Receivers • They are known to be intent listeners as they enable your application to listen to the Intents that satisfy the matching criteria specified by us. Broadcast Receivers make our application react to any received Intent thereby making them perfect for creating event-driven applications. • Android Lifecycle Methods • Sonraki slide…
Mobile App Security Testing source code / binary device != mobile app rooted / non-rooted static / dynamic analysis
Testing(Static Vs. Dynamic) • Static Analysis (aka. Static Testing) • Binary testi. • Tümkaynakkodlarasahipolmalı (ya da decompile etmeli). • Kötü “bad practice” belirtileriaramak! • Dynamic Analysis (aka. Dynamic Testing) • App’icihazya da emulator’ekur. • App işakışlarını(workflow) çalıştır, test et, izle… • Exploit etmeye(sömürmeye) çalış! • Ne kadarazpratik/uğraş o kadarazveri…
Testing(Static Vs. Dynamic) • Static Analysis • Statikkodanalizi, bir program çalıştırılmadanöncekaynakkoduinceleyerekhataayıklamayöntemidir. Bir kodubelirlikodlamakurallarınakarşıanalizederekyapılır. Bu türbiranaliz, kaynakkodundagüvenlikaçıklarınayolaçabilecekzayıflıklarıgiderir. • Statikkodanalizi, işmantığınınanlaşılmasınısağlar, hardcoded secret’larıveya IP vekimlikbilgilerini(erişim vb.) bulmayayardımcıolur. • Dynamic Analysis • Dinamik program analiziolarak da bilinendinamikanaliz, birprogramınveyateknolojiningerçekzamanlı(realtime) verilerikullanarakdeğerlendirilmesidir. Kodu offline’açekmekyerine, güvenlikaçıklarıve program davranışı, program halihazırdaçalışıyorkenizlenebilirvegerçekdünyadakidavranışısağlanıp/simüleedilerekgüvenlikanaliziyapılabilir. • İstemcivesunucuarasındakigerçekzamanlı(realtime) verialışverişiniizlemek, hassasverilerinakışhalindeolupolmadığınıbelirlemek, zayıfendpoint’leribelirlemekgibibirçoksebeplekullanılabilir.
Device Testing != App Testing • Uygulamanınhangicihazüzerinekurulduğu… • Cihazüzerindekidiğeruygulamalar… • Cihazıkiminkullandığı… • Cihazınbağlantıkurduğuyer… • … gibialanlardahiçbirmüdahalemiz/kontrolümüz yok!
Jailbroken/Rooted Device • İşletimsistemine tam erişimesahipcihazlar! • CihazUI’ınıözelleştirmek! • Malware • Unlocking • Korsanlık • GüvenlikAraştırmaları…
Privileged Access • Uygulamanınhangicihazüzerinekurulduğu… • Cihazüzerindekidiğeruygulamalar… • Cihazıkiminkullandığı… • Cihazınbağlantıkurduğuyer… • … gibialanlardahiçbirmüdahalemiz/kontrolümüz yok!
Decompiler, makineseviyesinde/bilgisayartarafındanokunabilirkodu Pseudo kaynakkoduna/insantarafındanokunabilirbiçimedönüştürmeyeyardımcıolanbirbilgisayarprogramıdır. *Compiler’ın tam tersi.
Android Decompilers(Jadx-GUI) Jadx-GUI Dex to Java Decompiler | https://github.com/skylot/jadx
Android Decompilers(GDA) GDA GJoyDex Analyzer | https://github.com/charles2gan/GDA-android-reversing-Tool
Android Decompilers(JEB CE) JEB CE JEB CE | https://www.pnfsoftware.com/jeb/community-edition
Mobile App Security Testing Checklist OWASP MASVS MSTG
Mobile Security Project • Mobile AppSec güvenlikzaafiyetlerineodaklanankaynak. • MSTG – Mobile Security Testing Guide • MASVS – Mobile App Security Verification Standard
Mobile App Security Verification Standards - MASVS Mobil Uygulamalariçintemelbirgüvenlikoluşturun. Mobile Security Testing Guide - MSTG Mobil uygulamagüvenliktestiiçinrehber. OWASP Mobile Top 10 Mobil uygulamalardakarşılaşılanbüyükproblemler. Mobile Security Testing Checklist Güvenliktestiiçingereksinimler.
Penetration Testing Bilgisayarsistemlerinde, ağlarda, web sitelerindeveuygulamalardaistismaredilebilirgüvenlikaçıklarınıarayansimüleedilmişsibersaldırılarınkasıtlıolarakaraştırılması/tetiklenmesi/manipüleedilmesinikapsar.
Penetration Testing : Fazlar • Adım 1 : Reconnaissance (Keşif) • Adım 2 : Scanning (Tarama) • Adım 3 : Exploitation (Sömürü) • Adım 4 : Escalation • Adım 5 : Covering Tracks • Adım 6 : Reporting (Raporlama)
Android Penetration Testing • Android sızmatesti, bir Android uygulamasındakigüvenlikaçıklarınıbulmasürecidir. Zayıflıklarıaramak, uygulamanıngüvenliğinidoğrulamakvegüvenlikpolitikalarınauyduğundaneminolmakiçinsistematikbiryaklaşımdır. • Entemel penetration aşamaları • Recon/Info Gathering • Static Analysis • Dynamic Analysis • Reporting
Mobile Hacking Lab • Kali/Windows • VirtualBox • Android Studio • GenyMotion • MobSF • Visual Studio Code • APK Studio • Apktool • Android Debug Bridge (ADB) • Bytecode Viewer • Emulator ya da fizikselbir Android cihaz
Android Static Security Analysis • Reverse Engineering • Information Gathering • Repackaging • Resigning an APK • Static Analysis with MobSF • Root Detection and Obfuscation Techniques