Mobil Pentest Örnek Not

79
Mobile Applica,on Pentest © 2013|Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr Mobile Application Pentest Eğitimi @2013 http://www.bga.com.tr [email protected] ANDROID

description

Bilgi Güvenliği Akademisi Ekibi Tarafından Hazırlanmış Dokümandır.

Transcript of Mobil Pentest Örnek Not

Page 1: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Mobile Application Pentest Eğitimi

@2013

http://www.bga.com.tr [email protected]

ANDROID  

Page 2: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  

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

Page 3: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Sayılarla  Android  

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

Page 4: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Page 5: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Java  VM  vs.  Dalvik  VM  

Page 6: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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ı  

 

Page 7: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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.  

Page 8: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

AVD  Manager  

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

Page 9: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Yeni  Android  Device  Defini,on  

Çözünürlük  

Direc,onal  Pad  

Emulator  RAM    büyüklüğü  

Keyboard  yok  

Page 10: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Yeni  Android  Virtual  Device  

Device  Seçimi  

Hardware  Keyboard  

SD  Card  Büyüklüğü  

Page 11: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Emulator  w/  Snapshot  

Sanal  cihazın    boyutunun    belli  bir  oranda    küçültülmesi  

Eski  kaydedilmiş    snapshot    kullanılır  

Eski  kaydedilmiş    snapshot    kullanılmaz  

Değişiklikler    snapshot  ‘a  kaydedilir  

Page 12: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 13: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  Sandbox  Modeli  -­‐  ps  

Page 14: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  Sandbox  Modeli  -­‐  ls  

Page 15: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Kurulu  Bir  Android  App  İçinde  

•  cache/  :  cache’lenen  nesneler  •  databases/  :    kullanılan  veritabanı    •  shared_prefs/  :  basit  veri  saklama  

Page 16: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

databases/  

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

Page 17: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

shared_prefs/  

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

Page 18: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

•  İş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ı  

LogCat  

Page 19: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 20: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Proxy  

Emulator  

Cihaz  

HTTP  Proxy  

Page 21: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

SSL/TLS  

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

Page 22: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

SSL  Tokalaşması  

Page 23: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvenilir  Ser,fikalar  -­‐  Browser  

Page 24: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

HTTPS  Bağlanflar  

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

Page 25: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvenilir  Ser,fikalar  -­‐  Android  

•  Android  sisteminde  güvenilir  ser,fikalar  

•  Burp  SSL  ser,fikasını  yüklemek  için;  

/etc/security/cacerts.bks  

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  

Page 26: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Yüklenen  Ser,fika  

•  Sewngs-­‐>Security-­‐>Trusted  creden,als    

Page 27: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 28: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  WIFI  Proxy  Ayarları  Sewngs  Wireless  &  Networks  WIFI  WiredSSID*  

Modify  Network  Show  Advanced  Opt.  Manual    

*  WiredSSID  üzerine  mouse  ile    basılı  tutularak  

Page 29: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Burp  Proxy  Ayarları  

Bütün  interfacelerden  dinler  

Her  Host  için  ayrı  CA  imzalı  serYfika  

Page 30: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 31: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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.  

Page 32: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Java  →  APK  

Page 33: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  Package  -­‐  APK  

Kriptografik  imzalanmış    serYfikalar  

UI  ile  ilgili  XML  yapılandırma  dosyaları,  resimler  

Java  class  dosyalarının    dex  forma`na  derlenmiş  hali  

Binary  forma`nda  uygulama  bileşenleri,    kullanılacak  izinler,  v.b.  

Page 34: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 35: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

İmzalama  İşlemleri  

•  Yoksa  self-­‐signed  ser,fikasının  oluşturulması  

keytool.exe        -­‐genkey      -­‐keystore  mykstr    -­‐alias  myalias  -­‐keyalg  RSA    -­‐validity  10000  

10000  gün    geçerlilik  süresi  

serYfikanın  saklanacağı  keystore  dosya  ismi  

keystore  içindeki    serYfikanın  alias’ı  

1  

Page 36: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

İmzalama  İşlemleri  

•  APK’nın  imzalanması  

jarsigner.exe      -­‐verbose      -­‐keystore  mykstr    HelloWorld.apk      myalias    -­‐sigalg  MD5withRSA      -­‐digestalg  SHA1  

 

keystore  içinde  imza  için    kullanılacak    serYfikanın  alias’ı  

imzalayacak  serYfikayı    barındıran  keystore  

imzalanacak  APK  

2  

Page 37: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

İmzalama  İşlemleri  

•  APK  imzasının  kontrolü  

jarsigner.exe      -­‐verbose      -­‐verify    HelloWorld.apk  

 

3  

imzası  kontrol  edilecek  APK  

Page 38: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  Market  

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

Page 39: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Android  Uygulama  İzinleri  

•  Kurulma/Yenileme  esnasında  uygulamalar  kaynaklara  erişmek  için  kullanacakları  izin  listesini  kullanıcının  onayına  sunarlar.  

•  Onay  sonrası  uygulama,  kaynaklara  erişim  esnasında  bir  daha  bu  izinleri  kullanıcıya  sormaz.  

Kullanıcı   Android  APP  

Internet  API  

android.permission.WRITE_EXTERNAL_STORAGE  android.permission.INTERNET  

...  

