TryHackMe CC: Ghidra Çözümü
[Task 1] Intro
Ghidra, NSA tarafından geliştirilmiş ve kullanıcının binary dosyaları analiz etmesini sağlayan bir araçtır. Ayrıca binary dosyaları C kodu dönüştürmesiyle de ünlüdür.
Ghidra’yı aşağıdaki bağlantıdan indirebilirsin.
Eğer Kali Linux üzerinde jre(java runtime environment) veya jdk(java developer kit) yoksa aşağıdaki komutla kurabilirsiniz.
sudo apt install openjdk-13-jre openjdk-13-jdk
[Task 2] Creating A New Project
Ghidra klasörünü açtıktan ve java’yı indirdikten sonra, buna benzer bir dosya yapısı görmelisiniz.
GhidraRun dosyasını çalıştırarak çalıştırıyoruz.
Aşağıdaki ekrana ulaştıktan sonra File->New Project->Non-Shared-Project seçeneğiyle bu ekranda bir proje dizini ve bir ad oluşturun ve Finish’e tıklayın.
[Task 3] Analyzing a Binary
Bir proje oluşturduktan sonra buna benzer bir ekranla karşılaşacaksınız.
Bu ekrana geldikten sonra File->Import File seçeneğiyle TryHackMe üzerinden indirdiğiniz example dosyasını import edin.
(Not, Ghidra binary dosya türünü otomatik olarak algılar (Örnek x86, x86_64).)
Analyze ekranı açıldığında yes ile devam ediyoruz.
Bu ekran, binary dosyaları analiz etmek için ana ekrandır ve binary dosyanın her bölümünü görmenizi sağlar.
Pratik kullanım için, bu ekranın en ilginç kısmı “Symbol Tree” dir. Binary oluşturmak için içe aktarılan tüm dosyaları görüntülemenizi ve kullanıcı tarafından oluşturulan tüm işlevleri görüntülemenizi sağlar.
#include <stdio.h>int main(){printf("hi!");}
Main ve printf öğelerini Symbol Tree’nin Functions sekmesinde görebilirsiniz.
(Not: genel binary analiz için, derleme sırasında oluşturulan fonksiyonlar olduğu için “_” ile başlayan işlevlerle ilgilenmezsiniz)
Bu, binary derleyicinin yaptığı işlevleri görmenize izin verdiği için inanılmaz derecede faydalıdır.
Example1 binary dosyasında “main” işlevine çift tıklayın, bu ekranla karşılaşmanız gerekir.
[Task 4] It’s your turn!
- How many user created functions(including main) are there
Cevap: 2
2. What is the first variable set to in the main function?
Cevap: 10
3. What is the first variable set to, in the function “fn1”?
Cevap: hello
4. If you provide the input “1”, when you run the binary, what would the output be.(Note you can just run the binary to find this out, but that would defeat the whole purpose!).
Cevap: nice!
[Task 5] Miscellaneous operations
Önceki görevlerde, binary analiz etmek için gerekenler çoğunu gösterdi. Bilmenizde hala bazı ipuçları ve püf noktaları var.
Bazen bir binary dosyalara crack yapmak istediğiniz zamanlar olacaktır. Ghidra buna destek veriyor. Örnek binary dosyasında, main foksiyona gidin ve ayrıştırma bölümündeki “return 0” açift tıklayın. Bu ekranı görmelisiniz.
Asm komutuna sağ tıklayın, MOV EAX, 0x0 ve “Patch Instruction” na tıklayın. Buradan istediğiniz gibi değiştirebilirsiniz, bu durumda “MOV EAX, 0x0” ile MOV EAX, 0x1 “i değiştirelim. Ayrıştırma da güncellenecek ve bu ekranı görmelisiniz
Ghidra, bir bellek adresi verildiğinde farklı bellek bölümlerine gitmeyi destekler. Go To and input a memory address’e tıklayın ve bir bellek adresi girin.
Örneğin:
[Task 6] Final Exam
What outputs the good job message?