Mobil Uygulama Güvenliği (Mobile Security)
www.cihanozhan.com
www.deeplab.co
Convert to study guideBETA
Transform any presentation into a summarized study guide, highlighting the most important points and key insights.
1 of 66
More Related Content
Mobil Uygulama Güvenliği (Mobile Security)
1. Mobile Security
Mobile Device and Application Security
Cihan Özhan | DeepLab.co | Developer/Hacker, AI Engineer, Data Master
3. 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/
5. 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/
6. 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.
7. Mobile App Security Testing
native / hybrid
programming lang.
Android / iOS / diğer
device
8. 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/
15. 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.
19. • 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.
20. 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.
21. 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.
22. 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…
24. Mobile App Security Testing
source code / binary
static / dynamic analysis
rooted / non-rooted
device != mobile app
25. 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…
26. 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.
30. 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!
31. Jailbroken/Rooted Device
• İşletim sistemine tam erişime sahip cihazlar!
• Cihaz UI’ını özelleştirmek!
• Malware
• Unlocking
• Korsanlık
• Güvenlik Araştırmaları…
32. 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!
34. 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.
41. Mobile Security Project
• Mobile AppSec güvenlik zaafiyetlerine odaklanan kaynak.
• MSTG – Mobile Security Testing Guide
• MASVS – Mobile App Security Verification Standard
42. 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.
43. 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.
44. 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)
45. 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
46. 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
58. 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
#12: 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
#19: - 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!
#38: - 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.
#43: 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/
…