SlideShare a Scribd company logo
1 of 7
Download to read offline
GDB İle Tersine Mühendisliğe Giriş 
Bu yazımız linux sistemlerde tersine mühendisliğe giriş niteliğinde olup; temel olarak basit bir C 
programı ile debugging yöntemleri üzerine olacaktır. Ön bilgi olarak temel C programlama dili 
syntax’ı, linux komut satırı ve gcc, gdb araçları ile ilgili araştırma yapmanız gerekmektedir. Koyu 
renkli linklemelere tıklayarak konu ile ilgili referans gösterilen kaynaklara ulaşabilirsiniz. 
Bilgisayarda bir uygulama veya donanım için hataları tespit etmek, kodları incelemek ve binary 
düzeyde gerçekleştirdiği sistem çağrılarını izlemek güvenli yazılım geliştirme açısından önemlidir. 
Reverse enginneering’e giriş için öncelikle PE(Portable Executable) yada ELF gibi dosya formatları 
bilinmelidir. Örnek verecek olursak Windows’ta bir uygulamayı(exe) çalıştırdığımız zaman; bir 
süreç(process) oluşturulur ve bu süreçlere bir sanal hafıza (virtual memory) tahsis edilir. Sürecin 
hafıza blokları kullanılarak uygulama çalışır. Process hafızası üç ana bileşenden oluşur. Bunlar Code 
Segment, Data Segment ve Stack segment katmanlarıdır. Code segment(.txt) insanların yazdığı 
kodların bulunduğu kısım; Data segment(.data) global ve statik değişkenleri içeren,sanal adres 
alanının bir bölümü, Stack segment geçici değerlerin bulunduğu hafıza kısmıdır.
Temel dosya işleyiş yapısı bilgisini verdikten sonra önce [ctrl + alt + T] komutunu kullanarak linux 
terminalimizi açalım. Daha sonra ise root(linux sistemlerde en yetkili kullanıcı) değilsek; [sudo su 
­root] 
komutunu kullanarak root kullacı olalım. Daha sonra nano editörünü basit bir C uygulaması 
oluşturalım. Bunun için [nano ornek.c] komutunu kullanabilirsiniz. Açılan nano editörü ekranında 
resimdeki gibi bir küçük C uygulaması hazırlayalım. Ardından ctrl+r(dosyayı oku) ve ctrl+o(dosyaya 
yaz) komutlarını kullandıktan sonra ctrl+x(cıkıs) komutu ile nano editöründen cıkalım.
Yazdığımız basit C programının nano editöründen kaynak görüntüsü aşağıdaki gibidir. Basit bir 
isaretçi tipinde çağrı yapılan bir fonksiyon ve main fonksiyonundan oluşmaktadır. 
Şimdi yazdıklarımızı [gcc ­o 
yeni yeni.c] komutu ile derleyelim. Herhangi bir hata yoksa ve derleme 
işlemi başarılı ise yukarıdaki yeşil renkli executable(çalıştırılabilir) dosyayı görebilirsiniz. [file yeni] 
komutu ile yeni çalıştırılabilir dosyası ile ilgili bilgilere bakabilirsiniz.
Daha sonra dosyamızı [./yeni] komutunu vererek çalıştıralım. Programın cıktısı resimdeki gibi 
olucaktır. Uygulamamızın calıstığını ekran cıktısı ile görebilirsiniz. Şimdi ise [gdb yeni] komutunu 
vererek çalıştıralım. Daha sonra (gdb) run olacak olacak şekilde yeniden deneyelim ve çalıştığını 
görebilirsiniz. 
Assembly kodlarını görmek için gdb içersine iken [layout asm] komutunu verelim. Daha sonra [printf 
"%sn", 0x80484f8] komutunu verelim ve Merhaba Dünya yazısındaki M yi görebilirsiniz.
Tersine mühendislik ile ilgili bir çok hex editör, komut satırı aracı ve değişik tool bulunmaktadır. 
Burada önemli olan gerekli toolları reversing yaparken gerektiği zamanda kullanmaktır. [readelf ­h 
yeni] komutunu verdiğiniz zaman elf dosya formatı objelerine ulaşabilirsiniz.
Debugging, Reverse enginneering’ te çok kullanılan bir araçta hexdump aracıdır. Örnekte 
belirttiğimiz dosyamıza [hexdump ­C 
­n 
100 yeni ] komutunu vererek dosya ile ilgili hexadecimal 
olarakta görüntüleyebilirsiniz. 
Tersine mühendislik kavramı stuxnet kavramından sonra daha da önem kazandı. İran’da bulunan 
Siemens Scada sistemlerinin belirli modülülünün belirli bir ürününde ortaya çıkan stuxnet 
vakasında, APT(Advanced Persistent Threat), hedef odaklı gelişmiş ileri düzey bir tehdit olduğu için
sadece bilgisayar bilimlerinde değil; elektronik, mekatronik, makina bir çok sistemin farklı şekillerde 
istismarının düşünüldüğü söylenmektedir. Tersine mühedislik kavramı sadece scada sistemler, 
bilgisayar, yazılım tarafında düşünülmemelidir. Buradan stuxnet ile ilgili videoya ulaşabilirsiniz.

