WEB TABANLI ANDROİD KÖTÜCÜL YAZILIM TESPİT SİSTEMİ. Ömer KİRAZ YÜKSEK LİSANS TEZİ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI

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

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


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

MOBIL UYGULAMA GELIŞTIRME

Google Play Zararlısı İnceleme Raporu

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

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

Kaspersky Open Space Security: Release 2. İşletmeniz için birinci sınıf bir BT güvenliği çözümü

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

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

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Mobil Cihazlardan Web Servis Sunumu

Red Alert 2.0 Truva Atı ve Bankacılık Zararlısı İnceleme Raporu

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

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

BİT in Temel Bileşenleri (Yazılım-1)

İŞLETİM SİSTEMLERİ. (Operating Systems)

Düzce Üniversitesi Bilim ve Teknoloji Dergisi

BULUT BİLİŞİM VE BÜYÜK VERİ ARAŞTIRMA LABORATUVARI. Ekim 2017

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

BioAffix Ones Technology nin tescilli markasıdır.

Bilişim Teknolojileri Temelleri 2011

Android Telefonlarla Yol Bozukluklarının Takibi: Kitle Kaynaklı Alternatif Çözüm

Exobot Bankacılık Zararlısı İnceleme Raporu

İŞLETİM SİSTEMLERİ. Enformatik Bölümü

Ağ Trafik ve Forensik Analizi

BioAffix Ones Technology nin tescilli markasıdır.

Servis olarak Altyapı

Sertan Kolat

Model-Tabanlı ve Rastgele Karma Yöntem

Hızlı Başlangıç Kılavuzu

EKLER EK 12UY0106-5/A4-1:

Andorid İşletim Sistemi Uyumlu Ösym Sınavları Uygulaması

Qlik Sense için sistem gereksinimleri. Qlik Sense June 2017 Copyright QlikTech International AB. Tüm hakları saklıdır.

MOBİL İŞLETİM SİSTEMLERİ (MOBILE OPERATING SYSTEMS)

İÇİNDEKİLER. YAZARLAR HAKKINDA... v. RESİMLER LİSTESİ...xv. 1.1.Bulut Bilişim Kavramının Analizi...1 BÖLÜM 1: TEMELLER...1

SİBER SUÇLARA KARŞI SİBER ZEKA

Akademik Dünyada Özgür Yazılım. Akademik Dünyada. Onur Tolga Şehitoğlu

Öğrenciler için Kablosuz İnternet Erişimi (Wi-Fi) Kullanım Kılavuzu

2000 li yıllardan itibaren teknolojinin hızlı gelişiminden belki de en büyük payı alan akıllı telefon ve tabletler gibi kablosuz iletişim olanağı

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.


Bilgisayar, elektronik bir cihazdır ve kendi belleğinde depolanan talimatları sırasıyla uygulayarak çalışır. İşler. Bilgi İşlem Çevrimi

Temel Bilgi Teknlolojileri 1. Ders notları 5. Öğr.Gör. Hüseyin Bilal MACİT 2017

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Web Uygulama Güvenliği Kontrol Listesi 2010

Hızlı ve Güvenli Vale Hizmeti

Vitel. Manage Engine. Opmanager Yönetici Özeti

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

Tek Arayüz. Çok Fonksiyon. Kolay Kullanım. Komut Satırı ile Vedalaşın

TÜBİTAK ULAKBİM ELEKTRONİK İMZA ENTEGRASYONU HİZMET ALIMI TEKNİK ŞARTNAMESİ

BioAffix Ones Technology nin tescilli markasıdır.

Qlik Sense için sistem gereksinimleri. Qlik Sense 3.2 Telif Hakkı QlikTech International AB. Tüm hakları saklıdır.

Bilgisayar Yazılımları

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

JAVA MOBIL UYGULAMALAR

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

Yazılım/Donanım Farkı

Bilgi Güvenliği Eğitim/Öğretimi

SMTP Protokolü ve Spam Mail Problemi

UHeM ve Bulut Bilişim

İşletme ve Devreye Alma Planı Yerel Okul Sunucusu Uygulama Yazılımları Prototipi TRscaler Technology Solutions

SAUPORT V3 (2014) Öğrenci Kullanım Rehberi Uzaktan Eğitim Araştırma ve Uygulama Merkezi

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

BioAffix Ones Technology nin tescilli markasıdır.

Wolvox Kapı Ekranı. AKINSOFT Wolvox Kapı Ekranı Yardım Dosyası. Doküman Versiyon :

ÖNDER BİLGİSAYAR KURSU. Sistem ve Ağ Uzmanlığı Eğitimi İçeriği

Bilgisayar Sistemlerine Genel Bakış

Birey Okulları Office 365

4. Bölüm Programlamaya Giriş

Ders İ zlencesi. Ders Başlığı. Dersin amacı. Önceden sahip olunması gereken beceri ve bilgiler. Önceden alınması gereken ders veya dersler

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

AKILLI TATIL PLANLAMA SISTEMI

XMail. Kurulum ve Senkronizasyon Ayarları Rehberi

Hızlı ve Güvenli Vale Hizmeti

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

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

Linux İşletim Sistemi Tanıtımı

Asp.Net Veritabanı İşlemleri

Sanal Santral A.Ş. Çözümleri

İşletim Sistemi. BTEP205 - İşletim Sistemleri

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi

Windows Live ID ve parolanızı giriniz.

Programlama Yazılımı ile Web Sitesi Oluşturma

Yüksek Öğretimde Mobil Eğitime Geçiş İçin Yol Haritası: Atılım Üniversitesi Örneği

Trend Micro Worry-Free Business Security 8.0 İlk Kez Kurulumla İlgili İpuçları ve Püf Noktaları

ELEKTRONİK İMZALI BAŞVURU ARAYÜZÜ TALİMATI

Karabük Üniversitesi Bilgi Sistemi Android Uygulaması. Android Application of Karabük University Information System

PHP 1. Hafta 1. Sunum

Bilgi Servisleri (IS)

FAN SELECTOR FAN SELECTOR FAN SEÇİM YAZILIMI.

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

İşletim Sistemleri. Discovering Computers Living in a Digital World

CHECKPOINT VPN KULLANIM KILAVUZU

ODTÜ Kampüs Izgara Hesaplama Uygulaması

Bireysel İnternet Şubesi

Transkript:

WEB TABANLI ANDROİD KÖTÜCÜL YAZILIM TESPİT SİSTEMİ Ömer KİRAZ YÜKSEK LİSANS TEZİ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ HAZİRAN 2017

Ömer KİRAZ tarafından hazırlanan WEB TABANLI ANDROİD KÖTÜCÜL YAZILIM TESPİT SİSTEMİ adlı tez çalışması aşağıdaki jüri tarafından OY BİRLİĞİ ile Gazi Üniversitesi Bilgisayar Mühendisliği Anabilim Dalında YÜKSEK LİSANS TEZİ olarak kabul edilmiştir. Danışman: Yrd.Doç.Dr.İbrahim Alper DOĞRU Bilgisayar Mühendisliği, Gazi Üniversitesi Bu tezin, kapsam ve kalite olarak Yüksek Lisans Tezi olduğunu onaylıyorum... Başkan : Prof. Dr. Ali YAZICI Yazılım Mühendisliği, Atılım Üniversitesi Bu tezin, kapsam ve kalite olarak Yüksek Lisans Tezi olduğunu onaylıyorum... Üye : Doç. Dr. Necaattin BARIŞÇI Bilgisayar Mühendisliği, Gazi Üniversitesi Bu tezin, kapsam ve kalite olarak Yüksek Lisans Tezi olduğunu onaylıyorum... Tez Savunma Tarihi: 05/06/2017 Jüri tarafından kabul edilen bu tezin Yüksek Lisans Tezi olması için gerekli şartları yerine getirdiğini onaylıyorum... Prof. Dr. Hadi GÖKÇEN Fen Bilimleri Enstitüsü Müdürü

ETİK BEYAN Gazi Üniversitesi Fen Bilimleri Enstitüsü Tez Yazım Kurallarına uygun olarak hazırladığım bu tez çalışmasında; Tez içinde sunduğum verileri, bilgileri ve dokümanları akademik ve etik kurallar çerçevesinde elde ettiğimi, Tüm bilgi, belge, değerlendirme ve sonuçları bilimsel etik ve ahlak kurallarına uygun olarak sunduğumu, Tez çalışmasında yararlandığım eserlerin tümüne uygun atıfta bulunarak kaynak gösterdiğimi, Kullanılan verilerde herhangi bir değişiklik yapmadığımı, Bu tezde sunduğum çalışmanın özgün olduğunu, bildirir, aksi bir durumda aleyhime doğabilecek tüm hak kayıplarını kabullendiğimi beyan ederim. Ömer KİRAZ 05/06/2017

iv WEB TABANLI ANDROİD KÖTÜCÜL YAZILIM TESPİT SİSTEMİ (Yüksek Lisans Tezi) Ömer KİRAZ GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ Haziran 2017 ÖZET İstatiksel araştırmalara göre akıllı telefonların en çok kullandığı mobil işletim sistemi Google tarafından geliştirilmiş olan Android dir. Android işletim sistemi Linux tabanlı ve açık kaynak kodludur. Google Play uygulama marketine uygulama yüklenirken uygulamanın detaylı olarak analizi yapılmadığından dolayı Google Play market ve diğer uygulama marketlerindeki uygulamaların iyicil ya da kötücül olduğu bilinmemektedir. Bu yüzden Google Play marketteki ve diğer uygulama marketlerindeki uygulamaların kötücül veya iyicil olduğunu analiz yapan sistemlere ihtiyaç vardır. Bu tezde, Android kötücül yazılım tespit sistemleri üzerine güncel araştırmalar incelenmiştir ve statik analiz yöntemini kullanan istemci ve sunucu mimarisine sahip bir web uygulaması geliştirilmiştir. İstemci ve sunucu mimarisine sahip uygulamanın geliştirilmesindeki en önemli neden cep telefonlarının kısıtlı kaynaklara sahip olmasıdır. Android uygulamaların kötücül veya iyicil olduğunun tespitini yapan hesaplama yönteminin başarısını arttırmak için hesaplama yönteminde VirsuTotal API kullanılmıştır. Geliştirilen web uygulaması ile kullanıcılar Android uygulamaları sunucuya yükleyerek ya da uygulama arayarak analiz yapabilmektedir. Android uygulamaları sunucuya arayarak yükleyebilmek için öncelikle Google Play marketten aranan uygulama ile ilgili bilgiler web kazıma ile elde edilmektedir. İndirilmek istenilen uygulama seçilerek Android uygulamalara sahip web sayfalarında web kazıma işlemi yapılarak otomatik olarak indirilmektedir. Geliştirilen sistemin iyicil ve kötücül veri setlerindeki başarısı test sonuçlarına göre %97,02'dir. Bilim Kodu : 92429 Anahtar Kelimeler : Android, Kötücül yazılım tespit sistemi, Android güvenlik, Mobil güvenlik, Statik analiz Sayfa Adedi : 86 Danışman : Yrd. Doç. Dr. İbrahim Alper DOĞRU

v WEB BASED ANDROID MALWARE SOFTWARE DETECTION SYSTEM (M. Sc. Thesis) Ömer KİRAZ GAZİ UNIVERSITY GRADUATE SCHOOL OF NATURAL AND APPLIED SCIENCES June 2017 ABSTRACT According to statistical studies, the mobile operating system most used by smartphones is Android, which is developed by Google. Android operating system is Linux based and open sourced. However, it is not known whether the applications from Google Play and other stores are malicious software or not because applications uploaded to Google Play are not analyzed in detail. Therefore, there is a need for systems that analyze applications from Google Play and other stores for malicious software. In this thesis, up-to-date studies on Android malware detection systems were reviewed and a web application using clientserver architecture and static analysis method was developed. The most important reason behind the client-server architecture is the fact that mobile phones have limited resources. VirusTotal API was used to increase the success rate of the calculation method that determines if an Android application is malicious or not. Via this web application, users can analyze applications by uploading the Android applications to the server or searching for the applications. For users to be able to upload the applications to the server by searching, first, the related information about the application is obtained from Google Play using web-scrapping technique. When the application is selected, it is automatically downloaded using web-scrapping from websites that serve Android applications. According to the evaluation, the developed system has a success rate of 97.02% on benign and malicious datasets. Science Code : 92429 Key Words : Android, Malware detection systems, Android security, Mobile security, Static analysis Page Number : 86 Supervisor : Assist. Prof. Dr. İbrahim Alper DOĞRU

vi TEŞEKKÜR Yüksek lisans çalışmalarımın her aşamasında kıymetli katkıları ve eleştirileriyle yol gösteren, beni her zaman çalışmalarımın ilerlemesi yönünde teşvik eden ve güven veren değerli danışmanım Yrd. Doç. Dr. İbrahim Alper DOĞRU ya teşekkür ederim. Ayrıca, okul hayatım boyunca her türlü zorluğa rağmen desteklerini ve sevgilerini benden esirgemeyen, bana gönül bağıyla bağlı olan annem, babam, kardeşlerimle birlikte bana olan sevgisi ve sabrı hiç bitmeyen nişanlıma tüm kalbimle sonsuz teşekkür ediyorum.

vii İÇİNDEKİLER Sayfa ÖZET... ABSTRACT... TEŞEKKÜR... İÇİNDEKİLER... ÇİZELGELERİN LİSTESİ... ŞEKİLLERİN LİSTESİ... SİMGELER VE KISALTMALAR... iv v vi vii ix x xii 1. GİRİŞ... 1 2. YÖNTEM VE ARAÇLAR... 3 2.1. Statik Analiz Yöntemi... 3 2.1.1. Literatürde geçen statik analiz yöntemleri... 3 2.1.2. Literatürdeki diğer analiz yöntemleri... 14 2.2. Android İşletim Sistemi Mimarisi ve Kötücül Yazılımlar... 25 2.2.1. Akıllı cihazlar... 25 2.2.2. Android işletim sistemi mimarisi... 27 2.2.3. Android uygulamaların yapısı... 28 2.2.4. Android güvenlik politikaları... 31 2.2.5. Kötücül yazılım aileleri... 34 3. İSTEMCİ-SUNUCU MİMARİSİNDE GELİŞTİRİLEN ANDROİD KÖTÜCÜL YAZILIM TESPİT SİSTEMİ... 37 3.1. İyicil ve Kötücül Uygulama Veri Setlerinin Oluşturulması... 41 3.2. Uygulamaların Bilgilerinin Elde Edilmesi... 43 3.3. Kötücül ve İyicil Uygulama Değerlendirme İşlemi... 48 3.4. Veritabanı Tasarımı... 50

viii Sayfa 4. BULGULAR VE TARTIŞMA... 63 5. SONUÇ... 69 KAYNAKLAR... 71 EKLER... 79 EK-1. Eşik değer hesaplanması için kullanılan kod parçası... 80 EK-2. Apktool ile tersine mühendislik yapılabilmesi için kullanılan kod parçası... 81 EK-3. Google Play web sayfasındaki web kazıma işlemi için kullanılan kod parçası.. 82 EK-4. APKPure web sayfasındaki web kazıma işlemi için kullanılan kod parçası... 83 EK-5. APK Leecher web sayfasındaki web kazıma işlemi için kullanılan kod parçası 84 EK-6. APKBucket web sayfasındaki web kazıma işlemi için kullanılan kod parçası... 85 ÖZGEÇMİŞ... 86

ix ÇİZELGELERİN LİSTESİ Çizelge Sayfa Çizelge 1.1. Tehlikeli izin ve izin grupları... 2 Çizelge 3.1. Veri seti özeti... 41 Çizelge 3.2. VirusTotal e göre oluşan veri seti özeti... 42 Çizelge 3.3. Statik analiz çalışmalarında kullanılan veri seti bilgileri... 42 Çizelge 3.4. İyicil veri setinde en çok kullanılan 10 izin... 44 Çizelge 3.5. Kötücül veri setinde en çok kullanılan 10 izin... 45 Çizelge 3.6. Kötücül veri setinde en çok kullanılan 10 kötücül yazılım ailesi... 46 Çizelge 3.7. FakeInstaller kötücül yazılım ailesinin en çok kullandığı 10 izin... 46 Çizelge 3.8. DroidKungFu kötücül yazılım ailesinin en çok kullandığı 10 izin... 47 Çizelge 3.9. Plankton kötücül yazılım ailesinin en çok kullandığı 10 izin... 48 Çizelge 3.10. En yüksek ve en düşük kötücül değerlere sahip izinler... 49 Çizelge 4.1. Android 4.1 sürümündeki izinlere göre değerlendirme sonuçları... 63 Çizelge 4.2. Veri setlerindeki uygulamaların kullandıkları izinlere göre değerlendirme sonuçları... 67 Çizelge 4.3. Android 4.1 deki izinler ve VirusTotal e göre değerlendirme sonuçları... 65 Çizelge 4.4. Veri setlerindeki izinler ve VirusTotal e göre değerlendirme sonuçları... 66 Çizelge 4.5. Statik analiz yöntemlerinin karşılaştırılması... 67

x ŞEKİLLERİN LİSTESİ Şekil Sayfa Şekil 2.1. DroidMat mimarisinin yapısı... 4 Şekil 2.2. Drebin aracının statik analiz adımları... 5 Şekil 2.3. APK Auditor sistem mimarisi... 6 Şekil 2.4. DroidOL sisteminin mimarisi... 7 Şekil 2.5. Wang ve diğerlerinin geliştirdiği sistemin mimarisi... 8 Şekil 2.6. Sokolova ve diğerlerinin geliştirdiği sistemin çalışma prensibi... 9 Şekil 2.7. Dexteroid mimarisi... 10 Şekil 2.8. Anwar ve diğerlerinin geliştirdiği sistem mimarisi... 11 Şekil 2.9. Wu ve diğerlerinin geliştirdiği sistem mimarisi... 12 Şekil 2.10. Arslan ve diğ. nin geliştirdiği sistemin akış diyagramı... 13 Şekil 2.11. Aynı tip ama farklı uygulamaların internet ağ trafik deseni... 15 Şekil 2.12. ShotGun ve K-9 mail uygulamalarının virüslü ve virüssüz versiyonlarının ağ trafik desenleri... 15 Şekil 2.13. TrafficAV sisteminin çalışma adımları... 16 Şekil 2.14. DroidAuditor sisteminin çalışma mimarisi... 17 Şekil 2.15. Andro-Profiler sisteminin çalışma mimarisi... 18 Şekil 2.16. Garg ve diğerlerinin geliştirdiği sistemin iş akışı... 19 Şekil 2.17. Chang ve diğerlerinin geliştirdiği sistemin mimarisi... 20 Şekil 2.18. Shi ve diğerlerinin geliştirdiği sistemin mimarisi... 21 Şekil 2.19. ScanMe Mobile sisteminin mimarisi... 22 Şekil 2.20. Singh ve diğerlerinin geliştirdiği sistemin mimarisi... 23 Şekil 2.21. Wang ve diğerlerinin geliştirdiği sistemin mimarisi... 24 Şekil 2.22. Dünya çapındaki akıllı telefon işletim sistemi pazar payı... 26 Şekil 2.23. Android işletim sistemi mimarisi... 27

xi Şekil Sayfa Şekil 2.24. Android uygulaması sonucu oluşan dosyalar... 29 Şekil 2.25. AndroidManifest.xml örneği... 30 Şekil 2.26. Android temel bileşenleri... 31 Şekil 2.27. Toplam uygulama ve market başına tespit edilen kötücül yazılım... 33 Şekil 3.1. Geliştirilen sistemin mimarisi... 37 Şekil 3.2. Alıcı işlem karakteristikleri eğrisi karşılaştırması... 39 Şekil 3.3. Eşik değer hesaplanması için kullanılan kod parçasının algoritması... 40 Şekil 3.4. Tersine mühendislik kod parçasının algoritması... 43 Şekil 3.5. Geliştirilen sistemin varlık-ilişki diyagramı... 51 Şekil 3.6. Geliştirilen web uygulamasının çalışma adımları... 52 Şekil 3.7. Geliştirilen web uygulamasının uygulama arama arayüzü... 52 Şekil 3.8. Google Play web sayfasındaki web kazıma işleminin algoritması... 53 Şekil 3.9. XPath yolunun belirlenmesi... 54 Şekil 3.10. Futbol kelimesine göre çıkan arama sonucu... 55 Şekil 3.11. APKPure web sitesindeki web kazıma kod parçasının algoritması... 56 Şekil 3.12. APKPure web sayfasında bulunan indirme linki... 57 Şekil 3.13. APK Leecher web sitesindeki web kazıma kod örneğinin algoritması... 58 Şekil 3.14. APK Leecher web sayfasında bulunan indirme linki... 58 Şekil 3.15. APKBucket web sitesindeki web kazıma kod örneğinin algoritması... 59 Şekil 3.16. APKBucket web sayfasında bulunan indirme linki... 60 Şekil 3.17. Uygulama yükle seçeneğinin ekran görüntüsü... 61 Şekil 3.18. Analiz sonucunun ekran görüntüsü... 62

