DLL NEDİR ?

RotucEXE

Admin
Yasaklı Üye
ÖNCELİKLE DLL NEDİR?

DLL İngilizce Dynamic Link Library, Türkçe anlamı Dinamik Bağlantı Kütüphanesi’dir. Adı Dynamic Link Library baş harfleri alınarak kısaltılmıştır.

DLL dosyaları görevi çalışan programların ortaklaşa yapmış olduğu işlemleri tek bir dosya içinde yapmak, program çalışma esnasında gerekli olan fonksiyonları kendi içerisinde bulunmaz ise bunu dinamik link kütüphanesi’nde yani DLL dosyasında aramaktadır.

Bu şekilde programlar tek bir dosya üzerinden çalışarak bellek kullanımını minimum seviyeye düşürerek hem program hızını ve bilgisayar hızını artıracak, birçok DLL dosyasını yerine tek bir DLL dosyası kullandığından hard disk üzerinde fazla yer kaplamayacaktır.

Programlar işlevlerini devam ettirmek için DLL dosyaları içerisinde bulunan işlemlerden yardım alarak çalıştırma bütünlüğü sağlamaktadır. Bir exe dosyası nasıl programın çalışmasında gerekli ise DLL dosyasında aynı şekilde programın çalışmasında gerekli sistem dosyalarıdır.

DLL dosyaları çalıştırmış olduğu programların ayrılmaz bir bütünüdür ve tek başına çalışmazlar. Eğer ilgili DLL dosyası bulunamaz, ismi veya içeriği hatalı bir şekilde değişirse DLL dosyası eksikliği veya hatalı DLL dosyası nedeni ile programlar işlevini devam hale getiremezler.

Programların ihtiyaç duydukları DLL dosyalarının her biri farklı isimde olabilir ama uzantıları tüm DLL dosyaları için .dll olmak zorundadır. Bir DLL dosyası ses ile alakalı işlemlerini yerine getirirken diğer DLL dosyaları görüntü ile alakalı işlevleri yerine getiriyor olabilir, her DLL dosyasının farklı, farklı işlevleri bulunmaktadır.

DLL dosyaları not defteri ile açılarak üzerinde değişiklik yapılabilir fakat yanlış yapılan bir ufak değişiklik yüzünden tamamen çalışmayabilir.



DLL İNJECTİON NEDİR?

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 enjekte edilecek olan DLL dosyası hedef sisteme yerleştirilir.

Hedef process’in belleği üzerinde, DLL dosyasının yolunu belirtmek için yer ayrılır.

DLL dosyasının bulunduğu dizin yolu process belleğine kopyalanır ve uygun bellek adresleri belirlenir.

DLL dosyası çalıştırılır ve enjekte edildiği process üzerinden işlemlerini yürütmeye başlar.



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.


Resim 2.1

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.




Resim 2.2




Resim 2.3




Resim 2.4

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.


Resim 2.5

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.


Resim 2.6



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ı.


Resim 3.1

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ı.


Resim 3.2

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


Resim 3.3




Resim 3.4

Böylelikle işlem tamamlanmış oldu.





Yukarıdaki resim örnek bir DLL enjeksiyonu gösterimidir. Burada Launcher Malware adındaki zararlı yazılım normal şartlarda internete çıkamamaktadır. Ancak Internet Explorer process'i içerisine enjekte edilen zararlı DLL sayesinde artık bilgisayarda internete çıkabilen ve zararlı işlemler yapabilen bir kod Internet Explorer process'i altında çalıştırılmaktadır. Bu nedenle DLL enjeksiyonu başarıyla gerçekleştirilir.


(Resimleri koyamadım kb)
 
ÖNCELİKLE DLL NEDİR?

DLL İngilizce Dynamic Link Library, Türkçe anlamı Dinamik Bağlantı Kütüphanesi’dir. Adı Dynamic Link Library baş harfleri alınarak kısaltılmıştır.

DLL dosyaları görevi çalışan programların ortaklaşa yapmış olduğu işlemleri tek bir dosya içinde yapmak, program çalışma esnasında gerekli olan fonksiyonları kendi içerisinde bulunmaz ise bunu dinamik link kütüphanesi’nde yani DLL dosyasında aramaktadır.

Bu şekilde programlar tek bir dosya üzerinden çalışarak bellek kullanımını minimum seviyeye düşürerek hem program hızını ve bilgisayar hızını artıracak, birçok DLL dosyasını yerine tek bir DLL dosyası kullandığından hard disk üzerinde fazla yer kaplamayacaktır.

Programlar işlevlerini devam ettirmek için DLL dosyaları içerisinde bulunan işlemlerden yardım alarak çalıştırma bütünlüğü sağlamaktadır. Bir exe dosyası nasıl programın çalışmasında gerekli ise DLL dosyasında aynı şekilde programın çalışmasında gerekli sistem dosyalarıdır.

DLL dosyaları çalıştırmış olduğu programların ayrılmaz bir bütünüdür ve tek başına çalışmazlar. Eğer ilgili DLL dosyası bulunamaz, ismi veya içeriği hatalı bir şekilde değişirse DLL dosyası eksikliği veya hatalı DLL dosyası nedeni ile programlar işlevini devam hale getiremezler.

