Bir uygulama ile harici kitaplıkları arasına kod enjekte etmek için yer vardır. Bunu yapmak doğası gereği kötü değildir, ancak zarar vermenin harika bir yoludur.

Geliştiriciler, kaynak koduna sahip olmadıkları bir programın işlevselliğini genişletmeleri gerektiğinde, genellikle DLL çengeline dönerler. Bu, bir programın yapması amaçlanmayan bir şeyi yapmasını sağlamanın alışılmışın dışında bir yoludur.

İşin aslı, bilgisayar korsanları da bu tekniği zararsız uygulamaları silahlandırmak veya yazılımları kırmak gibi tamamen yanlış nedenlerle kullanıyor. Peki DLL kancası nedir ve gerçekte nasıl çalışır?

DLL Nedir?

Her uygulama, çalıştırmak için temel kodunun dışındaki bazı dosyalara bağlıdır. Bu harici dosyalar, bir programın düzgün çalışması için ihtiyaç duyduğu kod ve verileri içerir. Bu harici dosyalardan herhangi biri kaybolduğunda, programın kararlılık sorunları olabilir veya çalışmayı tamamen reddedebilir.

Windows işletim sisteminde bu harici dosyalara DLL veya dinamik bağlantı kitaplıkları denir. Dinamik bağlantı kitaplıkları, birden çok uygulamada paylaşılabilen yeniden kullanılabilir kod ve kaynaklar sağlayan Windows işletim sisteminin temel bileşenleridir.

instagram viewer

Windows'taki harici dosyalar kitaplıklar olarak bilinir. İki tür kitaplık vardır: dinamik ve statik. Dinamik kitaplıklar çalışma zamanında yüklenir ve statik kitaplıklar derleme zamanında yüklenir. DLL dinamik bir kitaplıktır.

DLL Takma Nedir?

DLL çengelleme, programların veya bir DLL'ye yapılan işlemlerin işlev çağrılarını yakalamayı ve değiştirmeyi içeren bir tekniktir. esasen Ortadaki Adam kurulumu bir program ile çağırdığı DLL'ler arasında bir kancanın bulunduğu yerde kurulur. Ardından tüm veya hedeflenen işlev çağrıları izlenir ve değiştirilir.

İşte DLL çengel saldırısı iş akışına bir örnek:

  1. Saldırgan, program tarafından yapılan işlev çağrılarını ve bağımlı olduğu DLL dosyalarını analiz eder.
  2. Saldırgan, IAT çengelleme, satır içi çengelleme, COM çengelleme vb. birçok uygulama tekniğinden birini kullanarak bir kanca oluşturur.
  3. İsteğe bağlı kod yürütme gerçekleşir.
  4. Orijinal işlev çağrısı yürütme gerçekleşebilir veya gerçekleşmeyebilir.
  5. Saldırgan, kancayı silerek ve yapılan tüm değişiklikleri geri alarak izlerini örter.

DLL çengelleme, hem iyi (program işlevselliğini genişletme, hata ayıklama ve günlüğe kaydetme) veya kötü amaçlı (güvenlik önlemlerini atlamak, hassas verileri çalmak, rastgele kod çalıştırmak ve video oyunu yazmak gibi) hileler).

DLL Takma Nasıl Çalışır?

DLL kancasını uygulamaya geçmeden önce, temel bilgileri netleştirmek önemlidir. Bir adım geriye gidelim ve bir program tarafından bir DLL'ye işlev çağrısı yapıldığında ne olduğunu anlayalım.

Bir program DLL'de bir işlevi çağırdığında, işletim sistemi önce işlevin adına bakar. programın Alma Adres Tablosu ve işlevin adresini DLL'nin Verme Adresinden alır Masa.

Fonksiyonun adresi çözüldükten sonra program, fonksiyona erişmek ve onu çalıştırmak için fonksiyonun adresine atlayabilir. DLL kancası, bu işlemi durdurmak ve işlev çağrısını farklı bir işleve yönlendirmek etrafında döner. DLL kancasını uygulamanın birkaç yolu vardır. Bunu uygulamak için en yaygın kullanılan tekniklere bakalım.