xii SİMGELER VE KISALTMALAR Bu çalışmada kullanılmış kısaltmalar, açıklamaları ile birlikte aşağıda sunulmuştur. Kısaltmalar Açıklamalar API Application Programming Interface APK Android Package ASM Android Security Modules CPU Central Process Unit DNS Domain Name Service GPS Global Positioning System HTTP Hyper Text Transfer Protocol IMEI International Mobile Equipment Identity IMSI International Mobile Subscriber Identity IOS iphone Operating System KNN K Nearest Neighbour MD5 Message Digest 5 PCAP Package Capture ROC Receiver Operating Characteristic SD Secure Digital SMS Short Message Sevice TCP Transmission Control Protocol

1 1. GİRİŞ Akıllı telefonların kullanımı dünya çapında günden güne artmaktadır. Akıllı telefon kullanıcıları bilgisayarlarına ihtiyaç duymadan banka, alışveriş, web sayfası gezintisi, oyun oynama ve benzeri işlemleri kolaylıkla gerçekleştirmektedir. International Data Corporation (IDC) firmasının 2016 3. çeyrek raporuna göre; dünya çapında akıllı telefon pazarında yıllık %1,1 artış gerçekleşmiştir ve akıllı telefon pazarında Android in market pazarındaki payı %86,8 olarak gerçekleşmiştir [1]. G Data H1/2016 raporuna göre 2016 yılının ilk yarısında dünya çapında Android platformunun kullanımı %68 olarak belirlenmiştir [2]. Ayrıca yine bu rapora göre 1 723 265 adet yeni kötücül uygulama örneği tespit edilmiştir [2]. Yeni kötücül yazılımların sayısı artmakta ve buna paralel olarak kötücül yazılımların tespit edilmesini engellemek için kötücül yazılımların karmaşıklığı da artmaktadır. Google I/O 2017 de duyurulan Google Play Protect in, Play Store uygulamasına gömülü olarak çalışacağı ve uygulamaların yüklenmeden önce ve yüklenmeden sonra taratılacağı belirtilmiştir [3,4]. Android platformunun özgür ve açık kaynak kodlu bir işletim sistemine sahip olması ve Google Play markete [5] uygulama eklenirken uygulamanın detaylı olarak bir incelemesi yapılmamasından dolayı Android uygulamalar kötücül yazılım geliştiricilerin hedefi haline gelmiştir. Bunları engellemek için Android market çalışmalar yapmaktadır. Bu doğrultuda Android 6.0 Marshmallow ile birlikte Çizelge 1.1 de verilen Android in tehlikeli olarak belirlemiş olduğu izinler çalışma zamanında kullanıldığında işletim sistemi kullanıcıya uyarı vererek iznin kullanımı için kullanıcıdan izin almaktadır. Ayrıca yine bu sürümde önceki sürümlerden farklı olarak uygulamaların kullandıkları izinleri kapatma seçeneği sunulmaktadır. Bu belirtilen özellikler Android 6.0 ve sonrasını kapsadığından dolayı eski Android sürümlerini kullanan kullanıcılar bu özellikleri kullanamayacaklardır. Android kullanıcılarının %87 si güncel olmayan sürümleri kullandığından bütün Android kullanıcılarını kapsayan çözümler gereklidir [2].

2 Çizelge 1.1. Tehlikeli izin ve izin grupları [6] İZİN GRUBU TAKVİM KAMERA REHBER KONUM MİKROFON TELEFON SENSÖRLER SMS DEPOLAMA İZİNLER READ_CALENDAR WRITE_CALENDAR CAMERA READ_CONTACTS WRITE_CONTACTS GET_ACCOUNTS ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION RECORD_AUDIO READ_PHONE_STATE CALL_PHONE READ_CALL_LOG WRITE_CALL_LOG ADD_VOICEMAIL USE_SIP PROCESS_OUTGOING_CALLS BODY_SENSORS SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMS READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE Bu yüzden Google Play market [5] ve diğer uygulama marketlerinde bulunan uygulamaların iyicil ya da kötücül yazılım olduğunu tespit eden sistemlerin geliştirilmesi gereklidir. Uygulamaların iyicil ya da kötücül olduğunu statik analiz yöntemi kullanarak tespit eden sunucu ve istemci mimarisinde geliştirilmiş Android kötücül yazılım tespit sistemi olarak tanımlanabilecek olan tez çalışmasının geri kalanı şu şekilde planlanmıştır: 2. bölümde tez çalışmasında kullanılan yöntem ve araçlar sunulmuştur. 3. bölümde geliştirilen web tabanlı Android kötücül yazılım tespit sistemi tüm detaylarıyla sunulmuştur. 4. bölümde çalışma kapsamında elde edilen bulgular ve tartışma sunulmuştur. Son olarak 5. bölümde sonuç ve öneriler sunulmuştur.

3 2. YÖNTEM VE ARAÇLAR Android kötücül yazılım çeşitleri ve sayısı arttıkça koruma yöntemleri artmakta ve çeşitlenmektedir [7]. Android uygulamalarda bulunan kötücül yazılımları tespit etmek için tez çalışmasında statik analiz yöntemini kullanan bir sistem geliştirilmiştir. Bu başlık altında literatürdeki statik analiz yöntemini kullanan çalışmalardan ve literatürde bulunan diğer analiz yöntemlerinden bahsedilmiştir. 2.1. Statik Analiz Yöntemi Statik analiz yöntemi, uygulamanın Android cihaza yüklenmeden önce kötücül olup olmadığının tespitini yapan analiz yöntemidir. Statik analiz yönteminin sağlamış olduğu en önemli avantajlardan birisi uygulamanın Android cihaza yüklenmeden önce analizin yapılmasından dolayı kötücül yazılımın Android cihaza bulaşmasını önlemesidir. Bu analiz yöntemi hızlıdır fakat kod karıştırma tekniklerine ve polimorfik zararlı yazılım (işlevselliğini değiştirmeden kodu değiştiren) ile başa çıkma becerisine karşı sınırlıdır [8]. Bu analiz yönteminde uygulamanın APK (Android Package) dosyası kullanılmaktadır. Bir apk dosyasında izinler, Java kodları, niyetler (intent), ağ adresleri, metinler ve donanım bileşenleri gibi çeşitli özellikler bulunmaktadır [9]. 2.1.1. Literatürdeki statik analiz yöntemleri Literatür taraması ile elde edilen statik analiz yöntemini kullanan çalışmalar aşağıdaki başlıklarda anlatılmıştır. DroidMat DroidMat [10], uygulamaların iyicil veya kötücül olduğunu tespit etmek için statik analiz yöntemini kullanmaktadır. Her bir uygulamaya ait AndroidManifest.xml dosyasında bulunan izinler, diğer bileşenler (aktivite, servis ve alıcı) ve uygulamaların bayt kodlarında bulunan API (Application Programming Interface) çağrıları özellik olarak kullanılmıştır [10]. DroidMat çalışmasının mimarisi Şekil 2.1 de gösterilmiştir.

4 Şekil 2.1. DroidMat mimarisinin yapısı [7] Şekil 2.1 deki DroidMat mimarisini inceleyecek olursak; statik davranış çıkartımı bölümünde Apktool [11] aracı kullanılarak iyicil ve kötücül uygulamaların AndroidManifest.xml ve smali dosyaları elde edilmektedir. Bu dosyalarda bulunan izinler, aktiviteler, servis ve alıcı bileşenleri, niyet (intent) ve API çağrıları özellik olarak kabul edilmektedir. Uygulama fonksiyonel davranış tespiti bölümünde kötücül uygulamaların farklı niyetlerini tespit etmek için K-means ve Expectation Maximization (Beklenti Maksimizasyonu) algoritmaları kullanılmıştır. Kümeleme algoritmalarındaki küme sayılarını tespit etmek için tekil değer ayrışımı metodu kullanılmıştır. Android kötücül yazılım tespiti bölümünde her bir kümenin özelliklerini temsil eden profiller verilerek kötücül yazılımlar KNN (K Nearest Neighbour) ve NaiveBayes sınıflandırıcı algoritmaları ile tespit edilmiştir [10]. Drebin Drebin çalışmasında, kötü amaçlı uygulamaların doğrudan akıllı telefonda tanımlanmasını sağlayan Android kötü amaçlı yazılım tespiti için bir yöntem sunulmuştur [12,13]. Geliştirilen yönteme göre uygulama kodundan ve AndroidManifest.xml dosyasından birçok

5 özellik toplanmıştır. Bu toplanan özellikler ortak vektör uzayına kayıt edilmektedir. Uygulamanın kullanmış olduğu izinler, niyetler ve API çağrıları ortak uzay vektöründe belirli bir bölgeye denk gelmektedir. Bu geometrik gösterim ile makine öğrenme teknikleri kullanılarak otomatik olarak kötü amaçlı yazılım tespiti yapılmaktadır. Drebin çalışmasının kullandığı statik analiz adımları Şekil 2.2 de gösterilmiştir. Şekil 2.2. Drebin aracının statik analiz adımları [14] Şekil 2.2 incelendiğinde; statik analiz adımında Android uygulamaların farklı özellik setleri AndroidManifest.xml ve dex kod dosyalarından elde edilmektedir. Vektör uzayına gömme adımında, çıkartılan özellik setleri ortak bir vektör uzayında eşleştirilmiştir. Bu vektör uzayı ile özelliklerin ve kalıpların kombinasyonları geometrik olarak analiz edilmektedir. Öğrenme tabanlı tespit adımında, özellik setlerinin gömülmesi sayesinde destek vektör makineleri (Support Vector Machines) gibi verimli makine öğrenmesi teknikleri kullanılarak kötü amaçlı yazılım tespiti yapılmaktadır. Açıklama adımında, kötücül uygulamanın tespit edilmesine katkıda bulunan özellikler tanımlanmakta ve tespit işlemine ait açıklama kullanıcıya sunulmaktadır [12]. APK Auditor APK Auditor [15], izin tabanlı Android kötücül yazılım tespiti yapan bir sistemdir. APK Auditor, Android uygulamaları iyicil veya kötücül olarak karakterize etmek ve sınıflandırmak için statik analiz yöntemini kullanmıştır. Geliştirilen sistemin mimarisi Şekil 2.3'te gösterilmiştir.

6 Şekil 2.3. APK Auditor sistem mimarisi [16] Şekil 2.3 incelendiğinde; geliştirilen sistem Android istemcisi, imza veritabanı ve merkezi sunucu olmak üzere üç ana bileşenden oluşmaktadır [16]. Android istemcisinin görevi sisteme uygulama yüklemek ve web servisi aracılığıyla merkezi sunucu ile iletişime geçmektir [16]. Web servisinden alınan analiz sonuçları Android telefon veya web tabanlı portal vasıtasıyla kullanıcılara sunulmaktadır [16]. Belirtilen sistemdeki imza veritabanı, analiz edilen Android uygulamaların sonuçlarını saklayan bir ilişkisel veritabanı yönetim sistemidir [16]. Belirtilen sistemdeki merkezi sunucunun görevi Android istemcisi ve imza veritabanı ile iletişim kurmak ve analiz sürecini yürütmektir [16]. DroidOL DroidOL [17], kötü amaçlı yazılım tespiti sorununu ele almaktadır ve yeni bir çevrimiçi makine öğrenme tabanlı çerçeve önermektedir. DroidOL çalışması doğru, uyarlanabilir ve ölçeklenebilir bir Android kötü amaçlı yazılım algılama sistemidir. Geliştirilen sistemin mimarisi Şekil 2.4'te gösterilmiştir.

7 Şekil 2.4. DroidOL sisteminin mimarisi [17] Şekil 2.4 incelendiğinde; DroidOL sistemi üç aşamadan oluşmaktadır. İlk aşamada, işlemler arası kontrol akış grafiklerinin (inter-procedural control-flow graphs) sunumlarını elde etmek için belirli bir sayıdaki uygulama üzerinde statik analiz yapılmaktadır. İkinci aşamada, işlemler arası kontrol akış grafiklerinin alt grafik özellikleri Weisfeiler-Lehman çekirdeği kullanılarak çıkarılmaktadır ve uygulamalar özellik vektörleri olarak temsil edilmektedir. Son aşamada, çevrimiçi bir pasif agresif (passive aggressive) sınıflandırıcısı kullanılarak bu vektörlerle kötü amaçlı yazılım tespit edilmek üzere eğitilmektedir [17]. ASE ASE [18] çalışmasında, sırasıyla MD5 (Message Digest 5) karakteristik değerleri algılama, kötücül izinlerin kombinasyonunu algılama, tehlikeli izinleri algılama ve tehlikeli niyeti (intent) algılamayı içeren dört filtreleme katmanlı entegre bir statik algılama sistemi önerilmektedir. MD5 karakteristik değerleri algılama katmanında, apk dosyalarından MD5 değerleri çıkarılır ve daha sonra elde edilen değer MD5 kara liste veritabanıyla eşleştirilmektedir. Kötücül izinlerin kombinasyonunu algılama katmanında, uygulamalardan istenilen izinler elde edildikten sonra mevcutta bulunan kötücül izinlerin kombinasyonu ile karşılaştırılmaktadır. Ayrıcı bu katmanda uygulamanın kullandığı izinler kötü niyetli bir ailenin kullandığı izinler ile eşleşirse bunun şüpheli kötücül bir uygulama olduğu varsayılmaktadır. Tehlikeli izinleri algılama katmanında, ilk olarak bilinen tehlikeli izinler sınıflandırılıp tanımlanmıştır. Daha sonra uygulamanın AndroidManifest.xml dosyasındaki izinler ayrıştırılmıştır. İkinci olarak, ayrıştırılmış izinler mevcut tehlikeli izin listeleriyle eşleştirilmektedir. Tehlikeli niyeti algılama katmanında, AndroidManifest.xml

8 dosyalarıyla ilgili derin bir analizle mevcut tehlikeli eylem listeleriyle uygulamanın istediği eylem niyeti karşılaştırılır ve tehlikeli bir eylem amacı olup olmadığı değerlendirilmektedir [18]. Wang ve diğerlerinin çalışması Wang ve diğerlerinin çalışmasında [19], kötücül ve iyicil uygulamaları kategorize etme açısından büyük bir uygulama pazarını etkin ve verimli bir şekilde yönetmek için bir sistem önerilmektedir. Önerilen sistemin mimarisi Şekil 2.5'te gösterilmiştir. Şekil 2.5. Wang ve diğerlerinin geliştirdiği sistemin mimarisi [19] Şekil 2.5 incelendiğinde, bir uygulama sisteme girdikten sonra, apk dosyasından çok sayıda özellik ayıklanmaktadır. Çoklu sınıflandırıcıların birleşimi ile uygulama kötücül olarak tanımlanırsa alarm tetiklenmektedir. Aksi durumda bir oyun uygulaması olup olmadığına bakılmaktadır. Oyun uygulaması olarak öngörülürse, sistem oyun kategorisini belirlemektedir. Eğer oyun uygulaması değilse sistem belirli bir oyun dışı kategori belirlemektedir [19]. Sokolova ve diğerlerinin çalışması Sokolova ve diğerlerinin çalışmasında [20], her bir uygulama kategorisi için normal davranışları karakterize eden, beklenen izin isteklerini vurgulayan bir sistem önerilmektedir. Ayrıca kategori kalıpları ve merkezi izinler grafik analiz metrikleri kullanılarak elde edilmektedir. Elde edilen modeller, uygulama sınıflandırmasının kategorilere göre performansı ile değerlendirilmektedir. Geliştirilen sistemin çalışma prensibi Şekil 2.6'da gösterilmiştir.

9 Şekil 2.6. Sokolova ve diğerlerinin geliştirdiği sistemin çalışma prensibi [20] Şekil 2.6 incelendiğinde, Google Play market [5] Android uygulamaları kategorilere göre ayırmaktadır. Grafikler aracılığıyla normal izin istekleri kategoriye göre modellenmektedir. Aynı kategorideki uygulamaların benzer olacağı ve benzer izinlere sahip olacağı ve farklı kategorilerdeki uygulamaların farklı izin taleplerine sahip olacağı varsayılmaktadır. Bu yüzden her bir kategoriyi karakterize eden izin modeli ve her kategorinin tipik bir uygulaması tespit edilmesi sağlanmış olacaktır. Belli bir kategorideki bir uygulamanın normal davranışını bilmek, ondan sapan uygulamaların yanlış kategorize edildiğini veya kötücül olduğunu tespit etmeyi sağlayacağı düşünülmektedir [20]. Dexteroid Dexteroid [21] çalışmasında, Android bileşenlerin davranışlarını doğru bir şekilde yakalamak için tersine mühendislik yaşam döngüsü modelleri kullanılmaktadır. Tersine mühendislik ile yaşam döngüsü modellerinden olay dizileri sistematik olarak türetilmektedir. Olay dizilerinden geri çağırım (callback) dizilerini elde edilmektedir. Kötü niyetli davranışları saptamak için geri çağırım dizileri üzerinde kusur analizi yapılmaktadır. Dexteroid in sistem mimarisi Şekil 2.7'de gösterilmiştir.

10 Şekil 2.7. Dexteroid mimarisi [21] Şekil 2.7 incelendiğinde, bir apk dosyası Dexteroid sistemine girmektedir. Dalvik bayt kodu ve AndroidManifest.xml dosyasını elde etmek için Androguard aracı [22] kullanılmaktadır. Kayıtlı bileşenler AndroidManifest.xml dosyasından tanımlayarak bu bileşenleri tekrar tekrar analiz edilmektedir. Dexteroid çerçevesi, her bileşen için sistematik olarak tersine mühendislik ile yaşam döngüsü modelinden olay dizilerini türetmektedir. Bu olay dizilerinden geri çağırım dizilerini türetmektedir. Geri çağırım dizilerinin permütasyonları üretilir ve kötücül davranışları saptamak için kusur analizi yapılmaktadır [21]. Anwar ve diğerlerinin çalışması Anwar ve diğerlerinin çalışmasında [23], mobil botnet algılamaya yönelik statik bir sistem önerilmektedir. Bu sistem; MD5, izinler, alıcılar ve arka plan hizmetleri dahil olmak üzere Android uygulamaların statik özelliklerini göz önüne almaktadır. Geliştirilen sistem Şekil 2.8'de gösterilmiştir.

11 Şekil 2.8. Anwar ve diğerlerinin geliştirdiği sistem mimarisi [23] Şekil 2.8 incelendiğinde, önerilen sistem mobil botnet saldırılarının özelliklerine sahip uygulamaları tespit edebilen dört katmanlı bir yapıya sahiptir. Bu dört katmanlı yapı sırasıyla MD5, izinler, yayın alıcısı ve arka plan hizmetlerine sahiptir. MD5 değerleri katmanında, uygulamanın MD5 değerleri çıkarılarak mevcut kötü amaçlı MD5 listesiyle karşılaştırmaktadır. Eğer eşleştirme olursa uygulama kötücül olarak tanımlanmaktadır, aksi durumda bir sonraki katmana geçilmektedir. İzinler katmanında, Google Play marketten [5] indirilen bazı tanınmış uygulamaların 152 adet standart izne sahip olduğu görülmüştür. Bu izinler sırasıyla normal, tehlikeli, imza ve imza-veya-sistem olmak üzere dört kategoriye ayrılmıştır. Yayın alıcılar kullanılarak kötücül uygulamalar cihazın yeni başladığını veya cihazda herhangi bir güncelleme olduğu bilgisini elde etmektedir. Bu alıcılar, cihaz her açıldığında kötü amaçlı arka plan servislerini başlatmaktan sorumludur. Bu yüzden yayın alıcı katmanında bu alıcılar kontrol edilmektedir. Android platformunda, arka plan işlemi çoğunlukla arka plan hizmetleri kullanılarak yapılmaktadır. Bu hizmetler bir kullanıcı arabirimi içermediğinden Android uygulamalar için arka planda işlevsellik sağlamaktadır. Bu yüzden arka plan işlemleri katmanında bu servisler kontrol edilmektedir [23]. Wu ve diğerlerinin çalışması Wu ve diğerlerinin çalışmasında [24], kötücül algılama sistemini oluşturmak için genel bir veri madenciliği yaklaşımı benimsenmiştir. Geliştirilen sistem Şekil 2.9 da görüldüğü gibi eğitim ve tanımlama olmak üzere iki aşamadan oluşmaktadır.

12 Şekil 2.9. Wu ve diğerlerinin geliştirdiği sistem mimarisi [24] Şekil 2.9 incelendiğinde, eğitim aşamasında sistem hem iyicil hem de kötücül Android uygulamaları eğitim veri setinde ele alarak kötü amaçlı davranış kalıplarını araştırmaktadır. Eğitim aşamasında, bir sınıflandırıcı ve işlenmiş veri akışıyla ilgili API listesi genelleştirilmiştir. Tanımlama aşamasında, sistem bilinmeyen bir Android uygulamayı girdi olarak ele almaktadır. Bu uygulamanın özellik vektörlerini çıkardıktan sonra uygulamanın kötü amaçlı olup olmadığına karar vermektedir. Sistem hassas veri aktarım yollarını keşfetmek için işlenmiş API listesini kullanarak kötücül uygulamada statik veri akış analizi yapmaktadır [24]. Arslan ve diğerlerinin çalışması Arslan ve diğerlerinin çalışmasında [25], uygulamaların istedikleri izinlerin kod tarafında ne kadar kullanıldığına dair hesaplama yaparak kötücül ve iyicil yazılımları tespit eden statik bir yaklaşımda bulunulmuştur. Geliştirilen sistemin akış diyagramı Şekil 2.10'da gösterilmiştir.

