12/01/16 Zararlı Yazılımla Mücadele Eği7mi Mobil Zararlı Yazılım Analizinde Temel Konular TÜBİTAK BİLGEM Siber Güvenlik Ens7tüsü 12 Ocak 2016 Android Zararlı Yazılım Analiz Adımları 1. 2. 3. 4. 5. Ağ Trafiği Analizi Pasif & Aktif Network Dinleme Statik Analiz ve Tersine Mühendislik Strings AndroidManifest.XML Decompile Disassembly Dinamik Analiz Filesystem Analizi Function Call & API Call Analizi Çalışma Anında Manipülasyon Debugging Dynamic Instrumentation Anti-Analiz Tekniklerinin Atlatılması Deobfuscation Anti-VM Bypass Unpacking Native Code Decompile 2 1
12/01/16 Android Zararlı Yazılım Analiz Adımları 1. 2. 3. 4. 5. Ağ Trafiği Analizi Pasif & Aktif Network Dinleme Statik Analiz ve Tersine Mühendislik Strings AndroidManifest.XML Decompile Disassembly Dinamik Analiz Filesystem Analizi Function Call & API Call Analizi Çalışma Anında Manipülasyon Debugging Dynamic Instrumentation Anti-Analiz Tekniklerinin Atlatılması Deobfuscation Anti-VM Bypass Unpacking Native Code Decompile 3 Android APK Paket İçeriği APK = ZIP 4 2
Android APK Paket İçeriği Dosya imzaları (hash) Geliştirici Public Key i 5 Android APK Paket İçeriği İşlemci mimarisine göre compile edilmiş native kütüphaneler (Native ELF dosyaları) JAR Dosyaları (kütüphaneler) 6 3
Android APK Paket İçeriği anim: Compile edilmiş animasyon dosyaları drawable: Resim dosyaları layout: UI/view tanımlamaları values: Diziler, renkler, style lar, string ler dimensions xml: Compile edilmiş XML dosyaları raw: Compile edilmemiş raw dosyalar Compile işlemi AAPT (Android Asset Packaging Tool) tarafından yapılır 7 Android APK Paket İçeriği Çoğu zaman raw dosyalar bulunur. Resimler, fontlar, ses dosyaları Bazı malware ler bu dizinde cihaza kurrmak üzere APK dosyaları saklarlar 8 4
Android APK Paket İçeriği Uygulama meta-data ları Paket ismi Versiyon bilgisi Uygulamanın talep ettiği izinler Uygulamada bulunan komponentler Activity Service Bradcast Receiver Content Provider Compile edilmiş olarak paket içerisinde yer alır. 9 Android APK Paket İçeriği DEX: Dalvik Executable Android in EXE si Dalvik VM üzerinde çalışır DEX: Dalvik VM için compile edilmiş class dosyaları 10 5
Android APK Paket İçeriği Compile edilmiş resource lar R.java string.xml ids.xml layouts.xml 11 Android APK Paket İçeriği 12 6
Android Uygulamaları Android Uygulamaları Java + Android SDK ile gelişjrilir. Android Dalvik VM ile çalışnrılır. JAVA à.class à.dex C / C++ ile gelişjrme yapılabilir. NaJve Development Kit (NDK).java javac.class dx dex zip APK 13 Dalvik vs ART * https://www.google.com/events/io/schedule/session/b750c8da-aebe-e311-b297-00155d5066d7 14 7
12/01/16 Pentest Ortamının Kurulması JEB Decompiler apktool Android Tamer Vezir Santoku Eclipse+ Android SDK Droidbox JD-GUI gdb Drozer IDA Pro Burp-suite baksmali dex2jar Wireshark 15 Mobil Zararlı Yazılım Ortamı Ø Mobil güvenlik testleri için gerekli araçların bulunduğu bir Ubuntu dağıtımıdır. Ø Gerekli araçlar, uygulama örnekleri ~/ambar dizini altında bulunmaktadır. Ø vezir:vezir kullanıcı bilgileri ile giriş yapılabilir. https://github.com/oguzhantopgul/vezir-project 8
12/01/16 Android Zararlı Yazılım Analiz Adımları 1. 2. 3. 4. 5. Ağ Trafiği Analizi Pasif & Aktif Network Dinleme Statik Analiz ve Tersine Mühendislik Strings AndroidManifest.XML Decompile Disassembly Dinamik Analiz Filesystem Analizi Function Call & API Call Analizi Çalışma Anında Manipülasyon Debugging Dynamic Instrumentation Anti-Analiz Tekniklerinin Atlatılması Deobfuscation Anti-VM Bypass Unpacking Native Code Decompile 17 AndroidManifest.XML İncelemesi AndroidManifest.XML İncelemesi Uygulama komponentleri, izinleri, versiyon, minimum gereksinimler 18 9
12/01/16 AndroidManifest.XML İncelemesi Uygulama Adı: flashupdater.apk 19 AndroidManifest.XML İncelemesi Uygulama Adı: flashupdater.apk 20 10
AndroidManifest.XML İncelemesi Uygulama Adı: Short Message Service.apk 21 AndroidManifest.XML İncelemesi İzinlerin İncelenmesi AlternaJf olarak aapt aracı ile izinle görüntülenebilir # aapt d permissions uygulama.apk package: com.benim.uygulamam uses-permission: android.permission.camera uses-permission: android.permission.internet uses-permission: android.permission.access_network_state uses-permission: android.permission.write_external_storage uses-permission: android.permission.access_fine_location uses-permission: android.permission.read_contacts uses-permission: android.permission.wake_lock uses-permission: android.permission.get_tasks uses-permission: android.permission.record_audio uses-permission: android.permission.get_accounts uses-permission: android.permission.read_profile uses-permission: android.permission.read_frame_buffer uses-permission: android.permission.set_orientation uses-permission: android.permission.battery_stats 22 11
12/01/16 Android Zararlı Yazılım Analiz Adımları 1. 2. 3. 4. 5. Ağ Trafiği Analizi Pasif & Aktif Network Dinleme Statik Analiz ve Tersine Mühendislik Strings AndroidManifest.XML Decompile Disassembly Dinamik Analiz Filesystem Analizi Function Call & API Call Analizi Çalışma Anında Manipülasyon Debugging Dynamic Instrumentation Anti-Analiz Tekniklerinin Atlatılması Deobfuscation Anti-VM Bypass Unpacking Native Code Decompile 23 APK Tersine Mühendislik JAVA Decompile Dex -> JAR ->JAVA Java Decompiler Ø JD-GUI Ø JAD Ø Jadx Ø Procyon Ø APK JAR.class.class DEX dex2jar enjarify * Dex2jar * Enjarify * JD-GUI * Procyon * jadx * JAD : https://github.com/pxb1988/dex2jar : https://github.com/google/enjarify : http://jd.benow.ca/ : https://bitbucket.org/mstrobel/procyon/wiki/java%20decompiler : h:ttps://github.com/skylot/jadx/releases : http://varaneckas.com/jad/ 24 12
APK Tersine Mühendislik Decompile Dex -> JAR (.class files) -> JAVA Decompile edilmiş JAR kodu tekrar compile edilerek çalışır hale gejrilemez. Decompile edilen kod yaklaşık koddur, %100 bire bir dönüşüm gerçekleşjrilemez. Dex2jar çıknsında elde edilen JAR kodu çalışnrılamaz. Dalvik Bytecode, JAR koduna döüştürülerek kolay okunabilir ve anlaşılabilir hale gelir. $ d2j-dex2jar.sh classes.dex dex2jar classes.dex -> classes-dex2jar.jar $ java -jar classes-dex2jar.jar Error: Invalid or corrupt jarfile classes-dex2jar.jar 25 Zararlı Yazılım Analizi Hassas Fonksiyon Çağrıları Özellikle zararlı yazılımların hassas verilere erişmek için kullandığı bazı fonksiyon çağrıları. Socket: DatagramSocket: TelephonyManager.getCallState() TelephonyManager.getCellLocaJon() TelephonyManager.getDeviceId() TelephonyManager.getLine1Number() TelephonyManager.getSimSerialNumber() LocaJonManager ContactsContract SmsManager ProcessBuilder Intent.ACTION_CALL vending.billing TCP bağlannsı kurmak için UDP bağlannsı kurmak için Şu an çağrıda olunup olunmadığını anlamak için Baz istasyonuna göre lokasyon bilgisi almak için IMIE numarasını almak için Telefon numarasını almak için SIM karnn seri numarasını almak için Lokasyon bilgisi almak için Contacts content provider ile ilejşime geçmek ve telefon rehberi verisine erişmek için SMS verisine erişmek ve SMS göndermek için Bir executable dosyayı çalışnrmak için Telefon çağrısı başlatma intenj Uygulama için alımlar API sine erişmek için 26 13
12/01/16 Android Zararlı Yazılım Analiz Adımları 1. 2. 3. 4. 5. Ağ Trafiği Analizi Pasif & Aktif Network Dinleme Statik Analiz ve Tersine Mühendislik Strings AndroidManifest.XML Decompile Disassembly Dinamik Analiz Filesystem Analizi Function Call & API Call Analizi Çalışma Anında Manipülasyon Debugging Dynamic Instrumentation Anti-Analiz Tekniklerinin Atlatılması Deobfuscation Anti-VM Bypass Unpacking Native Code Decompile 27 APK Tersine Mühendislik Disassemble Dex ->.smali APK.smali.smali.smali DEX Dex Disassembler Ø Baksmali Ø Dedexer Ø apktool * Dedexer : http://dedexer.sourceforge.net/ * Baksmali : https://github.com/jesusfreke/smali * Apktool : https://ibotpeaches.github.io/apktool/ 28 14
APK Tersine Mühendislik Disassemble DEX ->.smali DEX dosyasını okunabilir Dalvik Bytecode a dönüştürülüyor.smali uzannlı Dalvik Bytecode, modifiye edilebilir. Modifiye edilen Dalvik Bytecode tekrar imzalanır, paketlenir ve cihazda çalışnrılabilir. Baksmali aracı ile disasemble işlemi yapılabilir. Apktool, baksmali içerir. $ java jar baksmali.jar o /Output/dir classes.dex # Disassemble edince: Aynı dizine UygulamaAdi klasörü oluşturur $ apktool d UygulamaAdi.apk # Modifiye sonrası tekrar paketlemek için: Paketlenen dizin # içerisinde dist dizinine yeni paket koyulur $ apktool b /paketlenecek/dosya/yolu 29 APK Tersine Mühendislik Hello World Uygulaması Basit bir Hello World uygulamasında MainAcJvity.java 30 15
APK Tersine Mühendislik Hello World Uygulaması MainAcJvity.smali dosyası açılarak incelenir. 31 APK Tersine Mühendislik Hello World Uygulaması MainAcJvity.smali dosyası açılarak incelenir. 32 16
12/01/16 Android Zararlı Yazılım Analiz Adımları 1. 2. 3. 4. 5. Ağ Trafiği Analizi Pasif & Aktif Network Dinleme Statik Analiz ve Tersine Mühendislik Strings AndroidManifest.XML Decompile Disassembly Dinamik Analiz Filesystem Analizi Function Call & API Call Analizi Çalışma Anında Manipülasyon Debugging Dynamic Instrumentation Anti-Analiz Tekniklerinin Atlatılması Deobfuscation Anti-VM Bypass Unpacking Native Code Decompile 33 Kod Bulanıklaş^rma (Obfusca7on) Kod Bulanıklaş^rma (Obfusca7on) Kullanılmayan sınıflar, metodlar temizlenir. Bytecode opjmize edilir. Kullanılmayan instrucjonlar temizlenir. Geri kalan sınıflar, metodlar, alanlar, değişkenler anlamsız kısa isimlerle adlandırılır ProGuard Android framework ile birlikte geliyor. obfuscate.java javac.class.class dx dex 34 17
Kod Bulanıklaş^rma (Obfusca7on) Kod Bulanlıklaş^rma Bir Örnek Disassemble ederek obfuscation dan kurtulunamaz! 35 Kod Bulanıklaş^rma (Obfusca7on) 36 18
Kod Bulanıklaş^rma (Obfusca7on) 37 Kod Bulanıklaş^rma (Obfusca7on) 38 19
APK Tersine Mühendislik Deobfusca7on - Simplify EncrypJon tarzı karmaşıklaşnrmaları çözebilmek için. https://github.com/calebfenton/simplify 39 BONUS: An7-VM Bypass Emulator Detec7pn Bypass Emulatör Kontrolü Yapan Kod Parçası 40 20
BONUS: An7-VM Bypass Emulator Detec7pn Bypass Disassemble edilmiş emülatör kontrol kodu 41 BONUS: An7-VM Bypass Emulator Detec7pn Bypass Disassemble edilmiş emülatör kontrol kodu 42 21
BONUS: An7-VM Bypass Emulator Detec7pn Bypass Emülatör kontrol kodu patch edilir. 43 BONUS: An7-VM Bypass Patch lenen uygulama tekrar paketlenir # apktool b malware.apk I: Using Apktool 2.0.0-RC3 on malware I: Checking whether sources has changed... I: Checking whether resources has changed... I: Building apk file... Tekrar paketlenen uygulama jarsigner aracıyla tekrar imzalanır. # jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore examplekeystore malware.apk example Enter Passphrase for keystore: adding: META-INF/MANIFEST.MF adding: META-INF/EXAMPLE.SF adding: META-INF/EXAMPLE.RSA signing: AndroidManifest.xml signing: classes.dex 44 22
12/01/16 Android Zararlı Yazılım Analizi nde Daha Fazla https://mobile-security.zeef.com/oguzhan.topgul 45 Teşekkürler oguzhan.topgul@tubitak.gov.tr 23