Mobile Application Pentest Eğitimi



Benzer belgeler

Zararlı Yazılımla Mücadele Eği7mi

Mobil Güvenlik Eğitimi Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

Android Uygulamalarında Güvenlik Testi

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Güvenli Uygulama Geliştirme Android. Bedirhan Urgun

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Muhar a r r e r m e T a T ç J PT Gel e e l c e e c k e o k nli l n i e And n r d oi o d i Nedi d r

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Android ile Mobil Programlama

Web Uygulama Güvenliği Kontrol Listesi 2010

Android Platformunda Uygulama Geliştirme.

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

MOBIL UYGULAMA GELIŞTIRME

Model-Tabanlı ve Rastgele Karma Yöntem

Kurumsal Mobil Uygulamalar IBM Mobile Foundation

MOBİL UYGULAMA GELİŞTİRME

1 LK ANDROID YAZILIMIMIZ VE ÖN HAZIRLIKLAR

ANDROID AÇIK AKSESUAR API & AKSESUAR GELİŞTİRME. Dr. Fatma Cemile Serçe

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

MOBİL UYGULAMA GELİŞTİRME

Tanımı Problemi 46 Şüpheci Yaklaşım 47 Tamsayı Taşması (Integer Overflow) 47 Tamsayı Taşması Java Uygulaması 48

TODAİE edevlet MERKEZİ UYGULAMALI E-İMZA SEMİNERİ KASIM E-imza Teknolojisi. TODAİE Sunumu

MOBİL UYGULAMA GELİŞTİRME

Sertan Kolat

Gu venli Android Uygulama Geliştirme İ puçları

Öğr. Gör. Serkan AKSU 1

Android Uygulamalarında Güvenlik Testi

Cyberoam Single Sing On İle

NextGeneration USG Series

FINDIK Herkese Açık Filtre

Web Application Penetration Test Report

IIS Kurulu Uygulama Sunumcu ile Veritabanı Arasındaki Bağlantının Güvenlik Esasları

Coslat Monitor (Raporcu)

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi YAYIN ALICILARI. BLM401 Dr.Refik SAMET

5651 ve 5070 Sayılı Kanun Tanımlar Yükümlülükler ve Sorumluluklar Logix v2.3 Firewall. Rekare Bilgi Teknolojileri

LOGO DESTEK DOKÜMANI

BEUN VPN Hizmeti. VPN Nedir?

Güvenlik Java ve Web Uygulama Güvenliği

Java Programlama Giriş

Bilgi güvenliği konusunda farkındalık yaratmak. Mobil cihazlardaki riskleri anlatmak. Mobil uygulamaların bilgi güvenliği açısından incelemek 2

Google Play Zararlısı İnceleme Raporu

Mobile Sistemler ve Uygulama Güvenliği

Özgür Uygulamalar ile Web Güvenliği. The OWASP

ÖRÜN (WEB) GÜVENLİĞİ. Hazırlayan: Arda Balkanay

CHECKPOINT VPN KULLANIM KILAVUZU

AHTAPOT Merkezi Güvenlik Duvarı Yönetim Sistemi Kontrol Paneli

Bilgi ve Olay Yönetim Sistemi

.com. Kurumsal Java. Özcan Acar com

Açık Kod VPN Çözümleri: OpenVPN. Huzeyfe ÖNAL

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

HP PROCURVE SWITCHLERDE 802.1X KİMLİK DOĞRULAMA KONFİGÜRASYONU. Levent Gönenç GÜLSOY

Yeni Nesil Ağ Güvenliği

KÜTÜPHANE YETKİLENDİRMELİ ÖNBELLEKLEME SERVİSİ

Swing ve JDBC ile Database Erişimi

TÜBİTAK UEKAE ULUSAL ELEKTRONİK ve KRİPTOLOJİ ARAŞTIRMA ENSTİTÜSÜ

Clonera Bütünleşik İş Sürekliliği Gereksinimler ve Kurulum Dökümanı

MOBİL UYGULAMA GELİŞTİRME

Statik Analiz Dinamik Analiz Açık Kutu Testleri

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

Bu makalede 2003 sunucu, Windows 2003 Server anlamına gelmektedir. Aşağıda yapılan işlemler 2003 R2 sunucu üzerinde denenmiş ve çalıştırılmıştır.

BİLGİSAYAR VE AĞ GÜVENLİĞİ ÖĞR. GÖR. MUSTAFA ÇETİNKAYA DERS 2 > AĞ VE UYGULAMA GÜVENLİĞİ

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi. Genel Bilgiler ve Uygulama. BLM401 Dr.Refik SAMET

