SlideShare ist ein Scribd-Unternehmen logo
1 von 75
Ajanda
• Ben Kimim?
• Android
• Android Nedir?
• Dalvik VM
• Data Saklama Alanları
• Rooted ve Unrooted Kavramı
• Android Mimarisi
• Android APIs( PackageManager, Telephony )
• Lab Ortamının Kurulumu
• Android Debug Bridge
• Log Araçları ( Logcat, Dumpsys )
• Uygulama Araçları ( Aapt, Dexdump )
• Android Adli-Bilişim ( Forensics )
• Manuel
• Agent-Based Adli Bilişim
• SAFT (Yerli)
• Oxygen
• .. veya geliştirelim !
• Santoku Android
• Android Uygulama Analizi
• Manuel
• Android Sandboxlar
• UNdroid (Yerli)
• Anubis
• .. veya geliştirelim !
• Sorular?
Ben Kimim?
•
•
•
•
•
•
•

Security Researcher @ Balich IT
SAFT Mobile Forensics @SignalsSEC.
Android Sandbox(androidsandbox.net) @ Balich IT
Uygu.la Online Mobile App Builder @ Balich IT
MalTrack – Malware Dedection Tool @ Balich IT
Android RAT (Remote Access Tool) @Balich IT
Apple, Facebook, Opera, Google @ Security Researcher
Android
•

Maliyet ve İşletim Sistemi tutarlılığı konusunda oldukça başarılı
olan Android, Google Inc. şirketi tarafından geliştirilmiş ve yaygın
olarak kullanılan, Linux kernel tabanlı bir İşletim sistemidir.
(Android OS – Android Operating System)

•

Android günümüzde bir çok kaynakta Mobil İşletim Sistemi olarak
anılsada bu tam olarak doğru değildir.

•

Android İşletim Sistemi birçok farklı aygıt içerisinde karşımıza
çıkabilir.(örnek olarak tabletler, akıllı tvler vs). Fakat yaygın olarak
kullanım alanı mobil cihazlardır.

•

Gelecekte farklı endüstriel araçlar içerisindede görebilmemiz
kaçınılmazdır.
Android
•

IDC şirketinin 2013 yılı araştırma raporunda Mobil kullanım için
belirtilen sonuçlara göre, 2013 yılında Akıllı Cihaz kullanımı
%51.2′lik artışla yükselişte ve Mobil Pazar’da Akıllı Cihazların
kullanımları pazar payının yarınsından fazlasına hakim.

•

Yine aynı araştırma firmasının 2013 yılında sunmuş olduğu 2012
pazar araştırması raporuna görede, Android işletim sisteminin
pazardaki payı %68.8..
Android Mimarisi
Android Mimarisi
•

Linux Kernel
–
–

•

Libraries
–
–
–
–
–

•

Dalvik VM (JIT – Just-in-Time) (libdvm.so)
ART ( 4.4 KitKat ile geldi - AOT – Ahead-of-Time) (libart.so)
Core Java Kütüphanesi

Application Framework
–
–
–

•

Bionic libc
Function kütüphanesi
Yerel servisler
Hardware abstraction ( HAL )
..

Android Runtime
–
–
–

•

Process Yönetimi
Memory Yönetimi ...

Activity Manager
Notification Manager
..

Applications
–
–

Contacts
Phone ...
Dalvik VM
•

Dalvik Virtual Machine, Dan Bornstein tarafından Android için özel
olarak geliştirilmiş bir sanal makinadır.

•

Java olarak yazılan uygulama kodları (.class) derleyiciler tarafından
Dalvik VM’in okuyabileceği op codelara çevrilir ve .dex uzantılı
dosyaya dönüştürülür.

•

.Dex dosyaları Dalvik VM’nin çalıştırılabilir(executable) dosya
uzantılarıdır.
ART
•

Google firmasının Android için üretmeye başladığı ve Android 4.4
Kitkat ile tanıttığı yeni nesil Android Runtime ’dir.

•

Gelecekte Dalvik VM’in yerini alması beklenmektedir.

•

Dalvik VM Just-in-Time – JIT olarak çalıştığı için az hafıza çok işlemci
tüketir, ART ise Ahead-of-Time – AOT olarak çalışarak çok hafıza az
işlemci ile Android ‘in daha hızlı çalışmasını sağlar.

•

Dalvik VM ile JIT – Uygulamalar kurulduktan sonra çalıştırılabilir
dosyaları(.dex) çalıştırılacağı zaman kendi içerisinde işlemcinin
anlayacağı dile çevirerek derler.

•

ART ile AOT - Uygulamalar kurulurken çalıştırılabilir dosyaları(.dex)
kurulum aşamasında işlemcinin anlayacağı dile çevirir ve çalışma
sırasında çevirdiği dosyaları kullanır ve zaman kaybetmez.
APK Dosyaları
•

Android uygulamaların paketlenmiş
APK Dosyaları
DEX Dosyaları
Data Saklama Alanları
Android işletim sistemi üzerinde 5 farklı şekilde data tutma yöntemi
bulunmaktadır.
Data Saklama Alanları
•

Internal Storage – /data/data/ klasörü içerisinde ilgili uygulamanın paket
adıyla oluşturulmuş ve uygulama alanıyla erişim sağlanabilinen alanıdır.
Normal şartlarda bu alana sadece uygulamanın erişim hakkı verilir, ilgili erişim
root yetkisiyle yapılmadıysa görüntülenemez.

•

External Storage – İlgili cihazın diğer depolama alanlarında güvenlik ilke ve
politikaları yüksek seviyede uygulanırken, external storage alanında
kısıtlamalar daha düşük seviyededir. cihaz üzerine dahil edilmiş bir /sdcard
üzerinde yazma ve okuma işlemlerini rahatlıkla yapabilmekteyiz.

•

Shared Preferences - İlgili uygulama alanında bulunan ve XML formatı ile ilgili
uygulamaya ait isteğe bağlı dataların saklanmasına olanak tanır bu alanda
genelde uygulama ile ilgili basit ayar bilgileri bulunur.

•

Network: Android Network üzerinden data saklama imkanıda sağlamaktadır.

•

SQLite: SQLite dosyaları kısıtlama olmaksızın uygulamalar tarafından
oluşturulabilir. tablo mantiği ile veri saklama imkanı sağlarken genellikle
/data/data/paketadi/databases dizininde bulunurlar. bu zorunlu değildir,
dilendiği takdirde harici dizinlerde barındırılabilinir.
Rooted & Unrooted
•

Android işletim sistemi erişim ve yetki konusunda bazı sınırlar
barındırmaktadır. Bu sınırlar işletim sistemi üzerindeki bazı
zafiyetler sayesinde sömürülerek (exploit), işletim sistemi
üzerinde root yetkisi kazanılması işlemi piyasada rootlamak olarak
adlandırılmaktadır.

•

Data Saklama Alanlarında internal storage(/data/data/package/..)
alanına normal şartlarda root dışında, uygulama haricinde
erişemeyiz fakat root yetkisi kazandıysanız internal storage
alanınıda görüntüleyebilmeniz mümkündür.

•

Root yetkisi kazanılmış cihazlara Rootlanmış cihaz.

•

