SlideShare a Scribd company logo
ANDROID’İNYENİ KABUSU:
Medya Dosyaları
08.09.15
Oğuzhan Topgül
@oguzhantopgul
www.oguzhantopgul.com
2
X
STAGEFRIGHT AÇIKLIĞI
3
• Joshua Drake a.k.a @jduck tarafından yapılan bir araştırmanın neticesi
• 2015 BLACKHAT USA konferansında
Stagefright: Scary Code in the Heart of Android*
adlı sunumda anlatıldı.
• Bir çok Android cihaz halen açıklığa karşı korunmuyor.
* https://www.blackhat.com/us-15/briefings.html#stagefright-scary-code-in-the-heart-of-android
STAGEFRIGHT
• Android’in Multimedia Framework kütüphanesi
• Tüm ses ve video dosyalarını işler
• Video ve ses dosyalarının metadata’larını çıkartır
• Android 2.0 itibariyle AOSP’ye eklendi
• MEDIA SERVER altında çalışıyor.
4
STAGEFRIGHT
5
frameworks/base/media/java/android/media/MediaPlayer.java
frameworks/base/media/jni/android_media_MediaPlayer.cpp
* https://android.googlesource.com/platform/frameworks/base/+/master/media/
STAGEFRIGHT
6
frameworks/base/media/jni/android_media_MediaPlayer.cpp
frameworks/av/media/mediaserver/main_mediaserver.cpp
frameworks/av/media/libmediaplayerservice/MediaPlayerService.cpp
frameworks/av/media/libstagefright/MediaSource.cpp
frameworks/av/media/libstagefright/MediaExtractor.cpp
frameworks/av/media/libstagefright/AwesomePlayer.cpp
* https://android.googlesource.com/platform/frameworks/av/+/master/media
MEDIASERVER
mediaserver init tarafından çalıştırılıyor.
7
/init.rc dosyasından boot sırasında çalıştırılan bir native servis
MEDIASERVER
8
mediaserver servisi yüksek yetkilere sahip
mediaserver crash olduktan sonra yeniden başlıyor *
* https://android.googlesource.com/platform/system/core/+/master/init/readme.txt
STAGEFRIGHT
9
• libstagefright medya dosyalarını mediaserver servisi altında işliyor
• mediaserver yetkili bir native servis
- Bazı cihazlarda system haklarına bile sahip
• mediaserver crash olduktan sonra otomatik olarak yeniden başlıyor
* https://android.googlesource.com/platform/system/core/+/master/init/readme.txt
STAGEFRIGHT AÇIKLIĞI
• Çok farklı atak vektörleri mevcut (11+)
• MMS, Sayfa İçerisine <video> tag’i ile yerleştirme, ZararlıVideo’yu indirme, e-mail içerisinde, Chat
ve mesajlaşma programları ile NFC, Bluetooth, SDCard
• Video oynatma, meta-data parse etme gibi farklı yollarla istismar mümkün
• Binary dosya parser’lar genellikle açıklık barındırıyor
• Farklı dosya tipleri ile açıklığı sömürmek mümkün, MP4, 3GPP, vb.
• Farklı yollarla tetiklenebiliyor
• Ekranı döndürmek, Chat uygulamasını açmak, Galeri’yi açmak vb…
10
STAGEFRIGHT AÇIKLIĞI
11
12
• CVE-2015-1538, P0006, Google Stagefright ‘stsc’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1538, P0004, Google Stagefright ‘ctts’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1538, P0004, Google Stagefright ‘stts’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1538, P0004, Google Stagefright ‘stss’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1539, P0007, Google Stagefright ‘esds’ MP4 Atom Integer Underflow Remote Code Execution
• CVE-2015-3827, P0008, Google Stagefright ‘covr’ MP4 Atom Integer Underflow Remote Code Execution
• CVE-2015-3826, P0009, Google Stagefright 3GPP Metadata Buffer Overread
• CVE-2015-3828, P0010, Google Stagefright 3GPP Integer Underflow Remote Code Execution
• CVE-2015-3824, P0011, Google Stagefright ‘tx3g’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-3829, P0012, Google Stagefright ‘covr’ MP4 Atom Integer Overflow Remote Code Execution
MPEG-4
• MPEG-4 dosyaları Atom veya Box adı verilen yapı taşlarından oluşur.
13
* http://www.adobe.com/content/dam/Adobe/en/devnet/flv/pdfs/video_file_format_spec_v10.pdf
MPEG-4
• Atom tipleri (BoxType) 4 karakterden oluşan bir değerdir (4 Byte):
• Ör: ftyp, moov, trak, covr, esds, mvhd…
• 4 karakterlik bu değer FourCC (Four Character Code) olarak adlandırılır.
14
* http://www.adobe.com/content/dam/Adobe/en/devnet/flv/pdfs/video_file_format_spec_v10.pdf
MPEG-4
• MPEG-4 alslında bir container, içerisinde farklı medya formatlarını barındırabiliyor.
• moov atomu kendi altında alt atomlara ayrılıyor
15
ftyp mdatmoov
File Type
encoders
compatibility
Header
Media Data
* http://www.adobe.com/content/dam/Adobe/en/devnet/flv/pdfs/video_file_format_spec_v10.pdf
MOOV
ATOM
16
17
• CVE-2015-1538, P0006, Google Stagefright ‘stsc’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1538, P0004, Google Stagefright ‘ctts’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1538, P0004, Google Stagefright ‘stts’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1538, P0004, Google Stagefright ‘stss’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-1539, P0007, Google Stagefright ‘esds’ MP4 Atom Integer Underflow Remote Code Execution
• CVE-2015-3827, P0008, Google Stagefright ‘covr’ MP4 Atom Integer Underflow Remote Code Execution
• CVE-2015-3826, P0009, Google Stagefright 3GPP Metadata Buffer Overread
• CVE-2015-3828, P0010, Google Stagefright 3GPP Integer Underflow Remote Code Execution
• CVE-2015-3824, P0011, Google Stagefright ‘tx3g’ MP4 Atom Integer Overflow Remote Code Execution
• CVE-2015-3829, P0012, Google Stagefright ‘covr’ MP4 Atom Integer Overflow Remote Code Execution
• Açıklıklar farklı şekilde tetiklenebiliyor, video oynatma, meta-data parsing vb.
‘STTS’ATOM
INTEGER OVERFLOW
18
• PoC mp4 dosyaları: https://s3.amazonaws.com/zhafiles/Zimperium-Handset-Alliance/ZHA-Crash-PoC.zip
• sf-003.mp4 PoC mp4 dosyası ‘stts’ integer overflow’a sebep oluyor.
<video> tag’i HTLM5 ile
birlikte geldi
19
• Android’de Crash Log’lar logcat’e basılır ve /data/tombstones/ altında
tombstone_xx isimlendirmesiyle kaydedilir.
• sf-003.mp4 dosyasındaki saldırı vektörü: Meta-data ayrıştırması
‘STTS’ATOM
INTEGER OVERFLOW
20
‘STTS’ATOM
INTEGER OVERFLOW
StageFrightMetadataRetriever.cpp
21
‘STTS’ATOM
INTEGER OVERFLOW
MPEG4Extractor.cpp
22
‘STTS’ATOM
INTEGER OVERFLOW
MPEG4Extractor.cpp
23
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp
24
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
Saldırgan
kontrolünde
25
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
Dizi için
bellekte
yer
ayırılıyor
Dizi için bellekte ayrılan alan
mTimeToSampleCount * 2 * sizeof(uint32_t)
mTimeToSampleCount * 2 * 4
26
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
Dizi
dolduruluyor
27
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
Endian
Swapping
28
‘STTS’ATOM
Header Version Flags mTimeToSampleCount
Sıradan bir mp4 dosyasını inceleyelim
29
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
mTimeToSampleCount = 1
mTimeToSample
dizisi için
ayrılan alan
1 * 2 * 4 = 8
Döngü sınırı
mTimeToSampleCount * 2
= 2
Normal şartlarda mTimeToSampleCount < Döngü Sınırı < Dizi boyutu
30
‘STTS’ATOM
Header Version Flags mTimeToSampleCount
sf-003.mp4 dosyasını inceleyelim
31
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
mTimeToSampleCount
= 0x40000002
mTimeToSample
dizisi için
ayrılan alan
0x40000002 * 4 *2
= 0x200000010
Döngü sınırı
0x40000002 * 2
= 0x80000004
Olması Gereken: mTimeToSampleCount < Döngü Sınırı < Dizi boyutu ✔
32
‘STTS’ATOM
INTEGER OVERFLOW
33
‘STTS’ATOM
INTEGER OVERFLOW
… if you multiply two 32-bit integers, you get a
32-bit integer again, losing the upper 32 bits of the
result
mTimeToSampleCount = 0x40000002
mTimeToSample dizisi için ayrılan alan
0x40000002 * 4 *2
= 0x200000010
değil
= 0x00000010
/
* http://www.fefe.de/intof.html
34
‘STTS’ATOM
INTEGER OVERFLOW
… if you multiply two 32-bit integers, you get a
32-bit integer again, losing the upper 32 bits of the
result
mTimeToSampleCount = 0x40000002
mTimeToSample dizisi
için ayrılan alan
Döngü sınırı:
0x40000002 * 2
= 0x00000010
= 0x80000004
Olması Gereken: mTimeToSampleCount < Döngü Sınırı < Dizi boyutu ✗
* http://www.fefe.de/intof.html
35
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp < Android 4.4
Döngü sınırı çok büyük, dizinin boyutu küçük
36
‘STTS’ATOM
INTEGER OVERFLOW
32bit Unsigned Integer’ın max
değeri:
0xFFFFFFFF
mTimeToSampleCount >= 0x20000000
olduğunda overflow oluşuyor
0x20000000 * 4 * 2 = 100000000/
37
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp Android 5.0
Integer Overflow yakalanamıyor!
38
‘STTS’ATOM
INTEGER OVERFLOW
SampleTable.cpp Android 5.1.1 r5
Android 5.0
Android 5.1.1 r5
STAGEFRIGHTVS ASLR
• ASLR,Android 4.0 Ice Cream Sandwich ile geliyor.
• Ice Cream Sandwich’te exploitation mümkün
• Android 4.0 sonrası için ASLR Bypass gerekli
39
STAGEFRIGHT AÇIKLIĞI
40
41
42
HANGOUT
OPTIONS
SETTINGS
SMS
NASIL KORUNULUR
• Cihazınızı en güncel sürüme yükseltin (eğer geldiyse)
• MMS auto-fetch özelliğini devre dışı bırakın (Hangouts ve Messages
uygulamaları için)
43
MESSAGES
MORE
SETTINGS
MORE
SETTINGS
MMS
GÜNCELLEMELER AÇIKLIĞA
ÇÖZÜM GETİRİYOR MU?
• EXODUS Intelligence aynı fikirde değil
44
• Problem CVE-2015-3824, P0011, Google Stagefright ‘tx3g’ MP4 Atom Integer Overflow Remote Code Execution
açıklığının yaması ile ilgili
* https://blog.exodusintel.com/2015/08/13/stagefright-mission-accomplished/
STAGEFRIGHT PUBLIC
EXPLOIT?
• @jduck tarafından yayınlanmış bir Exploit kodu var, fakat…
45
STAGEFRIGHT HAKKINDA
DAHA FAZLA
46
https://mobile-security.zeef.com/oguzhan.topgul
47
OWASPTURKEY MOBILE
SECURITY WORKSHOP
• 14 Ekim 2015 Çarşamba
48
http://www.webguvenligi.org/haberler/mobil-guvenlik-calistayi-2015-2.html
RERERANSLAR
• StageFright - Zimperium Blog: https://blog.zimperium.com/experts-found-a-unicorn-in-the-heart-of-android/
• StageFright Vulnerability Details: https://blog.zimperium.com/stagefright-vulnerability-details-stagefright-detector-tool-released/
• Stagefriht Detailed Explanation: http://blog.fortinet.com/post/cryptogirl-on-stagefright-a-detailed-explanation
• FTYP Atom: http://www.ftyps.com/what.html
• F4V/MP4 File Format: http://www.adobe.com/content/dam/Adobe/en/devnet/flv/pdfs/video_file_format_spec_v10.pdf
• StageFrightMetadataReceiver.cpp: https://android.googlesource.com/platform/frameworks/av/+/android-4.4.2_r2.0.1/media/
libstagefright/StagefrightMetadataRetriever.cpp
• MPEG4Extractor.cpp: https://android.googlesource.com/platform/frameworks/av/+/android-4.4.2_r2.0.1/media/libstagefright/
MPEG4Extractor.cpp
• SampleTable.cpp: https://android.googlesource.com/platform/frameworks/av/+/android-4.4.2_r2.0.1/media/libstagefright/SampleTable.cpp
• Android 5.0 Eksik Integer Overflow Kontrolü: https://android.googlesource.com/platform/frameworks/av/+/f106b19%5E!/
49
TEŞEKKÜRLER
?
Oğuzhan Topgül
@oguzhantopgul
www.oguzhantopgul.com

