Process Injection Nedir ve Yöntemleri Nasıl Çalışır?

Process Injection nedir?
Process Injection (İşlem enjeksiyonu) , sistemde çalışan işlemlere zorla payloadlar (zararlı kodlar) enjekte edilmesi ve bu kodların çalıştırılmasına verilen isimdir. Saldırgan işletim sistemi üzerinde hali hazırda çalışmakta olan bir işleme, kendi payload (zararlı kod)’unu enjekte ederek sisteme saldırmayı hedefler.
Process Injection saldırısının birden fazla tekniği bulunur ve şu şekilde basitçe listelenebilirler;

1. CLASSIC DLL INJECTION VIA CREATEREMOTETHREAD AND LOADLIBRARY
(CreateRemoteThread ve LoadLibrary ile Klasik DLL Enjeksiyonu)
2. PORTABLE EXECUTABLE INJECTION
(PE INJECTION)
3. PROCESS HOLLOWING (A.K.A PROCESS REPLACEMENT AND RUNPE)
(İşlem Kabartma)
4. THREAD EXECUTION HIJACKING
(A.K.A SUSPEND, INJECT, AND RESUME (SIR))
5. HOOK INJECTION VIA SETWINDOWSHOOKEX

(Yukarıda tekniklere ek olarak 5 ayrı teknik ve detaylı bilgi için [1] numaralı referansı inceleyebilirsiniz, ilk 3 tekniğin Türkçe açıklaması için ise [2] numaralı referansa göz atabilirsiniz.)

Windows Yapısı
Process Injection saldırılarını daha iyi anlayabilmemiz için, Windows işletim sistemlerinin mimari yapısı ve nasıl çalıştıkları ile ilgili temel bilgi haznesine sahip olmamız tarafımca şiddetle tavsiye edilmektedir.
Windows işletim sistemi çalıştıran bir işlemci iki farklı moda sahiptir; User Mode (Kullanıcı Modu) ve Kernel Mode (Kernel Modu). Uygulamalar ve programlar kullanıcı modunda çalışırken, sistem bileşenleri Kernel modunda çalışır. Örnek olarak; eğer bir uygulama bir verilen görevi yerine getirmek istiyor ise bunu kendi başına tamamlayamaz, çünkü bir görevi tamamlayabilecek yetkiye sahip tek şey Kernel’dir.

DLL (Dynamic Link Library) dosyaları içerisinde bir çok farklı kod satırı bulunduran ve yazılımların işlevlerini tam olarak yerine getirmesini sağlayan dosyalardır. DLL dosyalarını Process Injection saldırıları için bu kadar önemli olan detay ise birden fazla farklı programın tek bir dosyayı kullanabiliyor olmasıdır. [3][4]

Executive Kernel – Windows Kernel olarak adlandırdığımız, Kernel modu içerisinde erişime müsait olan diğer sürücü ve modülleri “çağıran” yapıdır.
NT Layer DLL (ntdll.dll) – Sistem genelinde çalışan bir DLL dosyasıdır, Kullanıcı modundaki en düşük katmana erişebilir. Kullanıcı modu ve Kernel modu arasında geçiş sağlayan özel bir DLL dosyasıdır.
Altsistem DLL’leri – Kullanıcı işlemlerinin çağırdığı API fonksiyonlarını içeren DLL dosyalarıdır. Not Defteri’nin kernel32.dll isimli DLL dosyasındaki CreateFile fonksiyonunu “çağırması” buna örnek olarak gösterilebilir.
Kullanıcı İşlemleri – Kullanıcı tarafından çalıştırılmış olan uygulama veya program. Örneğin; Microsoft Word, Google Chrome, Not Defteri vs.

“Fonksiyon Çağırma” Nasıl İşler?
Yukarıda hazırlamış olduğum grafikte ve yazıda verilen örneği baz alarak, kullanıcı tarafından çalıştırılan herhangi bir uygulama veya program (bu örnekte Not Defteri), Kernell32.dll içerisinde bulunan CreateFile isimli bir Windows API fonksiyonu çağırıyor. Kernel32.dll uygulamaları ve programları Windows API’ı ile “tanıştırmaya” yarayan hassas bir DLL dosyası olması dolayısı ile bir çok uygulama tarafından yüklenir.
Daha sonra, kernel32.dll CreateFile fonksiyonuna Native API değerinde eşit olan, NTCreateFile fonksiyonunu çağırır. NTCreateFile fonksiyonu ise ntdll.dll tarafından çağırılır.
Ntdll.dll, 32bit sistemlerde “sysenter” 64bit veya sistemlerde ise “syscall” bir birleştirme yapar ve bu işlem çalıştırmanın Kernel moduna geçmesini sağlar.
Son olarak ise, Kernel’a ulaşmış olan NtCreateFile fonksiyonu gerekli görevi tamamlamak için ihtiyaç duyulan modüller ve sürücüleri çağırır.

Process Injection Saldırısı Nasıl Çalışır?
Process Injection (İşlem Enjeksiyonu), gizlilik ve güvenlik atlatmak amaçları için kullanılan, bir uygulama içerisinde başka bir kod çalıştırma işlemine verilen isimdir. Saldırganların bir cihaz üzerine saldırılarını düzenlerken, bilinmeyen bir program çalıştırarak saldırıyı uygulamaları bütün gözleri üzerlerine çekebilir, saldırının önlenmesine ve yakalanmalarına sebep olabilir. Öte yandan, zararlı kodu onaylanmış bir uygulamanın içine enjekte edip çalıştırmak kişiler ve anti virüs yazılımı gibi güvenlik ürünleri tarafından fark edilmesini önleyecektir. Yukarıda bahsetmiş olduğum üzere Process Injection saldırısının birden fazla tekniği mevcut olmakta. Aşağıda, klasik Process Injection saldırısının bir şemasını inceleyebilirsiniz.

Sorularınızı aşağıda bulunan yorum alanına yazabilir, aynı zamanda iletişim ve sorularınız için halilbilgeyunak@gmail.com adresini kullanabilirsiniz.

Referanslar
[1] https://www.elastic.co/blog/ten-process-injection-techniques-technical-survey-common-and-trending-process
[2] https://sibersaldirilar.com/genel-siber-guvenlik/process-injection/
[3] https://www.dlldosyaindir.com/dll-nedir/
[4] https://wmaraci.com/nedir/dll
[5] https://www.geeksforgeeks.org/thread-in-operating-system/
[6] https://www.studytonight.com/operating-system/multithreading
[7] https://pentestlab.blog/2017/04/04/dll-injection/
[8] http://securityxploded.com/remote-dll-injector.php

 

About The Author

Reply