Tersine Mühendisliğe Nereden Başlasam?
Bana sürekli “nereden başlasam” diye soruyorlar. Ben de dedim oturayım, tüm süreci yazayım. Sıfırdan kendi exploit’ini yazana kadar gidecek bir yol haritası.
Hemen söyleyeyim: bu iş hafta sonunda bitmez. Düzenli uğraşırsan 12-18 ay sürer. Ama takip edersen “register ne ya” noktasından “şu CFG’yi geçeyim de” noktasına gelirsin.
Genel akış böyle görünüyor.
İçindekiler
- İçindekiler
- Faz 1: Temeller (2-3 ay)
- Faz 2: Assembly ve Mimari (2-3 ay)
- Faz 3: Temel RE Becerileri (3-4 ay)
- Faz 4: Malware Analizi (2-3 ay)
- Faz 5: Exploitation Temelleri (3-4 ay)
- Faz 6: İleri Konular (Sürekli)
- Kitap Listesi
- Sertifikasyonlar
- Ücretsiz Eğitimler
- Son Söz
Faz 1: Temeller (2-3 ay)
Araçlara geçmeden önce C ve bellek yönetimini anlamak lazım. Bunu atlarsan sonra çok zorlanırsın.
Bilmen gerekenler:
- Pointer ve pointer aritmetiği (bu olmazsa olmaz, ciddiyim)
- Stack ile heap farkı
- Process, thread nedir
Ben bunları nereden öğrendim:
- K&R kitabı hala en iyisi
- CS50 kursu (ücretsiz, Harvard’ınki)
- En önemlisi: küçük programlar yaz, bilerek boz, debug et
Hedefin şu: *(ptr + offset) görünce kafanda canlanması lazım.
Faz 2: Assembly ve Mimari (2-3 ay)
Burası işin kalbi. Assembly okumayı öğrenmeden ileri gidemezsin. Yazmak şart değil ama okumak şart.
x86-64 için:
- RAX, RBX, RCX, RDX, RSI, RDI, RSP, RBP, R8-R15 register’ları
- Linux’ta ilk 6 argüman RDI, RSI, RDX, RCX, R8, R9’da geçiyor
- Windows farklı: RCX, RDX, R8, R9 + shadow space var
- Prologue/epilogue kalıplarını tanımak lazım
ARM da bilmek iyi olur:
- Mobil ve embedded’da çok var
- Farklı encoding, farklı calling convention
Ne izledim:
- OpenSecurityTraining2 Arch1001 (bu çok iyi, cidden)
- Dennis Yurichev’in kitabı (ücretsiz)
Hedef: Ghidra’da fonksiyona bakınca ne yaptığını anlayabilmek.
Faz 3: Temel RE Becerileri (3-4 ay)
Artık araçlara geçiyoruz.
Araçlar:
- Ghidra (ücretsiz, bununla başla)
- IDA Pro (pahalı ama endüstri standardı)
- Binary Ninja (ortası, modern)
- x64dbg (Windows debugging için)
- GDB + pwndbg (Linux için)
Ben Ghidra ile başladım, decompiler’ı çok iyi. Para vermeden çok iş yaparsın.
Pratik için:
- crackmes.one (klasik RE challenge’ları)
- reversing.kr (zor ama öğretici)
- picoCTF (kademeli, iyi başlangıç)
Hedef: Basit CTF sorularını ipucu olmadan çözebilmek.
Faz 4: Malware Analizi (2-3 ay)
Burası eğlenceli. Gerçek malware bakıyorsun artık.
Genel akış:
1. İlk bakış
- Hash al, VirusTotal'a bak
- Packed mı değil mi (entropy > 7 = packed)
2. Statik analiz
- String'lere bak
- Import'lara bak
- Ghidra'da aç
3. Dinamik analiz
- Sandbox'ta çalıştır
- API'ları izle
- Network trafiğine bak
4. Derin analiz
- Manuel unpacking
- Anti-debug bypass
Lab için:
- FLARE VM (Windows)
- REMnux (Linux)
- INetSim (fake internet)
Örnek bulmak için:
- MalwareBazaar
- theZoo (şifre: “infected”)
- vx-underground
Dikkatli ol, gerçek malware bunlar.
En iyi kaynak: Practical Malware Analysis kitabı. Bu alanın incili.
Hedef: Packed sample alıp, unpack edip, ne yaptığını anlayabilmek.
Faz 5: Exploitation Temelleri (3-4 ay)
Asıl mesele burası. Artık bir şeyleri kırıyoruz.
Bilmen gerekenler:
Stack overflow: Klasik return address overwrite. Canary, ASLR, DEP zorlaştırıyor ama temeli bilmek lazım.
ROP: DEP’i bypass etmek için. Mevcut gadget’ları zincirleyip kod çalıştırıyorsun. ROPgadget ve pwntools kullan.
Heap exploitation: UAF, double-free falan. Browser exploit’lerde çok var. glibc allocator’ı anlamak lazım (fastbin, tcache vs).
Bypass teknikleri:
- ASLR: leak bul, partial overwrite yap
- Canary: format string ile leak et
- DEP: ROP kullan
- CFG: meşru gadget’lar bul
Pratik sırası:
- ROP Emporium (saf ROP pratiği)
- pwnable.kr (Toddler’s Bottle ile başla)
- Narnia (OverTheWire)
- Phoenix/Protostar
Hedef: Basit ROP chain yazıp shell almak.
Faz 6: İleri Konular (Sürekli)
Buradan sonrası uzmanlık alanına göre değişiyor.
Windows Internals: Kernel RE için şart. EPROCESS, PEB, TEB yapılarını anlamak lazım.
Firmware: Router, IoT cihazları. binwalk ile extract, FirmAE ile emulate.
Symbolic execution: angr, z3. Otomatik analiz için. Path explosion büyük problem.
Fuzzing: AFL++, syzkaller. Bug bulmak için en etkili yöntem.
Kitap Listesi
Başlarken:
- Reverse Engineering for Beginners (Yurichev, ücretsiz)
- Hacking: The Art of Exploitation (Erickson)
Orta seviye:
- Practical Malware Analysis (bu şart)
- The Ghidra Book
- Practical Reverse Engineering
İleri:
- Windows Internals (Russinovich)
- Rootkits and Bootkits
- The Shellcoder’s Handbook
Sertifikasyonlar
Kağıt lazımsa:
- GREM: Malware analizi için
- OSED: Exploit geliştirme için (48 saat pratik sınav, zor)
- OSCE3: OSWE + OSEP + OSED (tam paket)
Sıralama: OSCP → GREM → OSED → OSCE3
Ücretsiz Eğitimler
OpenSecurityTraining2 (p.ost2.fyi):
- Arch1001 (Assembly)
- Dbg1102 (Ghidra)
- Vulns1001/1002 (Zafiyet)
YouTube:
- LiveOverflow
- OALabs
- John Hammond
- stacksmashing
Son Söz
Bu iş maraton, sprint değil. Haftada bir oturup binge yapanlar değil, her gün biraz uğraşanlar ilerliyor.
Faz 1’den başla. “Ben C biliyorum” deme. Use-after-free debug etmeden gerçekten bilmiyorsun, bana güven.
Lab kur, bir şeyleri kır, writeup oku, challenge çöz. Takılınca mola ver, geri dön.
Alan sürekli değişiyor. Yeni korumalar, yeni teknikler. İşin güzel tarafı da bu.
Görüşürüz.
Yorumlar