Apache Tomcat Güvenliği

Windows Live ID ve parolanızı giriniz.

SANAL POSLAR VE GÜVENLİK POLİTİKALARI. Yunus Emre SEYHAN Web Yazılım Uzmanı

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

LDAP Administrator ile Active Directory Yonetimi

Web 2.0 Örnek Eğitim Notu

Basit bir web uygulaması

Bilgi ve Olay Yönetim Sistemi

Apache Tomcat Güvenliği

J-Guar Self Servis Kurulumu

Güvenli Doküman Senkronizasyonu

Proje 1. Arayüz Tasarımı

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

İNTERNET EXPLORER AYARLARI 1. Başlat-Ayarlar-Denetim Masası menüsünden "İnternet Özellikleri" (Seçenekleri)'ni seçiniz. Resim. 1

Data Structures Lab Güz

HUAWEI Cihazlara Erişim Yöntemleri

Hazırlayanlar Oben Işık( ), Gökhan Karaca( ) İTÜ Bilgisayar Mühendisliği Bitirme Projesi. Kuramsal Bilgiler

JAVA API v2.0 Belge sürümü: 2.0.2

Spring Security Framework Harezmi Bilişim Çözümleri

Üst Düzey Programlama

Yapılandırmadan önce, termostatın devreye alındığına ve alttakilerle çalıştırıldığına emin olun:

İÇİNDEKİLER VII İÇİNDEKİLER

ANDROİD. Melih Hilmi Uludağ. «Bir tutkunun sonucu»

KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER

Android Platformunda OpenCV İle Görüntü İşleme

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Android Programlama BAHAR

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

AKINSOFT WOLVOX e-defter. Yardım Dosyası

1 STUNNEL NEDİR? 2 STUNNEL KURULUMU

KANTAR UYGULAMASI Kurulum Kılavuzu

T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ

Transkript:

Mobile Application Pentest Eğitimi ANDROID @2013 http://www.bga.com.tr bilgi@bga.com.tr

Android 2003: Android Inc. in kuruluşu 2005: Google a geçişi 2008: İlk,cari mobil Android cihaz

Sayılarla Android 900 milyon cihazı ak,vasyonu 1.5 milyon günlük cihaz ak,vasyonu >50 milyar uygulama kurulumu Google Play

Java VM vs. Dalvik VM

Android SDK Android Yazılım Geliş,rme Ki, Android SDK Bileşenleri; SDK Manager: Farklı Android SDK larını yönetme aracı Android 2.3.3 (Gingerbread, 2010) API Level 9 Android 3.2 (Honeycomb, 2011) API Level 13 Android 4.0.3 (Ice Cream Sandwich, 2011) API Level 15 Android 4.1 (Jelly Bean, 2013) API Level 18 Emulator: Test Android simulatorü AVD Manager: Android Emulator yapılandırma aracı

Android Emulator Sanal Android mobil cihazlardır. Geliş,rme ve test amaçları için kullanılır. Cihaz,pleri ve içinde çalışacak Android versiyonları emulatorü oluşturur.

AVD Manager Android versiyonu ve cihaz,pi, bir sanal cihazı oluşturur.

Yeni Android Device Defini,on Çözünürlük Keyboard yok Direc,onal Pad Emulator RAM büyüklüğü

Yeni Android Virtual Device Device Seçimi Hardware Keyboard SD Card Büyüklüğü

Emulator w/ Snapshot Eski kaydedilmiş snapshot kullanılmaz Sanal cihazın boyutunun belli bir oranda küçültülmesi Eski kaydedilmiş snapshot kullanılır Değişiklikler snapshot a kaydedilir

Android Debug Bridge - adb Android cihazlar veya emulatorler ile ile,şimi sağlayan zengin komut safrı aracıdır. <SDK>/plahorm- tools/adb adb install uygulama.apk adb push <yerel> <uzak> adb pull <uzak> <yerel> adb shell adb logcat

Android Sandbox Modeli - ps

Android Sandbox Modeli - ls

Kurulu Bir Android App İçinde cache/ : cache lenen nesneler databases/ : kullanılan veritabanı shared_prefs/ : basit veri saklama

databases/ Android SQLite veritabanı sistemi ile gelir. Hassas veriler açık saklanmamalıdır; kimlik bilgileri, şifreleme anahtarları, kredi kartları