Root yetkisi bulunmayan cihazlara ise Unrooted cihaz diyebiliriz.
Rooted & Unrooted
Android APIs
•

Android işletim sistemi mimarisinden hatırlayacağınız üzere
Application Framework katmanında bazı kütüphaneler
barındırmaktadır. Bu kütüphanelere uygulama geliştirirken, ilgili
servisin yetki gereksinimine göre erişerek uygulamamız içerisinde
kullanabilir veya yönetebiliriz.
–
–
–
–
–
–
–
–

•

Power Manager
Activity Manager
Package Manager
Alarm Manager
Window Manager
Bluetooth Service
Location Manager
...

Bunlardan bazılarıdır.
Package Manager
•

Package Manager Android üzerinde kurulu paket(uygulamalar)ler
den sorumlu olan servistir. Bu servisi kullanılarak bir paket
kaldırabilir veya bu paket hakkında bilgi alabiliriz.

•

Package Manager uygulamalar hakkında bilgi alınacağı zaman
herhangi bir yetki gerektirmez. Paket hakkında bilgi alabileceğiniz
gibi uygulamanın kaynağınada erişebilmenize imkan tanır. AntiVirüsler ve benzeri bir çok uygulama bu sayede paketlere erişim
sağlar veya onları kopyalar.

•

Package Manager paketleri kaldırmak(silmek) için yetki/izin
gerektirir. Bu izni DELETE_PACKAGES ile kazanır.
Package Manager
Package Manager
PackageManager pm = getPackageManager();
List<ApplicationInfo> paketler = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo paketbilgileri: paketler) {
if(paketbilgileri.packageName.toString() != null) {
Log.d("SiberGuvenlik", "Yüklü paket :" + paketbilgileri.packageName);
}
}
Telephony Manager
•

TelephonyManager Android’in kurulu olduğu cihazdan sorumlu
olan servistir. Bu servisi kullanılarak cihaz hakkında farklı alanda
bilgi alabiliriz.
–
–
–
–
–
–
–
–

CALL_STATE_IDLE
CALL_STATE_OFFHOOK
CALL_STATE_RINGING
DATA_ACTIVITY_DORMAN
DATA_ACTIVITY_IN
DATA_ACTIVITY_NONE
DATA_ACTIVITY_OUT
DATA_CONNECTED

Device call state: No activity.
Device call state: Off-hook.
Device call state: Ringing.
Data connection is active, but physical link is down
Data connection activity: Currently receiving IP PPP traffic.
Data connection activity: No traffic.
Data connection activity: Currently sending IP PPP traffic.
Data connection state: Connected.
Telephony Manager
Telephony Manager
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
•

JDK Kurulumu

•

SDK Kurulumu (C:androidsdk içerisine taşıyalım)

•

Intellij IDEA Kurulumu
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
•

Emulatör oluşturma ve kontrolleri
–
–
–
–
–

•

Yüklü platformları tespit/kontrol.
android list targets
Oluşturulmuş emulatörleri tespit/kontrol.
android list avd
Emulatörleri oluşturma.
android create avd -n siberguvenlik -t 28 --skin QVGA
Emulatörler için sdcard oluşturma.
mksdcard -l sdcardSiberguvenlik 1024M “c:androidsdcardSiberguvenlik.img”
Emulatörler başlatma
emulator -sdcard "c:androidsdcardSiberguvenlik.img" -avd siberguvenlik

Emulatörün doğrulunu sağla bağlan
•
•

adb devices
adb shell
Lab Ortamının Kurulumu
Lab Ortamının Kurulumu
Android Debug Bridge
•

Android cihazlar ile bilgisayar arasında köprü vazifesi gören
bir araçtır. adb için Türkçe Android hata ayıklama köprüsü
desek sanırım hata etmiş olmayız. Android cihazlar üzerindeki
hata ayıklama modu aktif hale getirildikten sonra cihazımız ile
farklı cihazlar arasında ADB üzerinde iletişim
kurabilmekktedir.

•

Adb içerisinde birçok farklı alan için komut satırı
barındırılmaktadır. Bunların ayrıntılı listesi ve kullanımı için
adb /help komutu veya direkt olarak bu sayfayı ziyaret
edebilirsiniz:

•

http://developer.android.com/tools/help/adb.html
Log Araçları ( Logcat,Dumpsys )
•

Logcat
–

logcat, android debug yöntemlerinden biridir. System ve Uygulamalara ait debug mesajları
barındırır. Bu uygulamaların başlatılmasından sonlandırılmasına kadar geçen sürede bir
sistem mesajını ve uygulamayı oluşturan kişinin belirlediği mesajların dan oluşmaktadır. Bu
mesajlar arasında bir çok bilgiye rastlamak mümkündür.

–

İlgili uygulamaların verbose, debug, information, warning, error başlıkları arasında
herhangi bir konu/alanda bilgi barındırabilirler..
Log Araçları ( Logcat,Dumpsys )
•

Logcat

•

http://developer.android.com/tools/help/logcat.html
Log Araçları ( Logcat,Dumpsys )
•

Dumpsys
–

Dumsys sistem dump olarak açıklanabilinir. Bu komut bize servislerin, memory ve diğer
sistem detaylarını verir ve yine en güzel kısmı root hakkı gerektirmemektedir ve iyi bir
analiz ile faydalı bilgiler elde edilebilinir.

–

https://source.android.com/devices/tech/input/dumpsys.html
Uygulama Araçları (Aapt, Dexdump)
•

Aapt (Android Asset Packaging Tool)
–

–
–

Android paketleme aracı olarak söz edebileceğimiz aapt, android
uygulamaların derlenmesi aşamasında kaynaklar(resources) için kullandığı
derleme araçı.
SDK içerisinde gelen aapt, build-tools klasörü içerisinde bulunmaktadır.
Bu araç sayesinde derlenmiş bir uygulama (.apk) dosyası hakkındada bilgi
alınabilinir..
Uygulama Araçları (Aapt, Dexdump)
•

Aapt (Android Asset Packaging Tool)
–

Örnek vermem gerekirse bir uygulamanın içerisindeki değerlere aapt ile gözatalım.
•

aapt d --values resources c:androidsiberguvenlik.apk

Package Groups (1)
Package Group 0 id=127 packageCount=1 name=siberguvenlik.balichit
Package 0 id=127 name=siberguvenlik.balichit typeCount=4
type 0 configCount=0 entryCount=0
type 1 configCount=4 entryCount=1
spec resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: flags=0x00000100
config ldpi-v4:
resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000001 (s=0x0008 r=0x00)
(string16) "res/drawable-ldpi/ic_launcher.png"
config mdpi-v4:
resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000002 (s=0x0008 r=0x00)
(string16) "res/drawable-mdpi/ic_launcher.png"
config hdpi-v4:
resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000003 (s=0x0008 r=0x00)
(string16) "res/drawable-hdpi/ic_launcher.png"
config xhdpi-v4:
resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000004 (s=0x0008 r=0x00)
(string16) "res/drawable-xhdpi/ic_launcher.png"
type 2 configCount=1 entryCount=1
spec resource 0x7f030000 siberguvenlik.balichit:layout/main: flags=0x00000000
config (default):
resource 0x7f030000 siberguvenlik.balichit:layout/main: t=0x03 d=0x00000000 (s=0x0008 r=0x00)
(string16) "res/layout/main.xml"
type 3 configCount=1 entryCount=1
spec resource 0x7f040000 siberguvenlik.balichit:string/app_name: flags=0x00000000
config (default):
resource 0x7f040000 siberguvenlik.balichit:string/app_name: t=0x03 d=0x00000005 (s=0x0008 r=0x00)
(string16) "PackageManagerOrnegi"
Uygulama Araçları (Aapt, Dexdump)
•