Bu oldukça teknik olabilir, bu yüzden yardımcı olabilir güçlü bir Windows kullanıcısıysanız veya başka bir şekilde Windows dahili bileşenleri hakkında güçlü bir anlayışa sahip olmak.

IAT Çengel

IAT çengelleme, kötü amaçlı yazılım yazarları tarafından güvenlik önlemlerini atlatmak ve tespit edilmekten kaçınmak için yaygın olarak kullanılan etkili bir tekniktir. Import Address Table (IAT), her yeni işlem oluşturulduğunda belleğe yüklenen bir veri yapısıdır. IAT, içe aktarılan tüm işlev çağrılarının adlarını ve bunların bellek adreslerini içerir.

Bir program DLL'de bir işlevi çağırdığında, işlev adı önce IAT'de aranır ve eğer söz konusu işlevin bellek adresi IAT'de bulunmazsa, DLL'nin Verme Adresinden kurulur Masa.

DLL tarafından dışa aktarılan tüm işlevlerin bellek adreslerine eşlendiği bir veri yapısıdır. IAT bağlamada, bir düşman bir sürecin IAT'sini değiştirebilir ve meşru işlev eşlemelerini değiştirebilir kötü amaçlı olanlarla, böylece amaçlanan işlemi kesintiye uğratır ve programın keyfi olarak yürütülmesini sağlar. kod.

IAT çengellemedeki genel saldırı akışı şöyle görünür:

  1. Bir program bir işlev çağrısı yapar.
  2. İşlev adresi IAT'de bulunur.
  3. IAT bağımlısı olduğundan; işlev adresi değiştirilmiş ve kötü amaçlı bir işlevin bellek konumu yüklenmiştir.
  4. Program, kötü amaçlı işlevin konumuna atlar ve rastgele kod yürütülür.
  5. Son olarak, orijinal işlev çağrısı yürütülür.

Satır İçi Kanca

Satır içi çengelleme, yürütülmesini özel bir işleve yönlendirmek için bir hedef işlevin kaynak kodunu değiştirmeyi içeren bir DLL kancalama tekniğidir. Satır İçi Kancalama, IAT çengellemenin aksine, hedef işlevin kodunu doğrudan değiştirerek saldırgana hedef işlevin nasıl davrandığı üzerinde daha kesin kontrol sağlar.

Yukarıdaki şemada, meşru işlevin kötü amaçlı bir işlevi işaret edecek şekilde nasıl değiştirildiğini gözlemleyin. Kötü amaçlı işlevdeki tüm talimatlar yürütüldükten sonra, yürütmeyi bitirmesi için meşru işleve geri dönmek üzere bir atlama talimatı verilir.

Düşmanlar, bir programda parametreleri veya bir işlevin dönüş değerini değiştirmek gibi kalıcı değişiklikler yapmak için satır içi çengelleme kullanır.

Microsoft Sapmaları

Microsoft Research, şirket içi bir DLL bağlama paketi olan Detours'u geliştirdi. Programcıların bir program tarafından yapılan işlev çağrılarını izlemesini ve değiştirmesini sağlar. Sapmalar, enstrümantasyon, test etme ve hata düzeltme dahil ancak bunlarla sınırlı olmamak üzere çeşitli görevler için kullanılabilir.

Saldırganlar, DLL enjeksiyonu ve çengelleme saldırıları gerçekleştirmek için Detours'tan yararlanır ve geliştiriciler, uygulamalarının işlevselliğini genişletmek için sık sık kullanır. Detours paketi hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: resmi GitHub deposu.

Artık DLL Kancasının Nasıl Çalıştığını Biliyorsunuz

DLL bağlama, doğru nedenlerle kullanıldığında uygulamanızın yeteneklerini artırabilen veya yazılım hatalarını ayıklamanıza ve optimize etmenize yardımcı olan gelişmiş bir tekniktir. Ne yazık ki, çengelleme, bir geliştirme tekniğinden ziyade bir rakip teknik olarak kullanımda daha yaygın olarak görülmektedir. Bu nedenle, uygulamalarınızın güvenli ve takma ve yerleştirme gibi saldırılardan uzak olmasını sağlayan en iyi güvenlik uygulamalarını benimsemeniz ve bunlara bağlı kalmanız önemlidir.