shared_prefs/ Basit key:value çinlerini saklamak içindir. Hassas veriler açık saklanmamalıdır; kimlik bilgileri, v.b.

LogCat İşlemler için kullanılan kayıt mekanizması Hassas veriler açık bir şekilde kayıt alfna alınmamalıdır; kimlik bilgileri, şifreleme anahtarları, kredi kartları

SD Card lar Android dahili veya harici depolama ih,yacını SD Card lar ile sağlar Ancak SD Card üzerindeki kaynaklar geniş dosya hakları ile kullanılırlar

Proxy Emulator HTTP Proxy Cihaz

SSL/TLS SSL/TLS protokolü, HTTP trafiğinin gizliliğini sağlayan en temel unsurdur.

SSL Tokalaşması

Güvenilir Ser,fikalar - Browser

HTTPS Bağlanflar URL url = new URL("htps://www.guvenlikod.com/"); con = (HtpsURLConnec,on)url.openConnec,on();

Güvenilir Ser,fikalar - Android Android sisteminde güvenilir ser,fikalar /etc/security/cacerts.bks Burp SSL ser,fikasını yüklemek için; 1. Browser da htps://hedefsunucu:hedefport açılması 2. CA ser,fikasının der dosyası olarak export edilmesi 3. der dosyasının uzanfsının cer olarak değiş,rilmesi 4. adb push burp.cer /sdcard/burp.cer 5. Emulator/Cihaz da Sewngs- >Security- >Install from SDCARD

Yüklenen Ser,fika Sewngs- >Security- >Trusted creden,als

Android APN Proxy Ayarları Sewngs Wireless & Networks More Mobile Networks Access Point Names Telkila Dikkat adb bağlan/sı kopabilir! # adb kill- server # adb start- server

Android WIFI Proxy Ayarları Sewngs Wireless & Networks WIFI WiredSSID * Modify Network Show Advanced Opt. Manual * WiredSSID üzerine mouse ile basılı tutularak

Burp Proxy Ayarları Her Host için ayrı CA imzalı seryfika Bütün interfacelerden dinler

Emulatör Komut Safrı AVD manager arayüzünün yanısıra Android emulatör komut safsı aracılığı ile de çalışfrılabilir HTTP Proxy cihaz başlaflırken komut safrından da tanıflabilir emulator - avd MyEmulator - htp- proxy htp://127.0.0.1:8081

Android Proje Dizin Yapısı src/ Kaynak kodlar; java,aidl dosyaları gen/ Otoma,k üre,len java dosyaları bin/ APK yı oluşturan derlenmiş dosyalar; dex, xml libs/ Harici kütüphaneler res/ Kaynaklar; imajları, yapılandırma XML leri project.proper,es Hedef Android versiyonu AndroidManifest.xml Uygulama bileşenleri, kullanılacak izinler, v.b.

Java APK

Android Package - APK UI ile ilgili XML yapılandırma dosyaları, resimler Kriptografik imzalanmış seryfikalar Java class dosyalarının dex forma`na derlenmiş hali Binary forma`nda uygulama bileşenleri, kullanılacak izinler, v.b.

APK Dosyasının İmzalanması APK kurulum dosyası, release öncesinde kriptografik olarak imzalanmalıdır. dijital imza ser,fikası self- signed olabilir ser,fikanın geçerlilik süresi kurulum/yenileme zamanında kontrol edilir keytool/jarsigner araçları imzalama işlemi için kullanılırlar imzalar, cihaz üzerinde koşan uygulamalar arası güvenli ile,şimin en önemli kaynaklarındandır

İmzalama İşlemleri Yoksa self- signed ser,fikasının oluşturulması 1 keytool.exe - genkey - keystore mykstr - alias myalias - keyalg RSA - validity 10000 seryfikanın saklanacağı keystore dosya ismi keystore içindeki seryfikanın alias ı 10000 gün geçerlilik süresi

İmzalama İşlemleri 2 APK nın imzalanması jarsigner.exe - verbose - keystore mykstr HelloWorld.apk myalias - sigalg MD5withRSA - digestalg SHA1 imzalayacak seryfikayı barındıran keystore imzalanacak APK keystore içinde imza için kullanılacak seryfikanın alias ı

İmzalama İşlemleri 3 APK imzasının kontrolü jarsigner.exe - verbose - verify HelloWorld.apk imzası kontrol edilecek APK

Android Market Android uygulamaların indirildiği bazı popüler web portallar