13 Şekil 2.10. Arslan ve diğ. nin geliştirdiği sistemin akış diyagramı [25] Şekil 2.10 incelendiğinde, uygulamalara tersine mühendislik yapılması için Dex2jar [26] ve Apktool araçları [11] kullanılmıştır. Bu araçların yardımıyla izinler ve bu izinlerin uygulamada kullanılıp kullanılmadığı elde edilmiştir. Sonuçlar veri tabanına kayıt edilmiştir ve karşılaştırma yapılarak uygulamanın değerlendirilmesi yapılmıştır [25]. AndroDialysis AndroDialysis çalışmasında [27], AndroidManifest.xml dosyasında bulunan niyetler kötücül yazılımların belirlenmesinde ayırt edici bir özellik olarak kullanılmıştır. Yapılan

14 çalışmada kötücül yazılım belirlemede niyetlerin (intent) izinlere göre daha etkili olduğu değerlendirmesi yapılmıştır [27]. Fakat niyetlerin kötücül yazılım belirlemede izinlerin yerine geçemeyeceği düşünülmektedir. Kang ve diğerlerinin çalışması Kang ve diğerlerinin çalışmasında [28], geliştiricinin bilgilerini bir özellik olarak kullanılmıştır. Bu çalışmada kötü niyetli uygulamaları benzer gruplara göre sınıflandırarak Android kötücül yazılım tespiti için bir yöntem önerilmiştir. Uygulama sertifika seri numarası önceden tanımlı kötücül sertifika seri numaraları ile karşılaştırma yapılarak kötücül yazılımın tespitinin daha etkili yapılabileceği savunulmuştur [28,29]. Geliştirilen sistem seri numarasının yanında SMS gizlemenin şüpheli davranışını, kod içindeki kötücül yazılım komutlarını ve şüpheli izin isteklerini kontrol etmektedir. 2.1.2. Literatürdeki diğer analiz yöntemleri Android kötücül uygulamaları tespit etmek için literatürde statik analiz yönteminin yanında dinamik ve hibrit analiz yöntemleri de bulunmaktadır. Bu başlık altında literatürde bulunan dinamik ve hibrit analiz yöntemlerinden bahsedilmiştir. Dinamik analiz yöntemi Dinamik analiz teknikleri, uygulama davranışları hakkında bilgi edinmek için uygulamaları sanal ortamda veya gerçek aygıtlarda çalıştırmaktadır [30]. Bu yüzden dinamik analiz yönteminin statik analiz yönteminden en önemli farkı Android uygulamanın cihaza yüklenerek kötücül uygulamaları tespit etmeye çalışmasıdır. Dinamik analiz çalışmalarında genellikle sistem çağrıları ve ağ trafiği olmak üzere iki temel dinamik özellik türü kullanılmaktadır [9]. Shabtai ve diğerlerinin çalışması Shabtai ve diğerlerinin çalışmasında [31], uygulamaların ağ desenlerini çıkartılarak kötücül yazılımların tespit edilebileceği bir sistem geliştirilmiştir [16]. Yapılan çalışmada aynı işleve sahip farklı uygulamaların ağ trafik desenlerinin benzer desenlere sahip olacağı

15 savunulmuştur. Şekil 2.11 de e-posta ve internet tarayıcıların ağ trafik desenleri gösterilmiştir [16]. Şekil 2.11. Aynı tip ama farklı uygulamaların internet ağ trafik deseni (farklı uygulamalar farklı renkte gösterilmiştir) a) E-posta istemcileri uygulamaları b) İnternet tarayıcısı uygulamaları [16] Şekil 2.11 incelendiğinde, farklı ama aynı işleri yapan uygulamaların ağ davranış trafiklerinin benzer oldukları görülmektedir [16]. Ayrıca Şekil 2.12 de ShotGun ve K-9 mail uygulamalarının virüslü ve virüssüz versiyonlarının ağ trafik desenleri gösterilmiştir. Şekil 2.12. ShotGun ve K-9 mail uygulamalarının virüslü ve virüssüz versiyonlarının ağ trafik desenleri a) ShotGun uygulaması b) K9 Mail İstemci uygulaması [16] Şekil 2.12 incelendiğinde, ShotGun ve K-9 mail uygulamalarının farklı versiyonlarındaki ağ trafik desenleri farklı olduğu görülmektedir. Bu farklılık bu uygulamaların kötücül olduğunu göstermektedir [16].

16 TrafficAV TrafficAv [32], uygulamaların ağ trafiğini analiz ederek kötü niyetli ağ davranışlarını keşfetmektedir. Geliştirilen istemin çalışma adımları Şekil 2.13 te gösterilmiştir. Şekil 2.13. TrafficAV sisteminin çalışma adımları [32] Şekil 2.13 incelendiğinde, önerilen sistem dört adımdan oluşmaktadır. Trafik toplama adımında, gerçek bir ağ ortamında kötücül yazılım trafiğini izlemek için aktif bir trafik üretme ve toplama platformu kullanılmaktadır. Trafik toplama adımı temel platform, trafik üreticisi, trafik toplayıcısı ve ağ proxy / güvenlik duvarı olmak üzere dört bölümden oluşmaktadır. Özellik çıkarımı adımında, tüm trafik dosyaları otomatik olarak özellik kümeleri üretmek üzere işlenmektedir. HTTP (Hyper Text Transfer Protocol) istek paketleri ve TCP (Transmission Control Protocol) akışlarının özelliklerini ayıklamak için Python diliyle yazılmış iki program kullanılmaktadır. Öğrenme tabanlı algılama adımında, algılama modellerini eğitmek için C4.5 karar ağacı algoritması kullanılmaktadır. C4.5 karar ağacı algoritmaları ağaç yapısına dayalı bir model oluşturulmaktadır. Sonuç açıklaması adımında, tespit sonuçları gösterilmektedir [32]. DroidAuditor DroidAuditor [33] çalışması, gerçek Android cihazlarda uygulama davranışını gözlemleyen ve grafik tabanlı temsili oluşturan bir davranış analiz sistemidir. Android işletim sisteminin tüm katmanlarındaki uygulama davranışlarını gözlemlemek için ASM (Android Security Modules) [34] erişim kontrol mimarisini kullanmaktadır. DroidAuditor sisteminin mimarisi Şekil 2.14 te gösterilmiştir.

17 Şekil 2.14. DroidAuditor sisteminin çalışma mimarisi [33] Şekil 2.14 incelendiğinde, DroidAuditor üç ana bileşeni kullanarak davranış grafiklerini üretmektedir. Mobil cihazda, Android uygulamalar güvenlik veya gizlilik açısından kritik olan kaynaklara eriştiğinde, Android güvenlik modüller çerçevesi ile DroidAuditor ASM ye bildirilmektedir (Adım 1-4). DroidAuditor ASM bu olayları kimliği doğrulanmış ve şifrelenmiş bir kanal (Adım B) vasıtasıyla DroidAuditor veritabanına iletmektedir. Güvenlik analistleri DroidAuditor istemcisini kullanarak davranış grafiği ile etkileşim kurmaktadır (Adım C) [33]. Andro-Profiler Andro-Profiler [35] çalışmasında, sistem çağrıları dahil olmak üzere entegre sistem günlüklerinden çıkarılan davranış profillerini kullanarak kötücül yazılımları sınıflandırmaktadır. Andro-Profiler, entegre sistem günlüklerini oluşturmak için sanal cihazda kötü niyetli bir uygulamayı çalıştırır ve entegre sistem günlüklerini analiz ederek insan tarafından okunabilen davranış profillerini oluşturmaktadır. Andro-Profiler sisteminin çalışma mimarisi Şekil 2.15'te gösterilmiştir.

18 Şekil 2.15. Andro-Profiler sisteminin çalışma mimarisi [35] Şekil 2.15 incelendiğinde, Andro-Profiler sistemi mobil cihazlar için bir istemci uygulaması, profilleme ve analiz yapmayı sağlayan uzak sunucudan oluşmaktadır. Mobil cihazdaki istemci uygulaması yüklü uygulama bilgilerini toplamaktadır ve bu bilgileri uzaktaki sunucuya göndermektedir. İstemci uygulaması sadece apk dosyası ve paket adı gibi uygulama bilgilerini göndermektedir. Uzak sunucu bu uygulamayı elde edemezse, istemci uygulaması uygulama dosyasını uzaktaki sunucuya göndermektedir. Uzak sunucu bot, veri havuzu ve analiz birimi olmak üzere üç bileşenden oluşmaktadır. Uzak sunucu, kötü niyetli uygulamayı analiz eder ve davranışlarına göre kötücül olup olmadığını belirlemektedir. Bot bileşeni, resmi uygulama pazarları ve alternatif uygulama pazarları gibi depolardan uygulamaları taramaktadır. Taranan uygulamanın bir kopyası varsa atılır; aksi takdirde veri havuzu bileşeni, bu uygulamayı analiz birimi bileşenine göndermektedir. Analiz işlemi tamamlandıktan sonra, analiz birimi bileşeni analiz sonuçlarını depo bileşenine ve istemci uygulamasına göndermektedir [35].

19 Garg ve diğerlerinin çalışması Garg ve diğerlerinin çalışmasında [36], kötücül uygulamaları ağ üzerinde gözlemci bir göz ile ağ etkinliğine bakarak tespit etmeye çalışan bir sistem geliştirilmiştir. Ayrıca geliştirilen model ağ izlerini kullanarak kötücül uygulamaları tespit etmek, işletim sistemlerinin farklı sürümleriyle çalışmak, bilinmeyen uygulamaları tespit etmek ve şifrelenmiş verilerle virüs bulaşmış uygulamaları tespit etme yeteneklerine sahiptir. Geliştirilen sistemin iş akışı Şekil 2.16 daki gibidir. Şekil 2.16. Garg ve diğerlerinin geliştirdiği sistemin iş akışı [36] Şekil 2.16 incelendiğinde, geliştirilen sistem ilk olarak uygulamaları toplamaktadır. Uygulamalar toplandıktan sonra uygulamaların ağ izlerinin elde edilmesi aşamasına geçilmektedir. Ağ izleri, uygulamaları farklı mobil aygıtlarda ayrı olarak çalıştırmaktadır. Her uygulama için 8-15 saatlik bir zaman dilimi boyunca periyodik olarak (örneğin her t saniyede bir) PCAP (Packet Capture) işlemini yapmaktadır. Özellik çıkarımı aşamasında, mobil cihazda çalışan her uygulamanın çeşitli ağ özelliklerini ayıklama işlemi yapılmaktadır. Özellikler dört farklı trafik kategorisinden seçilir: DNS (Domain Name Service), HTTP, TCP ve kaynak hedefli tabanlıdır. Tespit aşamasında, makine öğrenme sınıflandırıcı algoritmaları kötücül ve normal dahil olmak üzere farklı uygulamaların ağ davranışlarını izlemektedir ve öğrenmektedir. Bu sınıflandırıcılar, cihazda çalışan uygulamaların örneklerini çevrimiçi olarak test edebilmek için bir dedektör olarak çalışmaktadır [36]. Hibrit Analiz Yöntemi Hibrit analiz yöntemi, statik ve dinamik analiz yöntemlerinin birlikte kullanıldığı analiz yöntemidir. Uygulamaları çeşitli yönlerden analiz ettiğinden dolayı en kapsamlı analiz yöntemidir [9]. Bu yöntem pil, bellek ve benzeri sınırlı mevcut kaynaklar nedeniyle pahalı

20 bir yöntemdir [37]. Chang ve diğerlerinin çalışması Chang ve diğerlerinin çalışmasında [38], makine öğrenmesi kullanılarak Android davranış bazlı kötü amaçlı yazılım algılama sistemi önerilmektedir. Bu çalışmada DroidBox [39] yapısına ek olarak otomatik tetiklenen görünüm tanımlama programı eklenmiştir. Bu program sayesinde mobil uygulamalara anlamlı sıraya göre ulaşılmaktadır. Geliştirilen sistemin mimarisi Şekil 2.17'de gösterilmiştir. Şekil 2.17. Chang ve diğerlerinin geliştirdiği sistemin mimarisi [39] Şekil 2.17 incelendiğinde, geliştirilen sistem; ön işleme, veri izleme, karar modeli ve veritabanı olmak üzere dört bileşenden oluşmaktadır. Ön işleme aşamasında, ilk olarak AndroidManifest.xml dosyasında bulunan uygulamanın paket adı ve ana aktivite adı elde edilmektedir. İkinci olarak hedef uygulamanın özgün imzası silinmektedir. Üçüncü olarak imza için Android anahtar oluşturulmaktadır. Son olarak oluşturulan anahtar ile tetikleyici program ve hedef uygulama imzalanmakta ve Android emülatöre yüklenmektedir. Veri izleme aşamasında, ilk olarak DroidBox statik ön kontrol işlemi yapılmaktadır. İkinci olarak Robotium tetik paketi ile enstrümantasyon TestRunner otomatik olarak başlatılmaktadır. Son olarak log toplayıcı ile oluşan loglar toplanmaktadır. Karar modeli

21 aşamasında, makine öğrenmesi metotları kullanılmaktadır. Özellik verisi olarak dinamik davranışlar ve izinler kullanılmaktadır. Dinamik davranışlara dosya okuma / yazma, ağ davranışları, servisler, alıcılar örnek olarak verilebilir. Karar modeli ile elde edilen sınıflandırma sonuçları veritabanında saklanmaktadır [39]. Shi ve diğerlerinin çalışması Shi ve diğerlerinin çalışmasında [40], güvenlik tehdidi ve mobil uygulamadaki saldırıyı tespit etmek için statik ve dinamik analizleri birleştiren karma bir sistem önerilmektedir. Geliştirilen sistemin mimarisi Şekil 2.18 de gösterilmiştir. Şekil 2.18. Shi ve diğerlerinin geliştirdiği sistemin mimarisi [40] Şekil 2.18 incelendiğinde, geliştirilen sistem statik ve dinamik analiz olmak üzere iki ana safhadan oluşmaktadır. İlk aşamada, Apktool [11] kullanılarak apk dosyası içinde bulunan bütün dosyalar elde edilmektedir. Bu statik analiz aşamasının odak noktası AndroidManifest.xml dosyasını analiz etmektir. Ayrıca bu statik analiz aşamasında dosya ve metin desenlerinin okunması için bir Java uygulaması geliştirilmiştir. AndroidManifest.xml dosyasından başlama aktivitesi elde edilmektedir ve bu bilgi hassas API çağrılarını elde etmek için ikinci aşamada kullanılmaktadır. İkinci aşamada, uygulamayı yeniden paketlemek için Auto-sign aracı kullanılmaktadır. Yeniden

22 paketlenmiş uygulama çalıştırılarak dinamik analiz yapılmaktadır. Bu çalıştırma işlemi sembolik çalıştırma olarak adlandırılmaktadır, çünkü uygulama API çağrı yolunu elde etmek için çalıştırılmaktadır [40]. ScanMe Mobile ScanMe Mobile [41] çalışmasında, yerel ve bulut tabanlı hibrit kötücül yazılım algılama sistemi geliştirilmiştir. Gerçek zamanlı saptamayı verimli bir şekilde gerçekleştirmek için mobil bulut tabanlı mimari kullanılmıştır. Geliştirilen sisteminin mimarisi Şekil 2.19'da gösterilmiştir. Şekil 2.19. ScanMe Mobile sisteminin mimarisi [41] Şekil 2.19 incelendiğinde, ScanMe Mobile mimarisi Android istemcisi uygulaması, yerel kum havuzu (sandbox) sunucusu, tespit modülü, Google Bulut Mesajlaşma (Google Cloud Messaging) servisi [42] ve Google Uygulama Motoru (Google App Engine) [43] web uygulaması ve bilgi deposu olmak üzere beş bileşenden oluşmaktadır. Android istemcisi uygulaması kullanıcının sandbox sunucusuna yüklenecek bir veya daha fazla uygulama seçmesine izin vermektedir. Ayrıca bu uygulama, cihazın Google bulut mesajlaşma hizmetine kaydedilmesinden ve yeni bir mesaj alındığında kullanıcıyı bilgilendirmekten sorumludur. Google bulut mesajlaşma servisi, işlem merkezi ve mobil cihazlar arasında veri iletimini sağlayan üçüncü taraf bir hizmettir. Yerel uygulama kum havuzu sunucusu,

23 Ubuntu 14.04 sistemi ile çalışan bir sanal makine ile apk dosyalarını analiz etmeyi sağlayan kum havuzu uygulamasıdır. Tespit modülünde, makine öğrenmeye dayalı taslaklar hazırlanmaktadır. Makine öğrenme süreci boyunca, eğitimli modül yüklenen uygulamaların kötücül ya da iyicil uygulama olduğunu belirlemek için kullanılmaktadır. Google uygulama motoru web uygulaması ve bilgi deposu, rapor derlendiğinde gönderilir ve Google uygulama motorunun veri deposunda saklanmaktadır [41]. Singh ve diğerlerinin çalışması Singh ve diğerlerinin çalışmasında [44], kötücül uygulamaların tespitinin yapılması için bir çerçeve sunulmaktadır. Bu çerçevenin amacı yapay kullanıcı davranışlarını taklit etmek ve kötücül yazılımın gerçek davranışını çözmektir. Geliştirilen sistemin mimarisi Şekil 2.20'de gösterilmiştir. Şekil 2.20. Singh ve diğerlerinin geliştirdiği sistemin mimarisi [44] Şekil 2.20 incelendiğinde, Singh ve diğerlerinin geliştirdiği sistemde analiz birimi statik analizi için kullanılmaktadır. Personalizer, sensör simülatörü, olay simülatörü ve kullanıcı simülatörü dinamik için kullanılmaktadır. Kernel görüntüsü, bir emülatörde bulunan ve bulunmayan dosyaların ve dizinlerin varlığını tahrif ederek kötü amaçlı yazılım için gerçek

24 bir ortam aygıtı oluşturmaktadır. Analiz birimi bileşeni, Androguard'un [45] Andoapkinfo aracını kullanarak statik analiz yapmaktadır. Bu araç ile AndroidManifest.xml dosyasında bulunan aktiviteler, izinler, servisler ve alıcılar elde edilmektedir. Personalizer bileşeni, izinler.txt dosyasını okur ve eğer uygulama telefon, rehber veya mesaj izinlerinden birini veya birkaçını istiyorsa listeleri sahte verilerle doldurmak için telefon komut dosyasını, kişi komut dosyasını veya mesaj komut dosyasını çağırmaktadır. Ayrıca uygulama hafızaya okumak veya yazmak için izin istiyorsa personalizer sd kartı rastgele metinler, resimler, şarkılar içeren sahte veri dosyaları ile doldurmaktadır. Sensör simülatörü ile periyodik olarak güncellenen değerler emülatör üzerinde kullanılmaktadır, kötücül yazılımların bunu algılayabileceğinden [44,46] gerçek zamanlı veri setleri kullanılmıştır. Olay simülatörü bileşeni, uygulamanın kayıtlı olduğu yayın amaçlarını okumak için alıcılar.txt'yi kullanmaktadır. Her olayı gerçekleştirmek için çok özel işlem gerekmektedir, bu yüzden olay simülatörü her yayın amacına ilişkin bir betiğe sahiptir. Kullanıcı simülatörü bileşeni, uygulamanın kullanıcı arabiriminde işlemleri gerçekleştiren sahte bir kullanıcıyı taklit etmeyi sağlamaktadır [44]. Wang ve diğerlerinin çalışması Wang ve diğerlerinin çalışmasında [47], API çağrılarından izin kullanım bilgisini elde etmek için statik analiz tekniği kullanılmaktadır. Ayrıca uygulamaların çalışma zamanı izin kullanım davranışlarını test etmek ve izlemek için dinamik analiz tekniği kullanılmaktadır. Geliştirilen sistemin mimarisi Şekil 2.21'de gösterilmiştir. Şekil 2.21. Wang ve diğerlerinin geliştirdiği sistemin mimarisi [47]