More Related Content

Viewers also liked

Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuAhmet Gürel
 
Siber Savunma Ürünlerinde Profesyonel Arka Kapılar
Siber Savunma Ürünlerinde Profesyonel Arka KapılarSiber Savunma Ürünlerinde Profesyonel Arka Kapılar
Siber Savunma Ürünlerinde Profesyonel Arka KapılarBGA Cyber Security
 
APT Saldırıları Karşısında Güvenlik Sistemlerin Yetersiziliği
APT Saldırıları Karşısında Güvenlik Sistemlerin YetersiziliğiAPT Saldırıları Karşısında Güvenlik Sistemlerin Yetersiziliği
APT Saldırıları Karşısında Güvenlik Sistemlerin YetersiziliğiBGA Cyber Security
 
Temel Cisco Komutlari Ve Ornekler
Temel Cisco Komutlari Ve OrneklerTemel Cisco Komutlari Ve Ornekler
Temel Cisco Komutlari Ve OrneklerAbdurrahman ALKAN
 
Android İşletim Sistemi
Android İşletim SistemiAndroid İşletim Sistemi
Android İşletim Sistemi_aerdeger
 
Siber Olaylara Müdahale Sunumu
Siber Olaylara Müdahale SunumuSiber Olaylara Müdahale Sunumu
Siber Olaylara Müdahale SunumuBGA Cyber Security
 
Her yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiHer yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiAhmet Han
 
Donanım ve yazılım bilişim dersi
Donanım ve yazılım bilişim dersiDonanım ve yazılım bilişim dersi
Donanım ve yazılım bilişim dersiMali Yılmaz
 

Viewers also liked (20)

Network Dersleri1
Network Dersleri1Network Dersleri1
Network Dersleri1
 
Ağ Temelleri - Caner Köroğlu
Ağ Temelleri - Caner KöroğluAğ Temelleri - Caner Köroğlu
Ağ Temelleri - Caner Köroğlu
 
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
 
Siber Savunma Ürünlerinde Profesyonel Arka Kapılar
Siber Savunma Ürünlerinde Profesyonel Arka KapılarSiber Savunma Ürünlerinde Profesyonel Arka Kapılar
Siber Savunma Ürünlerinde Profesyonel Arka Kapılar
 
BTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Yazılım Güvenliği Yönetimi EğitimiBTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Yazılım Güvenliği Yönetimi Eğitimi
 
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesiAndroid Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
 
BTRisk Android Uygulamalara Malware Yerleştirme Sunumu
BTRisk Android Uygulamalara Malware Yerleştirme SunumuBTRisk Android Uygulamalara Malware Yerleştirme Sunumu
BTRisk Android Uygulamalara Malware Yerleştirme Sunumu
 
BTRisk Android Mobil Uygulama Denetimi Eğitimi
BTRisk Android Mobil Uygulama Denetimi EğitimiBTRisk Android Mobil Uygulama Denetimi Eğitimi
BTRisk Android Mobil Uygulama Denetimi Eğitimi
 
APT Saldırıları Karşısında Güvenlik Sistemlerin Yetersiziliği
APT Saldırıları Karşısında Güvenlik Sistemlerin YetersiziliğiAPT Saldırıları Karşısında Güvenlik Sistemlerin Yetersiziliği
APT Saldırıları Karşısında Güvenlik Sistemlerin Yetersiziliği
 
Temel Cisco Komutlari Ve Ornekler
Temel Cisco Komutlari Ve OrneklerTemel Cisco Komutlari Ve Ornekler
Temel Cisco Komutlari Ve Ornekler
 
Unix Denetim Dokümanı
Unix Denetim DokümanıUnix Denetim Dokümanı
Unix Denetim Dokümanı
 
