Ghidra: Açık Kaynaklı Bir Geri Mühendislik Aracı Nasıl Kullanılır?

Ghidra: Açık Kaynaklı Bir Geri Mühendislik Aracı Nasıl Kullanılır?
audio-thumbnail
Ghidra: Açık Kaynaklı Bir Geri Mühendislik Aracı Nasıl Kullanılır?
0:00
/0

Ghidra: Açık Kaynaklı Bir Geri Mühendislik Aracı Nasıl Kullanılır?

Ghidra, Ulusal Güvenlik Ajansı (NSA) tarafından geliştirilen ve açık kaynaklı bir geri mühendislik aracıdır. Bu güçlü araç, siber güvenlik uzmanları, yazılım analistleri ve geliştiriciler için kritik bir araçtır. Ghidra, derleyici tarafından oluşturulan derlenmiş kodları analiz etmek, decompile etmek ve davranışlarını anlayabilmek için tasarlanmıştır. Hem temel kullanıcılar hem de gelişmiş kullanıcılar için esnek bir platform sunar. Bu makalede Ghidra'nın temel kullanımı, kurulum süreci ve gelişmiş senaryolara doğru ilerlemeyi adım adım anlatacağız.

Ghidra Nedir ve Neden Önemlidir?

Ghidra, yazılımın derlenmiş halini analiz etmek için kullanılan bir geri mühendislik (reverse engineering) çerçevesidir. Bu tür araçlar, özellikle siber güvenlik alanında önemli rol oynar. Malicious (kötü amaçlı) yazılımları analiz etmek, sistemlerdeki zafiyetleri keşfetmek veya eski sistemlerdeki kodları anlamak gibi durumlar için Ghidra gibi araçlar vazgeçilmezdir.

NSA, Ghidra’yı kendi güvenlik görevlerini desteklemek amacıyla geliştirmiş ve ardından açık kaynak olarak yayınlamıştır. Bu sayede geliştiriciler, güvenlik uzmanları ve araştırmacılar, kendi ihtiyaçlarına göre Ghidra’yı özelleştirebilir, genişletebilir ve daha güçlü hale getirebilirler.

Ghidra’nın temel özellikleri şunlardır: - Disassembly (Deşifreleme): Derlenmiş kodu makine dili komutlarına çevirme. - Decompilation (Decompile): Makine dili komutlarını daha anlaşılır bir yapıya dönüştürme. - Grafiksel Görselleştirme: Kodun akışını gösteren grafikler. - Scripting (Komut Dosyası Desteği): Java ve Python ile özel komut dosyaları yazma. - Uzantılar (Extensions): Kullanıcıların kendi eklentilerini oluşturabilmesi.

Bu özellikler sayesinde Ghidra, Windows, macOS ve Linux gibi birden fazla işletim sisteminde çalışır ve geniş bir yelpazede işlemci komut setlerini destekler.

Ghidra’yı Kurmak

Ghidra’yı kurmak oldukça basittir. Ancak doğru adımları takip etmek önemlidir.

1. Gerekli Araçları Yükle

Ghidra, Java Geliştirme Kiti (JDK) 25 64-bit sürümünü gerektirir. Bu sürümü kurduktan sonra, Ghidra’ya ait resmi bir sürüm dosyasını (.zip formatında) GitHub'dan indirin. GitHub sayfasında "Assets" bölümünden ghidra_<versiyon>_<sürüm>_<tarih>.zip dosyasını seçin. Bu dosya, Ghidra'nın çalıştırılabilir haliyle birlikte gelen resmi bir sürüm dosyasıdır.

⚠️ Uyarı: GitHub'dan "Source Code" dosyalarını indirmek, Ghidra’yı kurmak için doğru yöntem değildir. Bu dosyalar, geliştirme amaçlıdır.

2. Ghidra’yı Çıkar

İndirdiğiniz .zip dosyasını bir klasöre çıkartın. Mevcut bir Ghidra kurulumunun üzerine çıkarmamak önemlidir. Yeni bir klasör oluşturun ve içine çıkarın.

3. Ghidra’yı Çalıştır

Ghidra’ya erişmek için aşağıdaki komutları kullanın:

  • Linux/MacOS: Terminalde ./ghidraRun komutunu yazın.
  • Windows: ghidraRun.bat dosyasını çift tıklayarak çalıştırın.

Bu komutla Ghidra’nın başlangıç ekranı açılacak ve kullanıcı arayüzüne erişilecektir.

📌 Not: Ghidra, hem kullanıcı arayüzüyle hem de otomatik modda çalışabilir. Bu da scriptlerle otomatik analiz yapılmasına olanak tanır.

4. PyGhidra ile Python Desteği

Ghidra, Python ile komut dosyası yazmayı da destekler. Bu sayede daha hızlı ve esnek analizler yapılabilir. PyGhidra, Ghidra’nın komut satırı üzerinden Python scriptlerini çalıştırmasını sağlar.

Linux/MacOS için: ./support/pyghidraRun
Windows için: support\pyghidraRun.bat

Bu komutlar, Ghidra içinde Python ile geliştirilebilecek komut dosyalarını çalıştırmanıza olanak tanır.

Ghidra ile Temel Kullanım

1. Dosya Analizi

Ghidra’ya yeni bir dosya yüklemek için: 1. Ghidra’ya giriş yapın. 2. "File" > "Open" seçeneğini kullanarak analiz edilecek dosyayı seçin. 3. Dosya türüne göre Ghidra, otomatik olarak doğru işlemci ve dosya formatını seçer.