More Related Content

Similar to Androidin Yeni Kabusu: Medya Dosyalari (Media Files: Android's New Nightmare)

Python video
Python videoPython video
Python videosersld98
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
BGA Cyber Security
 
Hping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif ÇalışmalarıHping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif ÇalışmalarıBGA Cyber Security
 
Open cv kütüphanesi
Open cv kütüphanesiOpen cv kütüphanesi
Open cv kütüphanesi
ahmetkakici
 
Python Programlama Diline Giriş - Güncelleme 2018
Python Programlama Diline Giriş - Güncelleme 2018Python Programlama Diline Giriş - Güncelleme 2018
Python Programlama Diline Giriş - Güncelleme 2018
Murat KARA
 
Python videosu
Python videosuPython videosu
Python videosusersld98
 
EXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATIONEXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATION
BGA Cyber Security
 
Ozgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama GelistirmeOzgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama Gelistirme
Burak Dede
 
INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ
BGA Cyber Security
 
Ceyhun Erturk Rasperry Pi
Ceyhun Erturk Rasperry PiCeyhun Erturk Rasperry Pi
Ceyhun Erturk Rasperry Pi
Ceyhun Erturk
 
Python videolari
Python videolariPython videolari
Python videolarisersld98
 
Hping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri OluşturmaHping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri OluşturmaBGA Cyber Security
 
Siber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif YaklaşımlarSiber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlik Derneği
 
Python Programlama Dili
Python Programlama DiliPython Programlama Dili
Python Programlama Dili
Cihan Özhan
 
Java me kursu-fatih
Java me kursu-fatihJava me kursu-fatih
Java me kursu-fatihsersld61
 
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
BGA Cyber Security
 
Cryptospot kullanım kılavuzu (v1.6.0)
Cryptospot   kullanım kılavuzu (v1.6.0)Cryptospot   kullanım kılavuzu (v1.6.0)
Cryptospot kullanım kılavuzu (v1.6.0)Neyasis Technology
 
SIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMASIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMA
BGA Cyber Security
 
Kampüs Ağlarında Aranan Kullanıcının Tespiti
Kampüs Ağlarında Aranan Kullanıcının TespitiKampüs Ağlarında Aranan Kullanıcının Tespiti
Kampüs Ağlarında Aranan Kullanıcının Tespiti
Gökhan AKIN
 
Siber güvenlik konferansı' 14 client-side security & csp (1)
Siber güvenlik konferansı' 14   client-side security & csp (1)Siber güvenlik konferansı' 14   client-side security & csp (1)
Siber güvenlik konferansı' 14 client-side security & csp (1)Mehmet Ince
 

Similar to Androidin Yeni Kabusu: Medya Dosyalari (Media Files: Android's New Nightmare) (20)

Python video
Python videoPython video
Python video
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
 
Hping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif ÇalışmalarıHping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif Çalışmaları
 
Open cv kütüphanesi
Open cv kütüphanesiOpen cv kütüphanesi
Open cv kütüphanesi
 
Python Programlama Diline Giriş - Güncelleme 2018
Python Programlama Diline Giriş - Güncelleme 2018Python Programlama Diline Giriş - Güncelleme 2018
Python Programlama Diline Giriş - Güncelleme 2018
 
Python videosu
Python videosuPython videosu
Python videosu
 
EXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATIONEXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATION
 
Ozgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama GelistirmeOzgur Web Catilari Mobil Uygulama Gelistirme
Ozgur Web Catilari Mobil Uygulama Gelistirme
 
INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ
 
Ceyhun Erturk Rasperry Pi
Ceyhun Erturk Rasperry PiCeyhun Erturk Rasperry Pi
Ceyhun Erturk Rasperry Pi
 
Python videolari
Python videolariPython videolari
Python videolari
 
Hping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri OluşturmaHping ile IP/ICMP ve UDP Paketleri Oluşturma
Hping ile IP/ICMP ve UDP Paketleri Oluşturma
 
Siber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif YaklaşımlarSiber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif Yaklaşımlar
 
Python Programlama Dili
Python Programlama DiliPython Programlama Dili
Python Programlama Dili
 
Java me kursu-fatih
Java me kursu-fatihJava me kursu-fatih
Java me kursu-fatih
 
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2Log Yönetimi ve Saldırı Analizi Eğitimi - 2
Log Yönetimi ve Saldırı Analizi Eğitimi - 2
 
Cryptospot kullanım kılavuzu (v1.6.0)
Cryptospot   kullanım kılavuzu (v1.6.0)Cryptospot   kullanım kılavuzu (v1.6.0)
Cryptospot kullanım kılavuzu (v1.6.0)
 
SIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMASIZMA TESTLERİNDE BİLGİ TOPLAMA
SIZMA TESTLERİNDE BİLGİ TOPLAMA
 
Kampüs Ağlarında Aranan Kullanıcının Tespiti
Kampüs Ağlarında Aranan Kullanıcının TespitiKampüs Ağlarında Aranan Kullanıcının Tespiti
Kampüs Ağlarında Aranan Kullanıcının Tespiti
 
Siber güvenlik konferansı' 14 client-side security & csp (1)
Siber güvenlik konferansı' 14   client-side security & csp (1)Siber güvenlik konferansı' 14   client-side security & csp (1)
Siber güvenlik konferansı' 14 client-side security & csp (1)
 

Androidin Yeni Kabusu: Medya Dosyalari (Media Files: Android's New Nightmare)