Aapt (Android Asset Packaging Tool)
– Şimdide aynı uygulama içerisindeki dosya listesine göz
atalım.
•

aapt list c:androidsiberguvenlik.apk

res/layout/main.xml
AndroidManifest.xml
resources.arsc
res/drawable-hdpi/ic_launcher.png
res/drawable-ldpi/ic_launcher.png
res/drawable-mdpi/ic_launcher.png
res/drawable-xhdpi/ic_launcher.png
classes.dex
META-INF/MANIFEST.MF
META-INF/CERT.SF
META-INF/CERT.RSA
Uygulama Araçları (Aapt, Dexdump)
•

Aapt (Android Asset Packaging Tool)
– Şimdide farklı bir uygulama içerisindeki permissionlara göz
atalım.
•

aapt d permissions c:androidsiberguvenlik2.apk

package: siberguvenlik.balichit
uses-permission: android.permission.READ_PHONE_STATE
Uygulama Araçları (Aapt, Dexdump)
•

Dexdump
– Android SDK ile birlikte gelen .dex dosyalarının disassembler
araçıdır. Belirtilen dosya’nın dalvik VM bytecodelarını verir.
•

dexdump -d c:androidclasses.dex

Processing 'c:androidclasses.dex'...
Opened 'c:androidclasses.dex', DEX version '035'
Class #0
Class descriptor : 'Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;'
Access flags
: 0x0000 ()
Superclass
: 'Landroid/telephony/PhoneStateListener;'
Interfaces
Static fields Instance fields #0
: (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;)
name
: 'this$0'
type
: 'Lsiberguvenlik/balichit/MyActivity;'
access
: 0x1010 (FINAL SYNTHETIC)
Direct methods #0
: (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;)
name
: '<init>'
type
: '(Lsiberguvenlik/balichit/MyActivity;)V'
access
: 0x10000 (CONSTRUCTOR)
code
registers : 2
ins
:2
outs
:1
insns size : 6 16-bit code units
..
. Class #1
...

Dalvik VM Bytecode için daha fazla bilgi
http://source.android.com/devices/tech/dalvik/dalvik-bytecode.html
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Uygulama Araçları (Aapt, Dexdump)
•

Dexdump
– Android SDK ile birlikte gelen .dex dosyalarının disassembler
araçıdır. Belirtilen dosya’nın dalvik VM bytecodelarını verir.
•

dexdump -d c:androidclasses.dex

Processing 'c:androidclasses.dex'...
Opened 'c:androidclasses.dex', DEX version '035'
Class #0
Class descriptor : 'Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;'
Access flags
: 0x0000 ()
Superclass
: 'Landroid/telephony/PhoneStateListener;'
Interfaces
Static fields Instance fields #0
: (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;)
name
: 'this$0'
type
: 'Lsiberguvenlik/balichit/MyActivity;'
access
: 0x1010 (FINAL SYNTHETIC)
Direct methods #0
: (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;)
name
: '<init>'
type
: '(Lsiberguvenlik/balichit/MyActivity;)V'
access
: 0x10000 (CONSTRUCTOR)
code
registers : 2
ins
:2
outs
:1
insns size : 6 16-bit code units
..
. Class #1
...

Dalvik VM Bytecode için daha fazla bilgi
http://source.android.com/devices/tech/dalvik/dalvik-bytecode.html
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Android Adli-Bilişim ( Forensics )
•

Bir durumda Android bir cihaz üzerinde adli bir konun araştırılması
,icelenmesini, delil toplanması vs gibi durumlar Android Adli
Bilişimi konu almaktadır.
Android Adli-Bilişim ( Forensics )
•

Manuel

•
•

Sqlite & App databaseleri
Resimler, Tarihler, Accountlar, History, Cookieler, Uygulama shared
preferences alanı vs
Android Adli-Bilişim ( Forensics )
•

Manuel
–
–

adb shell
ls
Android Adli-Bilişim ( Forensics )
•

Manuel
–
–

Cd /data/data
ls
Android Adli-Bilişim ( Forensics )
•

Manuel
–
–

Cd /data/data/com.balichIT.AndroidSandbox
Ls

–
–

Cd /data/data/com.balichIT.AndroidSandbox/databases
ls
Android Adli-Bilişim ( Forensics )
•

Manuel
–
–

adb pull <nerdenalinacak> <nereyekoyapalanacak> ( cihazdan bilgisayara )
adb push <neredenalinacak> <nereyekopyalanacak> ( bilgisayardan cihaza )

–
–

adb pull /data/data/com.balichIT.AndroidSandbox/databases/webviewCache.db
adb pull /data/data/com.balichIT.AndroidSandbox/databases/webview.db

–

Sqlite browser ile inceleyelim...
Android Adli-Bilişim ( Forensics )
•

Manuel
Android Adli-Bilişim ( Forensics )
•

Manuel
Android Adli-Bilişim ( Forensics )
•

Manuel
–
–

–

Cihazdaki tüm dosyaların dökümünü alıp bakalım
• adb shell ls –l –R > tumdokum.txt
Cihazdaki tüm logların dökümünü alıp bakalım
• adb logcat -d > loglardokum.txt
Cihazdaki servislerin durum dökümünü alalım
• adb dumsys > sistemdokum.txt
•

Vs, vs
Android Adli-Bilişim ( Forensics )
•

SAFT
– SAFT Mobil Forensics için geliştirilmiş ve community
versiyonu ücretsiz olarak dağıtılan yerli bir yazılımdır.

http://www.signalsec.com/portfolio/saft-mobile-forensics/
Android Adli-Bilişim ( Forensics )
•

SAFT
– SAFT community versiyonu agent-based olarak
çalışmaktadır.

http://www.signalsec.com/portfolio/saft-mobile-forensics/
Android Adli-Bilişim ( Forensics )

http://www.signalsec.com/portfolio/saft-mobile-forensics/
Android Adli-Bilişim ( Forensics )
•

SAFT community versiyonu ile cihaz üzerinden şu bilgiler
alınabilinmektedir.

http://www.signalsec.com/portfolio/saft-mobile-forensics/
Android Adli-Bilişim ( Forensics )
•

Oxygen
– Oxygen Forensic® Suite forensics için geliştirilmiş bir yazılımdır.

http://www.oxygen-forensic.com/en/
Android Adli-Bilişim ( Forensics )
•

Oxygen
– Oxygen android ‘de Saft gibi agent-based olarak çalışmaktadır.
– Oxygen ile sadece android tabanlı değil ios, nokia vs gibi diğer
mobil cihazlar içinde kullanılabilinir.

http://www.oxygen-forensic.com/en/
Android Adli-Bilişim ( Forensics )
•

Oxygen ile cihaz üzerinden şu bilgiler alınabilinmektedir.