25 Şekil 2.21 incelendiğinde, geliştirilen sistem AndroidManifest.xml dosyasının analizi, statik kod analizi ve dinamik analiz olmak üzere üç faklı bölümden oluşmaktadır. AndroidManifest.xml dosyasının analizi bölümünde, analiz edilen uygulamanın istediği izinleri elde edilmektedir. Statik kod analizi bölümünde, Android uygulamanın tüm API çağrılarını, niyetlerini (intent) ve içerik sağlayıcı bilgilerini ayıklayabilen dex bayt koduna dayanan hafif bir ayrıştırıcı kullanılmaktadır. API çağrılarını ayıklamak için, ayrılmış dex dosyalarını ayrıştırılır ve Android API'lara yapılan tüm çağrılar tanımlanmaktadır. Dinamik analiz bölümünde, Java Yansıma (Reflection) ve Dinamik Yükleme (Dynamic Loading) gibi statik analiz tarafından ele alınmayan zorluklarla başa çıkılmaya çalışılmaktadır. Uygulamaları dinamik olarak test etmek için otomatikleştirilmiş bir fuzzer Monkey'den [48] yararlanılmıştır. Monkey, sanal ortamda veya gerçek cihaz üzerinde çalışan, tıklamalar, dokunuşlar ve hareketler gibi sahte rastgele kullanıcı etkinliklerinin yanı sıra bir dizi sistem düzeyinde etkinlik oluşturabilen bir komut satırı aracıdır [47]. 2.2 Android İşletim Sistemi Mimarisi ve Kötücül Yazılımlar 2.2.1. Akıllı cihazlar Akıllı telefon, yerel üçüncü parti uygulamaları destekleyen bir işletim sistemi kullanan ve bağlantı sağlamak için çoklu iletişim arabirimlerini içeren mobil el tipi bir telefondur [49]. Akıllı telefonlar ile bilgisayarda yapılabilecek müzik dinleme, resim çizme, internete girme gibi birçok işlem yapılmaktadır. Ayrıca akıllı telefonlar bilgisayarlarda bulunan CPU (Central Process Unit), hafıza, işletim sistemi gibi birçok bileşene sahiptir [50]. Dünya çapındaki akıllı telefonların kullandıkları işletim sistemlerinin pazar payı Şekil 2.22 de gösterilmiştir.

26 Şekil 2.22. Dünya çapındaki akıllı telefon işletim sistemi pazar payı [1] Şekil 2.22 incelendiğinde, 2016 yılının üçüncü çeyreğinde akıllı telefonlar tarafından en çok kullanılan işletim sistemleri sırasıyla Android (%86,8), IOS (iphone Operating System) (%12,5), Windows Phone (%0,3) ve diğerleridir. Android işletim sistemi, Google tarafından akıllı telefonlarda ilk defa 2008 yılında kullanılmıştır [51]. ARM platformunda değiştirilmiş bir Linux çekirdeğin üzerine inşa edilmiştir [51]. Alt düzey sistem araçları C dili ile yazılmıştır, fakat Android uygulamalar Java dili kullanılarak geliştirilmektedir. IOS, Apple firmasına ait akıllı cihazlarda çalışan işletim sistemidir. IOS işletim sistemi için uygulama geliştirilirken resmi olmayan kütüphaneleri kullanım sınırlı olduğundan IOS uygulamaları genellikle güvenlidir ve literatürde IOS kötücül yazılım üzerine çok az çalışma bulunmaktadır [50]. IOS üzerine az sayıda çalışma bulunmasının nedenleri; Apple IOS cihazları, kullanılara yalnızca Apple App Store'dan [52] uygulama yüklemeye izin vermesi ve markete uygulama yüklenirken uygulamanın detaylı olarak incelenmesidir [53]. Windows Phone işletim sistemi, Microsoft firmasına ait akıllı cihazlarda çalışan işletim sistemidir. Microsoft, akıllı telefon pazarına biraz geç girmesine rağmen, Microsoft Mobile'ın Android ve IOS'a kıyasla bazı farklı özellikleri bulunmaktadır [50]. Diğer Microsoft hizmetleriyle birlikte çalışabilirlik, Windows Mobile'ın en büyük avantajıdır ancak güvenlik yapısı açısından bazı dezavantajlara sahiptir [50]. Windows Phone işletim sistemine sahip cihazlara uygulamalar Microsoft Mağaza [54] kullanılarak yüklenmektedir.

27 2.2.2. Android işletim sistemi mimarisi Android işletim sistemi, Linux çekirdek üzerine kurulmuş bir sistem mimarisine sahiptir. Şekil 2.23 te görüldüğü gibi bu yapı; Linux çekirdek, kütüphaneler ve Android çalışma zamanı, uygulama katmanı ve uygulamalardan oluşmaktadır. Şekil 2.23. Android işletim sistemi mimarisi [7] Android işletim sistemi mimarisinin ilk katmanında Linux çekirdek bulunmaktadır. Bu katmanda donanım bilgileri ve uygulamaların çalışması için gerekli görüntü, klavye, ses gibi sürücüler bulunmaktadır. Bu yapı Android için özel olarak geliştirilmiştir. Linux çekirdeğin asli görevi donanım ile yazılım arasında iletişimi sağlamaktır [55]. İkinci katmanda kütüphaneler ve Android çalışma zamanı bulunmaktadır. Kütüphaneler

28 bölümünde C dili ile yazılmış sistem kütüphaneleri bulunmaktadır. Bu bölümde SQLite veritabanı kütüphanesi, Webkit katmanı, OpenGL, ses ve görüntü kütüphaneleri bulunmaktadır. Örneğin; bir uygulama geliştiriyoruz ve bu uygulamada verileri depolamak için veritabanı kullanmamız gerekli, bu durumda bu bölümde bulunan SQLite kütüphanesinden faydalanılabilir [55]. Android çalışma zamanı, uygulamaların çalışma anında devreye girmektedir. İki tane bileşene sahiptir, bunlar; Java'nın kütüphaneleri ve Dalvik sanal makinesidir. Dalvik sanal makinesi, uygulamaların çalıştırılmasını sağlamaktadır. Java kullanılarak geliştirilen Android uygulamasının çalışma şekli; ilk aşamada yazılan Java kodları derlenerek bayt koduna çevrilir, sonra bayt kod dosyaları dex formatına çevrilerek Dalvik sanal makinesinde çalışacak hale getirilmektedir [55]. Üçüncü katmanda uygulama katmanı bulunmaktadır. Uygulama katmanı Android uygulama geliştiricilerine; konum bilgisi, kaynak yönetimi, bildirim yönetimi gibi birçok bilginin kullanılmasını sağlar. Android uygulamalar geliştirilirken uygulamanın sahip olduğu ara yüzlere görünüm sistemini sağlar. Örneğin; geliştirilen bir Android uygulama telefonda bulunan çağrı kayıtlarına, fotoğraflara ve bulunduğunuz konum bilgilerine erişmeyi sağlayabilir. Son katmanda uygulamalar bulunmaktadır. Android telefonu aldığınızda gelen, sonradan geliştirilen veya Google Play marketten [5] indirilip yüklenilen tüm uygulamaları kapsamaktadır. 2.2.3. Android uygulamaların yapısı Android uygulamalar Java dili kullanılarak geliştirilmektedir. Bir Android uygulama projesi oluşturulduğunda Şekil 2.24 teki gibi dosyalar oluşmaktadır.

29 Şekil 2.24. Android uygulaması sonucu oluşan dosyalar Şekil 2.24 incelendiğinde, Android uygulama projesinde geliştiricilerin kullandıkları klasörler; assets, libs, res, src vr AndroidManifest.xml dir. Assets klasörü sık olarak kullanılmamaktadır fakat video, ses, html, fontlar gibi veriler bu klasörde saklanabilmektedir. Libs klasöründe özel olarak oluşturulmuş jar dosyaları bulunmaktadır. Örnek olarak Android uygulamada reklam görünmesi için reklam şirketlerinin geliştirmiş oldukları jar dosyasının kullanılması verilebilir. Res klasörünün içinde drawable, layout, menu ve values klasörleri bulunmaktadır. Drawable klasöründe Android uygulama içinde kullanılacak olan resimler bu klasörde tutulmaktadır. Layout klasöründe Android uygulamanın ara yüzlerini oluşturmak için xml dosyaları bulunmaktadır. Menu klasöründe Android uygulamada seçenekler menüsü gibi menüleri oluşturmak için xml dosyaları bulunmaktadır. Values klasöründe ise metinler, stiller, renkler gibi değerleri tutmak için xml dosyaları bulunmaktadır. Src klasöründe oluşturulmuş olan paketler ve paketlerin içinde Java dosyaları bulunmaktadır. AndroidManifest.xml dosyasında uygulama için önemli bilgiler bu dosyada yer almaktadır. Şekil 2.25 te örnek bir AndroidManifest.xml dosyası gösterilmiştir.

30 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ok.androidproject" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="21" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.camera" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name=".mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> Şekil 2.25. AndroidManifest.xml örneği Şekil 2.25 incelendiğinde, manifest etiketinde uygulamanın paket adı, versiyon numarası gibi değerleri tanımlayabileceğimiz özellikler bulunmaktadır. uses-sdk etiketi ile Android uygulamamızın hangi Android sürümlerinde çalışacağı bilgisi tanımlanmaktadır. usespermission etiketi kullanılarak Android uygulama için kullanılacak izinler tanımlanmaktadır. Şekil 2.25 teki örnekte Android uygulama internet, konum bilgisi ve kamera kullanım izinlerini istemektedir. Application etiketi ile uygulamanın kullanacağı tema, adı, simgesi gibi özellikler tanımlanmaktadır. Ayrıca application etiketi içinde aktiviteler, servisler, içerik sağlayıcılar ve yayın alıcılar tanımlanmaktadır. Şekil 2.26 da bu dört temel bileşenin açıklamaları yer almaktadır.

31 Şekil 2.26. Android temel bileşenleri [56,57] 2.2.4 Android güvenlik politikaları Android platformu kullanıcı verilerini, uygulamalarını, cihazlarını ve ağın gizliliğini, bütünlüğünü ve kullanılabilirliğini koruyan bir uygulama ortamı sunmaktadır [58]. Android platformunun sağlamış olduğu güvenlik politikaları aşağıda anlatılmıştır. Uygulama koruması Android çekirdek düzeyinde, bir uygulamanın diğer uygulamalara veya sistem

32 hizmetlerine müdahale edemeyeceği şekilde her uygulamanın benzersiz bir kullanıcı adı (User ID) ataması yaparak Linux'un İhtiyaca Göre Erişim Kontrolü (Discretionary Access Control) özelliğini kullanmaktadır [59]. Android aynı zamanda, Wi-Fi, Bluetooth, İnternet erişim servislerinin farklı gruplar halinde çalıştığı Paranoya Ağ Güvenliği (Paranoid Network Security) adı verilen bir özellik uygulayarak ağ erişimini korumaktadır [59,60]. Android uygulama mutlaka uygulama geliştiricisi tarafından imzalanmış bir Ortak Anahtar Altyapısı (Public Key Infrastructure) sertifikasını içermektedir [59]. Bu sertifika daha önceden yüklenmiş başka bir uygulama sertifikası ile eşleşirse Android bu iki uygulamaya birbirlerinin özel dosyaları ve izinleri paylaşmasına izin verir [59]. Bu nedenle, geliştiricinin kendi sertifikasını başkalarıyla paylaşması kesinlikle tavsiye edilmez [59]. Uygulama çerçevesi düzeyinde izinler Android, her uygulamanın telefon, şebeke, rehber, mesaj, hafıza ve GPS (Global Positioning System) konumu gibi akıllı telefonun önemli işlevlerine erişmesini kısıtlamak için uygulama çerçevesi düzeyinde izin tabanlı güvenlik modelini sağlamaktadır [59]. Bu izinler uygulama yapısında bahsedildiği gibi AndroidManifest.xml dosyasında usespermission etiketi kullanılarak tanımlanmaktadır. Android izinleri dört koruma seviyesine ayırmıştır [60]. Bunlardan birincisi olan normal koruma seviyesi varsayılan değerdir ve istenilen uygulamaların, diğer uygulamalara, sisteme veya kullanıcıya yönelik minimum riskle izole edilmiş uygulama düzeyindeki özelliklere erişmesini sağlayan düşük riskli bir izindir [60]. Bunlardan ikinci olan tehlikeli (dangerous) koruma seviyesi, özel bir kullanıcı verilerine istekte bulunan bir uygulamaya erişim izni veren veya cihazı kontrol eden ve kullanıcıyı olumsuz yönde etkileyebilecek daha yüksek riskli bir izin koruma seviyesidir [60]. Bunlardan üçüncüsü olan imza (signature) koruma seviyesi, sistemin yalnızca talep eden uygulama, izin beyan eden uygulama ile aynı sertifika ile imzalanmış olması durumunda izin vermektedir [60]. Bunlardan dördüncüsü olan imza veya sistem (signatureorsystem) koruma seviyesi, sistemin yalnızca Android sistem görüntüsündeki veya izin beyan eden uygulama ile aynı sertifika ile imzalanmış uygulamalara izin vermektedir [60]. Güvenli sistem bölme Sistem bölümü, Android'in çekirdeği, işletim sistemi kitaplıkları, uygulama çalışma

33 zamanı, uygulama çerçevesi ve uygulamalardan oluşmaktadır [61]. Android, yetkisiz erişim ve değişikliği önlemek için sistem bölümünü salt okunur hale getirmiştir [59]. Güvenli Google Play Market Google, herhangi bir uygulamayı kullanıma sunmadan önce uygulamanın normal davranışına sahip olup olmadığını belirlemek için uygulamayı kum havuzundaki bir ortamda dinamik analiz hizmeti olan Bouncer ile denetlemektedir [59]. Bu yüzden Google kullanıcılarına güvenlik nedenlerinden ötürü kendi uygulama marketi dışındaki kaynaklardan uygulama yüklemelerini önermemektedir [59]. Bazı alternatif pazarlar kötü amaçlı yazılımdan tamamen yoksun görünmektedir, ancak birkaç pazar neredeyse tamamen kötücül uygulama dağıtmaktadır [62]. Şekil 2.27. Toplam uygulama ve market başına tespit edilen kötücül yazılım [62] Şekil 2.27'de gösterilen dağılım plânında taranılan her pazar için x-koordinatı o pazardaki toplam uygulama sayısını ve y koordinatı bu pazarda kötücül olarak tespit edilen uygulama sayısını belirten bir noktaya karşılık gelmektedir. Şekil 2.27'deki kesikli çizgi, bir pazardan örneklenen her uygulamanın kötücül olarak algılanacağı (dolayısıyla hiçbir satır bu çizginin üstünde olmayabilir) eşiği temsil etmektedir. Şekil 2.27 de görüleceği gibi bazı

34 uygulama marketlerinde bulunan uygulamaların tamamı kötücül olarak görülmektedir [62]. Google Play market dışındaki uygulama marketlerinde düşük doğrulama teknikleri olmasına rağmen bu marketler 800 000'nin üzerinde indirme oranına sahiptir [63,64]. Android buna önlem olarak akıllı cihazlarda bilinmeyen kaynaklardan uygulama yüklemeye ön tanımlı olarak izin vermemektedir. Ancak, kullanıcı akıllı cihazın ayarlar bölümünden bilinmeyen kaynaklardan uygulama yüklemeye izin verebilmektedir. 2.2.5. Kötücül yazılım aileleri G Data H1/2016 raporunda bahsedildiği gibi 1,7 milyondan fazla yeni kötü amaçlı yazılım örneğiyle, 2015 yılının tamamında (2 333 777) elde edilen sonuçların yarısından fazlasına ulaşılmıştır [2]. Kötücül yazılımların kişisel bilgileri ele geçirmek, gelir elde etmek, telefona zarar vermek gibi farklı amaçları vardır [50]. Bu yüzden farklı kötücül yazılım aileleri bulunmaktadır. Bunlardan en çok bilinenler aşağıda anlatılmıştır. FakeInstaller FakeInstaller, en yaygın bulunan ve tespit edilmesi en zor olan kötücül ailedir [65]. FakeInstaller, uygulama yüklenirken yeniden paketleme yöntemini kullanarak rastgele sınıfı ve yöntem adını şifreli biçimde ekleyerek kötü amaçlı uygulamayı gizlemektedir [65]. FakeInstaller'ın amacı, malware yazarlarının sahip olduğu ücretli (premium) servislere SMS (Short Message Sevice) göndererek maddi kayıplarla kullanıcıya zarar vermektir [65]. Ayrıca uzaktaki bir sunucudan komutlar almak için bir arka kapı da içermektedir [66]. Opfake Opfake, Opera Mini tarayıcısı için bir yükleyici dahil olmak üzere çeşitli uygulamalar ve içerikleri taklit eden ve kullanıcıların kendileri için ödeme yapmasını gerektiren polimorfik zararlı yazılımlardır [66]. Opfake, yeniden paketleme kurulum yöntemini kullanır, mesaj ile SIM verileri ile gönderir ve diğer kötü amaçlı uygulamaları indirir ve SD (Secure Digital) karta depolamaktadır [65].

35 Plankton Bu zararlı yazılım ailesi yayılım için güncelleme metodolojisini kullanmaktadır [65]. Kötü amaçlı yazılım dinamik kod yükleme yöntemini kullanmaktadır, bu nedenle statik kod analizi ve elle kod iç gözlemi zordur [65]. Bu zararlı yazılım, korsan yazarın cihazı uzaktan kontrol etmesini sağlar ve cihaz bilgilerini uzaktaki servislere gönderir [65]. DroidKungFu DroidKungFu, kullanıcı cihazını kontrol etmek için kök kullanıcı yetkisini kullanmayı amaçlayan tehlikeli bir zararlı yazılım ailesidir [65]. Kullanıcının gizli verilerini uzaktaki sunuculara göndererek gizlilik sızıntılarına neden olmaktadır [65]. Alternatif uygulama pazarları aracılığıyla sunulan uygulamalara ve Çince konuşan kullanıcıları hedef almaktadır [66]. BaseBridge 2011'de keşfedilen BaseBridge, zararlı ve kontrolü zor kötücül ailelerinden biridir [65]. Bu kötü amaçlı yazılım ailesi, cihazın kontrolünü kök yetkisini alarak ele geçirir ve kritik dosyaları okumak ve uzaktan kumandaya göndermek için read () sistem çağrısını çağırarak IMSI (International Mobile Subscriber Identity), IMEI (International Mobile Equipment Identity), işletim sistemi sürümü, telefon numarası, cihaz bilgisi gibi kritik verileri korsan yazılımcının sunucusuna gönderir [65]. Ayrıca SMS gönderme izni, SMS'i engelleme, SMS silme ve telefon görüşmesi yapma imkânı vardır, bu da kullanıcıya maddi olarak zarar vermesine neden olur [65]. Ginger Master Ginger Master, kullanıcı telefon numarası, IMEI numarası, Android sürümü, yüklü uygulamalar listesi ve şebeke bilgileri hakkında bilgi sahibi olan SQLite veritabanını oluşturan ve uzaktaki sunucuya gönderen bir zararlı yazılımdır [65]. Bu kötücül aile, mevcut kötücül yazılımları bulan teknolojiler tarafından tespitini engellemek için polimorfik tekniklerden faydalanmaktadır [66].

36 Iconosys Bu kötü amaçlı yazılım ailesi, önyükleme tamamlandığında yöntemlerini başlatır ve kullanıcının çevrimiçi etkinliklerini, cihaz konumunu, metin mesajı adlarını, kullanıcı iletişim listesini ve kredi kartı ayrıntılarını elde etmek için sessizce arka planda çalışarak gizli bilgileri korsan yazarlara göndermektedir [65]. Mesaj okumak, mesaj yazmak ve mesaj göndermek için izinlere sahiptir, ayrıca telefon görüşmesi özelliğine sahiptir [65]. Bu yüzden kullanıcıya mali açıdan zarar verebilir [65]. Kmin Önyükleme tamamlandı olayında etkinleştirilen bağımsız kurulum tabanlı kötücül yazılım ailesidir [65]. Bu tür zararlı yazılımlar kullanıcı cihazının kontrolünü ele geçirir ve ücretli servislere mesaj gönderir [65]. Ayrıca kullanıcı mesajlarını engelleyebilir ve kullanıcıların özel verilerini uzaktaki sunuculara gönderir [65].

37 3. İSTEMCİ-SUNUCU MİMARİSİNDE GELİŞTİRİLEN ANDROİD KÖTÜCÜL YAZILIM TESPİT SİSTEMİ Bu başlıkta, Android uygulamaların analizi için statik analiz yöntemi kullanılarak geliştirilmiş olan sistem anlatılmıştır. Statik analiz yöntemi için izinler kullanılmıştır. Geliştirilen statik analiz sisteminin mimarisi Şekil 3.1'de gösterilmiştir. Şekil 3.1. Geliştirilen sistemin mimarisi Şekil 3.1 incelendiğinde, veri setlerinin değerlendirilmesinin birinci adımında kötücül ve iyicil veri setleri oluşturulmuştur. İyicil veri setinin oluşturulması için ülkemizdeki ve diğer ülkelerin devlet kurumlarının geliştirmiş oldukları uygulamalar ve Google Play markette [5] bulunan en popüler uygulamalar indirilmiştir. Kötücül veri seti olarak Drebin [12] çalışmasında oluşturulan veri setinden yararlanılmıştır. İkinci adımda, Apktool [11] aracı kullanılarak iyicil ve kötücül veri setindeki apk dosyalarına tersine mühendislik yapılmıştır. Tersine mühendislik ile AndroidManifest.xml dosyasında bulunan izinler elde edilmiştir ve her uygulamanın sahip olduğu izinler oluşturulan veritabanına kayıt edilmiştir. Üçüncü adımda, kötücül ve iyicil veri setinde tekil olarak bulunan izinler elde edilmiştir. Bu izinlerin kötücül veri setinde bulunma yüzdesi ve iyicil veri setinde bulunma yüzdesi bulunmuştur. Ardından kötücül bulunma yüzdesinden iyicil bulunma yüzdesi çıkarılarak kötücül değer dediğimiz değer hesaplanmıştır. Bu işlemin formülize edilmiş gösterimi Eşitlik 3.1 de gösterilmiştir.

