radare2: Giriş

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11
Radare2

Radare2 Nedir?

Radare2, bir forensics aracı olarak başlamış fakat arından içine birçok özellik eklenerek çok amaçlı bir tersine mühendislik aracına dönmüş bir araçtır.

Radare2 ile,

  • Birçok mimariyi disassemble (ve assemble) edebilir
  • Birçok debugger ile debug edebilir (gdb, rap, webui, r2pipe, windbg, ...)
  • Linux, BSD, Windows, OSX, Android, iOS, Solaris ve Haiku üzerinde çalışabilir
  • Dosya sistemlerinde ve data carvingde forensics gerçekleştirebilir
  • Python, Go, Javascript ve daha birçok dilde scriptlenebilir
  • Gömülü web sunucusunu kullanarak işbirlikçi analizi destekler
  • Veri yapılarını görselleştirebilir
  • Yeni özellikleri açığa çıkarmak ve zaafiyetleri düzeltmek için uygulamaları patchleyebilir
  • Tersine mühendislik aşamasını hızlandırmak için güçlü analizler yapar
  • Yazılımları exploit eder


Ayrıca aşağıdaki fotoğrafta diğer tersine mühendislik araçları ile karşılaştırmasına bakabilirsiniz:

oXr45R.png

https://www.radare.org/r/cmp.html

Kurulum

Git kullanarak önerilen kurulum:
Kod:
git clone https://github.com/radare/radare2    cd radare2
[/B][/COLOR][COLOR=White][B] sys/install.sh


cd radare2
sys/install.sh[/code]

Veya GitHub ile kurmak istemezseniz, derlenmiş binaryleri de kurabilirsiniz.

Windows
W32/W64

OS X
iOS (Jailbreak gerekir)
Android
Docker

Kullanım

learning_curve.png

Yüklenen dosyaya yapılan gitme, gözlemleme ve değiştime işlemleri üç basit işlemle yapılır: seek, print, alernate (write, append).

'seek' komutu, s ile kısaltılmıştır ve argüman olarak bir konum alır. Bu konum, 10, 0x25 veya [0x100ptr_table] gibi şeyler olabilir. Blok tabanlı dosyalarla çalışıyorsanız b komutu ile blok boyutu verebilir ve s++ ve s-- komutları ile ileri geri gidebilirsiniz.

'print' komutu, p ile kısaltılmıştır ve birçok alt modu vardır (ikinci harf kullanılmak istenilen print modunu belirtmek için kullanılır). px, hexadecimal olarak printlemek ve pd, disassemble etmek için kullanılan ve sık kullanılan örneklerdendir.

Dosyalara yazmak için, radare2 ile dosyayı açarken -w seçeneğini belirtmeniz gerekmektedir. w komutu, metin, hexpair (x alt komutu) ve hatta assembly opcodeları (a alt komutu) yazmak için kullanılabilir.
Kod:
> w hello world         ; metin
> wx 90 90 90 90        ; hexpairs
> wa jmp 0x8048140      ; assemble
> wf inline.bin         ; dosya içeriğini yazar
Kod:
> w hello world ; metin
     > wx 90 90 90 90 ; hexpairs
> wa jmp 0x8048140 ; assemble
    > wf inline.bin ; dosya içeriğini yazar
Ayrıca bir komutun yardım metnini almak için, komutun sonuna ? ekleyebilirsiniz (e.g. p?). ?* ekleyerek de o komut ile başlayan tüm komutları görmenizi sağlar (e.g. p?*).

Görsel moda geçmek için V<Enter> tuşlarına basın ve geri dönmek için q'ya basın.

Komut Formatı

Radare2 komut formatı, Vim formatına yakın bir formattadır. Bu sebeple Vim kullananlar kendini komutlara aşina hissedeceklerdir. Her komut tek bir karakter ile ifade edilmiştir. Komut formatı aşağıdaki şekildedir:

[.][times][cmd][~grep][@[@iter]addr!size][|>pipe] ;