http://www.oxygen-forensic.com/en/
Android Adli-Bilişim ( Forensics )
–
–
–
–
–
–
–

Kişi listesi ?
EVET  android.permission.READ_CONTACTS
SMS listesi ?
EVET  android.permission.READ_SMS
Arama listesi ?
EVET  android.permission.READ_CALL_LOG
Neden duruyoruz peki?

Hadi Kendimiz geliştirelim...


Android Adli-Bilişim ( Forensics )
–
–

Kişi listesi
android.permission.READ_CONTACTS

Cursor kisiler = this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,null,null, null);
while (kisiler.moveToNext())
{
String adi
=kisiler.getString(kisiler.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))
;
String telefonNO =
kisiler.getString(kisiler.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.d("SiberGuvenlik", "Adi: " + adi + " Numarasi : " + telefonNO);
}
kisiler.close();
Android Adli-Bilişim ( Forensics )
–
–

SMS listesi ?
android.permission.READ_SMS

Cursor smsler= this.getContentResolver().query(Uri.parse("content://sms"), null,null, null, null);
while (smsler.moveToNext())
{
String adres = smsler.getString(smsler.getColumnIndex("address"))
String body = smsler.getString(smsler.getColumnIndex(" body "))
String tarih= smsler.getString(smsler.getColumnIndex(" date "))
Log.d("SiberGuvenlik", " adres : " + adres + " body : " + body + " tarih: " + tarih);
}
smsler.close();
Android Adli-Bilişim ( Forensics )
–
–

Arama listesi
android.permission.READ_CALL_LOG

??

Ev ödevi

kopya: google= android.permission.READ_CALL_LOG uri.parse
Android Uygulama Analizi
– İhtiyaçlarımız?
•
•
•

Uygulamanın bağlantı kurduğu dış kaynaklar
Uygulamanın kullandığı izinler
Uygulamanın disasambler kodları veya source kodları

– Yapabileceklerimiz
•

Hepsi!
Android Uygulama Analizi
• Uygulamanın bağlantı kurduğu dış kaynaklar.
– 1. alternatifimiz
emulatör’ün http-proxy seçeneği ile emulatörü bir proxy
server’a yönlendirerek dinlemek bu seçenek için emulatör
başlangıç parametresi olarak
–http-proxy http://proxyserver:proxyserverport
emulator -sdcard "c:androidsdcardSiberguvenlik.img" -avd siberguvenlik –http-proxy http:/..
Android Uygulama Analizi
• Uygulamanın bağlantı kurduğu dış kaynaklar.
– 2. alternatifimiz
emulatör’ün tcpdump seçeneği ile başlatılıp emulatörün
network akışını pcap formatında dışa almak ve daha sonra
pcap’ten manuel incelemek.
bu seçenek için emulatör başlangıç parametresi olarak
-tcpdump siberguvenlikapk.pcap
emulator -sdcard "c:androidsdcardSiberguvenlik.img" -avd siberguvenlik -tcpdump siberguvenlikapk.pcap
Android Uygulama Analizi
• Uygulamanın bağlantı kurduğu dış kaynaklar.
– 3.alternatifimiz
emülatörün çalıştırılacağı computer’ı (sanal makinada olabilir)
bir proxy’e yönlendirmek veya alternatif bir network dinleme
aracı ile dinlemek.
Bkz : wireshark
Android Uygulama Analizi
• Uygulamanın kullandığı izinler
– 1.alternatifimiz
aapt aracını hatırlıyalım

aapt d permissions c:androidsiberguvenlik2.apk
Android Uygulama Analizi
• Uygulamanın kullandığı izinler
– 2.alternatifimiz
apktool ile apk dosyasını decoding ederek manifest dosyasını
dışarı çıkartabiliriz.
apktool d C:androidsiberguvenlik2.apk && cat
siberguvenlik2/AndroidManifest.xml
Android Uygulama Analizi
• Uygulamanın Disassembler kodları
– 1.alternatifimiz
dexdump ‘ı hatırlayalım. Apk dosyasının içerisinden
classess.dex dosyasını çıkartıp dexdump ile inceyelim.
dexdump -d c:androidclasses.dex
Android Uygulama Analizi
• Sandboxlar
– 1.alternatifimiz
Tabiki Android Sandbox (yerlidir)

– 2.alternatifimiz
Anubis ( yerli değildir :P )
Android Uygulama Analizi
• Sandboxlar
– Anubis
Android Uygulama Analizi
• Sandboxlar
– Anubis
Android Uygulama Analizi
• Sandboxlar
– Anubis
Android Uygulama Analizi
• Sandboxlar
– Android Sandbox

Weitere ähnliche Inhalte

Mehr von Siber Güvenlik Derneği

Uygulama guvenligi gunu - malicious web sites
Uygulama guvenligi gunu - malicious web sitesUygulama guvenligi gunu - malicious web sites
Uygulama guvenligi gunu - malicious web sites
Siber Güvenlik Derneği
 
Uygulama Güvenliği Günü 2012 - Siber Güvenlik Derneği
Uygulama Güvenliği Günü 2012 - Siber Güvenlik DerneğiUygulama Güvenliği Günü 2012 - Siber Güvenlik Derneği
Uygulama Güvenliği Günü 2012 - Siber Güvenlik Derneği
Siber Güvenlik Derneği
 
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Derneği
 
Siber Güvenlik Konferansı'14 Tanıtım Sunumu
Siber Güvenlik Konferansı'14 Tanıtım SunumuSiber Güvenlik Konferansı'14 Tanıtım Sunumu
Siber Güvenlik Konferansı'14 Tanıtım Sunumu
Siber Güvenlik Derneği
 

Mehr von Siber Güvenlik Derneği (16)

Kurumsal Ağlarda Log Analizi Yöntemi İle Saldırı Tespiti - Huzeyfe Önal #Sibe...
Kurumsal Ağlarda Log Analizi Yöntemi İle Saldırı Tespiti - Huzeyfe Önal #Sibe...Kurumsal Ağlarda Log Analizi Yöntemi İle Saldırı Tespiti - Huzeyfe Önal #Sibe...
Kurumsal Ağlarda Log Analizi Yöntemi İle Saldırı Tespiti - Huzeyfe Önal #Sibe...
 
Bilgi güvenliği ve oyunlaştırma(Lite) - Yunus Çadırcı #SiberGuvenlikKonferans...
Bilgi güvenliği ve oyunlaştırma(Lite) - Yunus Çadırcı #SiberGuvenlikKonferans...Bilgi güvenliği ve oyunlaştırma(Lite) - Yunus Çadırcı #SiberGuvenlikKonferans...
Bilgi güvenliği ve oyunlaştırma(Lite) - Yunus Çadırcı #SiberGuvenlikKonferans...
 
Asal Sayılar ve Şifreleme - H. Coşkun Gündüz #SiberGuvenlikKonferansi 14.05.14
Asal Sayılar ve Şifreleme - H. Coşkun Gündüz #SiberGuvenlikKonferansi 14.05.14Asal Sayılar ve Şifreleme - H. Coşkun Gündüz #SiberGuvenlikKonferansi 14.05.14
Asal Sayılar ve Şifreleme - H. Coşkun Gündüz #SiberGuvenlikKonferansi 14.05.14
 