38 nn İzin Kötücül Değeri = ii=0 KKKK_KKöttüccüll(tt) ii=0 KKKK_İyyyyyyyyyy(tt) (3.1) nn Beşinci adımda, her bir uygulamanın sahip olduğu izinlerin kötücül değerleri toplanarak uygulamanın toplam kötücül değeri elde edilmiştir. Ayrıca bu adımda, VirusTotal in API'si [67] kullanılarak her bir uygulamanın VirusTotal veritabanında bulunan sonuçları elde edilmiştir. Burada uygulamaların kötücül değerlerini hesaplamak için VirusTotal'in kullanılmasının nedeni 50'den fazla antivirüs programı tarafından bir sonuç göstermesi [68] ve literatürdeki güvenlik tabanlı çalışmalarda kullanılmasıdır. Google'ın yan kuruluşu olan VirusTotal, virüsten koruma motorları ve web sitesi tarayıcıları tarafından tespit edilen virüsleri, solucanları, truva atlarını ve diğer kötü amaçlı içeriği tanımlayan dosyaları ve URL'leri analiz eden ücretsiz çevrimiçi bir hizmettir [69]. VirusTotal ile Android uygulamaları analiz yapmak için 4 yöntem bulunmaktadır, bunlar; web sayfası, VirusTotal uygulama yükleme aracı, mail gönderimi ve VirusTotal API sidir. Bu tezde bu yöntemlerden VirusTotal API [67] kullanılarak uygulamaların analizi yapılmıştır. Literatüre baktığımız zaman birçok çalışmada VirusTotal kullanılmıştır. Mobile-Sandbox çalışmasının statik analiz bölümünde analiz edilen uygulamanın md5 hash kodunu VirusTotal veritabanındaki tüm hash ler ile karşılaştırılır ve eğer hash bulunursa uygulamayı kötü niyetli olarak sınıflandıran araçların sayısı uygulamayı analiz eden antivirüs araçlarının sayısına bölünerek "bulunma oranı" hesaplanmaktadır [70,16]. Ban ve diğerlerinin yaptığı çalışmada veri setinde kullanılan uygulamaların kötücül olup olmadığını belirlemek için VirusTotal kullanılmıştır [71]. Wang ve diğerlerinin yaptığı çalışmada iyicil uygulamaların veri setini oluşturmak için VirusTotal kullanılmıştır [19]. Tez çalışmasında VirusTotal puanı her bir uygulama için hesaplanmaktadır. VirusTotal puanına örnek verecek olursak; com.perfectlove paket adına sahip uygulama 61 adet antivirüs programı tarafından 42 tanesinde kötücül olarak bulunmuştur. Bu durumda uygulamanın VirusTotal puanı (42/61)*100'den 68,85 olarak hesaplanmıştır. Her uygulama için bu VirusTotal değeri ile uygulamanın sahip olduğu toplam kötücül değer toplanmıştır ve ikiye bölünerek ortalama kötücül puan dediğimiz değer elde edilmiştir. Bu hesaplamanın formülize edilmiş hali Eşitlik 3.2 de gösterilmiştir. Nihai Kötücül Değer = (Toplam (KD) + VirusTotal Puanı) / 2 (3.2) Dördüncü adımda, iyicil ve kötücül veri setindeki uygulamaların ortalama kötücül değerleri Alıcı İşlem Karakteristikleri (Receiver Operating Characteristic) eğrisi

39 kullanılarak bir eşik değer belirlenmiştir. Alıcı işlem karakteristikleri eğrisi farklı eşik değerleri için hesaplanan, dikey eksen üzerinde doğru pozitiflik (duyarlılık) ve yatay eksen üzerinde yanlış pozitiflik (1- özgüllük) oranlarının yer aldığı bir grafiktir [72]. Şekil 3.2 de mükemmel, iyi ve değersiz testleri temsil eden alıcı işlem karakteristikleri eğrisi gösterilmiştir. Şekil 3.2. Alıcı işlem karakteristikleri eğrisi karşılaştırması [73] Şekil 3.2 incelendiğinde, eğrinin altında kalan alan 1 ise mükemmel bir testi temsil etmektedir eğer eğrinin altıda kalan alan 0.5'lik bir alan ise değersiz bir testi temsil etmektedir. Beşinci adımda, bu eşik değere göre uygulamaların iyicil ya da kötücül yazılım tespiti yapılmıştır. Alıcı işlem karakteristikleri eğrisi ile eşik değer hesaplanması için Accord.Statistics.Analysis kütüphanesi kullanılmıştır [74]. Bu kütüphane yardımıyla eşik değer belirlenirken kullanılan kod parçasının algoritması Şekil 3.3 te gösterilmiştir. Ayrıca ilgili kod parçasının örneği EK-1 de verilmiştir. Bilinmeyen Android uygulamayı değerlendirmek için istemci geliştirilen web uygulamayı kullanarak Android uygulamayı analiz etmesi gereklidir. Sunucu analiz için Android uygulamaya sırasıyla tersine mühendislik, uygulamanın kötücül değerinin hesaplanması ve eşik değerin belirlenmesi adımlarından geçirmektedir. Ardından analiz sonucu veritabanına kayıt edilip analiz sonucu istemciye gönderilmektedir.

40 1. Accord.Statistics.Analysis kütüphanesindeki ReceiverOperatingCharacteristic kullanılarak roc isminde nesne tanımlanır 2. Tanımlanan roc nesnenin Compute methodu kullanılarak 100 adet koordinat değerine sahip ROC eğrisi hesaplanır 3. Hesaplanan ROC eğrisi koordinatlarının sayısı kadar for döngüsü oluşturulur 4. Her bir koordinat değerinin doğru pozitiflik (duyarlılık) değeri (roc.points[n].sensitivity * 100) hesaplaması ile hesaplanır. Yanlış pozitiflik (1- özgüllük) değeri ise ((1 - roc.points[n].specificity) * 100) hesaplaması ile elde edilir 5. Doğru pozitiflik değeri 90 dan büyük ve yanlış pozitiflik değeri 15 ten küçük olanlar ROC nesnenelerini tutan listeye eklenir, ROC nesnesinde doğru pozitiflik, yanlış pozitiflik ve eşik değer değerlerini tutan değişkenler bulunmaktadır 6. Bu işlem for döngüsü bitene kadar tekrarlanır 7. Listedeki eleman sayısı kadar yeni bir for döngüsü oluşturulur 8. Listedeki her bir elaman için (100- (doğru pozitiflik))+ (yanlış pozitiflik) değeri hesaplanır ve listenin birinci elemanının değeri min değişkenine atanır 9. Bundan sonraki elemanların değeri min değişkenindeki değer ile karşılaştırılır, karşılaştırma sonucunda elemanın değeri min değişkenindeki değerden küçükse min değişkenine atanır 10. Bu işlem for döngüsü bitene kadar tekrarlanır ve min değişkenindeki değere sahip listedeki elemanın eşik değer değeri eşik değer olarak belirlenir. Şekil 3.3. Eşik değer hesaplanması için kullanılan kod parçasının algoritması Şekil 3.3 incelendiğinde, öncelikle ReceiverOperatingCharacteristic nesnesinin kullanılması için iyicil ve kötücül uygulamaların ayırt edilmesini sağlayan dizi ile iyicil ve kötücül uygulamaların sahip olduğu toplam kötücül değerleri tutan dizilerinin oluşturulmuş olması gereklidir. Bu oluşturulan diziler ReceiverOperatingCharacteristic metoduna girdi olarak eklenmiştir. Bir sonraki adımda 100 adet koordinat değerine sahip eşik değer eğrisi hesaplanmıştır. Oluşturulan koordinat değerlerinin sahip oldukları dikey eksen üzerinde doğru pozitiflik (duyarlılık) ve yatay eksen üzerinde yanlış pozitiflik (1- özgüllük) değerleri hesaplanmıştır. Bu değerlerden doğru pozitiflik oranı 90 nın üzerinde olan ve yanlış pozitiflik değeri 15 ten az olanlar bir listeye eklenmiştir. Bu listedeki elamanların

41 (100 - doğru pozitiflik değeri) ve yanlış pozitiflik değerleri toplanmıştır. Listedeki elemanlardan bu toplam değeri en küçük olan eşik değer olarak belirlenmiştir. 3.1. İyicil ve Kötücül Uygulama Veri Setlerinin Oluşturulması Tez için kullanılan Android sürümü Drebin [12] kötücül veri setindeki uygulamaların targetsdkversion bilgisi en yüksek 16 olduğundan Android 4.1 olarak seçilmiştir. İyicil uygulama veri seti oluşturulması için ülkemizdeki ve diğer ülkelerdeki resmî kurumların Android uygulamaları ve Google Play markette [5] bulunan popüler uygulamalar APKPure [75] web sayfası kullanılarak indirilmiştir. Bu web sayfası kullanılarak 1 331 uygulama el ile indirilerek iyicil veri seti oluşturulmuştur. Kötücül uygulama veri seti için açık kaynak olarak paylaşılmış olan Drebin [12] çalışmasında oluşturulmuş veri seti kullanılmıştır. Bu veri seti 179 farklı kötücül yazılım ailesinden 5 560 tane uygulama içermektedir. Bu örnekler Ağustos 2010 ile Ekim 2012 yılları arasındaki bir periyotta toplanmıştır [14,76]. Kullanılan veri setinin özet tablosu Çizelge 3.1'de gösterilmiştir. Çizelge 3.1. Veri seti özeti Veri Seti Türü Sayısı Kaynağı Kötücül 5 545 Drebin [12] İyicil 1 331 Google Play market İyicil veri setindeki uygulamalar Google Play markete [5] eklenirken detaylı bir analiz sürecinden geçmediğinden iyicil veri setindeki uygulamaların güvenli olup olmadığı VirusTotal API'si [67] kullanılarak kontrol edilmiştir. Literatürde bulunan AndroDialysis [27], Kang ve diğ. nin [77], Ma ve diğ. nin [78] ve ICCDetector [79] gibi çalışmalar iyicil veri setinde kullanılacak olan uygulamaların güvenilir olmasını sağlamak için VirusTotal kullanılmıştır. VirusTotal taraması sonucunda en az bir antivirüs programı tarafından kötücül olarak bulunan 158 adet uygulama iyicil veri setinde daha güvenli uygulamaların bulunması sağlamak için çıkarılmıştır. Bunun sonucunda elde edilen veri setinin özet tablosu Çizelge 3.2'de gösterilmiştir.

42 Çizelge 3.2. VirusTotal e göre oluşan veri seti özeti Veri Seti Türü Sayısı Kaynağı Kötücül 5 545 Drebin [12] İyicil 1 173 Google Play market Literatürde statik analiz yöntemini kullanarak kötücül yazılım tespiti yapan çok sayıda çalışma bulunmaktadır. Bu çalışmalarda kullanılan veri seti sayısında bir standart bulunmamaktadır. Bu tez kapsamında incelenen statik analiz çalışmalarında kullanılan veri seti sayıları Çizelge 3.3 te gösterilmiştir. Çizelge 3.3. Statik analiz çalışmalarında kullanılan veri seti bilgileri Yapılan Çalışma Yılı Kötücül Veri İyicil Veri Seti Toplam Veri Çalışma Seti Sayısı Sayısı Seti Sayısı DroidMat[10] 2012 238 1 500 1 738 Drebin[12] 2014 5 560 123 453 129 013 APK 2015 6 909 1 853 8 762 Auditor[15] DroidOL[17] 2016 42 910 44 347 87 257 ASE [18] 2016 4 006 100 4 106 Wang ve ark. [19] 2017 8 701 107 327 116 028 Sokolova ve 2017 100 9 512 9 612 ark. [20] Dexteroid[21] 2016 1 259 1 526 2 785 Anwar ve ark. 2016 1 400 1 400 2 800 [23] Wu ve ark. [24] 2016 1 160 1 050 2 210 Arslan ve ark. 2017 50 25 75 [25] Tez 2017 5 545 1 331 6 876 Çizelge 3.3 te çeşitli yıllarda statik analiz yöntemini kullanarak yapılmış olan çalışmaların veri seti bilgisi gösterilmiştir. Drebin, DroidOL ve Wang ve diğ. nin yapmış olduğu çalışmaların kullandığı toplam veri seti sayısı diğer çalışmalara göre oldukça fazla olduğu görülmüştür. Bazı çalışmalarda kötücül veri seti sayısı iyicil veri seti sayısından fazla iken bazı çalışmalarda bu durumun tam tersinin olduğu görülmüştür. Bu yüzden kötücül veri seti sayısı ile iyicil veri seti sayısı arasında bir ilişki kurulamamıştır. Ayrıca tez kapsamında incelenen kötücül veri seti sayısı Drebin, APK Auditor ve ASE

43 çalışmalarındaki değerlere yaklaşılmıştır. Tez kapsamında incelenen iyicil veri seti sayısı DroidMat, Dexteroid, Anwar ve diğ. nin ve Wu ve diğ. nin yaptıkları çalışmalardaki değerlere yaklaşılmıştır. 3.2. Uygulamaların Bilgilerinin Elde Edilmesi Android uygulamaları apk arşiv dosyaları ile telefonlara yüklenmektedir. Bu apk dosyalarının içinde bulunan bilgiler hazır araçlar ya da kütüphaneler kullanılarak elde edilmektedir. Bu tez çalışmasında AndroidManifest.xml dosyasındaki bilgileri elde etmek için Apktool aracının [11] 2.2.2 versiyonu kullanılmıştır. C# Windows Form uygulamasında Apktool aracı kullanılarak Android uygulamaların izin bilgilerini elde eden uygulama geliştirilmiştir. Bu uygulama ile iyicil ve kötücül uygulamaların bulunduğu klasör yolu verilerek Android uygulamalara Apktool aracı ile tersine mühendislik yapılmıştır. Apktool aracı komut istemcisi ile çalışmaktadır fakat bir Android uygulamayı C# platformunda Apktool aracı ile tersine mühendislik yapmak için kullanılan kod parçasının algoritması Şekil 3.4 te gösterilmiştir. Ayrıca ilgili kod parçasının örneği EK- 2 de verilmiştir. 1. System.Diagnostics kütüphanesinde tanımlı olan ProcessStartInfo kullanılarak Apktool aracının tersine mühendislik için kullanacağı komut yazılarak procstartinfo adında bir nesne tanımlanır 2. procstartinfo nesnesinin RedirectStandardOutput değeri true atanır 3. procstartinfo nesnesinin UseShellExecute değerine false atanır 4. procstartinfo nesnesinin CreateNoWindow değerine true atanır 5. System.Diagnostics kütüphanesinde tanımlı olan Process kullanılarak proc adında nesne tanımlanır 6. proc nesnesinin StartInfo değerine procstartinfo nesnesi atanır 7. İlgili işlemi gerçekleştirmek için proc nesnesin Start metotu çağrılır. Şekil 3.4. Tersine mühendislik kod parçasının algoritması Yukarıdaki algoritmada bahsedilen Apktool aracının çalışması için gerekli olan komut apktool d uygulama yolu komutudur. Bu komutta bulunan d harfi decode (deşifre etmek)

44 anlamındadır. Elimizdeki veri setinde toplam 6 876 adet Android uygulama bulunduğundan tersine mühendislik işlemini hızlı yapabilmek adına paralel işlemler kullanılmıştır. İyicil ve kötücül veri setindeki her bir uygulama için tersine mühendislik işlemi bittikten sonra bu uygulamaların AndroidManifest.xml dosyasında bulunan paket adı, uygulama adı, hedef SDK versiyonu, minimum SDK versiyonu, kullandığı izinler ve dosya adı veritabanına kayıt edilmektedir. Ayrıca Drebin [12] kötücül veri setindeki uygulamalar için kötücül yazılım aile bilgisi veritabanına kayıt edilmektedir. İyicil veri setinde bulunan uygulamaların en çok kullandıkları izinler ve kullanım adetleri aşağıdaki Çizelge 3.4 te gösterilmiştir. Çizelge 3.4. İyicil veri setinde en çok kullanılan 10 izin İzin Adı Toplam android.permission.internet 1 306 android.permission.access_network_state 1 142 android.permission.write_external_storage 930 android.permission.wake_lock 774 com.google.android.c2dm.permission.receive 679 android.permission.access_fine_location 533 android.permission.vibrate 520 android.permission.access_coarse_location 492 android.permission.get_accounts 473 android.permission.access_wifi_state 462 Çizelge 3.4 incelendiğinde, 1 331 adet iyicil veri setinde en çok kullanılan izin INTERNET iznidir. Bu iznin hemen hemen bütün uygulamalarda kullanılmasının sebebi geliştirilen çoğu uygulamanın interneti kullanma ihtiyacı olmasından dolayıdır. En çok kullanılan ilk 10 izin içinde en az kullanılan izin ACCESS_WIFI_STATE iznidir. Bu izin uygulamaya kablosuz ağlar hakkında bilgilere erişim izni vermektedir [80]. Kötücül veri setinde bulunan uygulamaların en çok kullandıkları izinler ve kullanım adetleri aşağıdaki Çizelge 3.5 te gösterilmiştir.

45 Çizelge 3.5. Kötücül veri setinde en çok kullanılan 10 izin İzin Adı Toplam android.permission.internet 5 332 android.permission.read_phone_state 4 939 android.permission.write_external_storage 3 722 android.permission.access_network_state 3 677 android.permission.send_sms 2 992 android.permission.receive_boot_completed 2 671 android.permission.access_wifi_state 2 430 android.permission.receive_sms 2 135 android.permission.wake_lock 2 128 android.permission.read_sms 2 081 Çizelge 3.5 incelendiğinde, kötücül veri setinde en çok kullanılan izin iyicil veri setinde olduğu gibi INTERNET iznidir. En çok kullanılan ilk 10 izin içinde en az kullanılan izinler RECEIVE_SMS, WAKE_LOCK ve READ_SMS izinleridir. Bunlardan RECEIVE_SMS izni uygulamaya telefona gelen SMS mesajlarını almasına izin vermektedir [80]. WAKE_LOCK izni uygulamaya işlemciyi uyku halinden uzak tutmak veya ekranın karartmasını önlemek için kullanmasına izin vermektedir [80]. READ_SMS izni ise uygulamaya telefona gelen SMS mesajlarını okumasına izin vermektedir [80]. Kötücül ve iyicil veri setinde kullanılan en çok 10 izinler içinde ortak olarak INTERNET, READ_PHONE_STATE, WAKE_LOCK, WRITE_EXTERNAL_STORAGE, ACCESS_WIFI_STATE ve ACCESS_NETWORK_STATE izinleri bulunmaktadır. Ayrıca Çizelge 1.1 de bahsedilen Android in tehlikeli izin olarak belirlemiş olduğu izinler ile kötücül veri setinde en çok kullanılan 10 izinde ortak olarak READ_PHONE_STATE, WRITE_EXTERNAL_STORAGE, SEND_SMS, RECEIVE_SMS VE READ_SMS izinleri bulunmaktadır. Drebin [12] kötücül veri setinde en çok kullanılan 10 kötücül yazılım ailesi Çizelge 3.6 gösterilmiştir.

46 Çizelge 3.6. Kötücül veri setinde en çok kullanılan 10 kötücül yazılım ailesi Kötücül Yazılım Ailesi Toplam FakeInstaller 925 DroidKungFu 665 Plankton 625 Opfake 611 GinMaster 339 BaseBridge 328 Iconosys 152 Kmin 147 FakeDoc 132 Adrd 91 Çizelge 3.6 incelendiğinde, kötücül veri setinde en çok kullanılan kötücül yazılım ailesi FakeInstaller'dır. Drebin [12] kötücül veri setinde FakeInstaller kötücül yazılım ailesi bulunan uygulamaların kullandığı en çok 10 izin Çizelge 3.7'de gösterilmiştir. Çizelge 3.7. FakeInstaller kötücül yazılım ailesinin en çok kullandığı 10 izin İzin Adı Toplam android.permission.send_sms 925 android.permission.internet 903 android.permission.read_phone_state 831 android.permission.receive_sms 770 android.permission.write_external_storage 552 android.permission.read_sms 401 android.permission.wake_lock 304 com.google.android.c2dm.permission.receive 295 com.software.application.permission.c2d_message 266 android.permission.receive_boot_completed 220 Çizelge 3.7 incelendiğinde, FakeInstaller kötücül yazılım ailesi uygulamasının en çok kullandığı izin SEND_SMS iznidir. Bu iznin bütün FakeInstaller kötücül yazılım ailesi uygulamalarında kullanılmasının nedeni malware yazarlarının sahip olduğu ücretli (premium) servislere SMS göndererek maddi kayıplarla kullanıcıya zarar vermeyi amaçladığından dolayıdır [65]. Ayrıca Çizelge 1.1 de bahsedilen Android in tehlikeli izin olarak belirlemiş olduğu izinler ile FakeInstaller kötücül yazılım ailesinin en çok kullandığı 10 izinde ortak olarak READ_PHONE_STATE,

