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.
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.
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.
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..
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..
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
48. Android Adli-Bilişim ( Forensics )
•
Manuel
–
–
Cd /data/data/com.balichIT.AndroidSandbox
Ls
–
–
Cd /data/data/com.balichIT.AndroidSandbox/databases
ls
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/
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/
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