Sysmon ile process / DLL injection tespiti

Araştırmalara göre güncel tehditlerce en çok kullanılan saldırı tekniklerinin başında gelen process injection, en genel tabiriyle bir kodun, başka bir process'in adres alanında çalıştırılmasını ifade eder. Geçerli iş faaliyetlerinde kullanılabileceği gibi (özellikle performans izleme araçları) zararlı amaçlarla kullanımı da yaygındır. DLL injection, process hollowing, hook injection, APC injection vb. gibi farklı yöntemleri mevcuttur. Yönteme dair detaylar için şu adresteki bilgilere bakabilirsiniz.

Kaynak: Endgame/Elastic

Çalışma boyunca kaynak kodları şurada yer alan InjectProc.exe uygulaması ve bu uygulamadaki DLL injection yöntemi kullanılmıştır.

Sysmon ise 10.42 versiyonu ile şu config kullanılarak ayarlanmıştır (Sysmon.exe -C config.conf)

Öncelikle bir notepad açıyoruz ve alttaki komut ile notepad.exe'ye mbox.dll DLL'ini inject ediyoruz. (mbox.dll dosyası https://github.com/secrary/InjectProc/tree/master/InjectProc/test_files adresinden alınmıştır. DLL, komutun çalıştığı dizinde yer almalıdır)

InjectProc.exe dll_inj mbox.dll notepad.exe

Altta Process Hacker ile işlemin sonucunu görebiliyoruz.

İlgili komut çalıştıktan sonra Windows olay görüntüleyecide (Sysmon/Operational altında) ilgili Sysmon logları da görünür olacaktır. Bu analizde alttaki ekran görüntüsünde yer alan üstteki 2 loga (Image Load ve CreateRemoteThread) bakacağız.

Injection işlemine dair asıl olay altta ekran görüntüsü yer alan (Event ID 8) CreateRemoteThread olayıdır. Bu olaya göre InjectProc.exe adlı çalıştırılabilir dosya, notepad.exe üzerinde KERNEL32.DLL'inde yer alan LoadLibraryW metodu ile bir thread oluşturmaya/DLL yüklemeye çalışmaktadır. Sonraki olayda bu yüklenen DLL'e (mbox.dll) dair detayı göreceğiz.

Bu olaya göre notepad.exe'nin (üstteki InjectProc.exe olayı vasıtasıyla) mbox.dll'i yüklediğini görüyoruz.

CreateRemoteThread olayı (EventID 8) ile yüklenen mbox.dll'in modül yükleme olayı (EventID 7) arasındaki ilişkiyi ise ProcessGuid alanı ile kurabiliriz. Üstteki örnekte görülebileceği üzere bir önceki Event'da kendine TargetProcessGuid ile yer bulmuş olan eşsiz id değeri bir sonraki olayda ProcessGuid olarak yer bulmuştur. Bu iki olay (resimlerde turuncu ile işaretlenmiş) bu değer üzerinden korele edilebilir.

Elbette ki bu ve benzeri faaliyetler, işletim sistemleri tarafından zararlı olabileceğinden çok daha fazla sayıda günlük olarak iş amaçları (legit) dolayısıyla gerçekleştirilmekte. Bu sebeple her process/DLL injection için alarm oluşturmak gerçekçi değilse de gerek diğer kaynaklardan gelen alarmları incelerken zenginleştirme/doğrulama verisi olarak, gerek ise normal DLL path'leri haricinde yapılan yüklemelerde (güvenilirliği yüksek) alarm oluşturma amaçlı kullanılabilir. (Örneğin: APPDATA yada TEMP dizinlerinden DLL yüklenmesi vb.) Yine Guid değerleri ile korele edilecek bu faaliyetler LFO (least frequency of occurrence) yöntemiyle tehdit avcılığı amaçlı da kullanılabilir.

Sysmon + Elastic ile tehdit avcılığına dair daha detaylı bir yazı için: https://www.furkancaliskan.com/elk-sysmon-threat-hunting/

Güvenli ve sağlıklı günler.

Furkan ÇALIŞKAN

Read more posts by this author.