47 WRITE_EXTERNAL_STORAGE, SEND_SMS, RECEIVE_SMS VE READ_SMS izinleri bulunmaktadır. Drebin [12] kötücül veri setinde en çok kullanılan ikinci kötücül yazılım ailesi DroidKungFu'dur. Drebin [12] kötücül veri setinde DroidKungFu kötücül yazılım ailesi bulunan uygulamaların kullandığı en çok 10 izin Çizelge 3.8'de gösterilmiştir. Çizelge 3.8. DroidKungFu kötücül yazılım ailesinin en çok kullandığı 10 izin İzin Adı Toplam android.permission.internet 661 android.permission.read_phone_state 658 android.permission.access_network_state 626 android.permission.access_wifi_state 608 android.permission.write_external_storage 567 android.permission.change_wifi_state 473 android.permission.access_coarse_location 418 android.permission.receive_boot_completed 359 android.permission.access_fine_location 329 android.permission.read_sms 275 Çizelge 3.8 incelendiğinde, 665 adet DroidKungFu kötücül yazılım ailesi uygulamasının en çok kullandığı izin INTERNET iznidir. İkinci en çok kullandığı izin ise READ_PHONE_STATE iznidir. Bu iki izin hemen hemen bütün uygulamalarda beraber kullanılmıştır. Bunun nedeni READ_PHONE_STATE izni ile telefon durumu bilgisi elde edilir ve kullanıcının gizli verilerini uzaktaki sunuculara göndermek içinde INTERNET izni kullanılmaktadır. Ayrıca Çizelge 1.1 de bahsedilen Android in tehlikeli izin olarak belirlemiş olduğu izinler ile DroidKungFu kötücül yazılım ailesinin en çok kullandığı 10 izinde ortak olarak READ_PHONE_STATE, WRITE_EXTERNAL_STORAGE, READ_SMS, ACCESS_COARSE_LOCATION VE ACCESS_FINE_LOCATION izinleri bulunmaktadır. Drebin [12] kötücül veri setinde en çok kullanılan üçüncü kötücül yazılım ailesi Plankton'dur. Drebin [12] kötücül veri setinde Plankton kötücül yazılım ailesi bulunan uygulamaların kullandığı en çok 10 izin Çizelge 3.9'da gösterilmiştir.

48 Çizelge 3.9. Plankton kötücül yazılım ailesinin en çok kullandığı 10 izin İzin Adı Toplam android.permission.internet 624 android.permission.read_phone_state 621 com.android.launcher.permission.install_shortcut 612 com.android.launcher.permission.uninstall_shortcut 600 com.lge.launcher.permission.read_settings 589 com.htc.launcher.permission.read_settings 589 com.motorola.launcher.permission.read_settings 589 android.permission.access_network_state 587 com.motorola.dlauncher.permission.read_settings 583 android.permission.access_wifi_state 579 Çizelge 3.9 incelendiğinde, 625 adet Plankton kötücül yazılım ailesi uygulamasının en çok kullandığı izin INTERNET iznidir. İkinci en çok kullandığı izin ise READ_PHONE_STATE iznidir. 3.3. Kötücül ve İyicil Uygulama Değerlendirme İşlemi Bu bölümde veri setinde bulunan iyicil ve kötücül uygulamaları değerlendirme işleminden bahsedilmiştir. İlk olarak kötücül ve iyicil veri setinde bulunan tekil izinler bulunmuştur. Bu işlem sonucunda 1323 adet farklı izin bulunmuştur. Ardından her tekil iznin iyicil ve kötücül veri setindeki bulunma sayıları elde edilmiştir. Elde edilen bulunma sayıları kullanılarak izinlerin iyicil ve kötücül veri setindeki bulunma oranları hesaplanmıştır. Son olarak kötücül veri setinde bulunma oranından iyicil veri setinde bulunma oranı çıkarılarak her bir izin için kötücül değer elde edilmiştir. Yapılan işlemler sonucunda elde edilen sonucun bir bölümü Çizelge 3.10 da gösterilmiştir.

49 Çizelge 3.10. En yüksek ve en düşük kötücül değerlere sahip izinler İzin Adı Kötüc ül Veri Setind eki Bulun ma Sayısı İyicil Veri Setind eki Bulun ma Sayısı Kötüc ül Veri Setind eki Bulun ma Oranı İyicil Veri Setind eki Bulun ma Oranı Köt ücül Değ er android.permission.read_phone_state 4 939 369 89 28 61 android.permission.send_sms 2 992 33 54 2 52 android.permission.read_sms 2 081 27 38 2 36 android.permission.receive_sms 2 135 51 39 4 35 android.permission.receive_boot_comp LETED 2 671 296 48 22 26 com.android.launcher.permission.install_s HORTCUT 1 414 55 26 4 22 android.permission.write_sms 1 239 8 22 1 21 android.permission.camera 227 274 4 21-17 android.permission.read_external_sto RAGE 333 301 6 23-17 android.permission.access_network_st ATE 3 677 1142 66 86-20 android.permission.wake_lock 2 128 774 38 58-20 com.google.android.providers.gsf.permission.r EAD_GSERVICES 1 289 0 22-22 android.permission.get_accounts 443 473 8 36-28 com.google.android.c2dm.permission.receiv E 380 679 7 51-44 Çizelge 3.10 incelendiğinde, kötücül değeri en yüksek olan READ_PHONE_STATE iznidir. Bu izni sırasıyla SEND_SMS, READ_SMS, RECEIVE_SMS ve RECEIVE_BOOT_COMPLETED izinleri takip etmektedir. Ayrıca Çizelge 1.1 de bahsedilen Android in tehlikeli izin olarak belirlemiş olduğu izinler ile ortak olarak

50 READ_PHONE_STATE, SEND_SMS, RECEIVE_SMS, READ_SMS ve READ_CONTACTS izinleri bulunmaktadır. Bu elde edilen 1323 adet izin ve bu izinlerin kötücül değerleri veritabanına kayıt edilmektedir. İyicil ve kötücül veri setindeki her bir uygulamanın sahip olduğu izinlerin kötücül değerleri toplanarak uygulamaya ait toplam kötücül değer elde edilmektedir. Örnek verilecek olursa; beelon.android.alarm paket adındaki uygulama READ_PHONE_STATE (61 KD), RECEIVE_BOOT_COMPLETED (26 KD), CALL_PHONE (2 KD) ve SEND_SMS (52 KD) izinlerine sahiptir. Bu uygulamanın toplam kötücül değeri 61 + 26 + 2 + 51 =141 olarak bulunmuştur. VirusTotal kullanılarak her bir uygulama için VirusTotal puanı hesap edilmiştir. Yukarıdaki uygulamadan devam edecek olursak, VirusTotal e göre 57 adet antivirüs programı tarafından 37 tanesinde kötücül olarak bulunmuştur. Bu durumda bu uygulamanın VirusTotal puanı (37/57)*100 den 64,91 olarak hesaplanmıştır. Her uygulama için bu VirusTotal değeri ile uygulamanın sahip olduğu toplam kötücül değer toplanır ve ikiye bölünür. Bu işlem sonucunda ortaya çıkan değer uygulamanın kötücül değeri olarak kabul edilir. Yukarıdaki uygulamanın kötücül değeri bu durumda (141 + 64,91)/2 den 104,46 olarak bulunmuş olur. Her uygulamanın sahip olduğu kötücül değerler kullanılarak alıcı işlem karakteristikleri eğrisinin yardımıyla eşik değer belirlenmiştir. Belirlenen eşik değere göre uygulamanın sahip olduğu kötücül değer karşılaştırılmaktadır. Bu karşılaştırma sonucunda uygulamanın sahip olduğu kötücül değer eşik değerden büyük ise uygulama kötücül, küçük ise iyicil olarak tanımlanmaktadır. 3.4. Veritabanı Tasarımı Geliştirilen sistem veritabanı olarak Microsoft SQL Server 2012 yi kullanmaktadır. Geliştirilen sistemin varlık-ilişki diyagramı Şekil 3.5 te gösterilmiştir.

51 Şekil 3.5. Geliştirilen sistemin varlık-ilişki diyagramı Şekil 3.5 incelendiğinde, Applications tablosu, kötücül ve iyicil veri setindeki uygulama bilgilerini tutan tablodur. Bu tabloda uygulama adı, paket adı, minimum SDK versiyonu, hedef SDK versiyonu, APK dosyası adı ve hangi kötücül aileye ait olduğu bilgileri bulunmaktadır. Permissions tablosu, kötücül ve iyicil veri setindeki uygulamaların sahip olduğu izin bilgilerini tutmaktadır. Statistics tablosu, kötücül ve iyicil uygulamaların değerlendirmelerinin tutulduğu tablodur. AppToPermission tablosu, iyicil ve kötücül veri setlerinde bulunan tekil izinler ile ilgili bilgileri tutan tablodur. Bu tabloda her bir izne ait kötücül veri setinde bulunma sayısı, iyicil veri setinde bulunma sayısı, kötücül veri setinde bulunma oranı, iyicil veri setinde bulunma oranı ve kötücül değeri bilgileri tutulmaktadır. 3.5. Web Uygulaması Tez çalışması kapsamında geliştirilen Android kötücül yazılım tespit sistemi istemci sunucu mimarisine göre çalışmaktadır. İstemcilere örnek olarak akıllı telefonlar, televizyonlar, bilgisayarlar örnek olarak gösterilebilir. Yapılan işlemler sunucu tarafında yapıldığından dolayı istemci tarafında bir yük oluşmamaktadır. İstemci tarafında sadece analiz sonucu gösterilmektedir. Yapılan işlemlerin sunucu tarafında yapılmasının en önemli nedeni Android telefon istemcilerin batarya, işlemci, ram gibi kısıtlı kaynaklara sahip olmasıdır. Geliştirilen web uygulamasının çalışma adımları Şekil 3.6 da gösterilmiştir.

52 Şekil 3.6. Geliştirilen web uygulamasının çalışma adımları Şekil 3.6 incelendiğinde, geliştirilen web uygulamanın Google Play entegrasyonu, web kazıma, APKPure [75], APK Leecher [81], Apk Bucket [82], Apktool [11] ve VirusTotal [67] bileşenleri bulunmaktadır. Geliştirilen web uygulamasının uygulama arama arayüzü Şekil 3.7 de sunulmuştur. Şekil 3.7. Geliştirilen web uygulamasının uygulama arama arayüzü Şekil 3.7 incelendiğinde, uygulama açılış ekranında uygulama ara ve uygulama yükle olmak üzere iki seçenek bulunmaktadır. Uygulama ara seçeneğinde aranacak kelime yazılıp, ara butonuna basıldığında aranan kelime https://play.google.com/store/search?q= linkinin sonuna eklenir, ardından &c=apps eklenerek ilgili web sayfasında web kazıma işlemi yapılmaktadır. Web kazıma işlemi için kullanılan kod parçasının algoritması Şekil 3.8 de gösterilmiştir. Ayrıca ilgili kod parçasının örneği EK-3 te verilmiştir.

53 1. HtmlAgilityPack kütüphanesinde bulunan HtmlWeb kullanılarak web isminde nesne oluşturulur 2. web nesnesinin dil kodlaması Türkçe olarak ayarlanır 3. web nesnesinin Load metotu kullanılarak aranan kelimeye göre oluşturulan linkdeki web sayfasının html bilgileri elde edilir ve doc isimli değişkene atanır 4. doc.documentnode.selectnodes fonksiyonuna XPath bilgisi girilir ve bu işlem sonucunda elde edilecek olan veriler nodes isimli değişkene atanır 5. nodes değişkeninin boş olup olmadığı kontrol edilir 6. nodes değişkeni boş değilse nodes değişkeninde bulunan düğümlerin sayısı kadar for döngüsü oluşturulur 7. Her düğüm bilgisi için div//div//div/img XPath yolunun boş olup olmadığı kontrol edilir 8. Her düğüm bilgisinde bulunan uygulamanın resim bilgisini elde etmek için nodes[n].selectnodes("div//div//div/img")[0].getattributevalue("src", "Yok") yazılır 9. Her düğüm bilgisinde bulunan uygulamanın isim bilgisini elde etmek için nodes[n].selectnodes("div//div//div/img")[0].getattributevalue("alt", "Yok") yazılır 10. Her düğüm bilgisinde bulunan uygulamanın paket adı bilgisini elde etmek için nodes[i].selectnodes("a")[0].getattributevalue("href", "Yok") yazılır 11. Bu elde edilen bilgiler kullanılarak AppInfo ismindeki nesneleri tutan listeye eklenir. AppInfo nesnesinde uygulama adı, paket adı ve uygulamanın resim bilgilerini tutan değişkenler bulunmaktadır 12. Bu işlem listedeki eleman sayısı 50 olana kadar devam eder ve 50 olduğunda for döngüsü sonlandırılır Şekil 3.8. Google Play web sayfasındaki web kazıma işleminin algoritması Şekil 3.8 incelendiğinde, örnek olarak aranan kelime futbol olursa web kazıma için kullanılacak link https://play.google.com/store/search?q=futbol&c=apps gibi olacaktır. Bu link sonucu aranan kelimeye göre ilgili uygulamaların listesini elde etmek için XPath yolunun bulunması gereklidir. XPath yolunu bulmak için ilgili link internet tarayıcısına girilmiştir ve açılan sayfada fareye sağ tık yapılarak incele linkine tıklanılmıştır. Gelen ekranda uygulama bilgilerinin bulunduğu yer seçilerek XPath yolu elde edilmiştir. Bu işlemi gösteren ilgili görüntü Şekil 3.9 da gösterilmiştir.

54 Şekil 3.9. XPath yolunun belirlenmesi Şekil 3.9 incelendiğinde, kırmızı ile işaretlenmiş satır uygulama bilgilerinin bulunduğu bölümdür. Fare bu işaretli bölüm üzerindeyken sağ tık işlemi yapılır, ardından Copy yoluna tıklanır ve son olarak Copy XPath seçilerek XPath yolu elde edilmiştir. Elde edilen XPath yolu kullanılarak uygulamaların sahip olduğu resim, paket adı ve uygulama adı bilgileri elde edilmiştir. Uygulama ara seçeneği ile Android uygulamalar uygulama adı, uygulama paket adı veya istenilen kelimeye göre aranabilir. Şekil 3.10 da futbol kelimesine göre çıkan arama sonucu gösterilmiştir.

55 Şekil 3.10. Futbol kelimesine göre çıkan arama sonucu Şekil 3.10 incelendiğinde, aranan futbol kelimesine göre sonuçlar listelenmiştir. Listedeki uygulamalardan istenilen seçilerek analiz yapılmaktadır. Analiz yapılabilmesi için öncelikle uygulamanın sunucuda bulunması gereklidir. Uygulama önceden analiz yapılmış ise ilgili sonuç istemci tarafında gösterilmektedir. Eğer önceden analiz yapılmamış ise ilk olarak uygulamanın sunucuya indirilmesi gereklidir. İndirme işlemi için ilgili uygulama ilk olarak APKPure [75] sitesinden indirilmeye çalışılmaktadır. Bu işlem için "https://apkpure.com/uygulama Adı/Paket Adı/download?from=details" gibi bir link oluşturulmaktadır. Burada dikkat edilmesi gereken en önemli nokta uygulama adında özel karakter olup olmamasıdır. Uygulama adında özel karakter olması durumunda bulunan özel karakterlerin tire (-) karakteri ile yer değiştirilmesi gereklidir. Bu link kullanılarak ilgili sitede web kazıma işlemi yapılmaktadır. Bu işlem için kullanılan kod parçasının algoritması Şekil 3.11 de gösterilmiştir. Ayrıca ilgili kod parçasının örneği EK-4 te verilmiştir.

56 1. HtmlAgilityPack kütüphanesinde bulunan HtmlWeb kullanılarak web isminde nesne oluşturulur 2. web nesnesinin dil kodlaması Türkçe olarak ayarlanır 3. web nesnesinin Load metotu kullanılarak oluşturulan linkdeki web sayfasının html bilgileri elde edilir ve doc isimli değişkene atanır 4. doc.documentnode.selectnodes fonksiyonuna //*[@id=\"download_link\"] XPath bilgisi girilir ve bu işlem sonucunda elde edilecek olan veriler nodes isimli değişkene atanır 5. nodes değişkeninin boş olup olmadığı kontrol edilir 6. nodes değişkeni boş değilse nodes[0].getattributevalue("href", "Yok") fonksiyonu kullanılarak indirilmek istenilen dosyanın linki elde edilir 7. İndirilmek istenilen dosyanın kayıt edileceği dosya yolu belirlenir 8. Dosya indirmek için yazılan fonksiyon çağrılır ve dosya indirilir Şekil 3.11. APKPure web sitesindeki web kazıma kod parçasının algoritması Şekil 3.11 incelendiğinde, indirilmek istenilen uygulamanın uygulama adı ve paket adı yazılarak link elde edilmektedir. Bu link sonucu ortaya çıkan web sayfasında bulunan Şekil 3.12 de gösterilen click here linkinin elde edilmesi gereklidir.

57 Şekil 3.12. APKPure web sayfasında bulunan indirme linki Şekil 3.12 incelendiğinde, XPath yolunun elde edilmesi için fare ile click here yazısının üstüne gelinir ve sağ tık yapılarak açılan pencerede seçili olarak gelen satır üzerinde fare ile sağ tık yapılarak Copy seçeneklerinde bulunan Copy XPath seçeneği seçilerek ilgili linkin XPath adresi elde edilir. Bu XPath yolu kullanılarak indirme linki elde edilir ve uygulama indirilmeye çalışılmaktadır. Eğer uygulama indirilemezse ikinci alternatif olarak APK Leecher [81] sitesi kullanılmaktadır. Bu işlem için http://apkleecher.net/fetcher/paket Adı gibi bir link oluşturulmaktadır. Bu link kullanılarak ilgili sitede web kazıma işlemi yapılmaktadır. Bu işlem için kullanılan kod parçasının algoritması Şekil 3.13 te gösterilmiştir. Ayrıca ilgili kod parçasının örneği EK- 5 te verilmiştir.

58 1. HtmlAgilityPack kütüphanesinde bulunan HtmlWeb kullanılarak web isminde nesne oluşturulur 2. web nesnesinin dil kodlaması Türkçe olarak ayarlanır 3. web nesnesinin Load metotu kullanılarak oluşturulan linkdeki web sayfasının html bilgileri elde edilir ve doc isimli değişkene atanır 4. doc.documentnode.selectnodes fonksiyonuna html/body/a XPath bilgisi girilir ve bu işlem sonucunda elde edilecek olan veriler nodes isimli değişkene atanır 5. nodes değişkeninin boş olup olmadığı kontrol edilir 6. nodes değişkeni boş değilse nodes[0].getattributevalue("href", "Yok") fonksiyonu kullanılarak indirilmek istenilen dosyanın linki elde edilir 7. İndirilmek istenilen dosyanın kayıt edileceği dosya yolu belirlenir 8. Dosya indirmek için yazılan fonksiyon çağrılır ve dosya indirilir Şekil 3.13. APK Leecher web sitesindeki web kazıma kod örneğinin algoritması Şekil 3.13 incelendiğinde, indirilmek istenilen uygulamanın paket adı yazılarak link elde edilmektedir. Bu link sonucu ortaya çıkan web sayfasında bulunan Şekil 3.14 te gösterilen APK is Ready, Download Now linkinin elde edilmesi gereklidir. Şekil 3.14. APK Leecher web sayfasında bulunan indirme linki Şekil 3.14 incelendiğinde, XPath yolunun elde edilmesi için fare ile APK is Ready, Download Now yazısının üstüne gelinir ve sağ tık yapılarak açılan pencerede seçili olarak gelen satır üzerinde fare ile sağ tık yapılarak Copy seçeneklerinde bulunan Copy XPath seçeneği seçilerek ilgili linkin XPath adresi elde edilir. Bu XPath yolu kullanılarak indirme linki elde edilir ve uygulama indirilmeye çalışılmaktadır. Eğer uygulama indirilemezse üçüncü alternatif olarak APKBucket [82] sitesi kullanılmaktadır. Bu işlem için "https://apkbucket.net/download-apk/paket Adı/" gibi bir link oluşturulmaktadır. Bu link kullanılarak ilgili sitede web kazıma işlemi yapılmaktadır. Bu işlem için kullanılan kod

