IDA Pro ile Remote Linux Debugging

Windows bağımlısı biri olarak benim dünyamda Linux, hep sanal makina içinde çalışmaya mahkum olmuştur. Her ne kadar Ubuntu’yu çok seviyor olsamda alışkanlık ve oyunlar nedeniyle Windows kullanmaya uzun bir süre daha devam edeceğim gibi duruyor. Windows üzerinde debug için Ollydbg, Immunity Debugger ve IDA Pro araçlarını sıkça kullanıyorum fakat sistem Linux olunca GDB kullanmak gerçekten grafik arayüzü olmaması nedeniyle can sıkıcı olabiliyor.

Fakat benim gibi sadece tek bir işletim sistemi kullanmıyor sanal makinalardanda faydalanıyorsanız Linux üzerindeki bir programı debug etmek için IDA Pro’nun uzaktan (remote) debug özelliğinden faydalanabilirsiniz. Remote debugging, yerel veya uzaktaki ağ üzerinde yer alan bir sistemde çalışan bir programı kendi sisteminiz üzerinden debug etmenizi sağlar bu sayede örnek olarak uzak sistemde çalışan zararlı bir yazılımı kendi sisteminize zarar vermeden analiz etme imkanınız olmuş olur.

Benim gibi ana sistem olarak Windows 7 kullanıyorsanız ve sisteminizde IDA Pro v5.x yüklü ise şu adımları izleyerek Linux üzerindeki renksiz GDB’ye güzel bir alternatifiniz olabilir :)

Yazının daha kolay anlaşılabilmesi için örnek olarak Linux için hazırlanmış bir crackme programını debug edeceğiz. Crackme, tersine mühendislik becerilerinizi geliştirebilmeniz için internet üzerindeki gönüllüler tarafından kırılmak üzere hazırlanmış programlara verilen isimdir.

İlk olarak Crackmes.de sitesinden cyrex’s Linux CrackMe programını indirelim ve C:\Program Files\IDA\crackme klasörü içine arşivden çıkartılmış halini kopyalayalım.

Öncelikle uzaktan debug etmek için Windows sisteminiz üzerinde ida adında bir kullanıcı yaratmanızı tavsiye ederim. Kullanıcıyı yarattıktan sonra C:\Program Files\IDA klasörünü paylaşıma açalım ve IDA kullanıcısını bu paylaşım üzerinde yetkilendirelim. Daha sonra sanal makina içinde yüklü olan Ubuntu’ya geçerek (evet herkes Ubuntu kullanmalı :p) bulunduğumuz klasör altında ida klasörü yaratalım ve arından smbmount komutu ile az önce yaratmış olduğumuz paylaşıma bağlanarak bu klasör içinde yer alan linux_server programını çalıştıralım.

Linux IDA

Daha sonra Windows’a geçerek IDA’yı çalıştıralım ve File menüsünden Open’a basarak C:\Program Files\IDA\crackme klasörü içinde yer alan crackme programını açalım.

Linux IDA

Daha sonra üstteki menüden Debugger’ı seçelim ve daha sonra Remote Linux Debugger’ı seçelim. Ardından Debugger menüsünden Start process’i seçelim ve Hostname kısmına sanal makina içinde çalışan Ubuntu sisteminin IP adresini girelim.

Linux IDA

IP adresini girdikten sonra ise Debugger menüsünden Start process’i seçerek debug işlemini başlatalım. (Her iki uyarı mesajınıda Yes diyerek geçebiliriz.)

Crackme’yi kırmak için bizden doğru şifreyi bulmamız isteniyor. Debug işlemi başladıktan sonra Ubuntu’ya bakacak olursanız ekranda sizden doğru şifreyi girmenizi istediğini görebilirsiniz. Buraya rastgele bir şifre girdiğimizde (12345) hata mesajı ile karşılaşıyoruz ve debug işlemi sonlanıyor.

Linux IDA

Amacımız doğru şifreyi bulmak olduğu için bunun için IDA’da Shift 12 tuşlarına basarak Strings penceresini açalım ve az önce karşılaştığımız hata mesajının üzerine iki defa basarak program üzerinde bu değişkenin tutulduğu ilgili bölüme gidelim.

Faremizin imlecini char aOhhhhYourSkill[] üzerine getirdikten sonra x tuşuna basarak bu değişkeni çağıran kod parçasına gidelim.

Linux IDA
Linux IDA

Bu kodun üzerine hızlıca göz attığımızda kullanıcıdan alınan verinin yani şifrenin strcmp fonksiyonu yardımı ile 47ghf6fh37fbgbg değeri ile karşılaştırıldığını ve doğru olması durumunda Good ile başlayan mesaja aksi durumda Ohhh ile başlayan hata mesajına gittiğimizi görüyoruz ve şifrenin 47ghf6fh37fbgbg olduğunu öğrenmiş oluyoruz ve crackme başarıyla çözülmüş oluyor.

Linux IDA

Gördüğünüz üzere Windows üzerinde çalışan IDA ile Linux üzerindeki bir programı debug etmek GDB’nin aksine daha kolay ve eğlenceli olabiliyor.

Bir sonraki yazıda görüşmek dileğiyle herkese iyi haftalar dilerim.

Not: Geçtiğimiz aylarda yayınlanan v6 sürümü ile IDA Pro kullanıcıları Linux ve Mac OS X üzerinde GUI arayüzüne kavuştu.