SlideShare uma empresa Scribd logo
1 de 56
Reverse Engineering 101
Tersine Mühendislik 101
Tech Talks #02
Mavidurak-IO
Fatih Erdoğan
root@mavidurak-io:~$ whoami
• Intern Security Researcher at SignalSEC
• Reverse Engineering, Exploit Development, low-level stuff
• Penetration Testing
• Sakarya University - Computer Engineering (2014 - …)
• http://ferdogan.net
• twitter.com/FeCassie
• fatiherdogan94@gmail.com
• Member at Mavidurak-IO
Reverse Engineering??
Tersine Mühendislik Nedir?
• Tersine mühendislik basitçe derlenmiş bir binary veya bir exe uzantılı,
yani çalıştırılabilir bir dosyanın nasıl çalıştığını anlamaya yönelik
uygulanan sürece denir. Yapmaya çalıştığımız şey programın nasıl
çalıştığını anlamak, çalışma yapısını çözmeye çalışmaktır.
• Genellikle C, C++, Visual Basic, Delphi gibi diller ile yazılan
programların analizi insan için kolay olur fakat bu diller bilgisayar için
anlaşılır değildir bu nedenle bir takım işlemler sonucunda bu dillerde
yazılan kodlar makinenin anlayabileceği makine diline çevirilir.
Çevrildikten sonraki kodlar insanlar tarafindan zor anlaşılır ve analiz
edilebilmesi için hem zaman hem de bolca beyin gücü gerektirir.
Tersine Mühendislik ile Neler Yapabiliriz?
Neden İhtiyacımız Var?
• Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya çıkarma
• Virüs ve zararlı yazılımları inceleme olanağı
• Programların lisans korumasını atlatma (Cracking) - en yaygın olan :)
• Yazılımların sağlamlığını kontrol etme
• Yazılımlara ek özellikler getirme (Patching vs.)
ReactOS Projesi
• “Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya
çıkarma” maddesine örnek olarak verilebilecek bir proje
• Bu proje bir grup tersine mühendis tarafından, Windows işletim
sisteminin kaynak kodlarının incelenip Windows’a benzer ücretsiz bir
işletim sistemi geliştirme amaçlı uygulanan bir projedir.
http://www.reactos.org
Requirements
Analysis
Design
Implementation
Forward Engineering Reverse Engineering
Software Engineering
Ters Mühendis Hangi Özelliklere Sahip Olmalı?
• Sınırsız merak ve araştırma isteği
• Hayal gücü, yorulmayan gözler :)
• Assembly, C ve Python gibi en az bir scripting dili bilmek
• İşletim sistemleri yapısı, CPU mimarisi, Bilgisayar çalışma mantığı
• Kriptografi
• Anti-Debugging, Anti-Reversing teknikleri
• ….
Analiz/Reversing Çeşitleri
• Statik Analiz/Reversing
• Dinamik Analiz/Reversing
Statik Analiz/Reversing
• Statik program analizi execute etmeden yani programı çalıştırmadan
yapılan yazılım analiz şeklidir.
Dinamik Analiz/Reversing
• Dinamik program analizi ise o an sanal veya gerçek bir process
üzerinde execute olan programa yapılan analizdir.
x86 Mimarisi & Assembly
Temel Aritmetik
mov eax, 5 ; eax=5
mov ebx, 3 ; ebx=3
add eax, ebx ; eax = eax + ebx
sub ebx, 2 ; ebx = ebx -2
Hafıza Erişimi
cmp eax, 2 ; compare eax with 2
je label ; if(eax == 2)
ja label ; if(eax > 2)
jb label ; if(eax < 2)
jbe label ; if(eax <= 2)
jne label ; if(eax != 2)
jmp label ; jump label
Fonksiyon Çağrıları
call function ; store return addr on the stack
; and jump to function!
func:
push esi ; save esi
…
pop esi ; restore esi
ret ; read return addr from the stack
; and jump to it.
Registerlar - 1
• Registerlar ne yapar?
• Lokasyon/konum depolar
• Hafıza konumuna göre daha hızlı erişim olanağı sağlar
• EAX => Değişken değerleri depolar
• EBX => Base index (diziler ile kullanılır)
• ECX => Sayaç register
• EDX => Data
• ESI => String işlemleri için kaynak indexi
Registerlar - 2
• EDI => String işlemleri için hedef indexi
• ESP => Stack Pointer (Stack’in en üst adresi)
• EBP => Base Pointer (Stack’in en alt adresi)
• EIP => Instruction Pointer (Programın o an bulunduğu yer.Bir sonraki
instruction’ın adresini depolar.)
Registerlar - 3
• Segment Registerları
Hafızanın belli segmentlerini adreslemek için kullanılır
(code/data/stack segmentleri)
• CS => Code Segment
• SS => Stack Segment
• ES => Extra Segment
• DS => Data Segment
• FS,GS Segments
32-Bit Registerlar (x86)
Ne tür araçlar kullanacağız?
Tersine Mühendisin Alet Çantası
• Tersine mühendislik yaparken kullandığımız bir takım araçlar var.
Bunlar:
• Disassemblerlar
• Debuggerlar
• PE Editörleri
• Hex-Resource Editörler
• Sistem İzleme Araçları
Disassembler
• Bu yazılımlar, programı disassembly işleminden geçirerek programın
assembly kodu şeklindeki halini gösterir.
• Bu olay bize programda çağırılan fonksiyonları, string değerleri vs.
görüp incelememize olanak sağlar.
• En yaygın olarak kullanılarak disassembler => IDA
IDA Disassembler
IDA - 2
Debugger
• Debuggerlar ile programın çalışmasını satır satır izleyebiliriz.
• Disassembler gibi çalışırlar fakat ek olarak işlemleri izleme imkanımız olur.
• Çoğu zaman cracking, malware analizi, exploit geliştirme aşamalarında kullanılırlar.
• Bir debugger ile programın çalışması esnasında değişiklik yapılabilir.
• En yaygın olarak kullanılan debuggerlar:
• ImmunityDebugger
• OllyDbg
• WinDbg
ImmunityDebugger
OllyDbg
OllyDbg - 2
WinDbg
WinDbg - 2
Örnek WinDbg Komutları
•r: registerların o anki durumunu/içeriğini gösterir
•t: trace-step (until call)
•pt: single-step (until-ret)
•g: process run (go!)
•.hh: yardım komutu (örnek => .hh pt)
•lm: list modules
PE Editörleri
• PE => Portable Executable
• Nedir? => Windows çalıştırılabilir dosya formatı
• Bu programlar PE dosyalarının PE bilgilerini okumak için kullanılır
• Tersine Mühendisliğin en önemli konularından birisidir
==> “PE candır gerisi heyecandır”
• PE dosyaları program ile ilgili kritik bilgileri barındırdığından tersine
mühendislik veya malware analizi yaparken PE ile baya içli dışlı
olacağız :)
PE Editörleri - 2
• Yaygın olarak kullanılan PE Editörleri
• CFF Explorer
• LordPE
• DIE => Detect It Easy
• PeiD
CFF Explorer
LordPE
DIE (Detect It Easy)
PeiD
Hex - Resource Editörler
• Diğerlerine göre çok yaygın değiller
• Basit string düzenlemeleri
• Bayt değiştirmeleri
• Hızlı kod analizi
• …
Hex - Resource Editörler
• Birçok hex-resource editör mevcut
• HxD
• Hex Workshop
• ResEdit
HxD
Hex Workshop
ResEdit
Sistem İzleme Araçları
• Microsoft SysInternal Tools
• Process Explorer
• Process Monitor
• AutoRuns
• TCPView
Process Explorer
Process Monitor
AutoRuns
TCPView
Anti-Debugging??
Anti-Debugging
Anti-Debugging
Nasıl Bypass Ederiz??
Basic Anti-Debugging Bypass
Tersine Mühendislik denilen olay
bu kadar mı??
Tersine Mühendislik-102 Ajanda
• Basic Windows Internals
• PE Dosya Yapısı
• Stack’in içinde neler oluyor?
• Debugging’e giriş. CrackMe çözümü
• Anti-Debugging Örneği
• Windbg’a giriş
Fatih Erdoğan
twitter.com/FeCassie
Mavidurak-IO
http://mavidurak.github.io

