Android (De)obfuscation Teknikleri

x4807

Katılımcı Üye
10 Ağu 2019
985
17
Merhabalar, Android (De)Obfuscation Teknikleri konusunda sizlere android uygulamalarında kullanılan obfuscation ve deobfuscation yöntemlerinin temellerini anlattım. İyi okumalar dilerim.

İçerik


Obfuscation/Obufscator Nedir?
Obfuscationun Amacı Nedir?
Obfuscation İşlem Yapıları
Deobfuscation İşlem Yapıları
ProGuard/DexGuard Nedir?
DeGuard Nedir?
Obfuscation Teknikleri
Packerlar
Literal Encryption
White Noise
Identifier Remapping
Debug Obfuscation
Custom Encoding

Deobfuscation Teknikleri
Pattern Matching
Dex-Oracle
Virtual Execution
Smalivm
Simplify


Obfuscation/Obfuscator Nedir?


Obfuscation, anlaşılması zor bir şey yapma pratiğidir. Zararlı yazılımları geliştiren kişiler ise kaynak kodlarının okunmasını engellemek ve zorlaştırmak amacıyla obfuscation ismini verdiğimiz karmaşıklaştırma ya da gizleme anlamına gelen yöntemlere başvurmaktadırlar. Gizleme, kodun bir kısmını veya tamamını şifrelemeyi, aqua/turkhackteam.org potansiyel olarak ortaya çıkan metâ verileri çıkarmayı, yararlı sınıfları ve değişken adlarını anlamsız etiketlere yeniden adlandırmayı veya bir uygulama dosyasına kullanılmayan veya anlamsız kod eklemeyi içerebilir.


Obfuscationun Amacı Nedir?


Bir önceki konumda da anlattığım gibi zararlı yazılımlarda programın analiz edilememesi için kaynak kodları kritik bir noktadır.
Eğer bir zararlı yazılımın kaynak kodları okunabilirse istisnalar bulunmakla beraber yapacağı/yapabileceği çoğu işlem okunulabilir, tespit edilebilir.
Birçok farklı obfuscation yöntemi bulunmakla beraber obfuscatorler kaynak aqua/turkhackteam.org kodlarının okunmasını ve anlaşılabilirliğini ciddi derecede önleyebilir.
Obfuscation programları ise bu kaynak kodlarının okunmasını engellemeyi amaçlamaktadır.


5eS5Yj.jpg


Obfuscation İşlem Yapıları

Öncelikle programın java kodları compiler aracılığıyla classlara çevirilir. Çevirilen classlar dex compiler kullanılarak dex dosyalarına dönüştürülür. Bu dönüşüm sırasında da obfuscator işlemleri gerçekleştirilir.




Deobfuscation İşlem Yapıları


Dex dosyaları deobfuscate yöntemleri ile çözülmeye çalışılır. Çözülebilirse dex decompiler ile classlara dönüştürülür. Classlar ise java dosyalarına dönüştürülür ve jadx, jd-gui gibi programlar ile kaynak kodları okunur.


ProGuard/DexGuard Nedir?


Günümüzde en popüler android obfuscator programlarından biri ise proguard'dır. Bu program açık kaynak kodlu olmakla beraber java kodlarını şifrelemeyi/karıştırmayı hedeflemektedir. Ücretsizdir aqua/turkhackteam.org ve GNU lisansı bulunmaktadır. DexGuard ise aynı yazılımın daha gelişmiş ve ücretli halidir. Geliştiricileri aynıdır


5eSsfQ.jpg




DeGuard Nedir?


Makine öğrenimi ile çalışan bir deobfuscation websitesidir. Geliştiriciler bu sitenin obfuscate edilmiş android uygulamalarında class, method ve 3. parti kütüphane adlarını, içeriğini debobfuscate edebileceğini belirtmektedirler.



5eSGMR.png

(tıkla)

Obfuscation Teknikleri


Günümüzde birçok aqua/turkhackteam.org obfuscation yöntemi bulunmakla beraber en çok kullanılan yöntemler aşağıda listelenmiştir;


Packerlar
Literal Encryption
White Noise
Identifier Remapping
Debug Obfuscation
Custom Encoding



5eS2aY.jpg



Packerlar


Sadece android değil windows, mac gibi diğer platformlar için geliştirilen zararlı yazılımlar ve kaynak kodları okunması istenmeyen programlarda da kullanılmaktadırlar. Program içerisinde bulunan orijinal dex dosyaları unpacker dex dosyaları ile yer değiştirilir ve orijinal olanlar genellikle programın içerisinde şifrelenmiş bir şekilde saklanmaktadır. Dex dosyalarının çalıştırılma anlarında değiştirilmiş olan unpacker dexleri bunları çözer ve program çalışır. Android packer olarak genellikle APKProtect ve Qihoo kullanılmaktadır.


Literal Encryption