Android İşletim Sistemi
Android İşletim SistemiAndroid İşletim Sistemi
Android İşletim Sistemi
 
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim SunumuBTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
 
Temel bilgisayar
Temel bilgisayarTemel bilgisayar
Temel bilgisayar
 
Network Dersleri3
Network Dersleri3Network Dersleri3
Network Dersleri3
 
BTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi SunumuBTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi Sunumu
 
Siber Olaylara Müdahale Sunumu
Siber Olaylara Müdahale SunumuSiber Olaylara Müdahale Sunumu
Siber Olaylara Müdahale Sunumu
 
Linux101
Linux101Linux101
Linux101
 
Her yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiHer yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliği
 
Donanım ve yazılım bilişim dersi
Donanım ve yazılım bilişim dersiDonanım ve yazılım bilişim dersi
Donanım ve yazılım bilişim dersi
 

More from Ahmet Han

Proje Risklerinin Tanımlanması
Proje Risklerinin TanımlanmasıProje Risklerinin Tanımlanması
Proje Risklerinin TanımlanmasıAhmet Han
 
Bilgi güvenliği ve Kriptografi Soruları
Bilgi güvenliği ve Kriptografi SorularıBilgi güvenliği ve Kriptografi Soruları
Bilgi güvenliği ve Kriptografi SorularıAhmet Han
 
Mobil Programlama Soruları
Mobil Programlama SorularıMobil Programlama Soruları
Mobil Programlama SorularıAhmet Han
 
Network ve Sistem 101 etkinliği
Network ve Sistem 101 etkinliği Network ve Sistem 101 etkinliği
Network ve Sistem 101 etkinliği Ahmet Han
 
Project Management
Project Management Project Management
Project Management Ahmet Han
 
Bilgisayar Mühendisliğinde Kariyer
Bilgisayar Mühendisliğinde Kariyer Bilgisayar Mühendisliğinde Kariyer
Bilgisayar Mühendisliğinde Kariyer Ahmet Han
 
Ssh brute force saldırıları
Ssh brute force saldırılarıSsh brute force saldırıları
Ssh brute force saldırılarıAhmet Han
 
Centos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulması
Centos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulmasıCentos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulması
Centos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulmasıAhmet Han
 
Linux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçlarıLinux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçlarıAhmet Han
 
Nicola tesla
Nicola teslaNicola tesla
Nicola teslaAhmet Han
 

More from Ahmet Han (11)

Proje Risklerinin Tanımlanması
Proje Risklerinin TanımlanmasıProje Risklerinin Tanımlanması
Proje Risklerinin Tanımlanması
 
Bilgi güvenliği ve Kriptografi Soruları
Bilgi güvenliği ve Kriptografi SorularıBilgi güvenliği ve Kriptografi Soruları
Bilgi güvenliği ve Kriptografi Soruları
 
Mobil Programlama Soruları
Mobil Programlama SorularıMobil Programlama Soruları
Mobil Programlama Soruları
 
Network ve Sistem 101 etkinliği
Network ve Sistem 101 etkinliği Network ve Sistem 101 etkinliği
Network ve Sistem 101 etkinliği
 
Project Management
Project Management Project Management
Project Management
 
Bilgisayar Mühendisliğinde Kariyer
Bilgisayar Mühendisliğinde Kariyer Bilgisayar Mühendisliğinde Kariyer
Bilgisayar Mühendisliğinde Kariyer
 
Ssh brute force saldırıları
Ssh brute force saldırılarıSsh brute force saldırıları
Ssh brute force saldırıları
 
Centos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulması
Centos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulmasıCentos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulması
Centos 6.5 minimal i̇so sürümü oracle virtual box ‘a kurulması
 
Linux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçlarıLinux sunucularda bandwitch monitoring araçları
Linux sunucularda bandwitch monitoring araçları
 
Sunu
SunuSunu
Sunu
 
Nicola tesla
Nicola teslaNicola tesla
Nicola tesla
 