Mais conteúdo relacionado

Mais procurados

Sizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugaySizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugayFuat Ulugay, CISSP
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriEPICROUTERS
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab KitabıBGA Cyber Security
 
BGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması ÇözümleriBGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması ÇözümleriBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15BGA Cyber Security
 
Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri
Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri
Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri BGA Cyber Security
 
WEB ve MOBİL SIZMA TESTLERİ
WEB ve MOBİL SIZMA TESTLERİ WEB ve MOBİL SIZMA TESTLERİ
WEB ve MOBİL SIZMA TESTLERİ BGA Cyber Security
 
Hacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu AnaliziHacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu AnaliziBGA Cyber Security
 
Siber Guvenlik ve Etik Hacking -1-
Siber Guvenlik ve Etik Hacking -1-Siber Guvenlik ve Etik Hacking -1-
Siber Guvenlik ve Etik Hacking -1-Murat KARA
 
A'dan Z'ye | Social Engineer Toolkit (SET)
A'dan Z'ye | Social Engineer Toolkit (SET)A'dan Z'ye | Social Engineer Toolkit (SET)
A'dan Z'ye | Social Engineer Toolkit (SET)TurkHackTeam EDU
 
Penetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların KullanımıPenetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların KullanımıBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12BGA Cyber Security
 
Zararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA KullanımıZararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA KullanımıBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3BGA Cyber Security
 
Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)BGA Cyber Security
 

Mais procurados (20)

Sizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugaySizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat Ulugay
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleri
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabı
 
BGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması ÇözümleriBGA CTF Ethical Hacking Yarışması Çözümleri
BGA CTF Ethical Hacking Yarışması Çözümleri
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
 
Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri
Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri
Yerel Ağda Gerçekleştirilebilecek Sadırılar ve Türleri
 
WEB ve MOBİL SIZMA TESTLERİ
WEB ve MOBİL SIZMA TESTLERİ WEB ve MOBİL SIZMA TESTLERİ
WEB ve MOBİL SIZMA TESTLERİ
 
BTRisk - Siber Olay Tespit ve Mudahale Egitimi
BTRisk - Siber Olay Tespit ve Mudahale EgitimiBTRisk - Siber Olay Tespit ve Mudahale Egitimi
BTRisk - Siber Olay Tespit ve Mudahale Egitimi
 
Hacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu AnaliziHacklenmiş Web Sunucu Analizi
Hacklenmiş Web Sunucu Analizi
 
Siber Guvenlik ve Etik Hacking -1-
Siber Guvenlik ve Etik Hacking -1-Siber Guvenlik ve Etik Hacking -1-
Siber Guvenlik ve Etik Hacking -1-
 
A'dan Z'ye | Social Engineer Toolkit (SET)
A'dan Z'ye | Social Engineer Toolkit (SET)A'dan Z'ye | Social Engineer Toolkit (SET)
A'dan Z'ye | Social Engineer Toolkit (SET)
 
Penetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların KullanımıPenetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
Penetrasyon Testlerinde Açık Kod Yazılımların Kullanımı
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
 
LLMNR ve NetBIOS Poisoning
LLMNR ve NetBIOS PoisoningLLMNR ve NetBIOS Poisoning
LLMNR ve NetBIOS Poisoning
 
Zararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA KullanımıZararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
 
Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)
 
Open Source SOC Kurulumu
Open Source SOC KurulumuOpen Source SOC Kurulumu
Open Source SOC Kurulumu
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
 

Semelhante a Tersine Mühendislik 101

C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özelliklerErkan BALABAN
 
Php projelerinde ci_uygulama
Php projelerinde ci_uygulamaPhp projelerinde ci_uygulama
Php projelerinde ci_uygulamaUmut IŞIK
 
Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1Mehmet Ince
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma sonBGA Cyber Security
 
Sandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve ÖnerilerSandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve ÖnerilerBGA Cyber Security
 
FPGA ve VHDL Ders - 3
FPGA ve VHDL Ders - 3FPGA ve VHDL Ders - 3
FPGA ve VHDL Ders - 3SerkanDereli2
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden GateAnar Godjaev
 
Metasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik DenetimiMetasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik DenetimiFatih Ozavci
 
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriBaşarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriLemi Orhan Ergin
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeEmre Dündar
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleriErtugrul Akbas
 
Devfest Istanbul 2015 Sunumu
Devfest Istanbul 2015 SunumuDevfest Istanbul 2015 Sunumu
Devfest Istanbul 2015 SunumuAybüke Özdemir
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerErcan Pinar
 
JVM Tuning and Monitoring, JVM Languages, IDE
JVM Tuning and Monitoring, JVM Languages, IDEJVM Tuning and Monitoring, JVM Languages, IDE
JVM Tuning and Monitoring, JVM Languages, IDEHalil İbrahim ÇELENLİ
 
Metasploit framework ile exploit gelistirme 2013 1.5
Metasploit framework ile exploit gelistirme   2013 1.5Metasploit framework ile exploit gelistirme   2013 1.5
Metasploit framework ile exploit gelistirme 2013 1.5Canberk Bolat
 

Semelhante a Tersine Mühendislik 101 (20)

Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
 
Bilgi sis..
Bilgi sis..Bilgi sis..
Bilgi sis..
 
C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özellikler
 