Türkçeye çevirildiğinde "Kelimesi kelimesine şifreleme" gibi bir anlamı çıkmaktadır. Adından da anlaşılabileceği üzere string, numara, array gibi değerler şifrelenmektedir. Orijinal aqua/turkhackteam.org değerler şifrelenmiş değerler ile yer değiştirlir ve çalıştırılması gerekildiği zaman decryption metodları çağırılır. Fazla yaygın olmasa da lookup metodları ile de yer değiştirilebilir. Custom encoding olarak da geçmektedir.


White Noise



Türkçede gündellik hayatta beyaz gürültü olarak kullanılmaktadır. İnsan kulağının duyabileceği bütün ses frekanslarının birleşiminden oluşan ses topluluğudur. Bu obfuscation yönteminde birçok gereksiz, kullanışsız işlem oluşturulur ve metod çağırılır. Return değerlerini etkilemeden, class değerlerini değiştirmeden karmaşıklık yaratılmaya çalışılır.

Identifier Remapping


Değişken adları, class adları, method gibi değerlerin isimleri değiştirilir ve kafa karışıklığı yaratabilecek a, b, c gibi isimler yerini alır. En bilindik programlarından biri yukarıda da bahsetmiş olduğum proguard'dır.



Debug Obfuscation

Programın debug, decompile, recompile gibi eylemlerde bulunmasını engeller. Daha önce de belirttiğim gibi obfuscation yöntemleri yukarıdakiler ile sınırlı kalmamaktadır. Bunların yanında kullanılan birçok obfuscation yöntemi bulunmaktadır.



5eSMXM.jpg


Deobfuscation/Deobfuscator Nedir?


Sizlerin de artık bildiği gibi günümüzde farklı amaçlar için çoğu programda obfuscator kullanılmakta. Deobfuscator ismini verdiğimiz bu programlar ise gerek belirli bir obfuscatorü hedef aqua/turkhackteam.org alarak gerek ise farklı algoritmaları kullanarak programlar üzerindeki obfuscation algoritmalarını ve yöntemlerini çözmeye, kaynak kodlarına saf bir şekilde ulaşmaya çalışmaktadırlar.


Deobfuscation Teknikleri

Obfuscationda olduğu gibi deobfuscation içerisinde de birçok farklı teknik bulunmaktadır;

Pattern Matching
Dex-Oracle
Virtual Execution
Smalivm
Simplify



5e5HBx.jpg


Pattern Matching

Program içerisinde bulunan obfuscate edilmiş dosyalar üzerinde eğer herhangi bir patern, düzen bulunduruyorsa bu tespit edilir ve program deobfuscate edilebilir. Hepsi için olmasa bile temel obfuscation yöntemlerinde program başarılı şekilde deobfuscate edilebilir. Ancak bu yöntemde kodların uzun ve fazla olması işlem süresini ve zorluğunu arttırmaktadır. Ek olarak obfuscation içerisinde bir değişiklik bile gerçekleşirse patern, düzen bozulur ve program bu yöntem aracılığıyla deobfuscate edilemez.

Dex-Oracle


Bu program DexGuard içerisinde bulunan Android.Obad'ı hedef almaktadır. Smali kodları içerisinde bulunan patern ve düzenlerin içerisinde bulunan düzenli, stabil ifadeleri aramaktadır.


Virtual Execution

Programın işleyişlerinin takip edilebilmesi amacıyla bütün metodlar çalıştırılır. Bu yöntemde aqua/turkhackteam.org deobfuscate işlemleri, obfuscate edilmiş ve kompleks işlemleri kolaylaştırılmaya çalışılarak gerçekleştirilmektedir.


Smalivm

Biraz uğraştırıcı ancak etkili bir yöntemdir. Sandbox ortamda dalvik sanal makine gibi davranılır. Smali, dex ya da apk dosyaları input olarak alınmaktadır. Ancak analiz edilen ortamam zarar gelmemesi açısından API'ler çalıştırılmaz, whitelisted olarak geçmektedir. Belirttiğim üzere ne kadar etkili olsa da günümüzde android zararlı yazılımlarında fazla kullanılmayan anti-vm teknikleri varsa bu smalivm tekniği işe yaramamaktadır.


Simplify

Analiz ve grafik oluşturmak için yine smalivm kullanmaktadır ancak ek olarak gereksiz kodların çıkarılması(White Noise Deobfuscation), herhangi bir kafa karışıklığı ya da manipilasyon için reflection yani yanıstma kullanılıyorsa onların çıkarılması, okunabilirliği arttırmak amacıyla optimizasyonlar yapılarak grafiğe dökülmektedir.(Tıkla)

5euggy.png

 
Son düzenleme:

Ariss

Kıdemli Üye
8 Mar 2016
4,583
1
114
uzay
Elinize emeğinize sağlık her zamanki gibi çok kaliteli. :)
 
Moderatör tarafında düzenlendi:

x4807

Katılımcı Üye
10 Ağu 2019
985
17
Elinize emeğinize sağlık hocam :)

Eline sağlık aqu zararlı katagorisi sen doldu :D

Elinize emeğinize sağlık her zamanki gibi çok kaliteli. :)


Ellerine sağlık :)

Eline sağlık aqua, başarılı konu
Destekleriniz için teşekkür ederim .)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.