Ghidra, PE (Windows), ELF (Linux), Mach-O (macOS) gibi bir çok dosya formatını destekler. Dosyayı yükledikten sonra, Ghidra otomatik olarak kodu disassembler ile analiz eder.

2. Dekompilasyon ve Akış Grafiği

Daha sonra, Ghidra'nın Decompiler (Dekompiler) penceresini açabilirsiniz. Burada makine dili komutlarını, daha okunabilir bir hale getirilmiş C/C++ tarzı kodlarla görebilirsiniz. Bu sayede, yazılımın ne yaptığını anlamak daha kolay hale gelir.

Ayrıca, Ghidra’nın Graph (Grafik) penceresi, kodun akışını görselleştirir. Bu, fonksiyonların çağrıldığı yerleri, döngüleri ve koşulları net bir şekilde gösterir.

3. Scripting ile Otomatik Analiz

Ghidra, kullanıcıların kendi scriptlerini yazmasına olanak tanıyan güçlü bir scripting sistemi sunar. Java ve Python ile script yazılabilir.

Örneğin, bir dosyada belirli bir fonksiyonun adını aramak isteyebilirsiniz. Bu işlemi bir Python scriptiyle otomatikleştirebilirsiniz:

from ghidra.app.script import GhidraScript

# Ghidra scripti yazarken
# Örnek: Tüm fonksiyonları listele
for func in currentProgram.getFunctionManager().getFunctions(True):
    print(func.getName())

Bu script, Ghidra içinde çalıştırılarak, belirtilen dosyadaki tüm fonksiyonları listeler.

Ghidra ile Gelişmiş Kullanım Senaryoları

1. Ghidra Eklentileri Geliştirme

Ghidra, kullanıcıların kendi eklentilerini (extensions) geliştirip kullanmasına olanak tanır. Bu eklentiler, Ghidra’ya yeni özellikler ekler. Ghidra’ya eklenti geliştirmek için GhidraDev eklentisi gereklidir.

Bu eklentiyi kurmak için: - Ghidra kurulum klasöründeki Extensions/Eclipse/GhidraDev/ klasörünü açın. - Eclipse IDE’ye bu eklentiyi ekleyin.

Bu sayede, Ghidra’nın içine özel araçlar ekleyebilir, otomatik analizler yapabilir veya yeni görselleştirme yöntemleri sunabilirsiniz.

2. Visual Studio Code ile Geliştirme

Ghidra, Visual Studio Code (VS Code) ile de entegre çalışır. VS Code, Ghidra ile daha hızlı ve gelişmiş bir geliştirme ortamı sunar. Ghidra’da bir kod penceresine girip, "Tools" menüsünden "Create VSCode Module project" seçeneğini seçerek VS Code projesi oluşturabilirsiniz.

Bu sayede, Ghidra ile entegre olan bir geliştirme ortamı ile script yazabilir ve hata ayıklama yapabilirsiniz.

3. Ghidra’nın Kendisini Geliştirme

Ghidra’nın kendisini geliştirmek isteyen geliştiriciler için, özel bir geliştirme ortamı sağlanmıştır. Bu ortamda Eclipse IDE kullanılır. Ghidra’nın kaynak kodunu GitHub’dan indirip, Eclipse’e entegre ederek geliştirme yapabilirsiniz.

Geliştirme ortamını kurmak için: 1. Ghidra kaynak kodunu GitHub’dan klonlayın. 2. Java, Gradle, GCC/Clang (Linux/MacOS) veya Visual Studio (Windows) gibi gereken araçları kurun. 3. gradle buildGhidra komutu ile Ghidra’nın geliştirme sürümünü oluşturun.

Bu sayede Ghidra’ya yeni özellikler ekleyebilir veya kendi ihtiyaçlarınıza göre özelleştirebilirsiniz.

Ghidra’nın Güvenlik Uyarısı

Ghidra’nın bazı sürümlerinde bilinen güvenlik açıkları bulunabilir. Bu nedenle, Ghidra’yı kullanmadan önce Ghidra’nın Güvenlik Uyarıları sayfasını incelemek önemlidir. Bu sayfada, mevcut açıklar ve düzeltme önerileri yer almaktadır.

Ghidra ile Daha Fazla Etkileşim

Ghidra, açık kaynak bir proje olduğundan, geliştiricilerin katkıda bulunması için bir platform sunar. Eğer Ghidra’ya bug düzeltmeler, yeni özellikler veya iyileştirmeler yapmak istiyorsanız, GitHub üzerindeki Contributor’s Guide (Katkıda Bulunan Rehberi) sayfasını inceleyebilirsiniz.

Sonuç

Ghidra, siber güvenlik ve yazılım analizi için güçlü bir araçtır. Hem temel kullanıcılar hem de gelişmiş kullanıcılar için esnek bir platform sunar. Ghidra’ya nasıl başlanır, nasıl kurulur, nasıl geliştirilir ve nasıl özelleştirilir? Bu makalede adım adım bu süreçleri anlattık.

Ghidra, sadece bir araç değil, aynı zamanda siber güvenlik dünyasında yeni keşifler yapmak isteyen herkese açık bir araştırma platformudur. Ghidra’ya başlamak için, kurulum adımlarını takip edin, basit analizler yapın ve yavaş yavaş gelişmiş özelliklere geçin.

Ghidra ile birlikte, yazılımın içini görmeye, kritik zafiyetleri keşfetmeye ve daha güvenli bir dijital dünyaya katkıda bulunmaya başlayabilirsiniz.