Android ve Zararlı Uygulamalar - İbrahim Baliç #SiberGuvenlikKonferansi 14.05.14
Android ve Zararlı Uygulamalar - İbrahim Baliç #SiberGuvenlikKonferansi 14.05.14Android ve Zararlı Uygulamalar - İbrahim Baliç #SiberGuvenlikKonferansi 14.05.14
Android ve Zararlı Uygulamalar - İbrahim Baliç #SiberGuvenlikKonferansi 14.05.14
 
Android'de Parmak Kaldırmadan Konuşmak - Oğuzhan Topgül #SiberGuvenlikKonfera...
Android'de Parmak Kaldırmadan Konuşmak - Oğuzhan Topgül #SiberGuvenlikKonfera...Android'de Parmak Kaldırmadan Konuşmak - Oğuzhan Topgül #SiberGuvenlikKonfera...
Android'de Parmak Kaldırmadan Konuşmak - Oğuzhan Topgül #SiberGuvenlikKonfera...
 
Yönetilmeyen Hiçbir Sistem Güvende Değildir! - Osman Demircan #SiberGuvenlikK...
Yönetilmeyen Hiçbir Sistem Güvende Değildir! - Osman Demircan #SiberGuvenlikK...Yönetilmeyen Hiçbir Sistem Güvende Değildir! - Osman Demircan #SiberGuvenlikK...
Yönetilmeyen Hiçbir Sistem Güvende Değildir! - Osman Demircan #SiberGuvenlikK...
 
Uygulama guvenligi gunu - malicious web sites
Uygulama guvenligi gunu - malicious web sitesUygulama guvenligi gunu - malicious web sites
Uygulama guvenligi gunu - malicious web sites
 
Uygulama Güvenliği Günü 2012 - Siber Güvenlik Derneği
Uygulama Güvenliği Günü 2012 - Siber Güvenlik DerneğiUygulama Güvenliği Günü 2012 - Siber Güvenlik Derneği
Uygulama Güvenliği Günü 2012 - Siber Güvenlik Derneği
 
Siber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif YaklaşımlarSiber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif Yaklaşımlar
 
SGD Internet Bağımlılığı Raporu
SGD Internet Bağımlılığı RaporuSGD Internet Bağımlılığı Raporu
SGD Internet Bağımlılığı Raporu
 
Siber Güvenlik Bülteni-2013
Siber Güvenlik Bülteni-2013Siber Güvenlik Bülteni-2013
Siber Güvenlik Bülteni-2013
 
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
 
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
Siber Güvenlik Çalıştayı Sponsorluk Sunumu - 2014
 
Siber Güvenlik Buluşmaları 7. oturum, 1. kısım-07.12.2013
Siber Güvenlik Buluşmaları 7. oturum, 1. kısım-07.12.2013Siber Güvenlik Buluşmaları 7. oturum, 1. kısım-07.12.2013
Siber Güvenlik Buluşmaları 7. oturum, 1. kısım-07.12.2013
 
Siber Güvenlik Konferansı'14 Tanıtım Sunumu
Siber Güvenlik Konferansı'14 Tanıtım SunumuSiber Güvenlik Konferansı'14 Tanıtım Sunumu
Siber Güvenlik Konferansı'14 Tanıtım Sunumu
 
Siber Güvenlik Konferansı'14 Sponsorluk Sunumu
Siber Güvenlik Konferansı'14 Sponsorluk SunumuSiber Güvenlik Konferansı'14 Sponsorluk Sunumu
Siber Güvenlik Konferansı'14 Sponsorluk Sunumu
 