Ossec - Host Based Saldırı Tespit Sistemi
Ossec - Host Based Saldırı Tespit SistemiOssec - Host Based Saldırı Tespit Sistemi
Ossec - Host Based Saldırı Tespit Sistemi
 
Php projelerinde ci_uygulama
Php projelerinde ci_uygulamaPhp projelerinde ci_uygulama
Php projelerinde ci_uygulama
 
Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
 
Selenium
SeleniumSelenium
Selenium
 
Sandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve ÖnerilerSandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve Öneriler
 
FPGA ve VHDL Ders - 3
FPGA ve VHDL Ders - 3FPGA ve VHDL Ders - 3
FPGA ve VHDL Ders - 3
 
Jenkins
JenkinsJenkins
Jenkins
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 
Metasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik DenetimiMetasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik Denetimi
 
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriBaşarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQube
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleri
 
Devfest Istanbul 2015 Sunumu
Devfest Istanbul 2015 SunumuDevfest Istanbul 2015 Sunumu
Devfest Istanbul 2015 Sunumu
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
 
JVM Tuning and Monitoring, JVM Languages, IDE
JVM Tuning and Monitoring, JVM Languages, IDEJVM Tuning and Monitoring, JVM Languages, IDE
JVM Tuning and Monitoring, JVM Languages, IDE
 
Metasploit framework ile exploit gelistirme 2013 1.5
Metasploit framework ile exploit gelistirme   2013 1.5Metasploit framework ile exploit gelistirme   2013 1.5
Metasploit framework ile exploit gelistirme 2013 1.5
 

