tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Manuel De-obfuscation Teknikleri

Yazılım güvenliği alanında, gizli kodu anlaşılır hale getirme süreci olan de-obfuscation, kritik öneme sahiptir. Bu kılavuz, statik analiz tekniklerine odaklanarak de-obfuscation için çeşitli stratejileri incelemektedir ve obfuscation desenlerini tanımayı amaçlamaktadır. Ayrıca, pratik uygulama için bir alıştırma sunmakta ve daha ileri konuları keşfetmek isteyenler için ek kaynaklar önermektedir.

Statik De-obfuscation için Stratejiler

Obfuscated code ile başa çıkarken, obfuscation'ın doğasına bağlı olarak birkaç strateji uygulanabilir:

  • DEX bytecode (Java): Etkili bir yaklaşım, uygulamanın de-obfuscation yöntemlerini tanımlamak ve ardından bu yöntemleri bir Java dosyasında çoğaltmaktır. Bu dosya, hedeflenen unsurlar üzerindeki obfuscation'ı tersine çevirmek için çalıştırılır.
  • Java ve Native Code: Diğer bir yöntem, de-obfuscation algoritmasını Python gibi bir betik diline çevirmektir. Bu strateji, temel amacın algoritmayı tamamen anlamak değil, etkili bir şekilde çalıştırmak olduğunu vurgular.

Obfuscation'ı Tanımlama

Obfuscated code'u tanımak, de-obfuscation sürecindeki ilk adımdır. Anahtar göstergeler şunlardır:

  • Java ve Android'deki string'lerin yokluğu veya karıştırılması, string obfuscation'ı önerebilir.
  • Assets dizininde ikili dosyaların varlığı veya DexClassLoader çağrıları, kodun açılması ve dinamik yüklenmesi hakkında ipuçları verebilir.
  • Tanımlanamayan JNI fonksiyonlarıyla birlikte native kütüphanelerin kullanımı, native yöntemlerin potansiyel obfuscation'ını gösterir.

De-obfuscation'da Dinamik Analiz

Kodun kontrollü bir ortamda çalıştırılması, dinamik analiz obfuscated code'un gerçek zamanlı olarak nasıl davrandığını gözlemlemeyi sağlar. Bu yöntem, kodun gerçek amacını gizlemek için tasarlanmış karmaşık obfuscation desenlerinin iç işleyişini ortaya çıkarmada özellikle etkilidir.

Dinamik Analizin Uygulamaları

  • Çalışma Zamanı Şifre Çözme: Birçok obfuscation tekniği, yalnızca çalışma zamanında şifresi çözülen string'ler veya kod segmentleri içerir. Dinamik analiz sayesinde, bu şifreli unsurlar şifre çözme anında yakalanarak gerçek halleri ortaya çıkarılabilir.
  • Obfuscation Tekniklerini Tanımlama: Uygulamanın davranışını izleyerek, dinamik analiz belirli obfuscation tekniklerini tanımlamaya yardımcı olabilir; örneğin, kod sanallaştırma, packer'lar veya dinamik kod üretimi.
  • Gizli Fonksiyonelliği Ortaya Çıkarma: Obfuscated code, yalnızca statik analizle belirgin olmayan gizli işlevsellikler içerebilir. Dinamik analiz, koşullu olarak çalıştırılanlar da dahil olmak üzere tüm kod yollarını gözlemleyerek bu tür gizli işlevsellikleri ortaya çıkarmayı sağlar.

Referanslar ve Daha Fazla Okuma

  • https://maddiestone.github.io/AndroidAppRE/obfuscation.html
  • BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [video]
  • Bu konuşma, bir Android uygulaması tarafından kullanılan en karmaşık anti-analiz native kütüphanelerinden birinin ters mühendisliğini ele alıyor. Çoğunlukla native kodda obfuscation tekniklerini kapsıyor.
  • REcon 2019: “The Path to the Payload: Android Edition” [video]
  • Bu konuşma, bir Android botnetinin davranışını gizlemek için kullandığı yalnızca Java kodunda bir dizi obfuscation tekniğini tartışıyor.

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin