CyberFlow Logo CyberFlow 📚 Blog

Floss - Obfuscated string çıkarımı

✍️ Ahmet BİRKAN 📂 kali_tools_zararli_yazilim_analizi
Floss - Obfuscated string çıkarımı Giriş Giriş Obfuscation, yazılımların veya verilerin anlaşılmasını zorlaştırmak amacıyla gerçekleştirilen bir süreçtir. Flos…
Floss - Obfuscated string çıkarımı

Floss - Obfuscated string çıkarımı

Giriş

Giriş

Obfuscation, yazılımların veya verilerin anlaşılmasını zorlaştırmak amacıyla gerçekleştirilen bir süreçtir. Floss (yoğrulmuş ve karıştırılmış zincir), obfuscation terimiyle ilişkili bir teknik olup, yazılım analizinde önemli bir rol oynamaktadır. Bu teknik, özellikle kötü amaçlı yazılımların analizinde sıkça kullanılmaktadır. Obfuscated string çıkarımı, bu tür karmaşık hale getirilmiş verilerin çözülmesi veya ortaya çıkarılması işlemini ifade eder.

Obfuscation Nedir?

Obfuscation, bir kodun ya da veri setinin, asıl anlamını ve işlevini gizlemek amacıyla değiştirilmesi veya karmaşık hale getirilmesi sürecidir. Bu işlem, yazılımcılar tarafından kodun güvenliğini artırmak veya hileli yazılım analistlerinin işini zorlaştırmak amacıyla yapılabilir. Örneğin, kötü niyetli yazılımlar, yetkisiz erişime karşı koruma sağlamak için obfuscated string’ler kullanarak kendilerini gizleme çabası içerisine girebilir.

Neden Önemlidir?

Obfuscated string çıkarımı, siber güvenlik uzmanları için kritik bir beceridir. Kötü niyetli yazılımlar genellikle obfuscation teknikleri kullanarak kodlarını gizler, böylece analiz edilmesini zorlaştırır. Bu durum, güvenlik uzmanlarının tehditleri tanımlamasını ve etkili önlemler almasını güçleştirir. Dolayısıyla, obfuscated string’lerin çözülmesi, kötü amaçlı yazılımların etkisiz hale getirilmesi için gereken bilgilerin elde edilmesini sağlar.

Kullanım Alanları

Obfuscated string çıkarımı, siber güvenlik alanındaki birçok uygulamada yer bulur:

  1. Kötü Amaçlı Yazılım Analizi: Malware analistleri, şüpheli yazılımları inceleyerek obfuscated string’lerin içindeki önemli verileri ortaya çıkarmaya çalışırlar. Örneğin, zararlı bir yazılımın iletişim kurduğu sunucu adreslerini bulmak amacıyla obfuscated string’leri analiz etmek, saldırının olağanüstü etkilerini azaltmak için kritik öneme sahiptir.

  2. Ağ Güvenliği: İntrusion Detection Systems (IDS) ve Intrusion Prevention Systems (IPS) gibi araçlar, ağ trafiğindeki obfuscated string’leri tespit ederek olası tehditleri önceden belirlemeye çalışır.

  3. Yazılım Güvenliği: Yazılım geliştiricileri, ürünlerinin güvenliğini artırmak amacıyla obfuscation tekniklerini kullanırlar. Ancak, bu teknikler aynı zamanda kötü niyetli kullanıcılar tarafından analiz edilmek için de kullanılabilir. Yazılımın güvenlik açıklarını tespit etmek amacıyla obfuscated string analizleri gerçekleştirilmesi gerekmektedir.

Siber Güvenlik Açısından Konumu

Siber güvenlik perspektifinden bakıldığında, obfuscated string çıkarımı, saldırı tespitinin ve önlemini almanın önemli bir parçasıdır. Örneğin, bir saldırganın kullandığı şüpheli yazılım kodunun iç yapısını anlayabilmek, güvenlik uzmanları için hayat kurtarıcı olabilir. Bu bilgiyi elde etmek, olay zararını minimize etmek ve gelecekteki saldırıları önlemek adına kritik bir adım teşkil eder.

Obfuscated string çıkarımı, karmaşık kod yapılarının anlaşılmasını sağlarken, analistlerin siber tehditleri etkili bir şekilde tespit etmelerine olanak tanır. Kötü niyetli yazılımların dünya genelinde hızla arttığı günlerde, bu analizin önemi giderek daha fazla vurgulanmaktadır. Bu süreç, sadece kod çözme aşaması değil, aynı zamanda siber güvenlik uygulamalarının güçlendirilmesi için de gereklidir.

Teknik Detay

Obfuscation Nedir?

Obfuscation, yani "karmaşıklaştırma", yazılım güvenliğinde sıkça kullanılan bir tekniktir. Bu yöntem, kodun veya verilerin insan tarafından anlaşılmasını zorlaştırarak, kötü niyetli kişilerin kötüye kullanmasını engellemeyi hedefler. Floss aracı, obfuscated string'lerin çıkarımını yapmak için kullanılan bir araçtır ve bu araç sayesinde yazılımlardaki gizli verilerin açığa çıkarılması sağlanır.

Floss: Temel Bileşenler

Floss, "Fast Linux OS Strings" anlamına gelir ve özellikle Linux sistemlerindeki obfuscation tekniklerini analiz eden bir araçtır. Floss, aşağıdaki temel bileşenleri içerir:

  1. String Analizi: Floss, yazılımdan veya dosyadan geçici olarak çıkarılan string’leri analiz eder.
  2. Kod Gösterimi: Hedefin ihtiyaç duyduğu bilgiler, genellikle yazılım geliştirme sürecinde kullanılmak üzere kod formatında gösterilir.
  3. Etkileşimli Çalışma: Kullanıcıların çeşitli parametrelerle etkileşim kurmasına izin vererek, süreçlerin özelleştirilmesine olanak tanır.

Obfuscated String Çıkarımı

Obfuscated string çıkarımında, Floss hedef dosyayı veya yazılımı inceleyerek anlamlı string’ler bulmaya çalışır. Bu işlem, yazılımın belirli bölümlerini bypass ederek, gizli bilgileri (şifreler, API anahtarları vs.) ortaya çıkarmayı hedefler.

Örnek Komut Kullanımı

Floss ile obfuscated string çıkarımını gerçekleştirmek için terminalde aşağıdaki gibi bir komut kullanılabilir:

floss <yazılım_dosya_yolu>

Yukarıdaki komut, belirlediğiniz dosya yolundaki yazılımdan obfuscated string'leri çıkarır. Aşağıda, örnek bir çıktı gösterilmiştir:

Found 12 strings in 1 executables.
Potential strings:
- password
- api_key
- encrypted_string
- some_obfuscated_string

Kullanılan Yöntemler

Floss, string çıkarımı yaparken birkaç farklı yöntemi bir arada kullanır:

  1. Regex (Düzenli İfadeler): Belirli kalıplara uyan string'leri bulmak için düzenli ifadeler kullanılır. Örneğin, e-posta adresleri veya URL’ler gibi formatları tespit etmek için bu yöntem tercih edilebilir.

  2. Anlam Çıkartma (Semantic Analysis): String'lerin anlamları üzerinde durarak hangi verinin ne işe yaradığını belirlemeye yönelik analizler yapılır. Bu aşamada, anlamlı string'lerin hangi bölümde kullanıldığını anlamak önemlidir.

  3. Harcama Profil Algoritmaları: Algoritmalar, belirli bir yazılımdaki string kullanımını analiz ederek potansiyel olarak obfuscated verilere ulaşmaya çalışır.

Dikkat Edilmesi Gereken Noktalar

Obfuscated string çıkarımı yaparken dikkat edilmesi gereken bazı noktalar şunlardır:

Analiz Bakış Açısı

Analiz sürecinde, çıkan sonuçların derinlemesine değerlendirilmesi gerekir. Elde edilen her bir string, kaynak kod ile karşılaştırılarak daha anlamlı bir bağlam elde edilebilir. Özellikle güvenlik analizlerinde, obfuscated string’lerin amacı analistlere yazılımın ne tür bir işlev sunduğunu daha iyi gösterebilir. Bu sayede, potansiyel tehditlerin önceden belirlenmesi mümkün hale gelir.

Sonuç olarak, Floss ve benzeri araçlar, yazılım dünyasında obfuscated string çıkarımı için güçlü bir analiz aracı olarak önemli bir yere sahiptir. Doğru tekniklerle birleştiğinde, bu araçlar güvenlik açıklarını tespit etme ve kötü niyetli yazılımların incelenmesinde kritik bir rol oynar.

İleri Seviye

Floss - Obfuscated String Çıkarımı

Floss (FLow Obfuscation String Solver), zararlı yazılımların ve şüpheli kodların analizinde kullanılan bir araçtır. Obfuscation, kötü niyetli parçaların ve iletişimlerin gizlenmesine yardımcı olur. Bu yazıda, Floss'un kullanımı ile ileri düzey obfuscated string çıkarım tekniklerine ve pratik örneklere değineceğiz.

Neden Obfuscated Stringlere İhtiyaç Duyarız?

Kötü amaçlı yazılımlar, analiz süreçlerini zorlaştırmak için kodlarını şifreler veya karmaşık hale getirir. Bu nedenle, analistlerin ve sızma test uzmanlarının, bu stringleri tespit edip analiz edebilmesi önemlidir. Floss, bu noktada devreye girerek, obfuscated stringleri anlamanızı sağlar.

Floss Kurulumu ve Kullanımı

Floss, Python tabanlı bir araçtır. Öncelikle, Floss’u kurmak için gerekli adımları izleyelim:

git clone https://github.com/fireeye/flare-floss.git
cd flare-floss
pip install -r requirements.txt

Temel Kullanım

Floss, bir dosyanın içindeki obfuscated stringleri analiz etmek için kullanılır. Genellikle bir PE (Portable Executable) dosyası üzerinde çalışmak yaygındır. Aşağıda örnek bir komut ile Floss’un kullanımını görebilirsiniz:

python3 floss.py sample.exe

Bu komut, sample.exe dosyasındaki obfuscated stringleri çözecek ve terminale yazdıracaktır.

String Çıkarma ve Analiz Stratejileri

Floss, obfuscated stringleri tespit etmenin yanı sıra, bu stringlerin hangi bağlamda kullanıldığını veya nasıl şifrelenmiş olabileceğini anlamaya yardımcı olur. Analiz süreci için şu adımlar izlenebilir:

  1. Dosya İncelemesi: Analiz edilecek dosya, yürütülebilir dosya formatında olmalıdır. PE dosyalarını incelemek için Floss etkili bir başlangıçtır.

  2. Obfuscation Yöntemlerini Anlamak: Çoğu zaman, stringlerin belirli bir yöntemle (örneğin XOR, Base64 vs.) obfuscate edildiğini göreceksiniz. Bu yöntemlerin analiz edilmesi önemlidir.

  3. Çıkarılan Stringlerin İncelenmesi: Floss, çözülen stringleri döndürdüğünde, bunların ne anlam ifade ettiğini incelemek gerekir. Çözülen stringlerin yalnızca kötü niyetli yazılım aktivitelerini değil, aynı zamanda sistem üzerinde yürütülebilecek komutları da içerebileceğini dikkate alın.

Uzman İpuçları

Örnek Çıkarma Süreci

Diyelim ki sample.exe içerisinde birkaç obfuscated string var. Aşağıda, daha karmaşık bir kullanım ve çıkarmanın sonucu örneğini inceleyelim:

python3 floss.py sample.exe --output json > results.json

Bu komut, obfuscated stringlerin JSON formatında dışa aktarılmasını sağlar ve daha sonra bu JSON dosyasını analiz etmek için çeşitli araçlar ya da betikler kullanabilirsiniz.

{
  "strings": [
    "dGVzdC1zdHJpbmc=",
    "cGFyYWxsbG93",
    "//Zm9v/"
  ]
}

Çıkarılan stringlerden ikisi Base64 ile obfuscate edilmiştir. Bu stringleri çözmek için Python kullanabilirsiniz:

import base64

obfuscated_strings = [
    "dGVzdC1zdHJpbmc=",
    "cGFyYWxsbG93",
    "//Zm9v/"
]

decoded_strings = [base64.b64decode(s).decode('utf-8', errors='ignore') for s in obfuscated_strings]
for string in decoded_strings:
    print(string)

Sonuç

Floss, obfuscated string çıkarımında güçlü bir araçtır. Doğru analiz ve strateji ile, sızma testleri sırasında karşılaşabileceğiniz zorlukları aşmanıza yardımcı olur. Kötü niyetli yazılımları daha iyi anlamak için sürekli öğrenmek ve yeni teknikler geliştirmek önemlidir. Floss ile obfuscation süreçlerini çözerek, siber güvenlik alanında kritik bir adım atmış olursunuz.