Tersine Mühendislik 101

  • 1. Reverse Engineering 101 Tersine Mühendislik 101 Tech Talks #02 Mavidurak-IO Fatih Erdoğan
  • 2. root@mavidurak-io:~$ whoami • Intern Security Researcher at SignalSEC • Reverse Engineering, Exploit Development, low-level stuff • Penetration Testing • Sakarya University - Computer Engineering (2014 - …) • http://ferdogan.net • twitter.com/FeCassie • fatiherdogan94@gmail.com • Member at Mavidurak-IO
  • 4. Tersine Mühendislik Nedir? • Tersine mühendislik basitçe derlenmiş bir binary veya bir exe uzantılı, yani çalıştırılabilir bir dosyanın nasıl çalıştığını anlamaya yönelik uygulanan sürece denir. Yapmaya çalıştığımız şey programın nasıl çalıştığını anlamak, çalışma yapısını çözmeye çalışmaktır. • Genellikle C, C++, Visual Basic, Delphi gibi diller ile yazılan programların analizi insan için kolay olur fakat bu diller bilgisayar için anlaşılır değildir bu nedenle bir takım işlemler sonucunda bu dillerde yazılan kodlar makinenin anlayabileceği makine diline çevirilir. Çevrildikten sonraki kodlar insanlar tarafindan zor anlaşılır ve analiz edilebilmesi için hem zaman hem de bolca beyin gücü gerektirir.
  • 5. Tersine Mühendislik ile Neler Yapabiliriz? Neden İhtiyacımız Var? • Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya çıkarma • Virüs ve zararlı yazılımları inceleme olanağı • Programların lisans korumasını atlatma (Cracking) - en yaygın olan :) • Yazılımların sağlamlığını kontrol etme • Yazılımlara ek özellikler getirme (Patching vs.)
  • 6. ReactOS Projesi • “Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya çıkarma” maddesine örnek olarak verilebilecek bir proje • Bu proje bir grup tersine mühendis tarafından, Windows işletim sisteminin kaynak kodlarının incelenip Windows’a benzer ücretsiz bir işletim sistemi geliştirme amaçlı uygulanan bir projedir.
  • 9. Ters Mühendis Hangi Özelliklere Sahip Olmalı? • Sınırsız merak ve araştırma isteği • Hayal gücü, yorulmayan gözler :) • Assembly, C ve Python gibi en az bir scripting dili bilmek • İşletim sistemleri yapısı, CPU mimarisi, Bilgisayar çalışma mantığı • Kriptografi • Anti-Debugging, Anti-Reversing teknikleri • ….
  • 10. Analiz/Reversing Çeşitleri • Statik Analiz/Reversing • Dinamik Analiz/Reversing
  • 11. Statik Analiz/Reversing • Statik program analizi execute etmeden yani programı çalıştırmadan yapılan yazılım analiz şeklidir.
  • 12. Dinamik Analiz/Reversing • Dinamik program analizi ise o an sanal veya gerçek bir process üzerinde execute olan programa yapılan analizdir.
  • 13. x86 Mimarisi & Assembly
  • 14. Temel Aritmetik mov eax, 5 ; eax=5 mov ebx, 3 ; ebx=3 add eax, ebx ; eax = eax + ebx sub ebx, 2 ; ebx = ebx -2
  • 15. Hafıza Erişimi cmp eax, 2 ; compare eax with 2 je label ; if(eax == 2) ja label ; if(eax > 2) jb label ; if(eax < 2) jbe label ; if(eax <= 2) jne label ; if(eax != 2) jmp label ; jump label
  • 16. Fonksiyon Çağrıları call function ; store return addr on the stack ; and jump to function! func: push esi ; save esi … pop esi ; restore esi ret ; read return addr from the stack ; and jump to it.
  • 17. Registerlar - 1 • Registerlar ne yapar? • Lokasyon/konum depolar • Hafıza konumuna göre daha hızlı erişim olanağı sağlar • EAX => Değişken değerleri depolar • EBX => Base index (diziler ile kullanılır) • ECX => Sayaç register • EDX => Data • ESI => String işlemleri için kaynak indexi
  • 18. Registerlar - 2 • EDI => String işlemleri için hedef indexi • ESP => Stack Pointer (Stack’in en üst adresi) • EBP => Base Pointer (Stack’in en alt adresi) • EIP => Instruction Pointer (Programın o an bulunduğu yer.Bir sonraki instruction’ın adresini depolar.)
  • 19. Registerlar - 3 • Segment Registerları Hafızanın belli segmentlerini adreslemek için kullanılır (code/data/stack segmentleri) • CS => Code Segment • SS => Stack Segment • ES => Extra Segment • DS => Data Segment • FS,GS Segments
  • 21. Ne tür araçlar kullanacağız?
  • 22. Tersine Mühendisin Alet Çantası • Tersine mühendislik yaparken kullandığımız bir takım araçlar var. Bunlar: • Disassemblerlar • Debuggerlar • PE Editörleri • Hex-Resource Editörler • Sistem İzleme Araçları
  • 23. Disassembler • Bu yazılımlar, programı disassembly işleminden geçirerek programın assembly kodu şeklindeki halini gösterir. • Bu olay bize programda çağırılan fonksiyonları, string değerleri vs. görüp incelememize olanak sağlar. • En yaygın olarak kullanılarak disassembler => IDA
  • 26. Debugger • Debuggerlar ile programın çalışmasını satır satır izleyebiliriz. • Disassembler gibi çalışırlar fakat ek olarak işlemleri izleme imkanımız olur. • Çoğu zaman cracking, malware analizi, exploit geliştirme aşamalarında kullanılırlar. • Bir debugger ile programın çalışması esnasında değişiklik yapılabilir. • En yaygın olarak kullanılan debuggerlar: • ImmunityDebugger • OllyDbg • WinDbg
  • 32. Örnek WinDbg Komutları •r: registerların o anki durumunu/içeriğini gösterir •t: trace-step (until call) •pt: single-step (until-ret) •g: process run (go!) •.hh: yardım komutu (örnek => .hh pt) •lm: list modules
  • 33. PE Editörleri • PE => Portable Executable • Nedir? => Windows çalıştırılabilir dosya formatı • Bu programlar PE dosyalarının PE bilgilerini okumak için kullanılır • Tersine Mühendisliğin en önemli konularından birisidir ==> “PE candır gerisi heyecandır” • PE dosyaları program ile ilgili kritik bilgileri barındırdığından tersine mühendislik veya malware analizi yaparken PE ile baya içli dışlı olacağız :)
  • 34. PE Editörleri - 2 • Yaygın olarak kullanılan PE Editörleri • CFF Explorer • LordPE • DIE => Detect It Easy • PeiD
  • 37. DIE (Detect It Easy)
  • 38. PeiD
  • 39. Hex - Resource Editörler • Diğerlerine göre çok yaygın değiller • Basit string düzenlemeleri • Bayt değiştirmeleri • Hızlı kod analizi • …
  • 40. Hex - Resource Editörler • Birçok hex-resource editör mevcut • HxD • Hex Workshop • ResEdit
  • 41. HxD
  • 44. Sistem İzleme Araçları • Microsoft SysInternal Tools • Process Explorer • Process Monitor • AutoRuns • TCPView
  • 54. Tersine Mühendislik denilen olay bu kadar mı??
  • 55. Tersine Mühendislik-102 Ajanda • Basic Windows Internals • PE Dosya Yapısı • Stack’in içinde neler oluyor? • Debugging’e giriş. CrackMe çözümü • Anti-Debugging Örneği • Windbg’a giriş