59 parçasının algoritması Şekil 3.15 te gösterilmiştir. Ayrıca ilgili kod parçasının örneği EK- 6 da verilmiştir. 1. HtmlAgilityPack kütüphanesinde bulunan HtmlWeb kullanılarak web isminde nesne oluşturulur 2. web nesnesinin dil kodlaması Türkçe olarak ayarlanır 3. web nesnesinin Load metotu kullanılarak oluşturulan linkdeki web sayfasının html bilgileri elde edilir ve doc isimli değişkene atanır 4. doc.documentnode.selectnodes fonksiyonuna /html/body/div[2]/div/div/div/div[1]/a XPath bilgisi girilir ve bu işlem sonucunda elde edilecek olan veriler nodes isimli değişkene atanır 5. nodes değişkeninin boş olup olmadığı kontrol edilir 6. nodes değişkeni boş değilse nodes[0].getattributevalue("href", "Yok") fonksiyonu kullanılarak indirilmek istenilen dosyanın linki elde edilir 7. İndirilmek istenilen dosyanın kayıt edileceği dosya yolu belirlenir 8. Dosya indirmek için yazılan fonksiyon çağrılır ve dosya indirilir Şekil 3.15. APKBucket web sitesindeki web kazıma kod örneğinin algoritması Şekil 3.15 incelendiğinde, indirilmek istenilen uygulamanın paket adı yazılarak link elde edilmektedir. Bu link sonucu ortaya çıkan web sayfasında bulunan Şekil 3.16 da gösterilen Download linkinin elde edilmesi gereklidir.

60 Şekil 3.16. APKBucket web sayfasında bulunan indirme linki Şekil 3.16 incelendiğinde, XPath yolunun elde edilmesi için fare ile Download yazısının üstüne gelinir ve sağ tık yapılarak açılan pencerede seçili olarak gelen satır üzerinde fare ile sağ tık yapılarak Copy seçeneklerinde bulunan Copy XPath seçeneği seçilerek ilgili linkin XPath adresi elde edilir. Bu XPath yolu kullanılarak indirme linki elde edilir ve uygulama indirilmeye çalışılmaktadır. Uygulama indirildikten sonra Apktool aracı [11] kullanılarak tersine mühendislik yapılmaktadır. Tersine mühendislik ile uygulamanın adı, paket adı, kullandığı izinler, targetsdkversion ve minsdkversion bilgileri elde edilerek veritabanına kayıt edilmektedir. Bu bilgiler elde edildikten sonra VirusTotal API'si [67] kullanılarak VirusTotal veritabanında tutulan bilgiler elde edilmektedir. Burada uygulamanın boyutu 32 766 kilobayttan fazla olmamalı ve bir dakikada dört adet sorgu yapabilme olmak üzere iki adet kısıt bulunmaktadır [67]. Dosya boyutu 32 766 kilobayttan fazla olan uygulamalar ile ilgili sonuçlar VirusTotal veritabanında bulunuyorsa kayıtlar kullanılır fakat yoksa ilgili uygulamanın VirusTotal sonuçları veritabanında ayırt edebilmek adına ilgili alanlara -2 değeri verilmektedir ve analiz sonucu sadece uygulamanın kötücül puanına göre değerlendirme yapılarak gösterilmektedir. Dosya boyutu 32 766 kilobayttan az olan uygulamalar ile ilgili sonuçlar VirusTotal veritabanında bulunuyorsa kayıtlar kullanılır fakat yoksa ilgili uygulama VirusTotal API si [67] kullanılarak taratılmaktadır. Bu taratma işlemi VirusTotal in yoğunluğuna ve dosya boyutuna göre değişmektedir. Bu yüzden işlemin bitip bitmediği VirusTotal tarafından verilen tarama numarası kullanılarak 3 dakikada bir kontrol edilmektedir. Bu işlemin 3

61 dakikadan fazla sürmesi durumunda kullanıcıyı fazla bekletmemek için analiz sonucu sadece uygulamanın kötücül puanına göre değerlendirme yapılarak gösterilmektedir fakat VirusTotal den gelecek olan sonuç elde edilince veritabanına kayıt edilmektedir. İyicil ve kötücül veri setinde bulunan 32 766 kilobayttan fazla olan 48 adet uygulama için VirusTotal web sayfasına girilerek el ile yükleme yapılarak uygulamanın analiz yapılması sağlanmıştır. Bölüm 3.3 te anlatılan hesaplama yöntemi kullanılarak uygulamanın ortalama kötücül değeri elde edilmektedir. Bu değer alıcı işlem karakteristikleri eğrisi ile belirlenen eşik değerden büyük ise kötücül, küçük ise iyicil olarak değerlendirilerek sonuç istemciye gösterilmektedir. Uygulama yükle seçeneğinde ise istemci tarafında bulunan Android uygulaması sunucuya yüklenerek analiz yapılmaktadır ve Şekil 3.17 de uygulama yükle seçeneğinin ekran görüntüsü gösterilmiştir. Şekil 3.17. Uygulama yükle seçeneğinin ekran görüntüsü Şekil 3.17 incelendiğinde, Dosya Seç butonuna tıklanılması ile istemci tarafında analiz yapılmak istenilen Android uygulama bulunur ve Yükle butonuna basılarak Android uygulamanın sunucuya yükleme işlemi yapılmaktadır. Uygulama sunucuya yüklendikten sonra uygulama ara seçeneğinde bahsedilen tersine mühendislik aşaması ile başlayan süreç uygulanmaktadır. Uygulama ara ve uygulama yüklemede bahsedilen süreçler bittikten sonra ortaya çıkan analiz sonucu Şekil 3.18 deki gibi gösterilmektedir.

62 Şekil 3.18. Analiz sonucunun ekran görüntüsü Şekil 3.18 incelendiğinde, analiz sonucunda uygulamanın adı, paket adı, çalıştığı Android sürümü, istediği izinler ve iki adet analiz sonucu gösterilmektedir. İlk analiz sonucunun kullandığı hesaplama yöntemi iyicil ve kötücül veri setlerinde bulunan izinlere göre yapılan değerlendirmedir. İkinci analiz sonucunun kullandığı hesaplama yöntemi ise ilk analiz yönteminde kullanılan hesaplamaya VirusTotal in eklendiği hesaplamadır. Ayrıca kullanıcıya VirusTotal de yapılan taramanın tarih bilgisi verilmektedir.

63 4. BULGULAR VE TARTIŞMA Bu çalışmada, Drebin [12] veri setinden 5 545 adet kötücül uygulama ve Google Play marketten [5] el ile indirilmiş 1 331 adet iyicil uygulama kullanılmıştır. Geliştirilen web uygulamasında veri setlerindeki uygulamaların bilgileri kullanılarak oluşturulmuş olan modele göre kullanıcılar istedikleri uygulamayı analiz yapabilmektedir. Bu tezde iyicil ve kötücül veri setlerini değerlendirmek için farklı yöntemler kullanılmıştır. Birinci yöntem, veri setlerindeki uygulamaların sahip olduğu izinlerden Android 4.1 sürümünde olan 197 adet izne göre yapılan değerlendirmedir. Bu yöntemde, uygulamaların kötücül değerleri hesaplanırken bu 197 adet izin dışındaki izinler yok sayılmaktadır. Uygulamaların kötücül değerleri uygulamaların sahip oldukları Android 4.1 sürümündeki izinlerin kötücül değerleri toplanarak hesaplanmaktadır. Bu değerlendirmeye göre elde edilen sonuç Çizelge 4.1 de gösterilmiştir. Çizelge 4.1. Android 4.1 sürümündeki izinlere göre değerlendirme sonuçları Doğru Tespit Yanlış Tespit Doğru Tespit Yanlış Sayısı Sayısı Oranı Oranı İyicil Veri Seti 1 244 87 93,46 6,54 Tespit Kötücül Veri Seti 5 158 387 93,02 6,98 Genel 6 402 474 93,11 6,89 İyicil Veri Seti (VirusTotal'e göre belirlenmiş) Kötücül Veri Seti (VirusTotal'e göre belirlenmiş) Genel (VirusTotal'e göre belirlenmiş) 1 106 67 94,29 5,71 5 136 409 92,62 7,38 6 242 476 92,91 7,09 Çizelge 4.1 incelendiğinde, ilgili değerlendirmeye göre iyicil veri setinde doğru tespit oranı %93,46, VirusTotal'e göre oluşturulmuş olan iyicil veri setinin doğru tespit oranı %94,29 dur. Kötücül veri setinde doğru tespit oranı %93,02, VirusTotal'e göre oluşturulmuş olan kötücül veri setinin doğru tespit oranı 92,62 dir. Genel doğru tespit

64 oranı %93,11, yanlış tespit oranı %6,89 dur. VirusTotal'e göre oluşturulmuş olan iyicil ve kötücül veri setinin genel doğru tespit oranı %92,91, yanlış tespit oranı %7,09 dur. İkinci yöntem, iyicil ve kötücül veri setlerindeki uygulamaların kullandıkları izinlere göre yapılan değerlendirmedir. Bu yöntemde, uygulamaların kötücül değerleri uygulamaların sahip oldukları izinlerin kötücül değerleri toplanarak hesaplanmaktadır. Bu değerlendirmeye göre elde edilen sonuç Çizelge 4.2 de gösterilmiştir. Çizelge 4.2. Veri setlerindeki uygulamaların kullandıkları izinlere göre değerlendirme sonuçları Doğru Tespit Yanlış Tespit Doğru Tespit Yanlış Sayısı Sayısı Oranı Oranı İyicil Veri Seti 1 272 59 95,57 4,43 Kötücül Veri Seti 5 176 369 93,35 6,65 Genel 6 448 428 93,78 6,22 Tespit İyicil Veri Seti (VirusTotal'e göre belirlenmiş) Kötücül Veri Seti (VirusTotal'e göre belirlenmiş) Genel (VirusTotal'e göre belirlenmiş) 1 129 44 96,25 3,75 5 164 381 93,13 6,87 6 293 425 93,67 6,33 Çizelge 4.2 incelendiğinde, ilgili değerlendirmeye göre iyicil veri setinde doğru tespit %95,57, VirusTotal'e göre oluşturulmuş olan iyicil veri setinin doğru tespit oranı %96,25 tir. Kötücül veri setinde doğru tespit oranı %93,35, VirusTotal'e göre oluşturulmuş olan kötücül veri setinin doğru tespit oranı 93,13 tür. Genel doğru tespit oranı %93,78, yanlış tespit oranı %6,22 dir. VirusTotal'e göre oluşturulmuş olan iyicil ve kötücül veri setinin genel doğru tespit oranı %93,67, yanlış tespit oranı %6,33 tür. Üçüncü yöntem, birinci yöntem ile uygulamaların VirusTotal değerlerinin birlikte kullanılıp uygulamaların kötücül değerlerinin hesaplandığı değerlendirmedir. Yani, iyicil ve kötücül veri setindeki uygulamaların Android 4.1 sürümünde bulunan 197 adet izin ve uygulamaların VirusTotal değerlerinin kullanılarak yapılan değerlendirmedir. Bu değerlendirmeye göre elde edilen sonuç Çizelge 4.3 te gösterilmiştir.