Programların ihtiyaç duydukları DLL dosyalarının her biri farklı isimde olabilir ama uzantıları tüm DLL dosyaları için .dll olmak zorundadır. Bir DLL dosyası ses ile alakalı işlemlerini yerine getirirken diğer DLL dosyaları görüntü ile alakalı işlevleri yerine getiriyor olabilir, her DLL dosyasının farklı, farklı işlevleri bulunmaktadır.

DLL dosyaları not defteri ile açılarak üzerinde değişiklik yapılabilir fakat yanlış yapılan bir ufak değişiklik yüzünden tamamen çalışmayabilir.



DLL İNJECTİON NEDİR?

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 enjekte edilecek olan DLL dosyası hedef sisteme yerleştirilir.

Hedef process’in belleği üzerinde, DLL dosyasının yolunu belirtmek için yer ayrılır.

DLL dosyasının bulunduğu dizin yolu process belleğine kopyalanır ve uygun bellek adresleri belirlenir.

DLL dosyası çalıştırılır ve enjekte edildiği process üzerinden işlemlerini yürütmeye başlar.



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.


Resim 2.1

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.




Resim 2.2




Resim 2.3




Resim 2.4

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.


Resim 2.5

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.


Resim 2.6



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ı.


Resim 3.1

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ı.


Resim 3.2

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


Resim 3.3




Resim 3.4

Böylelikle işlem tamamlanmış oldu.





Yukarıdaki resim örnek bir DLL enjeksiyonu gösterimidir. Burada Launcher Malware adındaki zararlı yazılım normal şartlarda internete çıkamamaktadır. Ancak Internet Explorer process'i içerisine enjekte edilen zararlı DLL sayesinde artık bilgisayarda internete çıkabilen ve zararlı işlemler yapabilen bir kod Internet Explorer process'i altında çalıştırılmaktadır. Bu nedenle DLL enjeksiyonu başarıyla gerçekleştirilir.


(Resimleri koyamadım kb)
Eline sağlık Dostum
 
ÖNCELİKLE DLL NEDİR?

DLL İngilizce Dynamic Link Library, Türkçe anlamı Dinamik Bağlantı Kütüphanesi’dir. Adı Dynamic Link Library baş harfleri alınarak kısaltılmıştır.

DLL dosyaları görevi çalışan programların ortaklaşa yapmış olduğu işlemleri tek bir dosya içinde yapmak, program çalışma esnasında gerekli olan fonksiyonları kendi içerisinde bulunmaz ise bunu dinamik link kütüphanesi’nde yani DLL dosyasında aramaktadır.

Bu şekilde programlar tek bir dosya üzerinden çalışarak bellek kullanımını minimum seviyeye düşürerek hem program hızını ve bilgisayar hızını artıracak, birçok DLL dosyasını yerine tek bir DLL dosyası kullandığından hard disk üzerinde fazla yer kaplamayacaktır.

Programlar işlevlerini devam ettirmek için DLL dosyaları içerisinde bulunan işlemlerden yardım alarak çalıştırma bütünlüğü sağlamaktadır. Bir exe dosyası nasıl programın çalışmasında gerekli ise DLL dosyasında aynı şekilde programın çalışmasında gerekli sistem dosyalarıdır.

DLL dosyaları çalıştırmış olduğu programların ayrılmaz bir bütünüdür ve tek başına çalışmazlar. Eğer ilgili DLL dosyası bulunamaz, ismi veya içeriği hatalı bir şekilde değişirse DLL dosyası eksikliği veya hatalı DLL dosyası nedeni ile programlar işlevini devam hale getiremezler.

Programların ihtiyaç duydukları DLL dosyalarının her biri farklı isimde olabilir ama uzantıları tüm DLL dosyaları için .dll olmak zorundadır. Bir DLL dosyası ses ile alakalı işlemlerini yerine getirirken diğer DLL dosyaları görüntü ile alakalı işlevleri yerine getiriyor olabilir, her DLL dosyasının farklı, farklı işlevleri bulunmaktadır.

DLL dosyaları not defteri ile açılarak üzerinde değişiklik yapılabilir fakat yanlış yapılan bir ufak değişiklik yüzünden tamamen çalışmayabilir.



DLL İNJECTİON NEDİR?

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 enjekte edilecek olan DLL dosyası hedef sisteme yerleştirilir.

Hedef process’in belleği üzerinde, DLL dosyasının yolunu belirtmek için yer ayrılır.

DLL dosyasının bulunduğu dizin yolu process belleğine kopyalanır ve uygun bellek adresleri belirlenir.

DLL dosyası çalıştırılır ve enjekte edildiği process üzerinden işlemlerini yürütmeye başlar.



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.


Resim 2.1

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.




Resim 2.2




Resim 2.3




Resim 2.4

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.


Resim 2.5

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.


Resim 2.6



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ı.


Resim 3.1

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ı.


Resim 3.2

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


Resim 3.3




Resim 3.4

Böylelikle işlem tamamlanmış oldu.





Yukarıdaki resim örnek bir DLL enjeksiyonu gösterimidir. Burada Launcher Malware adındaki zararlı yazılım normal şartlarda internete çıkamamaktadır. Ancak Internet Explorer process'i içerisine enjekte edilen zararlı DLL sayesinde artık bilgisayarda internete çıkabilen ve zararlı işlemler yapabilen bir kod Internet Explorer process'i altında çalıştırılmaktadır. Bu nedenle DLL enjeksiyonu başarıyla gerçekleştirilir.


(Resimleri koyamadım kb)
 
Üst