Gdb i̇le tersine mühendisliğe giriş

  • 1. GDB İle Tersine Mühendisliğe Giriş Bu yazımız linux sistemlerde tersine mühendisliğe giriş niteliğinde olup; temel olarak basit bir C programı ile debugging yöntemleri üzerine olacaktır. Ön bilgi olarak temel C programlama dili syntax’ı, linux komut satırı ve gcc, gdb araçları ile ilgili araştırma yapmanız gerekmektedir. Koyu renkli linklemelere tıklayarak konu ile ilgili referans gösterilen kaynaklara ulaşabilirsiniz. Bilgisayarda bir uygulama veya donanım için hataları tespit etmek, kodları incelemek ve binary düzeyde gerçekleştirdiği sistem çağrılarını izlemek güvenli yazılım geliştirme açısından önemlidir. Reverse enginneering’e giriş için öncelikle PE(Portable Executable) yada ELF gibi dosya formatları bilinmelidir. Örnek verecek olursak Windows’ta bir uygulamayı(exe) çalıştırdığımız zaman; bir süreç(process) oluşturulur ve bu süreçlere bir sanal hafıza (virtual memory) tahsis edilir. Sürecin hafıza blokları kullanılarak uygulama çalışır. Process hafızası üç ana bileşenden oluşur. Bunlar Code Segment, Data Segment ve Stack segment katmanlarıdır. Code segment(.txt) insanların yazdığı kodların bulunduğu kısım; Data segment(.data) global ve statik değişkenleri içeren,sanal adres alanının bir bölümü, Stack segment geçici değerlerin bulunduğu hafıza kısmıdır.
  • 2. Temel dosya işleyiş yapısı bilgisini verdikten sonra önce [ctrl + alt + T] komutunu kullanarak linux terminalimizi açalım. Daha sonra ise root(linux sistemlerde en yetkili kullanıcı) değilsek; [sudo su ­root] komutunu kullanarak root kullacı olalım. Daha sonra nano editörünü basit bir C uygulaması oluşturalım. Bunun için [nano ornek.c] komutunu kullanabilirsiniz. Açılan nano editörü ekranında resimdeki gibi bir küçük C uygulaması hazırlayalım. Ardından ctrl+r(dosyayı oku) ve ctrl+o(dosyaya yaz) komutlarını kullandıktan sonra ctrl+x(cıkıs) komutu ile nano editöründen cıkalım.
  • 3. Yazdığımız basit C programının nano editöründen kaynak görüntüsü aşağıdaki gibidir. Basit bir isaretçi tipinde çağrı yapılan bir fonksiyon ve main fonksiyonundan oluşmaktadır. Şimdi yazdıklarımızı [gcc ­o yeni yeni.c] komutu ile derleyelim. Herhangi bir hata yoksa ve derleme işlemi başarılı ise yukarıdaki yeşil renkli executable(çalıştırılabilir) dosyayı görebilirsiniz. [file yeni] komutu ile yeni çalıştırılabilir dosyası ile ilgili bilgilere bakabilirsiniz.
  • 4. Daha sonra dosyamızı [./yeni] komutunu vererek çalıştıralım. Programın cıktısı resimdeki gibi olucaktır. Uygulamamızın calıstığını ekran cıktısı ile görebilirsiniz. Şimdi ise [gdb yeni] komutunu vererek çalıştıralım. Daha sonra (gdb) run olacak olacak şekilde yeniden deneyelim ve çalıştığını görebilirsiniz. Assembly kodlarını görmek için gdb içersine iken [layout asm] komutunu verelim. Daha sonra [printf "%sn", 0x80484f8] komutunu verelim ve Merhaba Dünya yazısındaki M yi görebilirsiniz.
  • 5. Tersine mühendislik ile ilgili bir çok hex editör, komut satırı aracı ve değişik tool bulunmaktadır. Burada önemli olan gerekli toolları reversing yaparken gerektiği zamanda kullanmaktır. [readelf ­h yeni] komutunu verdiğiniz zaman elf dosya formatı objelerine ulaşabilirsiniz.
  • 6. Debugging, Reverse enginneering’ te çok kullanılan bir araçta hexdump aracıdır. Örnekte belirttiğimiz dosyamıza [hexdump ­C ­n 100 yeni ] komutunu vererek dosya ile ilgili hexadecimal olarakta görüntüleyebilirsiniz. Tersine mühendislik kavramı stuxnet kavramından sonra daha da önem kazandı. İran’da bulunan Siemens Scada sistemlerinin belirli modülülünün belirli bir ürününde ortaya çıkan stuxnet vakasında, APT(Advanced Persistent Threat), hedef odaklı gelişmiş ileri düzey bir tehdit olduğu için
  • 7. sadece bilgisayar bilimlerinde değil; elektronik, mekatronik, makina bir çok sistemin farklı şekillerde istismarının düşünüldüğü söylenmektedir. Tersine mühedislik kavramı sadece scada sistemler, bilgisayar, yazılım tarafında düşünülmemelidir. Buradan stuxnet ile ilgili videoya ulaşabilirsiniz.