Uç nokta algılama ve yanıt (EDR) sistemleri, çalışan bir işlemin bellek alanına kod eklemek için uygulama programlama arabirimlerinin bir kombinasyonunu kullanan tipik işlem enjeksiyon girişimlerini algılamada giderek daha verimli hale geldi.
Bu nedenle, İsrail merkezli Security Joes’daki araştırmacılar, EDR ile izlenen API’lere güvenmeden işlem enjeksiyonu için başka bir yol bulmaya koyuldu. Sonuç, çalışan bir işlemin adres alanına kod göndermek için varsayılan okuma, yazma ve yürütme (RWX) izinlerine sahip dinamik bağlantı kitaplıklarından (DLL’ler) yararlanan yeni bir işlem ekleme yöntemi olan Mockingjay’dir.
Alaycı Kuş Yaklaşımı
Security Joes bu hafta bir raporda, yaklaşımın bir uç nokta güvenlik mekanizmasının kötü niyetli bir işlem yerleştirme çabasını algılama olasılığını azalttığını ve başarmak için daha az sayıda adım gerektirdiğini söyledi. Güvenlik firması, “Araştırmamız, izlenen Windows API’lerine güvenmeden, Windows işlemlerinin bellek alanı içinde dinamik olarak kod yürütmek için alternatif yöntemler keşfetmeyi amaçlıyordu” dedi.
“Savunmasız bir DLL’den yararlanmayı ve kodu uygun bölüme kopyalamayı içeren benzersiz yaklaşımımız, bellek tahsisi, izin ayarı ve hatta hedeflenen süreçte bir iş parçacığı başlatmadan kod enjekte etmemize olanak sağladı.”
İşlem enjeksiyonu, yeni işlevsellik eklemek veya davranışını değiştirmek için bir işlemin belleğini manipüle etmeye yönelik bir tekniktir. Saldırganlar, bu yöntemi genellikle kötü amaçlı kodu gizlemek ve güvenliği ihlal edilmiş sistemlerde tespit edilmekten kaçınmak için kullanır. Yaygın işlem enjeksiyon yöntemleri arasında, enjekte edilen yükü alan bir işlemin aynı zamanda onu yürüttüğü kendi kendine enjeksiyon; Kötü amaçlı bir DLL’nin bir işlemin bellek alanına yüklendiği DLL enjeksiyonu; ve taşınabilir yürütülebilir bir dosyanın çalışan bir işlemin belleğine eşlendiği PE enjeksiyonu.
Security Joes raporunda, “Bu enjeksiyon tekniklerinin her biri, savunucular ve güvenlik yazılımları tarafından tespit ve hafifletme amaçları için kullanılabilecek karakteristik modeller oluşturan bir dizi özel Windows API’si gerektirir” dedi. Şirket, örneğin, kendi kendine enjeksiyon için gerekli API’lerin VirtualAlloc, LocalAlloc, GlobalAlloc ve Virtual Protect olduğunu söyledi. Benzer şekilde, PE enjeksiyonunda kullanılan API’ler VirtualAllocEx, WriteProcessMemory ve CreateRemoteThread’dir. Çoğu EDR sistemi, süreç enjeksiyon saldırılarında yaygın olarak kullanılan API’leri izleyecek şekilde ayarlanmıştır ve bunların kullanımıyla ilişkili kötü amaçlı etkinlikleri etkili bir şekilde belirleyebilir.
Savunmasız DLL’leri Kötüye Kullanma
Security Joes’un Mockingjay’i geliştirirken kullandığı strateji, Windows işletim sisteminde varsayılan bir RWX bölümü içeren DLL’leri sistematik olarak aramaktı. Şirketteki araştırmacılar, bir EDR uyarısını tetiklemeden kod enjeksiyonu için potansiyel araçlar olarak hizmet edebilecek DLL’leri belirlemek için tüm Windows dosya sistemini araştıran bir araç geliştirdi. Keşif, Security Joes’un Visual Studio 2022 Community’de kendi kodlarını enjekte etmek ve yürütmek için kullanabilecekleri 16 KB RWX alanına sahip bir DLL (msys-2.0.dll) bulmasıyla sonuçlandı.
Security Joes, “Diskte varsayılan bir Oku-Yaz-Yürüt (RWX) bölümü içeren savunmasız DLL’yi belirledikten sonra, bellekte kod yürütmek için bu yanlış yapılandırmadan yararlanabilecek iki farklı yöntemi keşfetmek için birkaç test gerçekleştirdik” dedi.
Yöntemlerden biri, güvenlik açığı bulunan DLL’yi doğrudan Security Joes’un geliştirdiği kabus.exe adlı özel bir uygulamanın bellek alanına yüklemekti. Bunu yapmak, araştırmacıların kendi kabuk kodlarını herhangi bir Windows API’sinden yararlanmadan uygulamanın bellek alanına enjekte etmesine ve yürütmesine izin verdi. Diğer şeylerin yanı sıra, kabuk kodu herhangi bir uyarıyı tetiklemeden tüm EDR kancalarını da kaldırdı. Şirket, “Windows API’lerine olan bağımlılığın tamamen kaldırılması, yalnızca algılama olasılığını azaltmakla kalmıyor, aynı zamanda tekniğin etkinliğini de artırıyor” dedi.
Güvenlik Joes’un DLL’deki RWX bölümünü kötüye kullanma konusundaki ikinci taktiği, uzak bir işlemde işlem enjeksiyonu yapmaktı. Bunu başarmak için, önce operasyonları için mysys-2.0.dll kullanan ikili dosyaları belirlediler. Bunların çoğu, GNU yardımcı programları ve POSIX emülasyonu gerektiren diğer uygulamalarla ilişkilendirildi. Kavram kanıtı için araştırmacılar, Visual Studio 2022 Community’deki ssh.exe işlemini kodlarını enjekte etmek için hedef olarak seçtiler. Şirket, “Bu enjeksiyon yönteminde, süreç enjekte edilen kodu otomatik olarak yürüttüğü için hedef süreç içinde açıkça bir iş parçacığı oluşturmaya gerek olmadığına dikkat etmek önemlidir.”
Security Joes’a göre, araştırmacılarının Mockingjay’i geliştirmek için kullandıkları DLL, benzer şekilde kod yerleştirme amacıyla kötüye kullanılabilecek potansiyel olarak diğerlerinden yalnızca biridir. Tehdidi ele almak, yalnızca belirli API’leri ve DLL’leri izlemeyen, aynı zamanda süreç enjeksiyonunu belirlemek için davranışsal analiz ve makine öğrenimi tekniklerini kullanan uç nokta güvenlik araçları gerektirir.