Soru:
AppInit_DLL'ye bir DLL eklendiğinde ne olur
amccormack
2013-03-29 23:58:11 UTC
view on stackexchange narkive permalink

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs kayıt anahtarına bir DLL ekleyen bir kötü amaçlı yazılım örneğim var. DLL'de kayıt defteri anahtarının başvurduğu kötü amaçlı işlev vardır, ancak bu kötü amaçlı yazılım örneği DLL'yi yüklemez veya çağırmaz veya başka herhangi bir kötü niyetli davranış sergilemiyor.

Kötü amaçlı yazılım bu kayıt defteri anahtarına neden DLL ekler ?

Iki yanıtlar:
#1
+8
0xea
2013-03-30 00:06:52 UTC
view on stackexchange narkive permalink

Temel olarak, o reg-anahtarında listelenen tüm DLL'ler, herhangi bir işlem başlatıldığında yüklenir. Daha fazla bilgi için AppInit_DLLs kayıt defteri değeriyle çalışma bölümüne bakın.

Bu değerde belirtilen tüm DLL'ler, çalışan her Microsoft Windows tabanlı uygulama tarafından yüklenir. Mevcut oturum açma oturumu.

Genellikle kötü amaçlı kodlar tarafından (kötü amaçlı olması gerekmez) DLL yerleştirme yöntemi olarak, örneğin işlevleri bağlamak için kullanılırlar. Daha kesin konuşmak gerekirse , AppInit DLL'leri aslında yalnızca user32.dll ile bağlantı kuran işlemler tarafından yüklenir. , peter ferrie'nin işaret ettiği gibi, AppInit DLL'leri yüklendikten sonra user32.dll tarafından yüklenir. Gerçek kayıt defteri yolu, işletim sisteminin 64 bit ve 32 bit sürümleri arasında farklılık gösterir.

Dolayısıyla, 32 bit sistemlerde 32 bit DLL için yol şu şekildedir:

  [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs] 

64 bit sistemde 64 bit DLL için:

  [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs]  

64 bit sistemde 32 bit DLL için:

  [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs] 

Birden çok girdi boşluk veya virgül ile bölünmüştür ve DLL yolu bariz nedenlerden dolayı boşluk içermemelidir. Vista ve sonrasında, AppInit DLL'lerinin imzalanacaksa, RequireSignedAppInit_DLLs kayıt değeri 0 olarak ayarlanarak bu gereksinimi devre dışı bırakır.

User32.dll'nin kendisi yüklendiğinde AppInit_DLL dll'nin user32.dll tarafından yüklendiğini ve bunun dinamik olarak (gecikmeli yükleme veya manuel yükleme) olabileceğini söylemek daha doğrudur. Orada da birden fazla kayıtlı DLL olabilir.
AFAIK "RequireSignedAppInit_DLLs" Vista / Windows7'de eklendi, ancak yine de varsayılan olarak kapalıydı ve yalnızca bir Windows 10 güncellemesiyle varsayılan olarak açıldı.
Bunun artık Windows 10'da çalıştığını düşünmüyorum.
#2
+8
Remko
2013-03-31 03:33:24 UTC
view on stackexchange narkive permalink

Windows 7'de AppInit DLL uygulaması aşağıdaki gibidir:

user32.dll! ClientThreadSetup içinde kernel32.dll'den LoadAppInitDlls dışa aktarımı LogonProcess dışında herhangi bir işlem için çağrılır.

kernel32.dll! LoadAppInitDlls LoadAppInit_DLLs kayıt anahtarını kontrol eder ve ayarlanırsa BasepLoadAppInitDlls ( PEB 'nin göreli konumunun 2 değerine sahip olduğu durumlar hariç).

BasepLoadAppInitDlls her DLL kümesi için LoadLibraryEx' i çağırır AppInit_DLLs kayıt defteri anahtarında. İmzalama gerekliyse ( RequireSignedAppInit_DLLs kayıt defteri değeri ayarlandığında) LOAD_LIBRARY_REQUIRE_SIGNED_TARGET bayrağı LoadLibraryEx'e iletilir.

Yani bu kayıt defteri anahtarını ayarlayarak, Malware dll, bu anahtar ayarlandıktan sonra başlatılan her işleme enjekte edilecektir. Önceki işletim sistemi sürümlerinde, AppInit DLL'ler gui / konsol dışı işlemler için çağrılmıyordu, ancak en azından Windows 7'de bu, gui dışı işlemler için de çağrılıyordu.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...