Successfully reported this slideshow.
Your SlideShare is downloading. ×

Mobil Uygulama Güvenliği (Mobile Security)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 66 Ad

More Related Content

More from Cihan Özhan (20)

Recently uploaded (17)

Advertisement

Mobil Uygulama Güvenliği (Mobile Security)

  1. 1. Mobile Security Mobile Device and Application Security Cihan Özhan | DeepLab.co | Developer/Hacker, AI Engineer, Data Master
  2. 2. Mobile AppSec 101 İhtiyacı Mobil uygulamaların %85’inde güvenlik zaafiyetleri var. Mobil Uygulamaların %49'u Kişisel Verileri Sızdırarak GDPR'yi İhlal Ediyor General Data Protection Regulation (Genel Veri Güvenliği Yönetmeliği) - https://gdpr.eu/
  3. 3. App’in Güvenli mi? • Android uygulamalarının %73’ü hassas verileri sistem log’larına sızdırıyor. • iOS uygulamaların %18’i hassas verileri sistem log’larına sızdırıyor. • 7 iOS uygulamasından 1’i güvenli olmayan HTTP(insecure HTTP) kullanıyor. • 5 Android uygulamasından 1’i güvenli olmayan HTTP(insecure HTTP) kullanıyor.
  4. 4. Web Vs. Mobile Security OWASP Web Top-10 OWASP Mobile Top-10 Broken Authentication Improper Platform Usage Cryptographic Failures Insecure Data Storage Injection Insecure Communication Insecure Design Insecure Authentication Security Misconfiguration Insufficient Cryptography Vulnerable and Outdated Components Insecure Authorization Identification and Authentication Failures Client Code Quality Software and Data Integrity Failures Code Tampering Security Logging and Monitoring Failures Reverse Engineering Server-Side Request Forgery (SSRF) Extraneous Functionality OWASP Web Top-10 : https://owasp.org/Top10/ OWASP Mobile Top-10 : https://owasp.org/www-project-mobile-top-10/
  5. 5. Temel Farklılıklar (Web vs. Mobile) Web Mobile Kodun büyük çoğunluğu firewall ve diğer koruyucu altyapının arkasında… Kritik kod, IP, client cihazdaki veriler… Browser SSL/HTTPS'yi yönetir. Mobile app, local dosya/hafıza işlemlerini uygun şekilde yapmalıdır. Browser, verileri lokal makine hafızasından ve dosyalardan yalıtır. Mobile app, network işlemlerini uygun şekilde yapmalıdır. Web uygulamalar diğer web app’lerden izoledir. Mobil, uygulamalar arası veri paylaşım kapasitesine sahiptir.
  6. 6. Mobile App Security Testing native / hybrid programming lang. Android / iOS / diğer device
  7. 7. Mobile Infrastructures Native Hybrid Java Xamarin Kotlin Flutter NDK (C/C++) React Native Objective C Ionic Swift jQuery Mobile Apache Cordova (PhoneGap) Corona SDK Monaca Mobile Angular UI NativeScript OWASP Web Top-10 : https://owasp.org/Top10/ OWASP Mobile Top-10 : https://owasp.org/www-project-mobile-top-10/
  8. 8. Android Ecosystem
  9. 9. Android Ecosystem
  10. 10. Android Ecosystem
  11. 11. Android Architecture
  12. 12. Android, Linux çekirdeğinin değiştirilmiş bir sürümüne ve diğer açık kaynaklı yazılımlara dayalı, öncelikle akıllı telefonlar ve tablet gibi dokunmatik ekranlı mobil cihazlar için tasarlanmış bir mobil işletim sistemidir.
  13. 13. AndroidManifest.xml
  14. 14. • Linux Kernel – Android mimarisinin kalbidir. Runtime(çalışma zamanı) sırasında gerekli olan ekran sürücüleri, kamera sürücüleri, Bluetooth sürücüleri, ses sürücüleri, bellek sürücüleri vb. gibi mevcut tüm sürücüleri yönetir. • Platform Libraries – Platform library’leri, Android geliştirme desteği sağlamak için çeşitli C/C++ çekirdek library’leri ve Media, Graphics, Surface Manager, OpenGL vb. Java tabanlı kitaplıkları içerir. • Application Runtime – Android Runtime ortamı, Android'in en önemli parçalarından biridir. Çekirdek library’ler ve Dalvik Virtual Machine (DVM) gibi bileşenleri içerir. Esas olarak, application framework için temel sağlar ve uygulamamızı core library’ler yardımıyla güçlendirir. • Application Framework – Application Framework, bir aygulama oluşturmak için kullanılan birkaç önemli class sağlar. Donanım erişimi için genel bir soyutlama(abstraction) sağlar ve ayrıca uygulama kaynaklarıyla(application resources) kullanıcı arabiriminin yönetilmesine yardımcı olur. Genel olarak, belirli bir class oluşturabileceğimiz ve bu class’ı Uygulamalar oluşturma için yararlı hale getirebileceğimiz hizmetleri sağlar. • Applications – Uygulamalar Android mimarisinin en üst katmanıdır. home, contacts, camera, gallery vb. gibi pre-installed uygulamalar ve Play Store’dan indirilen chat uygulamaları, oyunlar vb. gibi third-party uygulamalar sadece bu katmana yüklenir.
  15. 15. APK ve APK Yapısı! • APK, Android Package(bazen Android Package Kit veya Android Application Package) anlamına gelir. APK bir arşiv dosyasıdır, yani birden fazla dosya ve bunlarla ilgili bazı meta veriler içerir. • Bir APK dosyası, Apktool, WinRAR, 7-Zip ve diğer sıkıştırma uygulamaları tarafından açılabilir.
  16. 16. Android Components & Lifecycle • Activity – Activity’ler uygulamaların sunum katmanıdır. Uygulamamızın kullanıcı arayüzü, Activity sınıfının bir veya daha fazla uzantısı(extensions) etrafında oluşturulmuştur. Activity’ler, Fragment ve View’leri kullanarak layout’u ayarlar ve çıktıyı görüntüler ve ayrıca kullanıcının eylemlerine(user actions) yanıt verir. • Services – Servisler, uygulamamızın arkaplandaki görünmez çalışanları gibidir. Bu bileşenler backend’de çalışır, veri kaynaklarınızı(data sources) ve activity’lerinizi günceller, notification’ları ve broadcast intent’leri tetikler. Uygulamalar aktif olmadığında da bazı görevleri yerine getirirler. • Content Provider – Uygulama verilerini yönetmek ve kalıcı kılmak için kullanılır, ayrıca SQL veritabanı ile etkileşime girer. Ayrıca, application boundary’nin ötesindeki verileri paylaşmaktan da sorumludurlar. Belirli bir uygulamanın Content Provider’ları, diğer uygulamalardan erişime izin verecek şekilde yapılandırılabilir ve diğer uygulamalar tarafından sunulan Content Provider’lar da yapılandırılabilir.
  17. 17. 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…
  18. 18. Android Lifecycle Methods
  19. 19. Mobile App Security Testing source code / binary static / dynamic analysis rooted / non-rooted device != mobile app
  20. 20. Testing (Static Vs. Dynamic) • Static Analysis (aka. Static Testing) – Binary testi. – Tüm kaynak kodlara sahip olmalı (ya da decompile etmeli). – Kötü “bad practice” belirtileri aramak! • Dynamic Analysis (aka. Dynamic Testing) – App’i cihaz ya da emulator’e kur. – App iş akışlarını(workflow) çalıştır, test et, izle… – Exploit etmeye(sömürmeye) çalış! – Ne kadar az pratik/uğraş o kadar az veri…
  21. 21. Testing (Static Vs. Dynamic) • Static Analysis – Statik kod analizi, bir program çalıştırılmadan önce kaynak kodu inceleyerek hata ayıklama yöntemidir. Bir kodu belirli kodlama kurallarına karşı analiz ederek yapılır. Bu tür bir analiz, kaynak kodunda güvenlik açıklarına yol açabilecek zayıflıkları giderir. – Statik kod analizi, iş mantığının anlaşılmasını sağlar, hardcoded secret’ları veya IP ve kimlik bilgilerini(erişim vb.) bulmaya yardımcı olur. • Dynamic Analysis – Dinamik program analizi olarak da bilinen dinamik analiz, bir programın veya teknolojinin gerçek zamanlı(realtime) verileri kullanarak değerlendirilmesidir. Kodu offline’a çekmek yerine, güvenlik açıkları ve program davranışı, program halihazırda çalışıyorken izlenebilir ve gerçek dünyadaki davranışı sağlanıp/simüle edilerek güvenlik analizi yapılabilir. – İstemci ve sunucu arasındaki gerçek zamanlı(realtime) veri alışverişini izlemek, hassas verilerin akış halinde olup olmadığını belirlemek, zayıf endpoint’leri belirlemek gibi bir çok sebeple kullanılabilir.
  22. 22. Device Testing != App Testing
  23. 23. Device Testing != App Testing • Uygulamanın hangi cihaz üzerine kurulduğu… • Cihaz üzerindeki diğer uygulamalar… • Cihazı kimin kullandığı… • Cihazın bağlantı kurduğu yer… • … gibi alanlarda hiç bir müdahalemiz/kontrolümüz yok!
  24. 24. Jailbroken/Rooted Device • İşletim sistemine tam erişime sahip cihazlar! • Cihaz UI’ını özelleştirmek! • Malware • Unlocking • Korsanlık • Güvenlik Araştırmaları…
  25. 25. Privileged Access • Uygulamanın hangi cihaz üzerine kurulduğu… • Cihaz üzerindeki diğer uygulamalar… • Cihazı kimin kullandığı… • Cihazın bağlantı kurduğu yer… • … gibi alanlarda hiç bir müdahalemiz/kontrolümüz yok!
  26. 26. Decompilation & Decompiler
  27. 27. Decompiler, makine seviyesinde/bilgisayar tarafından okunabilir kodu Pseudo kaynak koduna/insan tarafından okunabilir biçime dönüştürmeye yardımcı olan bir bilgisayar programıdır. *Compiler’ın tam tersi.
  28. 28. Decompilation
  29. 29. Decompilation
  30. 30. Android Decompilers (Jadx-GUI) Jadx-GUI Dex to Java Decompiler | https://github.com/skylot/jadx
  31. 31. Android Decompilers (GDA) GDA GJoy Dex Analyzer | https://github.com/charles2gan/GDA-android-reversing-Tool
  32. 32. Android Decompilers (JEB CE) JEB CE JEB CE | https://www.pnfsoftware.com/jeb/community-edition
  33. 33. Mobile App Security Testing OWASP MASVS Checklist MSTG
  34. 34. Mobile Security Project • Mobile AppSec güvenlik zaafiyetlerine odaklanan kaynak. • MSTG – Mobile Security Testing Guide • MASVS – Mobile App Security Verification Standard
  35. 35. OWASP Mobile Top 10 Mobil uygulamalarda karşılaşılan büyük problemler. Mobile App Security Verification Standards - MASVS Mobil Uygulamalar için temel bir güvenlik oluşturun. Mobile Security Testing Guide - MSTG Mobil uygulama güvenlik testi için rehber. Mobile Security Testing Checklist Güvenlik testi için gereksinimler.
  36. 36. Penetration Testing Bilgisayar sistemlerinde, ağlarda, web sitelerinde ve uygulamalarda istismar edilebilir güvenlik açıklarını arayan simüle edilmiş siber saldırıların kasıtlı olarak araştırılması/tetiklenmesi/manipüle edilmesini kapsar.
  37. 37. 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)
  38. 38. Android Penetration Testing • Android sızma testi, bir Android uygulamasındaki güvenlik açıklarını bulma sürecidir. Zayıflıkları aramak, uygulamanın güvenliğini doğrulamak ve güvenlik politikalarına uyduğundan emin olmak için sistematik bir yaklaşımdır. • En temel penetration aşamaları – Recon/Info Gathering – Static Analysis – Dynamic Analysis – Reporting
  39. 39. 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 fiziksel bir Android cihaz
  40. 40. Android Static Security Analysis
  41. 41. Android Static Security Analysis • Reverse Engineering • Information Gathering • Repackaging • Resigning an APK • Static Analysis with MobSF • Root Detection and Obfuscation Techniques
  42. 42. OWASP Mobile Top 10 • M1 : Improper Platform Usage • M2 : Insecure Data Storage • M3 : Insecure Communication • M4 : Insecure Authentication • M5 : Insufficient Cryptography • M6 : Insecure Authorization • M7 : Client Code Quality • M8 : Code Tampering • M9 : Reverse Engineering • M10 : Extraneous Functionality https://owasp.org/www-project-mobile-top-10/
  43. 43. Vulnerable Mobile Apps • InsecureBankv2 – https://github.com/dineshshetty/Android-InsecureBankv2 • DIVA – https://github.com/payatu/diva-android • ya da… – apkmirror.com – apkmonk.com • ya da… Cihazdan Kopyala… – adb shell ‘pm list packages -f’ – adb shell pm path com.example.someapp – adb pull /data/app/com.example.someapp-2.apk – path/to/desired/destination
  44. 44. InsecureBankv2 • Insecure Login Mechanism • Hidden Button in the Login Mechanism • Developer Login • Insecure Data Storage • Debug Mode Enabled • Back Up Mode Enabled • Insecure Logging • Root Detection Bypass • Insecure Webview Implementation • Android Pasteboard Vulnerability • Android Keyboard Vulnerability • Insecure HTTP Connections • Parameter Manipulation • User Enumeration
  45. 45. DIVA (Damn Insecure and Vulnerable App) • Insecure Login Mechanism • Hardcoding Issues • Insecure Data Storage • Input Validation Issues • Access Control Issues https://github.com/payatu/diva-android https://github.com/tjunxiang92/Android-Vulnerabilities/blob/master/diva-beta.apk
  46. 46. tools • adb https://developer.android.com/studio/command-line/adb (Android Debug Bridge) • Burp Suite https://portswigger.net/burp/communitydownload • Genymotion https://www.genymotion.com/ • mLogcat • Frida https://frida.re/ • Jadx github.com/skylot/jadx - https://github.com/skylot/jadx/releases/tag/v1.3.1 • GDA github.com/charles2gan/GDA-android-reversing-tool/releases • JNB https://www.pnfsoftware.com/jeb/communityedition • MobSF https://mobsf.github.io/docs - https://github.com/MobSF/Mobile-Security-Framework-MobSF – Automated Mobile App Assessment Framework (Android/iOS/Windows) – Dynamic, Static, and Malware Analysis • Drozer https://labs.f-secure.com/tools/drozer • QARK github.com/linkedin/qark • JD-GUI http://java-decompiler.github.io/ • Dex2Jar https://github.com/pxb1988/dex2jar • HoneyNet Project redmine.honeynet.org/projects/are/wiki • JEB CE https://www.pnfsoftware.com/jeb/community-edition • Apktool https://ibotpeaches.github.io/Apktool/ • AXMLPrinter2.jar https://github.com/digitalsleuth/AXMLPrinter2 (extract XML manifest)
  47. 47. adb • adb devices • adb root • adb shell • adb push • adb pull • adb install
  48. 48. Drozer • Android güvenlik değerlendirmeleri için framework. • Android'de çalışan “agent"dan oluşur. • *NIX'te çalışan konsol (Windows'ta çalışabilir, ancak büyük olasılıkla "kötü amaçlı yazılım" olabilir). • TCP üzerinden localhost iletilerek iletişim kurar (port 31415). • Uygulamayı incelemek için çeşitli modüllere sahiptir... • Gerektiğinde uygulamaya çeşitli uyaranlar(situmuli) gönderebilir. • Start Drozer session: – adb forward tcp:31415 tcp:31415 – drozer console connect
  49. 49. Android App Penetration Testing Checklist
  50. 50. Android Pentesting 201
  51. 51. Cihan Özhan Bağlantılar • cihanozhan.com • linkedin.com/in/cihanozhan • medium.com/@cihanozhan • youtube.com/user/OracleAdam • twitter.com/UnmannedCode • github.com/cihanozhan E-Mail • cihan@deeplab.co

Editor's Notes

  • https://technostacks.com/blog/mobile-app-development-frameworks
    https://mindster.com/mobile-app-development-frameworks/
  • Andorid 1.0/1.1
    Nov. 2007
    Android T-Mobile G1
    Sep. 2008
    Android 1.5 : Cupcake
    Ryan Gibson, Project Manager at Google
    April 2009
    Android : Donut
    September 2009
    Support for carriers using CDMA-based networks
    Android : Eclair
    2.0/2.1
    October 2009
    Text-to-speech
    Live wallpapers
    Multiple account
    Google Maps navigation
    ...
    Android : Froyo
    2.2/2.2.3
    May 2010
    Features
    Dalvik Just in Time (JIT) compiler
    Wi-Fi mobile hotspot
    Push Notifications via the Android Cloud to Device Messaging (C2DM)
    Flash Support
    Android : Gingerbread
    2.3/2.3.7
    Sep. 2010
    Features
    Near Field Communication (NFC)
    ...
    Android : Honeycomob
    3.0/3.2
    February 2011
    Features
    For tablets and other mobile devices with larger displays.
    Android : Ice Cream Sandwich
    4.0
    October 2011
    Features
    "Favorites" on the home screen
    Unblocking a phone with owner's face
    Android : Jelly Bean
    4.1
    June 2012
    Features
    Notification Features
    Google Chrome
    Android : Kitkat
    4.4
    Sep. 2013
    Features
    512 MB of RAM
    Android : Lollipop
    5.0.1
    Fall of 2014
    Features
    Android runtime (ART)
    Google's new Material Design language
    Android : Marsmallow
    6.0
    Fall of 2015
    Features
    Fingerprint Biometric Unlocking
    USB Type-C Support
    Google Pay
    Android : Nougat
    7.0
    Fall of 2016
    Features
    Vulkan API for faster 3D rendering
    Android : Oreo
    8.0
    March 2017
    Features
    Visual changes to the Settings Menu
    Picture-in-picture mode
    Notification Channels
    Autofil APIs
    Android : Pie
    9.0
    August 2018
    Features
    Machine Learning to extend battery life
    Android : android10
    10
    August 2019
    Features
    New logo and no triditional desserts
    Android Q
    New API's
    Android : android11
    11
    Sep. 2020
    Features
    Conversations Notification
    Recording Screen
    Controlling Smart Home Devices
  • - The "AndroidManifest.xml" file is in ALL apps.
    - It is required to:
    Declare the app name.
    Declare all components of the app.
    Includes declaration of all "activities", "broadcast receivers", and "services"
    Declare permissions the app needs.
    Declare hardware/software features needed.
    We always SHOULD look at the MANIFEST!
  • - Decompiles/deconstructs DEX files into Java source
    - Can then search through all files with TEXT or Class search.
    - Search through for things like:
    - Intent communications method calls.
    - Dangerous network class use.
    - SMS Manager use.
    - Contacts/address book access.
  • Mobile Security Testing Guide (MSTG)
    https://owasp.org/www-project-mobile-security-testing-guide/
    https://github.com/OWASP/owasp-mstg
    https://mobile-security.gitbook.io/mobile-security-testing-guide/ (eBook)
    Mobile AppSec Verification (MASVS)
    https://mobile-security.gitbook.io/masvs/


  • https://owasp.org/www-project-mobile-top-10/
  • https://owasp.org/www-project-mobile-top-10
  • - https://appdevelopermagazine.com/security-brief--protecting-against-the-owasp-mobile-top-10/
  • github.com/payatu/diva-android
    https://github.com/tjunxiang92/Android-Vulnerabilities/blob/master/diva-beta.apk

×