65 Çizelge 4.3. Android 4.1 deki izinler ve VirusTotal e göre değerlendirme sonuçları Doğru Tespit Yanlış Tespit Doğru Tespit Yanlış Sayısı Sayısı Oranı Oranı İyicil Veri Seti 1 291 40 97 3 Kötücül Veri Seti 5 402 143 97,42 2,58 Genel 6 693 183 97,34 2,66 Tespit İyicil Veri Seti (VirusTotal'e göre belirlenmiş) Kötücül Veri Seti (VirusTotal'e göre belirlenmiş) Genel (VirusTotal'e göre belirlenmiş) 1 136 37 96,85 3,15 5 406 139 97,49 2,51 6 542 176 97,38 2,62 Çizelge 4.3 incelendiğinde, ilgili değerlendirmeye göre iyicil veri setinde doğru tespit %97, VirusTotal'e göre oluşturulmuş olan iyicil veri setinin doğru tespit oranı %96,85 tir. Kötücül veri setinde doğru tespit oranı %97,42, VirusTotal'e göre oluşturulmuş olan kötücül veri setinin doğru tespit oranı %97,49 dur. Genel doğru tespit oranı %97,34, yanlış tespit oranı %2,66 dır. VirusTotal'e göre oluşturulmuş olan iyicil ve kötücül veri setinin genel doğru tespit oranı %97,38, yanlış tespit oranı %2,62 dir. Dördüncü yöntem, ikinci yöntem ile uygulamaların VirusTotal değerlerinin birlikte kullanılıp uygulamaların kötücül değerlerinin hesaplandığı değerlendirmedir. Yani, iyicil ve kötücül veri setlerindeki uygulamaların kullandıkları izinler ve uygulamaların VirusTotal değerlerinin kullanılarak yapılan değerlendirmedir. Bu değerlendirmeye göre elde edilen sonuç Çizelge 4.4 te gösterilmiştir.

66 Çizelge 4.4. Veri setlerindeki izinler ve VirusTotal e göre değerlendirme sonuçları Doğru Tespit Yanlış Tespit Doğru Tespit Yanlış Sayısı Sayısı Oranı Oranı İyicil Veri Seti 1 307 24 98,2 1,8 Kötücül Veri Seti 5 413 132 97,62 2,38 Genel 6 720 156 97,73 2,27 Tespit İyicil Veri Seti (VirusTotal'e göre belirlenmiş) Kötücül Veri Seti (VirusTotal'e göre belirlenmiş) Genel (VirusTotal'e göre belirlenmiş) 1 151 22 98,12 1,88 5 407 138 97,51 2,49 6 558 160 97,62 2,38 Çizelge 4.4 incelendiğinde, ilgili değerlendirmeye göre iyicil veri setinde doğru tespit %98,2, VirusTotal'e göre oluşturulmuş olan iyicil veri setinin doğru tespit oranı %98,12 dir. Kötücül veri setinde doğru tespit oranı %97,62, VirusTotal'e göre oluşturulmuş olan kötücül veri setinin doğru tespit oranı %97,51 dir. Genel doğru tespit oranı %97,73, yanlış tespit oranı %2,27 dir. VirusTotal'e göre oluşturulmuş olan iyicil ve kötücül veri setinin genel doğru tespit oranı %97,62, yanlış tespit oranı %2,38 dir. Bu dört yöntem içinde en yüksek performansa sahip yöntem VirusTotal ile birlikte iyicil ve kötücül veri setlerindeki izinlerin kullanıldığı yöntemdir. Hesaplama yönteminde VirusTotal in kullanılması yukarıda verilen sonuçlarda görüldüğü üzere sistemin başarısını arttırmıştır. Ayrıca, belirlenen Android sürümündeki izinlere bakılarak yapılan değerlendirme en düşük performansı gösteren yöntem olmuştur. Bunun nedeninin özel izinlerin ve Android 4.1 sürümünden sonra çıkan izinlerin değerlendirme dışında tutulmasından kaynaklandığı düşünülmektedir. Tezde geliştirilen sistemin literatürde geliştirilen statik analiz yöntemini kullanan çalışmalarla karşılaştırılması Çizelge 4.5 te gösterilmiştir.

67 Çizelge 4.5. Statik analiz yöntemlerinin karşılaştırılması Yapılan Çalışma Özellikler Veri Seti Başarı Oranı DroidMat [10] İzinler ve API 238 kötücül veri seti %97,87 çağrıları 1 500 iyicil veri seti Drebin [12] Android Manifest Drebin kötücül veri %94 dosyası ve kaynak kodlar seti 123 453 iyicil veri Kayabaşı [14] İzinler ve API çağrıları seti Drebin kötücül veri seti 1 400 iyicil veri seti APK Auditor [15] İzinler Drebin ve Genome kötücül veri seti 1 853 iyicil veri seti Wang ve ark. [19] Wu ve ark. [24] İzinler, niyetler, API çağrıları, donanım özellikleri ve kodla ilgili bilgiler Dex dosyası ve API çağrıları Arslan ve ark. [25] Dex dosyası ve izinler Tez, Android 4.1 sürümündeki izinlere göre Tez, Veri setlerindeki uygulamaların kullandıkları izinlere göre Tez, Android 4.1 deki izinler ve VirusTotal e göre Tez, Veri setlerindeki izinler ve VirusTotal e göre İzinler İzinler İzinler İzinler 8 701 kötücül veri seti 107 327 iyicil veri seti 1 050 kötücül veri seti 1 160 iyicil veri seti 50 kötücül veri seti 25 iyicil veri seti Drebin kötücül veri seti 1 331 iyicil veri seti Drebin kötücül veri seti 1 331 iyicil veri seti Drebin kötücül veri seti 1 331 iyicil veri seti Drebin kötücül veri seti 1 331 iyicil veri seti %99,2 %88,28 %99,39 kötücül veri seti için %97,66 %97,62 kötücül veri seti için %80 iyicil veri seti için %93,11 %93,78 %97,34 %97,73 Çizelge 4.5 incelendiğinde, tezde kullanılan hesaplama yöntemlerinin başarı oranları literatürde yapılmış olan bazı çalışmalardan fazla ve bazı çalışmalardan az olduğu görülmüştür. Tezde kullanılan yöntemlerden en başarılısı VirusTotal ile birlikte iyicil ve kötücül veri setlerindeki izinlerin kullanıldığı hesaplama yönteminin olduğu görülmüştür. Bu hesaplama yönteminin diğer yöntemlere göre başarılı olmasının nedeni veri setlerindeki

68 uygulamaların kullandıkları özel izin ve Android in tanımlamış olduğu izinlerin hesaplamaya dâhil edilmesi ve hesaplama yönteminde VirusTotal in kullanılmasıdır.

69 5. SONUÇ Bu tezde, öncelikle önerilen hesaplama modelinin iyicil ve kötücül veri setindeki uygulamalar üzerindeki başarısı test edilmiştir. Daha sonra iyicil veya kötücül olduğu bilinmeyen uygulamanın analizinin yapılması için istemci/sunucu mimarisi üzerine kurulmuş web uygulaması ile Android uygulamaların analizi yapılmıştır. Kullanıcılar istedikleri Android uygulamaları sunucuya yükleyerek ya da arama yaparak analiz yapabilmektedir. Web uygulamasında uygulamaların aranarak bulunabilmesi için Google Play market [5] sitesinde web kazıma işlemi yapılmıştır. Ayrıca Android uygulamaların indirilmesi için APKPure [75], Apk Leecher [81] ve ApkBucket [82] gibi Android uygulamaları indirme web sayfalarında web kazıma işlemi yapılmıştır. Android uygulamalarının analizi statik yöntem kullanılarak yapılmıştır. Analiz için Android uygulamanın kullandığı izinler kullanılmıştır. Uygulamaların kullandıkları izinlerin elde edilmesi için Apktool aracı [11] kullanılarak tersine mühendislik yapılmıştır. Tezde dört farklı hesaplama yöntemi kullanılmıştır. Bu dört hesaplama yönteminden en yüksek performansı %97,73 oranıyla VirusTotal ile birlikte iyicil ve kötücül veri setlerindeki izinlerin kullanıldığı hesaplama yöntemi olmuştur. Sonuçlardan görüleceği üzere hesaplama yönteminde VirusTotal in kullanılması sistemin başarısını arttırmıştır. Hesaplama yönteminde VirusTotal in kullanılmasının başlıca nedenleri; güvenlik tabanlı çalışmalarda sıklıkla kullanılması, uygulamanın 50 den fazla antivirüs programı tarafından taranması ve ücretsiz API ye [67] sahip olmasıdır. Ayrıca, en düşük performansı gösteren %93,11 oranıyla Android 4.1 deki izinlere göre değerlendirme yapan hesaplama yöntemi olmuştur. Bu yöntemin başarısız olmasındaki neden özel izinleri ve belirlenen Android sürümünden sonraki sürümlerde kullanılan izinleri yok saymasından dolayı olduğu düşünülmektedir. Bu tez çalışmasının kapsamında sistemin iyileştirmesi çalışmalarının sürdürülmesinde statik analiz yönteminde izinlerin yanı sıra apk dosyasında bulunan diğer özelliklerin kullanılmasının sağlanması önemlidir. Ayrıca, statik analiz yönteminin yanında dinamik analiz yönteminin eklenmesinin önemli olduğu düşünülmektedir.

70

71 KAYNAKLAR 1. İnternet: Smartphone OS Market Share, 2016 Q3. URL: http://www.webcitation.org/query?url=http%3a%2f%2fwww.idc.com%2fpromo%2 Fsmartphone-market-share%2Fos&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 2. İnternet: G DATA Mobile Malware Report H1/2016. URL: http://www.webcitation.org/query?url=https%3a%2f%2ffile.gdatasoftware.com%2f web%2fen%2fdocuments%2fwhitepaper%2fg_data_mobile_malware_report_h 1_2016_EN.pdf&date=2017-05-13, Son Erişim Tarihi: 07.06.2017. 3. İnternet: Cunningham, E. Keeping you safe with Google Play Protect. URL: http://www.webcitation.org/query?url=https%3a%2f%2fblog.google%2fproducts%2 Fandroid%2Fgoogle-play-protect%2F&date=2017-05-28, Son Erişim Tarihi: 07.06.2017. 4. İnternet: Google Play Protect. URL: http://www.webcitation.org/query?url=https%3a%2f%2fwww.android.com%2fplayprotect%2f&date=2017-05-28, Son Erişim Tarihi: 07.06.2017. 5. İnternet: Google Play Store. URL: http://www.webcitation.org/query?url=http%3a%2f%2f+https%3a%2f%2fplay.goo gle.com%2fstore%2fapps&date=2017-06-07, Son Erişim Tarihi: 07.06.2017. 6. İnternet: Normal and Dangerous Permissions. URL: http://www.webcitation.org/query?url=http%3a%2f%2fdeveloper.android.com%2f guide%2ftopics%2fsecurity%2fpermissions.html%23normal-dangerous&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 7. Kabakuş, A. T., Doğru, İ. A. ve Çetin, A. (2015). Android kötücül yazılım tespit ve koruma sistemleri. Erciyes Üniversitesi Fen Bilimleri Enstitüsü Dergisi, 31(1), 9-16. 8. Gheorghe, L., Marin, B., Gibson, G., Mogosanu, L., Deaconescu, R., Voiculescu, V.- G. and Carabas, M. (2015). Smart malware detection on Android. Security and Communication Networks, 8, 4254-4272. 9. Feizollah, A., Anuar, N. B., Salleh, R. and Wahab, A. W. A. (2015). A review on feature selection in mobile malware detection. Digital Investigation, 13, 22-37. 10. Wu, D. J., Mao, C. H., Wei, T. E., Lee, H. M. and Wu, K. P. (2012). Droidmat: Android malware detection through manifest and api calls tracing. Paper presented at 2012 Seventh Asia Joint Conference on Information Security, Tokyo, Japonya. 11. İnternet: Apktool: A tool for reverse engineering Android apk files. URL: http://www.webcitation.org/query?url=https%3a%2f%2fibotpeaches.github.io%2fa pktool%2f&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 12. Arp, D., Spreitzenbarth, M., Hubner, M., Gascon, H. and Rieck, K. (2014). DREBIN: Effective and Explainable Detection of Android Malware in Your Pocket. Paper presented at Network and Distributed System Security Symposium (NDSS), San Diego, CA.

72 13. Wang, Z., Chenlong, L., Zhenlong, Y., Guan, Y. and Xue, Y. (2016). DroidChain: A novel Android malware detection method based on behavior chains. Pervasive and Mobile Computing, 32, 3-14. 14. Kayabaşı, G. (2016). İzin Tabanlı Statik Analiz Yöntemi ile Android Uygulamaların Sınıflandırılması, Yüksek Lisans Tezi, Gazi Üniversitesi Fen Bilimleri Enstitüsü, Ankara. 15. Kabakuş, A. T., Doğru, İ. A. ve Çetin, A. (2015). APK Auditor: Permission-based Android malware detection system. Digital Investigation, 13, 1-14. 16. Kiraz, Ö. ve Doğru İ. A. (2017). Android Kötücül Yazılım Tespit Sistemleri İncelemesi. Düzce Üniversitesi Bilim ve Teknoloji Dergisi, 5, 281-298. 17. Narayanan, A., Yang, L., Chen, L. and Jinliang, L. (2016). Adaptive and Scalable Android Malware Detection through Online Learning. Paper presented at 2016 International Joint Conference on Neural Networks (IJCNN), Vancouver, Kanada. 18. Song, J., Han, C., Wang, K., Zhao, J., Ranjan R. and Wang, L. (2016). An integrated static detection and analysis framework for android. Pervasive and Mobile Computing, 32, 15-25. 19. Wang, W., Li, Y., Wang, X., Liu, J. and Zhang, X. (2017). Detecting android malicious apps and categorizing benign apps with ensemble of classifiers. Future Generation Computer Systems. 20. Sokolova, K., Perez, C. and Lemercier, M. (2017). Android Application Classification and Anomaly Detection with Graph-based Permission Patterns. Decision Support Systems, 93, 62-76. 21. Junaid, M., Liu, D. and Kung, D. (2016). Dexteroid: Detecting malicious behaviors in Android apps using reverse-engineered lifecycle models. Computers & Security, 59, 92-117. 22. İnternet: androguard / androguard. URL: http://www.webcitation.org/query?url=https%3a%2f%2fgithub.com%2fandroguard %2Fandroguard&date=2017-06-11, Son Erişim Tarihi: 11.06.2017. 23. Anwar, S., Zain, J. M., Inayat, Z., Karim, A., Haq, R. U. and Jabir, A. N. (2016). A Static Approach towards Mobile Botnet Detection. Paper presented at the 3rd International Conference on Electronic Design (ICED), Phuked, Tayland. 24. Wu, S., Wang, P., Li, X. and Zhang, Y. (2016). Effective Detection of Android Malware Based on the Usage of Data Flow APIs and Machine Learning. Information and Software Technology, 75, 17-25. 25. Arslan, R. S., Doğru, İ. A. ve Barışçı, N. (2017). Android Mobil Uygulamalar için İzin Karşılaştırma Tabanlı Kötücül Yazılım Tespiti. Politeknik Dergisi, 20(1), 175-189. 26. İnternet: pxb1988/dex2jar. URL: http://www.webcitation.org/query?url=https%3a%2f%2fgithub.com%2fpxb1988%2 Fdex2jar&date=2017-06-11, Son Erişim Tarihi: 11.06.2017.

73 27. Feizollah, A., Anuar, N. B., Salleh, R., Suarez-Tangil, G. and Furnell, S. (2016). AndroDialysis: Analysis of Android Intent Effectiveness in Malware Detection. Computers & Security, 65, 121-134. 28. Kang, H., Jang, J.-W., Mohaisen, A. and Kim, H. K. (2015). Detecting and Classifying Android Malware Using Static Analysis along with Creator Information. International Journal of Distributed Sensor Networks. 29. Goyal, R., Spognardi, A., Dragoni, N. and Argyriou, M. (2016). SafeDroid: A Distributed Malware Detection Service for Android. Paper presented at 2016 IEEE 9th International Conference on Service-Oriented Computing and Applications (SOCA), Macau, Çin. 30. Dimjasevic, M., Atzeni, S., Ugrina, I. and Rakamaric, Z. (2016). Evaluation of Android Malware Detection Based on System Calls. Paper presented at International Workshop on Security and Privacy Analytics (IWSPA), New Orleans, Amerika. 31. Shabtai, A., Tenenboim-Chekina, L., Mimran, D., Rokach, L., Shapira, B. and Elovici, Y. (2014). Mobile malware detection through analysis of deviations in application network behavior. Computers & Security, 43, 1-18. 32. Wang, S., Chen, Z., Zhang, L., Yan, Q., Yang, B., Peng, L. and Jia, Z. (2016). TrafficAV: An Effective and Explainable Detection of Mobile Malware Behavior Using Network Traffic. Paper presented at 2016 IEEE/ACM 24th International Symposium on Quality of Service (IWQoS), Pekin, Çin. 33. Heuser, S., Negro, M., Pendyala, P. K. and Sadeghi, A-R. (2016). DroidAuditor: Forensic Analysis of Application-Layer Privilege Escalation Attacks on Android. Paper presented at Financial Cryptography and Data Security (FC 2016), Barbados. 34. Felt, A. P., Wang, H. J., Moshchuk, A., Hanna, S. and Chin, E. (2011). Permission redelegation: Attacks and defenses. Paper presented at 20th USENIX Security Symposium, San Francisco, CA. 35. Jang, J-W., Yun, J., Mohaisen, A., Woo, J. and Kim, H. K. (2016). Detecting and classifying method based on similarity matching of Android malware behavior with profile. SpringerPlus, 5(273), 1-23. 36. Garg, S., Peddoju, S. K. and Sarje, A. K. (2016). Network-based detection of Android malicious apps. International Journal of Information Security, 1-16. 37. Arshad, S., Khan, A., Shah, M. A. and Ahmed, M. (2016). Android Malware Detection & Protection: A Survey. Advanced Computer Science and Applications, 7, 463-475. 38. Chang, W-L., Sun, H-M. and Wu, W. (2016). An Android Behavior-Based Malware Detection Method using Machine Learning. Paper presented at 2016 IEEE International Conference on Signal Processing, Communications and Computing (ICSPCC), Hong Kong, Çin. 39. Lantz, P. (2011). An Android application sandbox for dynamic analysis, Yüksek Lisans Tezi, Lund Üniversitesi Elektrik ve Enformasyon Teknolojileri Bölümü, İsveç.

74 40. Shi, Y., You, W., Qian, K., Bhattacharya, P. and Qian, Y. (2016). A Hybrid Analysis for Mobile Security Threat Detection. Paper presented at 2016 IEEE 7th Annual Ubiquitous Computing, Electronics & Mobile Communication Conference (UEMCON), New York, Amerika. 41. Cole, Y., Zhang, H., Ge, L., Wei, S., Yu, W., Lu, C., Chen, G., Shen, D., Blasch, E. and Pham K. D. (2015). ScanMe Mobile: A Local and Cloud Hybrid Service for Analyzing APKs. Paper presented at Research in Adaptive and Convergent Systems (RACS), Prag, Çek Cumhuriyeti. 42. İnternet: Google Cloud Messsaging. URL: http://www.webcitation.org/query?url=https%3a%2f%2fdevelopers.google.com%2f cloud-messaging%2f&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 43. İnternet: Google App Engine. URL: http://www.webcitation.org/query?url=https%3a%2f%2fcloud.google.com%2fappe ngine%2f&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 44. Singh, S., Mishra, B. and Singh, S. (2015). Detecting Intelligent Malware on Dynamic Android Analysis Environments. Paper presented at the 10th International Conference for Internet Technology and Secured Transactions (ICITST), Londra, İngiltere. 45. İnternet: Androguard. URL: http://www.webcitation.org/query?url=https%3a%2f%2fcode.google.com%2farchiv e%2fp%2fandroguard%2f&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 46. Petsas, T., Voyatzis, G., Athanasopoulos, E., Polychronakis, M. and Ioannidis, S. (2014). Rage against the virtual machine: Hindering dynamic analysis of android malware. Paper presented at the Seventh European Workshop on System Security (EuroSec 14), Amsterdam, Hollanda. 47. Wang, H., Guo, Y., Tang, Z., Bai, G. and Chen, X. (2015). Reevaluating Android Permission Gaps with Static and Dynamic Analysis. Paper presented at 2015 IEEE Global Communications Conference (GLOBECOM), San Diego, Amerika. 48. İnternet: UI / Application Excerciser Monkey. URL: http://www.webcitation.org/query?url=https%3a%2f%2fdeveloper.android.com%2f studio%2ftest%2fmonkey.html&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 49. Schmidt, A.-D. (2011). Detection of Smartphone Malware, Doktora Tezi, Berlin Teknik Üniversitesi Elektrik Mühendisliği ve Bilgisayar Bilimleri, Berlin. 50. Davarcı, E. (2015). Malware analysis with side-channel information on android smartphones, Doktora Tezi, Boğaziçi Üniversitesi Fen Bilimleri Enstitüsü, İstanbul. 51. Oh, T., Kim, Y. H., Moon, H. S., Kim, J. N. and Stackpole, B. (2016). Android Malware Analysis and Conceptual Malware Mitigation Approaches. Paper presented at the 7th International Conference on Information and Communication Technology Convergence (ICTC 2016), Jeju Adası, Güney Kore.

75 52. İnternet: iphone App Store. URL: http://www.webcitation.org/query?url=https%3a%2f%2fitunes.apple.com%2ftr%2f genre%2fios%2fid36%3fmt%3d8&date=2017-06-07, Son Erişim Tarihi: 07.06.2017. 53. Felt, A. P., Finifter, M., Chin, E., Hanna, S. and Wagner, D. (2011). A Survey of Mobile Malware in the Wild. Paper presented at 18th ACM Conference on Computer and Communications Security (CCS 2011), Chicago, Amerika. 54. İnternet: Windows Phone Store. URL: http://www.webcitation.org/query?url=https%3a%2f%2fwww.microsoft.com%2ftrtr%2fstore%2fapps%2fwindows-phone&date=2017-06-07, Son Erişim Tarihi: 07.06.2017. 55. İnternet: Android Internals Part I. URL: http://www.webcitation.org/query?url=http%3a%2f%2fwww.bilgiguvenligi.gov.tr% 2Fmobil-cihaz-guvenligi%2Fandroid-internals-part-i.html&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 56. Enck, W., Ongtang, M. and McDaniel, P. (2009). On Lightweight Mobile Phone Application Certification. Paper presented at 16th ACM Conference on Computer and Communications Security (CCS 2009), Chicago, Amerika. 57. R-Mota, A., E-Ambrosio, P. J., A-Anaya, E., A-Bermejo, R. and V-Vargas, L. A. (2016). Improving Android Mobile Application Development by Dissecting Malware Analysis Data. Paper presented at 4th International Conference in Software Engineering Research and Innovation (CONISOFT 2016), Puebla, Meksika. 58. İnternet: Security. URL: http://www.webcitation.org/query?url=https%3a%2f%2fsource.android.com%2fsec urity%2f&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 59. Faruki, P., Bharmal, A., Laxmi, V., Ganmoor, V., Gaur, M. S. and Conti, M. (2015). Android Security: A Survey of Issues, Malware Penetration and Defenses. IEEE Communications Surveys & Tutorials, 17 (2), 998-1022. 60. İnternet: <permission>. URL: http://www.webcitation.org/query?url=https%3a%2f%2fdeveloper.android.com%2f guide%2ftopics%2fmanifest%2fpermission-element.html&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 61. İnternet: System and kernel security. URL: http://www.webcitation.org/query?url=https%3a%2f%2fsource.android.com%2fsec urity%2foverview%2fkernel-security.html&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 62. Vidas, T. and Christin, N. (2013). Sweetening Android Lemon Markets: Measuring and Combating Malware in Application Marketplaces. Paper presented at Third ACM Conference on Data and Application Security and Privacy (CODASPY), San Antonio, Amerika.

76 63. Abualola, H., Alhawai, H., Kadadha, M., Otrok, H. and Mourad, A. (2016). An Android-based Trojan Spyware to Study the NotificationListener Service Vulnerability. Paper presented at the 7th International Conference on Ambient Systems, Networks and Technologies (ANT 2016), Madrid, İspanya. 64. Abura ed, N., Otrok, H., Mizouni, R. and Bentahar, J. (2014). Mobile phishing attack for android platform. Paper presented at 10th International Conference on Innovations in Information Technology (IIT), Al Ain, Birleşik Arap Emirlikleri. 65. Malik, S. and Khatter, K. (2016). System Call Analysis of Android Malware Families. Indian Journal of Science and Technology, 9 (21), 1-13. 66. Medvet, E. and Mercaldo, F. (2016). Exploring the usage of Topic Modeling for Android Malware Static Analysis. Paper presented at 11th International Conference on Availability, Reliability and Security (ARES), Salzburg, Avusturya. 67. İnternet: VirusTotal Public API v2.0. URL: http://www.webcitation.org/query?url=https%3a%2f%2fwww.virustotal.com%2fen %2Fdocumentation%2Fpublic-api&date=2017-05-13, Son Erişim Tarihi: 07.06.2017. 68. Shehu, Z., Ciccotelli, C., Ucci, D., Aniello, L. and Baldoni, R. (2016). Towards the Usage of Invariant-based App Behavioral Fingerprinting for the Detection of Obfuscated Versions of Known Malware. Paper presented at 10th International Conference on Next Generation Mobile Applications, Security and Technologies (NGMAST 2016), Cardiff, Galler. 69. İnternet: About VirusTotal. URL: http://www.webcitation.org/query?url=https%3a%2f%2fvirustotal.com%2ftr%2fab out%2f&date=2017-05-22, Son Erişim Tarihi: 07.06.2017. 70. Spreitzenbarth, M., Schreck, T., Echtler, F., Arp, D. and Hoffmann, J. (2014). Mobile- Sandbox: combining static and dynamic analysis with machine-learning techniques. International Journal of Information Security, 14, 141-153. 71. Ban, T., Takahashi, T., Guo, S., Inoue, D. and Nakao, K. (2016). Integration of Multimodal Features for Android Malware Detection Using Linear SVM. Paper presented at The 11th Asia Joint Conference on Information Security (AsiaJCIS 2016), Fukuoka, Japonya. 72. Tomak, L. and Bek, Y. (2009). İşlem karakteristik eğrisi analizi ve eğri altında kalan alanların karşılaştırılması. Journal of Experimental and Clinical Medicine, 27, 58-65. 73. İnternet: The Area Under an ROC Curve. URL: http://www.webcitation.org/query?url=http%3a%2f%2fgim.unmc.edu%2fdxtests%2 Froc3.htm&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 74. İnternet: Accord.Statistics.Analysis Namespace. URL: http://www.webcitation.org/query?url=http%3a%2f%2faccordframework.net%2fdo cs%2fhtml%2fn_accord_statistics_analysis.htm&date=2017-05-22, Son Erişim Tarihi: 07.06.2017.

77 75. İnternet: APKPure. URL: http://www.webcitation.org/query?url=https%3a%2f%2fapkpure.com%2f&date=20 17-05-11, Son Erişim Tarihi: 07.06.2017. 76. İnternet: The Drebin Dataset. URL: http://www.webcitation.org/query?url=https%3a%2f%2fwww.sec.cs.tubs.de%2f~da narp%2fdrebin%2f&date=2017-05-11, Son Erişim Tarihi: 11.05.2017. 77. Kang, B., Yerima, S. Y., McLaughlin, K. and Sezer, S. (2016). N-opcode Analysis for Android Malware Classification and Categorization. Paper presented at International Conference On Cyber Security And Protection Of Digital Services (Cyber Security), Londra, İngiltere. 78. Ma, L., Wang, X., Yang, Y. and He, J.(2016). Ultra-lightweight Malware Detection of Android Using 2-level Machine Learning. Paper presented at 3rd International Conference on Information Science and Control Engineering (ICISCE), Pekin, Çin. 79. Xu, K., Li., Y. and Deng, R. H. (2016). ICCDetector: ICC-Based Malware Detection on Android. IEEE Transactions on Information Forensics and Security, 11 (6), 1252-1264. 80. İnternet: Manifest.permission. URL: http://www.webcitation.org/query?url=https%3a%2f%2fdeveloper.android.com%2f reference%2fandroid%2fmanifest.permission.html&date=2017-05-11, Son Erişim Tarihi: 07.06.2017. 81. İnternet: APK Leecher. URL: http://www.webcitation.org/query?url=http%3a%2f%2fapkleecher.net%2f&date=20 17-05-13, Son Erişim Tarihi: 07.06.2017. 82. İnternet: APKBucket. URL: http://www.webcitation.org/query?url=https%3a%2f%2fapkbucket.net%2f&date=2 017-05-13, Son Erişim Tarihi: 07.06.2017.

78

EKLER 79

80 EK-1. Eşik değer hesaplanması için kullanılan kod parçası Şekil 1.1. Eşik değer hesaplanması için kullanılan kod parçası örneği

81 EK-2. Apktool ile tersine mühendislik yapılabilmesi için kullanılan kod parçası Şekil 2.1. Tersine mühendislik kod parçası örneği

82 EK-3. Google Play web sayfasındaki web kazıma işlemi için kullanılan kod parçası Şekil 3.1. Google Play web sayfasındaki web kazıma işlemi için kullanılan kod parçası örneği

83 EK-4. APKPure web sayfasındaki web kazıma işlemi için kullanılan kod parçası Şekil 4.1. APKPure web sayfasındaki web kazıma işlemi için kullanılan kod parçası örneği

84 EK-5. APK Leecher web sayfasındaki web kazıma işlemi için kullanılan kod parçası Şekil 5.1. APK Leecher web sayfasındaki web kazıma işlemi için kullanılan kod parçası örneği

85 EK-6. APKBucket web sayfasındaki web kazıma işlemi için kullanılan kod parçası Şekil 6.1. APKBucket web sayfasındaki web kazıma işlemi için kullanılan kod parçası örneği

86 ÖZGEÇMİŞ Kişisel Bilgiler Soyadı, adı : KİRAZ, Ömer Uyruğu : T.C. Doğum tarihi ve yeri : 17.10.1989, Ankara Medeni hali : Bekar Telefon : 0 (536) 225 35 69 e-mail : omerk1818@gmail.com Eğitim Derece Yüksek lisans Eğitim Birimi Gazi Üniversitesi / Bilgisayar Mühendisliği Lisans Eskişehir Osmangazi Üniversitesi / 2012 Bilgisayar Mühendisliği Lise Fatih Sultan Mehmet Lisesi 2006 Mezuniyet tarihi Devam Ediyor İş Deneyimi Yıl Yer Görev 2013- Halen Türkiye İstatistik Kurumu TÜİK Uzmanı 2012- Eski İşlem(GİS) Mobil Uygulama Geliştirme Uzmanı Yabancı Dil İngilizce Yayınlar Kiraz, Ö., Doğru İ. A. (2017). Android Kötücül Yazılım Tespit Sistemleri İncelemesi. Düzce Üniversitesi Bilim ve Teknoloji Dergisi, 5, 281-298 Hobiler Gezmek, Futbol, Sinema, Spor.

GAZİ GELECEKTİR...