Süreç enjeksiyonu ve kod yükleme
- Süreç enjeksiyonu, kodu başka bir sürecin belleğinde çalıştırmaktır.
- Amaç güvenilen bir adın arkasına saklanmak ve savunmadan kaçınmaktır.
- Bu derste dört klasik tekniği adlarıyla ve izleriyle tanırsın.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +55 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Zararlı kod kendi adıyla çalışmak istemez. Süreç listesinde tuhaf bir ad dikkat çeker. Çözüm, kodu güvenilen bir sürecin içine taşımaktır. Böylece işlem explorer ya da tarayıcı adıyla görünür.
En klasik yöntem uzak iş parçacığıdır. Hedef sürecin tutamacı açılır, o süreçte bellek ayrılır, yük oraya yazılır ve yeni bir iş parçacığı başlatılır. Dört adım, dört tanıdık çağrı.
h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, hedefPid); adr = VirtualAllocEx(h, NULL, boy, MEM_COMMIT, PAGE_EXECUTE_READWRITE); WriteProcessMemory(h, adr, yuk, boy, NULL); CreateRemoteThread(h, NULL, 0, adr, NULL, 0, NULL);
Bu dört çağrı bir arada göründüğünde teknik kendini ele verir. OpenProcess hedefi seçer, VirtualAllocEx orada yer açar, WriteProcessMemory yükü oraya taşır, CreateRemoteThread ise yükü çalıştırır.
Sıra bozulmaz çünkü her adım bir öncekinin ürettiği tutamaca ihtiyaç duyar. Bu çağrıların hepsi işletim sisteminin sunduğu meşru arayüzlerdir; sistem sürece dışarıdan erişim ve bellek yazma imkânını zaten tanır. Zararlı kod bu imkânı gizlenmek için kullanır, araç kötü değildir, kullanım amacı kötüdür.
Etkinlik 1 / 6
Klasik uzak iş parçacığı enjeksiyonunun adımlarını sıraya koy.
Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.
- 1Yeni iş parçacığı başlat (CreateRemoteThread)
- 2Belleği yürütülebilir yap
- 3Yükü o belleğe yaz (WriteProcessMemory)
- 4Hedef sürecin tutamacını aç (OpenProcess)
- 5Hedefte bellek ayır (VirtualAllocEx)
İkinci teknik süreç boşaltmadır. Meşru bir program askıya alınmış durumda başlatılır. Bellekteki görüntüsü boşaltılır ve yerine zararlı görüntü yazılır. Sonra akış yeni giriş noktasına yönlendirilir ve süreç sürdürülür.
Bu tekniğin izi nettir. Süreç meşru bir adla ve meşru bir yolla durur. Ama bellekteki görüntü diskteki dosyayla uyuşmaz. Bellek ile diski karşılaştıran her araç bu farkı yakalar.
Etkinlik 2 / 6
Enjeksiyon tekniğini ayırt edici özelliğiyle eşleştir.
Üçüncü teknik eşzamansız yordam çağrısı kuyruğudur. Kod hedef iş parçacığının kuyruğuna bırakılır. İş parçacığı uygun duruma geldiğinde kuyruğu boşaltır ve kodu çalıştırır. Yeni iş parçacığı açılmadığı için daha sessizdir.
Dördüncü teknik yansımalı kütüphane yüklemedir. Kütüphane diske hiç yazılmaz. Yükleme işini işletim sistemi değil, kodun kendisi yapar. Diskte dosya arayan denetimler bu yüzden boşa çıkar.
Etkinlik 3 / 6
Her belirtiyi işaret ettiği MITRE ATT&CK taktiğine göre ayır.
Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.
0/5 seçenek yerleşti.
Enjeksiyonu bellek dökümünden yakalamak da mümkündür. Volatility gibi araçlar, dosyaya bağlı olmayan yürütülebilir bellek bölgelerini listeler. Bölgenin başında MZ imzası görmek, belleğe tam bir PE yerleştirildiğini söyler.
Hedef süreç seçimi de anlam taşır. Tarayıcı seçilirse amaç çoğu zaman ağ trafiğine karışmaktır. Dosya yöneticisi seçilirse amaç uzun süre ayakta kalmaktır. Seçim, saldırganın bir sonraki adımını ele verir.
Savunma tarafında iz bırakan noktalar bellidir. Uzak süreçte bellek ayırma, o belleğe yazma ve uzaktan iş parçacığı başlatma çağrıları kaydedilebilir. Uç nokta ürünleri tam da bu üçlüyü izler.
Kabuk kodu ile tam dosya arasındaki fark da önemlidir. Küçük ve konumdan bağımsız bir parça yerleştirilmişse, asıl yük sonradan indirilir. Tam bir dosya yerleştirilmişse her şey zaten oradadır.
Enjeksiyondan sonraki ilk iş çoğu zaman aynıdır. Kod kendi konumunu bulur, gereken çağrıların adreslerini çözer ve asıl gövdeye geçer. Bu açılış deseni ailelerde tekrarlanır ve kural yazmaya elverişlidir.
Enjeksiyonu anlamak savunma kurmayı da öğretir. Hangi süreçlerin hangi süreçlere dokunabileceği kısıtlanabilir. Beklenmedik bir üst süreç ilişkisi alarm üretebilir. Teknikleri adlarıyla bilmek, kuralı doğru yere koymayı verir.
Etkinlik 4 / 6
Bellek dökümünde enjekte edilmiş kod bölgelerini Volatility ile ara.
Bu tekniklerin hepsi meşru yazılımda da görülür. Hata ayıklayıcılar, hile karşıtı çözümler ve bazı güvenlik ürünleri aynı çağrıları kullanır. Teknik adı tek başına hüküm değildir.
Karar bağlamla verilir. Kodun nereden geldiği, hedef sürecin neden seçildiği ve enjeksiyondan sonra ne yapıldığı bir arada değerlendirilir. Ardından ağ bağlantısı geliyorsa resim tamamlanır.
Etkinlik 5 / 6
Süreç boşaltmada (process hollowing) analisti uyaran en net işaret nedir?
Bu ayrımı bilmek olay müdahalesinde zaman kazandırır. Şüpheli süreçte RWX bellek bölgesi görülünce önce teknik adı, sonra hedef seçimi sorgulanır.
Etkinlik 6 / 6
Doğru mu, yanlış mı?
Hata ayıklayıcılar, hile karşıtı çözümler ve bazı güvenlik ürünleri de süreç enjeksiyonunda kullanılan çağrılara başvurur.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.