Yani örneğin px komutunu 3 kere çalıştrmak için, 3px komutunu kullanabiliriz.

Basit Debugging Oturumu

Radare2, -d seçeneği ile başlatılınca bir programı debug eder. Bu seçeneğe çalışan bir işlemin PID'sini verebilir veya dosya adı ve parametrelerini vererek yeni bir program başlatabilirsiniz.
Kod:
$ r2 -d `pidof <app>`
$ r2 -d /bin/ls
$ r2 -a arm -b 16 -d gdb://192.168.1.43:9090
Kod:
$ r2 -d `pidof <app>`
     $ r2 -d /bin/ls
    $ r2 -a arm -b 16 -d gdb://192.168.1.43:9090
2. komutta, debugger programı forklayacak ve ls programını kendi hafızasında çalıştıracaktır.

Çalışmayı ld.so'da durduracaktır. Bu sebeple, bir giriş noktası veya paylaşılan kütüphane göremeyeceksiniz.

Debugging'e devam etmek için ise dcu komutunu kullanabilirsiniz. Bu komut 'debug continue until' anlamına gelir. Yani verilen adrese kadar debugging işlemine devam eder. Örneğin, dcu main komutu uygulamanın başlangıcına kadar gidip orada duracaktır. Her ne kadar main()'den önce bir şey yapılmıyor gibi gözükse de bazı uygulamalarda bundan önce de kod çalıştırabilir. Bu sebeple dikkatli olmalısınız.

Sık kullanılan birkaç komut:
Kod:
> d?            ; debugger komutları ile ilgili yardım
> ds 3          ; 3 kere ilerleyin
> db 0x8048920  ; bir breakpoint oluşturun        [code]> d? ; debugger komutları ile ilgili yardım
     > ds 3 ; 3 kere ilerleyin
> db 0x8048920 ; bir breakpoint oluşturun     > db 0x8048920 ; breakpoint'i kaldırın    > dc            ; execution'a kadar çalıştırın
> dcs           ; syscall'a kadar çalıştırın
> dd            ; dosya tanımlayıcılarını değiştirin
> dm            ; işlem haritasını gösterin
> dmp A S rwx   ; sayfa yetkilerini değiştirin
> dr eax=33     ; kayıt değerini değiştirin. eax = 33
> dc ; execution'a kadar çalıştırın
> dcs ; syscall'a kadar çalıştırın
> dd ; dosya tanımlayıcılarını değiştirin
> dm ; işlem haritasını gösterin
> dmp A S rwx ; sayfa yetkilerini değiştirin
> dr eax=33 ; kayıt değerini değiştirin. eax = 33[/code] Ayrıca debugging'i daha kolay bir şekilde grafiksel modda da yapabilirsiniz. Bu modda o kadar komutu aklınızda tutmanıza gerek yok. Bu grafiksel moda girmek için, Vpp komutunu çalıştırabilirsiniz.
Bu moda girdiğinizde, hedefin bir hexdump'ını göreceksiniz. p tuşuna basarak, diğer görüntü modları arasında geçiş yapabilirsiniz. F7 ve s ile içine gitme (step into), F8 ve S ile üzerinden geçme (step over) komutlarını çalıştırabilirsiniz. Ayrıca F2 ile breakpoint oluşturabilirsiniz. Bu moda girdiğinizde, hedefin bir hexdump'ını göreceksiniz. p tuşuna basarak, diğer görüntü modları arasında geçiş yapabilirsiniz. F7 ve s ile içine gitme, F8 ve S ile üzerinden geçme komutlarını çalıştırabilirsiniz. Ayrıca F2 ile breakpoint oluşturabilirsiniz.

 
Moderatör tarafında düzenlendi:

kondanta

Katılımcı Üye
29 Tem 2017
910
0
CNCF
Zamaninda benim cok ilgimi ceken bir tool olmustu ama zorlugu altinda ezilip birakmak zorunda kalmistim. Temiz bir anlatim olmus, eline saglik.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.