Android Uygulama İzinleri Kullanıcı android.permission.write_external_storage android.permission.internet... OK Android APP İzin Kontrol İzin Kontrol Internet API Kurulma/Yenileme esnasında uygulamalar kaynaklara erişmek için kullanacakları izin listesini kullanıcının onayına sunarlar. SD CARD API Onay sonrası uygulama, kaynaklara erişim esnasında bir daha bu izinleri kullanıcıya sormaz.

AndroidManifest.xml ve İzin Tanımları # aapt.exe dump permissions HerdFinancial.apk package: org.owasp.goatdroid.herdfinancial uses- permission: android.permission.read_phone_state uses- permission: android.permission.internet uses- permission: android.permission.write_external_storage

Reversing APK Dalvik executable (classes.dex) - > Java kaynak kodlarına dönüşüm

Reversing APK - dex2jar # d2j- dex2jar.bat PlayWithSSL.apk 1 2

Reversing APK - apktool # apktool.bat PlayWithSSL.apk 1 2

smali? Dex için üre,len assembly/disassembly aracı Aynı zamanda assembly diline verilen isim 1 2 java - jar baksmali- 1.4.2.jar PlayWithSSL\classes.dex - o smali

java - HelloWorld import java.io.printstream; public class HelloWorld { public sta,c void main(string[] paramarrayofstring) { System.out.println("Hello World!"); } }