OK  SD  CARD    

API  

İzin    Kontrol  

İzin    Kontrol  

Page 40: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 41: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Reversing  APK  

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

Page 42: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Reversing  APK  -­‐  dex2jar  

#  d2j-­‐dex2jar.bat  PlayWithSSL.apk  

2  

1  

Page 43: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Reversing  APK  -­‐  apktool  

#  apktool.bat  PlayWithSSL.apk  

2  

1  

Page 44: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

smali?  

•  Dex  için  üre,len  assembly/disassembly  aracı  •  Aynı  zamanda  assembly  diline  verilen  isim  

java  -­‐jar  baksmali-­‐1.4.2.jar  PlayWithSSL\classes.dex  -­‐o  smali  

1  

2  

Page 45: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

java  -­‐  HelloWorld  

import  java.io.PrintStream;    public  class  HelloWorld  {      public  sta,c  void  main(String[]  paramArrayOfString)      {          System.out.println("Hello  World!");      }  }  

Page 46: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 47: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

apk  -­‐>  smali  -­‐>apk  

Unzip  Baksmali  

Edit  Smali  

Smali  

Zip  

Sign  

Page 48: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Enjeksiyon  -­‐  İstemci  

•  SQL  enjeksiyonu  Android  uygulamalarda  da  bulunabilecek  bir  zafiyet  çeşididir.  

Page 49: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Yetersiz  Yetkilendirme  -­‐  Sunucu  

•  Yetkilendirme  kontrolleri  sunucu  tara�nda  eksiksiz  gerçekleş,rilmelidir.  

Page 50: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Yetersiz  Yetkilendirme  -­‐  Sunucu  

•  Yetkilendirme  kontrolleri  sunucu  tara�nda  eksiksiz  gerçekleş,rilmelidir.  

Page 51: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

LogCat  Bilgi  Sızdırma  

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

Page 52: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvensiz  Veri  Saklama  

•  Kullanıcı  şifreleri,  kredi  karf  numaraları,  kişisel  bilgiler  shared_prefs  gibi  yapılar  açık  saklanmamalıdır.  

Page 53: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvensiz  Veri  Saklama  

•  SDCard  Android  sandbox’ının  uygulanmadığı  güvensiz  bir  veri  alanıdır.  

Page 54: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 55: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 56: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Intent  

•  Bileşenler  arası  ile,şim  Intent’ler  ile  sağlanır  

Ac,vity   Broadcast  Receiver  Intent  

Page 57: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Ö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  

Page 58: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Ö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>  

Page 59: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Ö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>  

Page 60: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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   B  

A  yetkili  midir?  

Page 61: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvensiz  IPC  

•  Componentlar  arasındaki  gerekli  yetkilendirme  kontrolleri  gerçekleş,rilmelidir.  

Page 62: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvensiz  IPC  Önlem  1  

•  normal  permission  kontrolü  

<uses-­‐permission    android:name="permission"  

<receiver    android:permission="permission"  

A   B  

A  yetkili  midir?  

<permission    android:name="permission"  />  1  

2  

3  

Page 63: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvensiz  IPC  Önlem  2  

•  permission  protecYonLevel  ipucu  

<receiver    android:permission="permission"  

A   B  

Sadece  A  mı  

yetkilidir?  

3  

2  

<permission    android:name="permission"    android:protectionLevel="signature"  />  

1  

<uses-­‐permission    android:name="permission"  

Page 64: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Güvensiz  IPC  Önlem  3  

•  hardcoded  signature  kontrolü  

A   B  

A  gerçek  midir?  

packageInfo  =  pm.getPackageInfo(A_PkgName,        PackageManager.GET_SIGNATURES);  

                 String  A_SIGNATURE  =  "308202...";                    for  (Signature  signature  :  packageInfo.signatures)        if  (signature.toCharsString().equals(A_SIGNATURE))  {        }  

Page 65: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Yetersiz  An,-­‐Otomasyon  

•  Özellikle  login  işlemleri,  deneme-­‐yanılma  saldırılarına  açık  olmamalıdırlar.  

Page 66: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

Memory  Analizi  

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

Page 67: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

DDMS  Ekranı  -­‐  Hprof  Dump  

Page 68: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

MAT  Ekranı  -­‐  Dominator  Tree  

Page 69: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

MAT  Ekranı  -­‐  DT  -­‐  List  Objects  

Page 70: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

MAT  Ekranı  -­‐  DT  -­‐  List  Objects  

Page 71: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 72: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 73: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 74: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

SMALI  -­‐  Log  Injec,on  

•  apksmash  ile  enjekte  edilen  log  metotları,  logcat  ile  hassas  bazı  bilgileri  açığa  çıkarabilir  

Page 75: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 76: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

CCRAWL  -­‐  Android  APIs  

•  Privacy  Viola,on  – Log  

•  SQL  Injec,on  –  rawQuery,  query  

•  Eksik  BroadcastReceiver  İzinleri  –  registerReceiver,  sendBroadcast,  sendOrderedBroadcast  

•  Kod  Enjeksiyonu  – DexClassLoader  

Page 77: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 78: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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  

Page 79: Mobil Pentest Örnek Not

Mobile  Applica,on  Pentest  ©  2013|Bilgi  Güvenliği  AKADEMİSİ  |  www.bga.com.tr  

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