Duyuru

Yapay Zeka Modellerine Yönelik Prompt Injection Saldırıları Makalemiz Yayınlandı!

Blogu Görüntüle Blogu Görüntüle
PRIVIA

Siber Guvenlik Terimleri Sozlugu

DLL Injection Nedir? Nasıl Gerçekleşir?

DLL (dinamik bağlantı kitaplığı), bir program tarafından varolan fonksiyonları çağırmak için kullanılan Windows kütüphane dosyasıdır. DLL Injection ise, bir DLL dosyasını bir process’in adres alanı içerisinde çalıştırarak, o process’in çalışmasını manipüle etmek amacıyla kullanılan bir tekniktir. Böylece, hedef sistem üzerinde özel hazırlanmış bir DLL dosyası aracılığıyla, rastgele komut çalıştırılabilir. DLL Injection saldırılarının çoğu, tersine mühendislik […]

DLL Injection Nedir? Nasıl Gerçekleşir?
12 Temmuz 2020

DLL Injection Nedir? Nasıl Gerçekleşir?

DLL Injection Nedir? Nasıl Gerçekleşir?

DLL (dinamik bağlantı kitaplığı), bir program tarafından varolan fonksiyonları çağırmak için kullanılan Windows kütüphane dosyasıdır. DLL Injection ise, bir DLL dosyasını bir process’in adres alanı içerisinde çalıştırarak, o process’in çalışmasını manipüle etmek amacıyla kullanılan bir tekniktir.

Böylece, hedef sistem üzerinde özel hazırlanmış bir DLL dosyası aracılığıyla, rastgele komut çalıştırılabilir. DLL Injection saldırılarının çoğu, tersine mühendislik saldırıları için yapılır. Ayrıca, hedef sistem üzerinde hak ve yetki yükseltmek (privilege escalation) amacıyla da bu yönteme başvurulabilir.

DLL INJECTION İŞLEMİ NASIL GERÇEKLEŞİR?

Bir process’e DLL enjekte etme işlemi, aşağıdaki adımlardan oluşur:

DLL INJECTION — TEKNİK DETAYLAR

DLL Injection işlemi gerçekleştirmek amacıyla, ekibimizden Ramin Karimkhani tarafından geliştirilmiş olan DLLInjector adlı araca Github üzerinden ulaşabilirsiniz. DLL Injection işleminin teknik detayları aşağıda yer almaktadır (C# programlama dili ile geliştirilmiş olan bu araçta yer alan fonksiyonlar, Windows Kernel32 kütüphanesi kullanılarak çağrılmıştır):

DLL enjekte edilecek olan process’i ele almak için OpenProcess() fonksiyonu kullanılır. Bu fonksiyon ile bir DLL enjekte edilecek olan process belirlenir ve injection işleminin yapılabilmesi için, bu fonksiyon aracılığıyla process gerekli yetkilerle ele alınır. Resim 1’de process erişim bayrakları yer almaktadır. Bu bayraklar bir process’in hangi yetkilerle ele alınması gerektiğini belirler. Seçeceğimiz bir process’e DLL enjeksiyonu yapabilmek için OpenProcess fonksiyonu ile birlikte; CreateThread, QueryInformation, VMOperation, VMWrite ve VMRead bayrakları kullanılmalıdır. DLLInjector aracında OpenProcess fonksiyonu, bir process’i tüm yetkilerle ele alacak şekilde ayarlanmıştır.

Bir DLL dosyasını process belleğine yüklemek için LoadLibraryA fonksiyonu kullanılır. LoadLibraryA, kernel32.dll üzerinden çağrılabilir. Bunun için GetProcAddress() fonksiyonu kullanılır. Bu fonksiyon, belirtilen bir kütüphane üzerinden, bir fonksiyon veya bir değişkenin adresini almak amacıyla kullanılır.

Hedef process’in sanal belleğinden yer ayırmak için VirtualAllocEx() fonksiyonu kullanılır. Bu fonksiyonun parametreleri kullanılarak; hedef process, ayrılacak bellek alanının başlangıç adresi, bellek alanı uzunluğu, bellek ayırma türü ve ayrılacak sayfa için bellek izinleri belirtilir.

Ele alınan process’in ayrılan bellek alanına, enjekte edilecek olan DLL dosyasının yolunu yazmak için WriteProcessMemory() fonksiyonu kullanılır.

CreateRemoteThread fonksiyonu, bir process’in sanal bellek alanında thread oluşturur. Bu fonksiyon kullanılarak LoadLibraryA fonksiyonu, process’in ayrılan sanal bellek alanında bir thread olarak çalıştırılır. Böylece DLL Injection işlemi tamamlanır.

DLLInjector ARACI KULLANILARAK HEDEF SİSTEMDEN METERPRETER ALMA

Hedef sistemde çalışan herhangi bir process’e DLL enjekte edebilmek için, process’in ID değeri alındı.

Msfvenom ile oluşturulan meterpreter DLL dosyası hedef sisteme yüklendi. Ardından DLLInjector aracı, Process ID ve DLL dosyasının yolu belirtilerek çalıştırıldı.

DLL dosyası çalıştı ve hedef process üzerinden bir meterpreter oturumu elde edildi.

Resim 34 Meterpreter Processi

Bunlar İlginizi Çekebilir

Sysmon Nedir?

Siber Güvenlik Terimleri

10 Haziran 2021

Sysmon Nedir?

Devamını Oku
Mobil Cihazdan Fiziksel İmaj Alma Nedir?

Siber Güvenlik Terimleri

26 Aralık 2024

Mobil Cihazdan Fiziksel İmaj Alma Nedir?

Devamını Oku
Gizlilik Dereceli Veri Yönetimi Nedir?

Siber Güvenlik Terimleri

29 Eylül 2020

Gizlilik Dereceli Veri Yönetimi Nedir?

Devamını Oku