smali - HelloWorld.class public LHelloWorld;.super Ljava/lang/Object;.method public sta,c main([ljava/lang/string;)v.registers 2 sget- object v0, Ljava/lang/System;- >out:ljava/io/printstream; const- string v1, "Hello World!" invoke- virtual {v0, v1}, Ljava/io/PrintStream;- >println(ljava/lang/string;)v return- void.end method

apk - > smali - >apk Unzip Baksmali Zip Edit Smali Sign Smali

Enjeksiyon - İstemci SQL enjeksiyonu Android uygulamalarda da bulunabilecek bir zafiyet çeşididir.

Yetersiz Yetkilendirme - Sunucu Yetkilendirme kontrolleri sunucu tara nda eksiksiz gerçekleş,rilmelidir.

Yetersiz Yetkilendirme - Sunucu Yetkilendirme kontrolleri sunucu tara nda eksiksiz gerçekleş,rilmelidir.

LogCat Bilgi Sızdırma Yapılan işlemler sonucu hassas bilgiler LogCat mekanizmasında kayıt alfna alınmamalıdır.

Güvensiz Veri Saklama Kullanıcı şifreleri, kredi karf numaraları, kişisel bilgiler shared_prefs gibi yapılar açık saklanmamalıdır.

Güvensiz Veri Saklama SDCard Android sandbox ının uygulanmadığı güvensiz bir veri alanıdır.

Güvensiz Veri Transferi Hassas bilgiler HTTP üzerinden ile,lmemelidir. SSL bağlanf problemler nedeniyle özel sınıflar kullanılmamalıdır. 1 2

Android Bileşenler Android uygulamalarında dört temel bileşen Ac,vity kullanıcıların ile,şim kurduğu arayüz Service arkaplanda iş yapan bileşen Content Provider veri sunan servisler, veritabanı Broadcast Receiver iş için komut bekleyen bileşen

Intent Bileşenler arası ile,şim Intent ler ile sağlanır Ac,vity Intent Broadcast Receiver

Özel veya Açık Bileşenler Uygulamalar bileşenlerini sisteme AndroidManifest.xml dosyası ile tanıfrlar Bileşen tanımlarında export atribute unun değeri True ise veya extra Intent tanımları içeriyorsa, ilgili bileşeni diğer uygulamalar da çağırabilir Özel bir bileşen sadece aynı uygulamadan çağrılabilir

Örnek Bileşen Tanımı 1.mydb Content Provider bileşeni export atribute u True olduğundan diğer uygulamalar tara ndan çağrılabilir <manifest > <provider android:name=".mydb" android:exported="true"> <intent- filter> </intent- filter> </provider> </manifest>

Örnek Bileşen Tanımı 2.mysmssender Broadcast Receiver bileşeni export atribute u True olmasa da, bir Intent ile te,kleneceğini beyan ewği için açıkfr <manifest > <receiver android:name=.mysmssender > <intent- filter> <ac,on android:name= android.intent.sendsms /> </intent- filter> </receiver> </manifest>

Bileşenlerin Yetki Kontrolü Dolayısıyla hassas işlem yapan Açık (Export=True) bir bileşen, diğer uygulamalar tara ndan çağrıldığında yetki kontrolü yapmalıdır A yetkili midir? A B

Güvensiz IPC Componentlar arasındaki gerekli yetkilendirme kontrolleri gerçekleş,rilmelidir.

Güvensiz IPC Önlem 1 normal permission kontrolü 3 <uses- permission android:name="permission" A yetkili midir? A B 1 <permission android:name="permission" /> <receiver 2 android:permission="permission"

Güvensiz IPC Önlem 2 3 permission protecyonlevel ipucu <uses- permission android:name="permission" Sadece A mı yetkilidir? A B 1 <permission android:name="permission" android:protectionlevel="signature" /> <receiver 2 android:permission="permission"

Güvensiz IPC Önlem 3 hardcoded signature kontrolü A gerçek midir? A B packageinfo = pm.getpackageinfo(a_pkgname, PackageManager.GET_SIGNATURES); String A_SIGNATURE = "308202..."; for (Signature signature : packageinfo.signatures) if (signature.tocharsstring().equals(a_signature)) { }

Yetersiz An,- Otomasyon Özellikle login işlemleri, deneme- yanılma saldırılarına açık olmamalıdırlar.

Memory Analizi Eclipse MAT ile uygulamaların heap memory analizi gerçekleş,rilebilir.

DDMS Ekranı - Hprof Dump

MAT Ekranı - Dominator Tree

MAT Ekranı - DT - List Objects

MAT Ekranı - DT - List Objects

SMALI - Log Injec,on APKSmash iki amaç için kullanılabilir; Hedef APK içerisinde telefon numaraları, IP adresleri, URL leri ve kayıt işlemlerine ait incelenebilecek bazı bilgileri Hedef uygulamayı patchleyerek run,me da LogCat mekanizmasına bir çok kayıt aflmasını sağlar. Bu şekilde uygulama hakkında detaylı bir çok dinamik bilgi elde edilebilir

SMALI - Log Injec,on APKSmash için ilogger ve APKTool araçları gerekmektedir Hedef uygulamanın APK sı belirlendikten sonra; 1. apktool ile decode edilir 2. apksmash.py, decode edilen dizinde, kod içerisinde aşağıdaki değişiklik ile çalışfrılır JonestownThisAPK = FalseTrue

SMALI - Log Injec,on 3. Aynı dizinde oluşturulan apk- ig- info.txt dosyası ilginç bazı bulgular için analiz edilebilir 4. Kayıt enjeksiyonu için iglogger.smali dosyası smali dizinine kopyalanır 5. apktool kullanılarak dizin build edilir ve imzalanır 6. Elde edilen apk, emulator e kurulduktan sonra çalışfrmadan önce incelenmek için adb logcat açılır 7. adb logcat çıkfları, uygulama kullanıldıkça izlenir

SMALI - Log Injec,on apksmash ile enjekte edilen log metotları, logcat ile hassas bazı bilgileri açığa çıkarabilir

CCRAWL - Kaynak Kod Analizi Kaynak kodu elde olan veya decompile edilebilen Android uygulamalar için kaynak kod analizi ile hızlı bir dene,m gerçekleş,rilebilir Açık kaynak kodlu CCRAWL Android uygulamalarında probleme yol açabilecek bazı API ları otoma,k olarak göstermektedir

CCRAWL - Android APIs Privacy Viola,on Log SQL Injec,on rawquery, query Eksik BroadcastReceiver İzinleri registerreceiver, sendbroadcast, sendorderedbroadcast Kod Enjeksiyonu DexClassLoader

CCRAWL - Android APIs SDCard Dosya İşlemleri android.permission.write_external_storage android.permission.read_external_storage getexternalstoragedirectory Şüpheli Geo- Lokasyon İşlemleri android.permission.access_coarse_location android.permission.access_fine_location requestloca,onupdates, getlastknownloca,on

CCRAWL - Android APIs Süpheli SMS İşlemleri android.permission.send_sms android.permission.write_sms sendtextmessage( content://sms/inbox Özel SSL Dene,mi SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER checkservertrusted, checkclienttrusted sethostnameverifier, AllowAllHostnameVerifier

CCRAWL - Android APIs Bilgi İfşası setdata, getdata, putextra, getextras XSS setjavascriptenabled, addjavascriptinterface Hassas İşlemler getcallstate, getcellloca,on, getdeviceid, getline1number, getsimserialnumber, Intent.ACTION_CALL, SmsManager, ContactsContract, Loca,onManager