Windows PE Dosya Yapısı ve Loader Analizi
Portable Executable (PE), Windows işletim sisteminde kullanılan çalıştırılabilir dosya formatıdır. Zararlı yazılım analizi sırasında PE yapısının anlaşılması kritik öneme sahiptir. DOS Header, PE Header, Optional Header ve Section yapıları malware reverse engineering sürecinin temelini oluşturur. import pefile print('Entry Point:', hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint)) print('Image Base:', hex(pe.OPTIONAL_HEADER.ImageBase))
Giris ve Temel Akis
Portable Executable (PE), Windows işletim sisteminde kullanılan çalıştırılabilir dosya formatıdır. Zararlı yazılım analizi sırasında PE yapısının anlaşılması kritik öneme sahiptir. DOS Header, PE Header, Optional Header ve Section yapıları malware reverse engineering sürecinin temelini oluşturur. import pefile print('Entry Point:', hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint)) print('Image Base:', hex(pe.OPTIONAL_HEADER.ImageBase))
Bu bölümün pratik akışı şu sırayla ilerler:
- pe = pefile.PE('sample.exe')
- pe.OPTIONAL_HEADER.AddressOfEntryPoint
- pe.OPTIONAL_HEADER.ImageBase
- for section in pe.sections
- section.Name.decode().rstrip('\x00')
- print(section.Name.decode().rstrip('\x00'))
Temel Kavram Eslesmeleri
PE dosyaları farklı bileşenlerden oluşur. Reverse engineering sırasında bu bileşenlerin görevleri iyi bilinmelidir.
- DOS Header: Dosyanın PE olduğunu belirten ilk yapı
- PE Header: Dosya mimarisi ve genel bilgiler
- Optional Header: Entry Point ve ImageBase bilgileri
- Section Table: Kod ve veri bölümlerinin tanımları
Ilk Cekirdek Kavram
Bu bölümde öne çıkan çekirdek kavram AddressOfEntryPoint olarak verilir. Bir PE dosyası çalıştırıldığında ilk yürütülecek kodun adresi kritik öneme sahiptir.
Arac, Komut veya Inceleme Akisi
Windows Loader, PE dosyasını belleğe yüklerken belirli aşamaları gerçekleştirir. Malware analizinde bu yükleme sürecinin bilinmesi gerekir.
Bu bölümün pratik akışı şu sırayla ilerler:
- PE dosyasını okuma
- Memory alanı ayırma
- Section yükleme
- Import çözümleme
- Relocation işlemleri
- Entry Point çalıştırma
Kanit ve Bilesen Iliskileri
PE dosyalarında farklı section'lar farklı amaçlara hizmet eder.
- .text: Çalıştırılabilir makine kodu
- .data: Başlatılmış veriler
- .rdata: Salt okunur veriler
- .rsrc: İkon ve kaynak dosyaları
Ikincil Odak Noktasi
Bu bölümde öne çıkan çekirdek kavram .text olarak verilir. Zararlı yazılımlar sıklıkla çalıştırılabilir kodlarını belirli bir section içerisine yerleştirir.
Operasyonel Dogrulama ve Raporlama
PE dosyasındaki import edilen API'lerin incelenmesi malware davranışlarını anlamada önemli rol oynar. for entry in pe.DIRECTORY_ENTRY_IMPORT: print(entry.dll.decode()) for imp in entry.imports:
Bu bölümün pratik akışı şu sırayla ilerler:
- pe.DIRECTORY_ENTRY_IMPORT
- entry.dll.decode()
- entry.imports
- imp.address
- imp.name
- print(hex(imp.address), imp.name)
Cikti ve Kullanım Amaci
Bazı Windows API'leri malware analizi sırasında özellikle dikkat çeker.
- CreateProcess: Yeni süreç oluşturma
- VirtualAlloc: Bellek ayırma
- WriteProcessMemory: Başka sürece veri yazma
- LoadLibrary: DLL yükleme
Son Kavram ve Cikis
Bu bölümde öne çıkan çekirdek kavram EntryPoint olarak verilir. Windows Loader çalıştırma aşamasında program kontrolünü belirli bir adrese devreder.
Bu Egitimden Ne Kazanirsiniz?
Bu icerik, Windows PE Dosya Yapısı ve Loader Analizi konusunu SOC L3 - Tersine Mühendislik - Anti-Debug ve Kernel Analizi baglaminda parcali degil, butunlu bir ogrenme akisina donusturur. Yalnizca kavramlari ezberlemek yerine surec sirasini, bilesenler arasi iliskiyi ve hangi kanitin neden onemli oldugunu kavramayi hedefler.
Ozet
Bu ders kapsaminda one cikan basliklar: DOS Header, PE Header, Optional Header, Section Table, .text, .data, .rdata, .rsrc, CreateProcess, VirtualAlloc. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.