Android Zararlı Yazılım Analizi - IzHack'15

Android Zararlı Uygulama & Forensic Analizinde ADB Kullanımı


Mobil cihazların kullanımı ile içerisindeki barındırdıkları bilgilerin önemi gün geçtikçe artmaktadır. Bundan dolayıdır ki kötü niyetli kişiler tarafından mobil cihazlar da bilgi hırsızlığı bakımından hedef alınmaktadır. Bu yazıda karşılaşılan bir vaka durumunda Android tabanlı mobil cihazlardaki zararlı uygulamaların analiz ve forensic işlemleri sürecinde Android Debug Bridge ile yapılabilecek temel adımlardan bahsedilecektir. 
Gereksinimler: 
  • Android SDK 
  • Android Emulator veya Cihaz 
Android Debug Bridge (adb) android sdk içerisinde bulunan ve içerisinde android çalışan bir emulator veya bilgisayara bağlı mobil cihaz ile komut satırı üzerinden haberleşmeyi sağlayan bir araçtır. Android cihazlar üzerinde etkili olan bu araç sayesinde analizlerde birçok bilgi toplanılması sağlanır.  İlk adım olarak bağlanılacak cihazın seçilmesidir.  

$ ./adb devices //mevcut durumuda aktif olan cihazların görüntülenmesini sağlar 
List of devices attached  
emulator-5554 device  
emulator-5556 device  

Analizi yapılmak istenen cihazı belirleyerek adb shell yardımıyla doğrudan komut satırı bağlantısı kurulabildiği gibi devamına yazılacak komutların cihaz üzerinde çalıştırılması sağlanılabilir

$ ./adb -s emulator-5554 shell //birden fazla cihazın aktif olması durumunda cihaz adı belirtilen komut çalıştırılır 
root@generic_x86:/ #  

Cihazın komut satırına erişim sağlandıktan sonra sistemdeki yüklü uygulamara ait package listesi alınabilir ve buradan elde edilen bilgi doğrultusunda analiz yapılmak istenilen uygulamanın üzerinde apk dosyasının nerede olduğu, dump'ının alınması gibi belirleyici analizler üzerinden devam edilebilir.  

root@generic_x86:/ # pm list packages //cihazda yüklü uygulamalara ait package isimlerini listeler 
root@generic_x86:/ # pm path com.BioTechnology.iClientsService15290  
package:/data/app/com.BioTechnology.iClientsService15290-1/base.apk 
root@generic_x86:/ # pm dump com.BioTechnology.iClientsService15290 //uygulamaya ait herşeyin dump'ını alır. 
DUMP OF SERVICE package:  
DUMP OF SERVICE activity:  
DUMP OF SERVICE meminfo:  
DUMP OF SERVICE procstats:  
DUMP OF SERVICE usagestats:  
DUMP OF SERVICE batterystats:  
// Her bir başlık altında detaylı bilgiler görüntülenmesini sağlar 
root@generic_x86:/ #  

Uygulamaya ait receiver, permission, kurulum dizinleri gibi genel bilgiler sonrasında daha derine inmek için cihazın memory'sinde çalışan uygulamalara ait bilgiler toplanıp analiz edilebilir. Ayrıca doğrudan bir uygulamanın hafızadaki durumu hakkında detaylı bilgi alınabilir.  

root@generic_x86:/ # dumpsys //cihazdaki tüm sistem bilgilerinin dump'ını alır. 
root@generic_x86:/ # dumpsys meminfo //cihaz hafızasının dump'ını alır. 
root@generic_x86:/ # dumpsys meminfo com.BioTechnology.iClientsService15290 //belirtilen package'e ait uygulamanın hafızadaki dump'ını alır  

Bundan sonraki süreçte uygulamarın kendi içerisinde oluşturdukları dosyaların ve veri tabanlarının analiz edilmesi ile devam edilebilir. Bu durum için temel olarak bilinmesi gereken dizinler vardır. Burada uygulamanın yapısı ile alakalı olarak bazı dizinler farklılık gösterebilir. 

/data/data/<package> //Cihaza yüklene uygulamar package adı ile oluşturulan klasörü bulunur 
/data/data/<package>/databases/  //Uygulamaya ait veri tabanları bulunur 
/data/data/<package>/shared prefs/  
/data/app //Kullanıcı tarafından yüklnen uygulamara ait apk dosyalarının tutulduğu yer 
/system/app //Sistem uygulamarına ait apk dosyalarının bulunduğu yer  

Hedef dizine gidilerek uygulamanın alt dizinleri belirlenir veri tabanı var ise android'in içerisinde bulunan sqlite3 komutu ile dump'ı alınır. Bu işlemlerden sonra toplanan dosyalar analiz edilir. 

root@generic_x86:/ # cd /data/data/com.BioTechnology.iClientsService15290/ 
root@generic_x86:/data/data/com.BioTechnology.iClientsService15290 # ls  
     cache  
     databases  
     lib 
root@generic_x86:/data/data/com.BioTechnology.iClientsService15290 # ls databases/ 
     iBankDB_23.db  
     iBankDB_23.db-journal 
root@generic_x86:/ # sqlite3 /data/data/com.BioTechnology.iClientsService15290/databases/iBankDB_23.db .dump  
PRAGMA foreign_keys=OFF;  
BEGIN TRANSACTION;  
CREATE TABLE android_metadata (locale TEXT);  
INSERT INTO "android_metadata" VALUES('en_US');  
CREATE TABLE refUserInfo ( 'id' INT AUTO_INCREMENT NOT NULL,'user' CHAR(25), 'psw' CHAR(35), PRIMARY KEY('id') );  
CREATE TABLE refSMS ( 'id' INT AUTO_INCREMENT,'msgText' CHAR(150), 'isTransfer' BYTE NOT NULL,'MessageBody' CHAR(150), 'OriginatingAddress' CHAR(150) NOT NULL, 'Status' INT, PRIMARY KEY('id') );  
CREATE TABLE inforegLastCommand ( 'id' INT , 'sms' INT, 'call' INT, 'record' INT, 'recordcall' INT, 'isInit' INT, 'telNum' CHAR(25), 'isHacked' INT, PRIMARY KEY('id') );  
INSERT INTO "inforegLastCommand" VALUES(1,NULL,NULL,NULL,NULL,NULL,NULL,NULL);  
CREATE TABLE VERYPASS ('ID' INT AUTO_INCREMENT,'CERT' CHAR(30),'PASS' CHAR(30), PRIMARY KEY('ID'));  
COMMIT;  

Cihazdan toplanabilenecek diğer bir bilgi de loglardır. Uygulamara ve sisteme ait anormalliklerin tespit edilmesinde fayda sağlaması açısından tüm loglar toplanır.        

root@generic_x86:/ # logcat //cihazdaki tüm log bilgilerinin gösterilmesini sağlar. 

Android cihazlarda forensic çalışması yapılması veya zararlı bir android uygulamasının analiz edilmesi aşamasında yukarıda belirtilen bilgiler ile temel adımlar gerçekleştirilebilir. Bu bilgilerin analizi sonucunda cihazdan ne tür bilgiler çalınmış ya da hedeflenmiş gözlemlenebilir. Burada şu durumda belirtilmelidir ki zararlı uygulamarın analizi aşamasında ne tür davranışlar sergilediğinin anlaşılması için önceden statik analizler yardımıyla bilgi edinilmelidir. Bu sayede zararlının kendini aktifleştirmesi sağlanabilir ve daha net bilgiler toplanabilir.