Siber Güvenlik Buluşmaları 8. Oturum Sunumu

  • 1.
  • 2. Ajanda • Ben Kimim? • Android • Android Nedir? • Dalvik VM • Data Saklama Alanları • Rooted ve Unrooted Kavramı • Android Mimarisi • Android APIs( PackageManager, Telephony ) • Lab Ortamının Kurulumu • Android Debug Bridge • Log Araçları ( Logcat, Dumpsys ) • Uygulama Araçları ( Aapt, Dexdump ) • Android Adli-Bilişim ( Forensics ) • Manuel • Agent-Based Adli Bilişim • SAFT (Yerli) • Oxygen • .. veya geliştirelim ! • Santoku Android • Android Uygulama Analizi • Manuel • Android Sandboxlar • UNdroid (Yerli) • Anubis • .. veya geliştirelim ! • Sorular?
  • 3. Ben Kimim? • • • • • • • Security Researcher @ Balich IT SAFT Mobile Forensics @SignalsSEC. Android Sandbox(androidsandbox.net) @ Balich IT Uygu.la Online Mobile App Builder @ Balich IT MalTrack – Malware Dedection Tool @ Balich IT Android RAT (Remote Access Tool) @Balich IT Apple, Facebook, Opera, Google @ Security Researcher
  • 4. Android • Maliyet ve İşletim Sistemi tutarlılığı konusunda oldukça başarılı olan Android, Google Inc. şirketi tarafından geliştirilmiş ve yaygın olarak kullanılan, Linux kernel tabanlı bir İşletim sistemidir. (Android OS – Android Operating System) • Android günümüzde bir çok kaynakta Mobil İşletim Sistemi olarak anılsada bu tam olarak doğru değildir. • Android İşletim Sistemi birçok farklı aygıt içerisinde karşımıza çıkabilir.(örnek olarak tabletler, akıllı tvler vs). Fakat yaygın olarak kullanım alanı mobil cihazlardır. • Gelecekte farklı endüstriel araçlar içerisindede görebilmemiz kaçınılmazdır.
  • 5. Android • IDC şirketinin 2013 yılı araştırma raporunda Mobil kullanım için belirtilen sonuçlara göre, 2013 yılında Akıllı Cihaz kullanımı %51.2′lik artışla yükselişte ve Mobil Pazar’da Akıllı Cihazların kullanımları pazar payının yarınsından fazlasına hakim. • Yine aynı araştırma firmasının 2013 yılında sunmuş olduğu 2012 pazar araştırması raporuna görede, Android işletim sisteminin pazardaki payı %68.8..
  • 7. Android Mimarisi • Linux Kernel – – • Libraries – – – – – • Dalvik VM (JIT – Just-in-Time) (libdvm.so) ART ( 4.4 KitKat ile geldi - AOT – Ahead-of-Time) (libart.so) Core Java Kütüphanesi Application Framework – – – • Bionic libc Function kütüphanesi Yerel servisler Hardware abstraction ( HAL ) .. Android Runtime – – – • Process Yönetimi Memory Yönetimi ... Activity Manager Notification Manager .. Applications – – Contacts Phone ...
  • 8. Dalvik VM • Dalvik Virtual Machine, Dan Bornstein tarafından Android için özel olarak geliştirilmiş bir sanal makinadır. • Java olarak yazılan uygulama kodları (.class) derleyiciler tarafından Dalvik VM’in okuyabileceği op codelara çevrilir ve .dex uzantılı dosyaya dönüştürülür. • .Dex dosyaları Dalvik VM’nin çalıştırılabilir(executable) dosya uzantılarıdır.
  • 9. ART • Google firmasının Android için üretmeye başladığı ve Android 4.4 Kitkat ile tanıttığı yeni nesil Android Runtime ’dir. • Gelecekte Dalvik VM’in yerini alması beklenmektedir. • Dalvik VM Just-in-Time – JIT olarak çalıştığı için az hafıza çok işlemci tüketir, ART ise Ahead-of-Time – AOT olarak çalışarak çok hafıza az işlemci ile Android ‘in daha hızlı çalışmasını sağlar. • Dalvik VM ile JIT – Uygulamalar kurulduktan sonra çalıştırılabilir dosyaları(.dex) çalıştırılacağı zaman kendi içerisinde işlemcinin anlayacağı dile çevirerek derler. • ART ile AOT - Uygulamalar kurulurken çalıştırılabilir dosyaları(.dex) kurulum aşamasında işlemcinin anlayacağı dile çevirir ve çalışma sırasında çevirdiği dosyaları kullanır ve zaman kaybetmez.
  • 13. Data Saklama Alanları Android işletim sistemi üzerinde 5 farklı şekilde data tutma yöntemi bulunmaktadır.
  • 14. Data Saklama Alanları • Internal Storage – /data/data/ klasörü içerisinde ilgili uygulamanın paket adıyla oluşturulmuş ve uygulama alanıyla erişim sağlanabilinen alanıdır. Normal şartlarda bu alana sadece uygulamanın erişim hakkı verilir, ilgili erişim root yetkisiyle yapılmadıysa görüntülenemez. • External Storage – İlgili cihazın diğer depolama alanlarında güvenlik ilke ve politikaları yüksek seviyede uygulanırken, external storage alanında kısıtlamalar daha düşük seviyededir. cihaz üzerine dahil edilmiş bir /sdcard üzerinde yazma ve okuma işlemlerini rahatlıkla yapabilmekteyiz. • Shared Preferences - İlgili uygulama alanında bulunan ve XML formatı ile ilgili uygulamaya ait isteğe bağlı dataların saklanmasına olanak tanır bu alanda genelde uygulama ile ilgili basit ayar bilgileri bulunur. • Network: Android Network üzerinden data saklama imkanıda sağlamaktadır. • SQLite: SQLite dosyaları kısıtlama olmaksızın uygulamalar tarafından oluşturulabilir. tablo mantiği ile veri saklama imkanı sağlarken genellikle /data/data/paketadi/databases dizininde bulunurlar. bu zorunlu değildir, dilendiği takdirde harici dizinlerde barındırılabilinir.
  • 15. Rooted & Unrooted • Android işletim sistemi erişim ve yetki konusunda bazı sınırlar barındırmaktadır. Bu sınırlar işletim sistemi üzerindeki bazı zafiyetler sayesinde sömürülerek (exploit), işletim sistemi üzerinde root yetkisi kazanılması işlemi piyasada rootlamak olarak adlandırılmaktadır. • Data Saklama Alanlarında internal storage(/data/data/package/..) alanına normal şartlarda root dışında, uygulama haricinde erişemeyiz fakat root yetkisi kazandıysanız internal storage alanınıda görüntüleyebilmeniz mümkündür. • Root yetkisi kazanılmış cihazlara Rootlanmış cihaz. • Root yetkisi bulunmayan cihazlara ise Unrooted cihaz diyebiliriz.
  • 17. Android APIs • Android işletim sistemi mimarisinden hatırlayacağınız üzere Application Framework katmanında bazı kütüphaneler barındırmaktadır. Bu kütüphanelere uygulama geliştirirken, ilgili servisin yetki gereksinimine göre erişerek uygulamamız içerisinde kullanabilir veya yönetebiliriz. – – – – – – – – • Power Manager Activity Manager Package Manager Alarm Manager Window Manager Bluetooth Service Location Manager ... Bunlardan bazılarıdır.
  • 18. Package Manager • Package Manager Android üzerinde kurulu paket(uygulamalar)ler den sorumlu olan servistir. Bu servisi kullanılarak bir paket kaldırabilir veya bu paket hakkında bilgi alabiliriz. • Package Manager uygulamalar hakkında bilgi alınacağı zaman herhangi bir yetki gerektirmez. Paket hakkında bilgi alabileceğiniz gibi uygulamanın kaynağınada erişebilmenize imkan tanır. AntiVirüsler ve benzeri bir çok uygulama bu sayede paketlere erişim sağlar veya onları kopyalar. • Package Manager paketleri kaldırmak(silmek) için yetki/izin gerektirir. Bu izni DELETE_PACKAGES ile kazanır.
  • 20. Package Manager PackageManager pm = getPackageManager(); List<ApplicationInfo> paketler = pm.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo paketbilgileri: paketler) { if(paketbilgileri.packageName.toString() != null) { Log.d("SiberGuvenlik", "Yüklü paket :" + paketbilgileri.packageName); } }
  • 21. Telephony Manager • TelephonyManager Android’in kurulu olduğu cihazdan sorumlu olan servistir. Bu servisi kullanılarak cihaz hakkında farklı alanda bilgi alabiliriz. – – – – – – – – CALL_STATE_IDLE CALL_STATE_OFFHOOK CALL_STATE_RINGING DATA_ACTIVITY_DORMAN DATA_ACTIVITY_IN DATA_ACTIVITY_NONE DATA_ACTIVITY_OUT DATA_CONNECTED Device call state: No activity. Device call state: Off-hook. Device call state: Ringing. Data connection is active, but physical link is down Data connection activity: Currently receiving IP PPP traffic. Data connection activity: No traffic. Data connection activity: Currently sending IP PPP traffic. Data connection state: Connected.
  • 25. Lab Ortamının Kurulumu • JDK Kurulumu • SDK Kurulumu (C:androidsdk içerisine taşıyalım) • Intellij IDEA Kurulumu
  • 31. Lab Ortamının Kurulumu • Emulatör oluşturma ve kontrolleri – – – – – • Yüklü platformları tespit/kontrol. android list targets Oluşturulmuş emulatörleri tespit/kontrol. android list avd Emulatörleri oluşturma. android create avd -n siberguvenlik -t 28 --skin QVGA Emulatörler için sdcard oluşturma. mksdcard -l sdcardSiberguvenlik 1024M “c:androidsdcardSiberguvenlik.img” Emulatörler başlatma emulator -sdcard "c:androidsdcardSiberguvenlik.img" -avd siberguvenlik Emulatörün doğrulunu sağla bağlan • • adb devices adb shell
  • 34. Android Debug Bridge • Android cihazlar ile bilgisayar arasında köprü vazifesi gören bir araçtır. adb için Türkçe Android hata ayıklama köprüsü desek sanırım hata etmiş olmayız. Android cihazlar üzerindeki hata ayıklama modu aktif hale getirildikten sonra cihazımız ile farklı cihazlar arasında ADB üzerinde iletişim kurabilmekktedir. • Adb içerisinde birçok farklı alan için komut satırı barındırılmaktadır. Bunların ayrıntılı listesi ve kullanımı için adb /help komutu veya direkt olarak bu sayfayı ziyaret edebilirsiniz: • http://developer.android.com/tools/help/adb.html
  • 35. Log Araçları ( Logcat,Dumpsys ) • Logcat – logcat, android debug yöntemlerinden biridir. System ve Uygulamalara ait debug mesajları barındırır. Bu uygulamaların başlatılmasından sonlandırılmasına kadar geçen sürede bir sistem mesajını ve uygulamayı oluşturan kişinin belirlediği mesajların dan oluşmaktadır. Bu mesajlar arasında bir çok bilgiye rastlamak mümkündür. – İlgili uygulamaların verbose, debug, information, warning, error başlıkları arasında herhangi bir konu/alanda bilgi barındırabilirler..
  • 36. Log Araçları ( Logcat,Dumpsys ) • Logcat • http://developer.android.com/tools/help/logcat.html
  • 37. Log Araçları ( Logcat,Dumpsys ) • Dumpsys – Dumsys sistem dump olarak açıklanabilinir. Bu komut bize servislerin, memory ve diğer sistem detaylarını verir ve yine en güzel kısmı root hakkı gerektirmemektedir ve iyi bir analiz ile faydalı bilgiler elde edilebilinir. – https://source.android.com/devices/tech/input/dumpsys.html
  • 38. Uygulama Araçları (Aapt, Dexdump) • Aapt (Android Asset Packaging Tool) – – – Android paketleme aracı olarak söz edebileceğimiz aapt, android uygulamaların derlenmesi aşamasında kaynaklar(resources) için kullandığı derleme araçı. SDK içerisinde gelen aapt, build-tools klasörü içerisinde bulunmaktadır. Bu araç sayesinde derlenmiş bir uygulama (.apk) dosyası hakkındada bilgi alınabilinir..
  • 39. Uygulama Araçları (Aapt, Dexdump) • Aapt (Android Asset Packaging Tool) – Örnek vermem gerekirse bir uygulamanın içerisindeki değerlere aapt ile gözatalım. • aapt d --values resources c:androidsiberguvenlik.apk Package Groups (1) Package Group 0 id=127 packageCount=1 name=siberguvenlik.balichit Package 0 id=127 name=siberguvenlik.balichit typeCount=4 type 0 configCount=0 entryCount=0 type 1 configCount=4 entryCount=1 spec resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: flags=0x00000100 config ldpi-v4: resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000001 (s=0x0008 r=0x00) (string16) "res/drawable-ldpi/ic_launcher.png" config mdpi-v4: resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000002 (s=0x0008 r=0x00) (string16) "res/drawable-mdpi/ic_launcher.png" config hdpi-v4: resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000003 (s=0x0008 r=0x00) (string16) "res/drawable-hdpi/ic_launcher.png" config xhdpi-v4: resource 0x7f020000 siberguvenlik.balichit:drawable/ic_launcher: t=0x03 d=0x00000004 (s=0x0008 r=0x00) (string16) "res/drawable-xhdpi/ic_launcher.png" type 2 configCount=1 entryCount=1 spec resource 0x7f030000 siberguvenlik.balichit:layout/main: flags=0x00000000 config (default): resource 0x7f030000 siberguvenlik.balichit:layout/main: t=0x03 d=0x00000000 (s=0x0008 r=0x00) (string16) "res/layout/main.xml" type 3 configCount=1 entryCount=1 spec resource 0x7f040000 siberguvenlik.balichit:string/app_name: flags=0x00000000 config (default): resource 0x7f040000 siberguvenlik.balichit:string/app_name: t=0x03 d=0x00000005 (s=0x0008 r=0x00) (string16) "PackageManagerOrnegi"
  • 40. Uygulama Araçları (Aapt, Dexdump) • Aapt (Android Asset Packaging Tool) – Şimdide aynı uygulama içerisindeki dosya listesine göz atalım. • aapt list c:androidsiberguvenlik.apk res/layout/main.xml AndroidManifest.xml resources.arsc res/drawable-hdpi/ic_launcher.png res/drawable-ldpi/ic_launcher.png res/drawable-mdpi/ic_launcher.png res/drawable-xhdpi/ic_launcher.png classes.dex META-INF/MANIFEST.MF META-INF/CERT.SF META-INF/CERT.RSA
  • 41. Uygulama Araçları (Aapt, Dexdump) • Aapt (Android Asset Packaging Tool) – Şimdide farklı bir uygulama içerisindeki permissionlara göz atalım. • aapt d permissions c:androidsiberguvenlik2.apk package: siberguvenlik.balichit uses-permission: android.permission.READ_PHONE_STATE
  • 42. Uygulama Araçları (Aapt, Dexdump) • Dexdump – Android SDK ile birlikte gelen .dex dosyalarının disassembler araçıdır. Belirtilen dosya’nın dalvik VM bytecodelarını verir. • dexdump -d c:androidclasses.dex Processing 'c:androidclasses.dex'... Opened 'c:androidclasses.dex', DEX version '035' Class #0 Class descriptor : 'Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;' Access flags : 0x0000 () Superclass : 'Landroid/telephony/PhoneStateListener;' Interfaces Static fields Instance fields #0 : (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;) name : 'this$0' type : 'Lsiberguvenlik/balichit/MyActivity;' access : 0x1010 (FINAL SYNTHETIC) Direct methods #0 : (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;) name : '<init>' type : '(Lsiberguvenlik/balichit/MyActivity;)V' access : 0x10000 (CONSTRUCTOR) code registers : 2 ins :2 outs :1 insns size : 6 16-bit code units .. . Class #1 ... Dalvik VM Bytecode için daha fazla bilgi http://source.android.com/devices/tech/dalvik/dalvik-bytecode.html http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
  • 43. Uygulama Araçları (Aapt, Dexdump) • Dexdump – Android SDK ile birlikte gelen .dex dosyalarının disassembler araçıdır. Belirtilen dosya’nın dalvik VM bytecodelarını verir. • dexdump -d c:androidclasses.dex Processing 'c:androidclasses.dex'... Opened 'c:androidclasses.dex', DEX version '035' Class #0 Class descriptor : 'Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;' Access flags : 0x0000 () Superclass : 'Landroid/telephony/PhoneStateListener;' Interfaces Static fields Instance fields #0 : (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;) name : 'this$0' type : 'Lsiberguvenlik/balichit/MyActivity;' access : 0x1010 (FINAL SYNTHETIC) Direct methods #0 : (in Lsiberguvenlik/balichit/MyActivity$TelefonDurumuDinle;) name : '<init>' type : '(Lsiberguvenlik/balichit/MyActivity;)V' access : 0x10000 (CONSTRUCTOR) code registers : 2 ins :2 outs :1 insns size : 6 16-bit code units .. . Class #1 ... Dalvik VM Bytecode için daha fazla bilgi http://source.android.com/devices/tech/dalvik/dalvik-bytecode.html http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
  • 44. Android Adli-Bilişim ( Forensics ) • Bir durumda Android bir cihaz üzerinde adli bir konun araştırılması ,icelenmesini, delil toplanması vs gibi durumlar Android Adli Bilişimi konu almaktadır.
  • 45. Android Adli-Bilişim ( Forensics ) • Manuel • • Sqlite & App databaseleri Resimler, Tarihler, Accountlar, History, Cookieler, Uygulama shared preferences alanı vs
  • 46. Android Adli-Bilişim ( Forensics ) • Manuel – – adb shell ls
  • 47. Android Adli-Bilişim ( Forensics ) • Manuel – – Cd /data/data ls
  • 48. Android Adli-Bilişim ( Forensics ) • Manuel – – Cd /data/data/com.balichIT.AndroidSandbox Ls – – Cd /data/data/com.balichIT.AndroidSandbox/databases ls
  • 49. Android Adli-Bilişim ( Forensics ) • Manuel – – adb pull <nerdenalinacak> <nereyekoyapalanacak> ( cihazdan bilgisayara ) adb push <neredenalinacak> <nereyekopyalanacak> ( bilgisayardan cihaza ) – – adb pull /data/data/com.balichIT.AndroidSandbox/databases/webviewCache.db adb pull /data/data/com.balichIT.AndroidSandbox/databases/webview.db – Sqlite browser ile inceleyelim...
  • 50. Android Adli-Bilişim ( Forensics ) • Manuel
  • 51. Android Adli-Bilişim ( Forensics ) • Manuel
  • 52. Android Adli-Bilişim ( Forensics ) • Manuel – – – Cihazdaki tüm dosyaların dökümünü alıp bakalım • adb shell ls –l –R > tumdokum.txt Cihazdaki tüm logların dökümünü alıp bakalım • adb logcat -d > loglardokum.txt Cihazdaki servislerin durum dökümünü alalım • adb dumsys > sistemdokum.txt • Vs, vs
  • 53. Android Adli-Bilişim ( Forensics ) • SAFT – SAFT Mobil Forensics için geliştirilmiş ve community versiyonu ücretsiz olarak dağıtılan yerli bir yazılımdır. http://www.signalsec.com/portfolio/saft-mobile-forensics/
  • 54. Android Adli-Bilişim ( Forensics ) • SAFT – SAFT community versiyonu agent-based olarak çalışmaktadır. http://www.signalsec.com/portfolio/saft-mobile-forensics/
  • 55. Android Adli-Bilişim ( Forensics ) http://www.signalsec.com/portfolio/saft-mobile-forensics/
  • 56. Android Adli-Bilişim ( Forensics ) • SAFT community versiyonu ile cihaz üzerinden şu bilgiler alınabilinmektedir. http://www.signalsec.com/portfolio/saft-mobile-forensics/
  • 57. Android Adli-Bilişim ( Forensics ) • Oxygen – Oxygen Forensic® Suite forensics için geliştirilmiş bir yazılımdır. http://www.oxygen-forensic.com/en/
  • 58. Android Adli-Bilişim ( Forensics ) • Oxygen – Oxygen android ‘de Saft gibi agent-based olarak çalışmaktadır. – Oxygen ile sadece android tabanlı değil ios, nokia vs gibi diğer mobil cihazlar içinde kullanılabilinir. http://www.oxygen-forensic.com/en/
  • 59. Android Adli-Bilişim ( Forensics ) • Oxygen ile cihaz üzerinden şu bilgiler alınabilinmektedir. http://www.oxygen-forensic.com/en/
  • 60. Android Adli-Bilişim ( Forensics ) – – – – – – – Kişi listesi ? EVET  android.permission.READ_CONTACTS SMS listesi ? EVET  android.permission.READ_SMS Arama listesi ? EVET  android.permission.READ_CALL_LOG Neden duruyoruz peki? Hadi Kendimiz geliştirelim... 
  • 61. Android Adli-Bilişim ( Forensics ) – – Kişi listesi android.permission.READ_CONTACTS Cursor kisiler = this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); while (kisiler.moveToNext()) { String adi =kisiler.getString(kisiler.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)) ; String telefonNO = kisiler.getString(kisiler.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Log.d("SiberGuvenlik", "Adi: " + adi + " Numarasi : " + telefonNO); } kisiler.close();
  • 62. Android Adli-Bilişim ( Forensics ) – – SMS listesi ? android.permission.READ_SMS Cursor smsler= this.getContentResolver().query(Uri.parse("content://sms"), null,null, null, null); while (smsler.moveToNext()) { String adres = smsler.getString(smsler.getColumnIndex("address")) String body = smsler.getString(smsler.getColumnIndex(" body ")) String tarih= smsler.getString(smsler.getColumnIndex(" date ")) Log.d("SiberGuvenlik", " adres : " + adres + " body : " + body + " tarih: " + tarih); } smsler.close();
  • 63. Android Adli-Bilişim ( Forensics ) – – Arama listesi android.permission.READ_CALL_LOG ?? Ev ödevi  kopya: google= android.permission.READ_CALL_LOG uri.parse
  • 64. Android Uygulama Analizi – İhtiyaçlarımız? • • • Uygulamanın bağlantı kurduğu dış kaynaklar Uygulamanın kullandığı izinler Uygulamanın disasambler kodları veya source kodları – Yapabileceklerimiz • Hepsi!
  • 65. Android Uygulama Analizi • Uygulamanın bağlantı kurduğu dış kaynaklar. – 1. alternatifimiz emulatör’ün http-proxy seçeneği ile emulatörü bir proxy server’a yönlendirerek dinlemek bu seçenek için emulatör başlangıç parametresi olarak –http-proxy http://proxyserver:proxyserverport emulator -sdcard "c:androidsdcardSiberguvenlik.img" -avd siberguvenlik –http-proxy http:/..
  • 66. Android Uygulama Analizi • Uygulamanın bağlantı kurduğu dış kaynaklar. – 2. alternatifimiz emulatör’ün tcpdump seçeneği ile başlatılıp emulatörün network akışını pcap formatında dışa almak ve daha sonra pcap’ten manuel incelemek. bu seçenek için emulatör başlangıç parametresi olarak -tcpdump siberguvenlikapk.pcap emulator -sdcard "c:androidsdcardSiberguvenlik.img" -avd siberguvenlik -tcpdump siberguvenlikapk.pcap
  • 67. Android Uygulama Analizi • Uygulamanın bağlantı kurduğu dış kaynaklar. – 3.alternatifimiz emülatörün çalıştırılacağı computer’ı (sanal makinada olabilir) bir proxy’e yönlendirmek veya alternatif bir network dinleme aracı ile dinlemek. Bkz : wireshark
  • 68. Android Uygulama Analizi • Uygulamanın kullandığı izinler – 1.alternatifimiz aapt aracını hatırlıyalım aapt d permissions c:androidsiberguvenlik2.apk
  • 69. Android Uygulama Analizi • Uygulamanın kullandığı izinler – 2.alternatifimiz apktool ile apk dosyasını decoding ederek manifest dosyasını dışarı çıkartabiliriz. apktool d C:androidsiberguvenlik2.apk && cat siberguvenlik2/AndroidManifest.xml
  • 70. Android Uygulama Analizi • Uygulamanın Disassembler kodları – 1.alternatifimiz dexdump ‘ı hatırlayalım. Apk dosyasının içerisinden classess.dex dosyasını çıkartıp dexdump ile inceyelim. dexdump -d c:androidclasses.dex
  • 71. Android Uygulama Analizi • Sandboxlar – 1.alternatifimiz Tabiki Android Sandbox (yerlidir) – 2.alternatifimiz Anubis ( yerli değildir :P )
  • 72. Android Uygulama Analizi • Sandboxlar – Anubis
  • 73. Android Uygulama Analizi • Sandboxlar – Anubis
  • 74. Android Uygulama Analizi • Sandboxlar – Anubis
  • 75. Android Uygulama Analizi • Sandboxlar – Android Sandbox