Ghidra


Ghidra

ABD Ulusal Güvenlik Ajansı (NSA) tarafından RSA konferasında yayınlanan Ghidra aracı, kurumun tersine mühendislik işleri için kullandığı bir yazılımdır. İlk olarak 2017’de “Vault 7” isimli WikiLeaks belgeleriyle ifşa olan yazılım, 5 Mart 2019 tarihinde açık kaynak olarak yayınlandı.

Java ile yazılmış olan Ghidra’yı kullanmak için Java 11’in yüklü olması gerekiyor. Ghidra, Ida’nın bedava versiyonunda olmayan decompile etme, projeleri paylaşma vb. özellikleri barındırırken, Ida’dan daha yavaş ve hafıza tüketiminin daha fazla olduğu göze çarpıyor. Ghidra’yı aşağıdaki linkten indirebilirsiniz:
https://www.ghidra-sre.org
Bu yazıda daha önce blogta yayınlanan Rising Sun zararlısına birde Ghidra üzerinde inceleyeceğiz.

İlk Bakış

Ghidra’yı kurup, ilk açılışını yaptığımızda yardım sayfası bizi karşılıyor.
 


Bu sayfayla beraber proje oluşturma sayfasını ve Ghidra ile alakalı ipuçlarını barındıran Tip of the Day penceresini görüyoruz.


 
File → New Project yolunu takip ederek yeni proje oluşturabilirsiniz. Yeni proje oluşturduğunuzda size bu projeyi paylaşılabilir yapmak isteyip istemediğiniz soruluyor.

 
Next diyip devam ettiğimizde proje adını belirleme ekranı geliyor.


 Finish butonuna basıp projeyi oluşturduğumuzda karşımıza şöyle bir pencere geliyor.


 
Projemizi oluşturduktan sonra artık analizi yapacağımız dosyayı seçmemiz lazım. Dosyayı seçmeden önce proje ekranında görünen CodeBrowser(ağzından alev çıkan yeşil ejderha) simgesine basıyoruz.

 
CodeBrowser, zararlımızı analiz edeceğimiz ve işimize yarayacak çoğu fonksiyonun bulunduğu araç. CodeBrowser’ı açtığımız zaman farklı bir pencere açılıp, eskileri andıran bir arayüz karşılıyor.


 İnceleyeceğimiz dosyayı yüklemek için File → Import File seçeneğini kullanıyoruz.


Dosyayı seçtikten sonra dosyanın özelliklerini kendi algılıyor fakat burada bizimde değişiklik yapmamıza olanak veriyor.




Ok tuşuna bastıktan sonra Ghidra zararlı dosyayı yüklüyor ve dosyanın analizinin yapılmadığını, yapmak ister misin diye bize soruyor.

Analiz bittikten sonra sonucunu görüyoruz. Sol tarafta bulunan Symbol Tree penceresinden function (fonksiyonlar) sekmesini kullarak entry (giriş) fonksiyonumuzu buluyoruz ve çift tıklıyoruz. Ghidra’nın güzel bir özelliği seçtiğimiz assembly satırlarını decompile bölümünde de işaretli olarak bize sunması.



Hem assembly kodu hem de decompile edilmiş pseudocode karşımıza çıkıyor. Decompile özelliği analistlerin çok fazla kullandığı bir özellik. IDA’da sadece lisanslı versiyonda bulunuyor. Analizimizi detaylandırmak için başka yerlere de odaklanmamız lazım. Bundan dolayı Window → Functions yolunu takip ederek zararlıda kullanılan fonksiyonlara bakabiliriz.


 
Kullanılan fonksiyonlar aşağıdaki gibi listeleniyor.




Filter kısmından arama yapabiliyoruz. Burada Rising Sun’ın asıl zararlı fonksiyonlarının bulunduğu FUN_13F04D140 fonksiyonuna gitmek için arama yapıyoruz. Aramada karşımıza çıkan fonksiyona çift tıkladağımız zaman o fonksiyonun assembly kodlarını görüyoruz. IDA’da sıkça kullandığımız grafik arayüzünü kullanmak için yukarıda bulunan Function Graph butonuna veya Window → Function Graph yolunu takip ediyoruz.
 
Butona bastığımız zaman karşımıza IDA’ya benzer bir görüntü çıkıyor. IDA’Dan farklı olarak ayrımlar animasyonlarla belirtiliyor.

Analiz için daha detaylandırdığımız zaman assembly kodlarının olduğu kutucukları görüyoruz. Graph view üzerinden başka fonksiyonlara geçiş, fare imlecini üzerinde tutunca daha detaylı bilgi, yorum ekleme gibi işlemleri kolaylıkla gerçekleştirebiliyoruz.


Bunların dışında Window sekmesinden çok daha fazla özelliğe erişebiliyoruz. En çok kullanılan özelliklerden biri olan dosyanın içerisindeki stringlere erişim yine Window → String yolu üzerinden erişilebiliyor.






 
Windows penceresindeki özelliklerini biraz daha inceleyelim. Bytes sekmesine bastığımızda analizini yaptığımız dosyayı hex olarak inceleyebiliyoruz. Bu hex görünümden, baytları değişritip dosyaya yama (patch) yapabiliyoruz. Baytları sonradan kullanmak için kopyalamak istediğimizde karşımıza boşluklu veya boşluksuz kopyalama olmak üzere 2 seçenek sunuluyor.



Yine Window penceresinin altında bulunan Python sekmesini açtığımızda Jython üzerinde çalışan bir Python komut satırı çıkıyor. Burada kendi yazdığınız Python 2.7 betiklerini çalıştırabilir veya internetten bulduğunuz betikleri de çalıştırabilirsiniz.



Ghidra’da bulunan başka güzel özellik ise hazır betiklerin olması ve bunların kullanıcıya sunulması. Window -> Script Manager yolunu izleyerek hazır halde bulunan betikleri görebilirsiniz. Bu pencereden kendimizde betik ekleyebiliriz. Java ve Python şimdilik desteklenen diller.



Search penceresinin altında nerelerde arama yapabileceğimiz görünüyor. Görselde de görüldüğü üzere programın içerisindeki yazılarda, hafızada, komutlar arasında vb gibi çok kullanışlı olabilecek özellikler sunuyor.

Sonuç

Bu yazımızda yayınlandığı günden itibaren çok ses getiren Ghidra aracını kısaca tanıtmaya çalıştık. Bu yazı sadece küçük bir giriş ve araç hakkında kısa bir bilgi vermeyi amaçlamaktadır. Program içerisinde kurcalamayı bekleyen çok fazla özellik var. Rakiplerine göre artılarını ve eksilerini değerlendirmek kullananın amaçları doğrultusunda şekillenen Ghidra’nın ilerleyen günlerde popülerliğinin artması bekleniyor.






Burak ÇARIKÇI

Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017