Kalıcılık- WMI Olay Aboneliği
WMI (Windows Management Instrumentation), sistem yönetimlerinin yerel ve uzaktan gerçekleşmesini sağlamaktadır. WMI, kalıcılık, yanal hareket, kod yürütme ve komuta ve kontrol(C2) gibi çeşitli durumların gerçekleşmesi için kullanılabilmektedir. WMI’nın neredeyse tüm windows işletim sistemlerinde bulunuyor olması saldırganların sistemde yapacakları faaliyetler için kullanılabilmektedir.
WMI Event Subscription (Olay Aboneliği) tekniği ile belirli bir olayı örneğin payload’ı tetikleyecek olayı belirleyerek sistemde kalıcılık sağlanabilmektedir. Bunu gerçekleştirebilmek için ise iki sınıfı birbiriyle ilişkilendirmek gerekir. Bunlar;
- Event Filter: Gerçekleştirilecek olay için tetikleyici seçen ve filtre oluşturan sorgudur. Event filter, WQL (SQL benzeri bir gorgu dili) sorgu dili kullanılarak tetikleyicinin yürütüleceği durumları belirler.
- Event Consumer: Olay tetiklendiğinde eylemi gerçekleştirir. (Payload çalıştırma vb.)
- FilterToConsumerBinding: Filter ve Consumer sınıflarını birbirine bağlar.
WMI kullanılarak windows sistemde kalıcılık sağlayabilmesi için çeşitli teknik ve araçlar kullanılır. Empire, PoshC2, PowerSploit ve Powershell scriptleri, Metasploit, ve C# araçları kullanılarak bu tekniği otomatikleştirmek, kalıcılık sağlamak için farklı tetikleyiciler ve kod yürütme eylemleri yaparak kullanılabilirler.
Kalıcılık- WMI Etkinlik Aboneliği C# kullanarak ele aldığımızda;
Kodun bulunduğu github adresi: WMIPersistence
İlk olarak Msfvenom kullanarak payload64.bin uzantılı raw formatında bir payload oluşturuluyor.
SharpShooter aracı ile önceden üretilmiş payloadı VBS formatına çevirmekteyiz.
- python2.7 SharpShooter.py –stageless –dotnetver 2 –payload vbs –output implantvbs –rawscfile payload64.bin
Daha sonra payload dosyasını base64 formatına encode ediyoruz.
- base64 -i output/implantvbs.vbs
Bu kısımda C# koduna encode edilen base64 formatındaki payloadı yerleştirdikten sonra kod derlenir.
Derledikten sonra bu kod çalıştırıldığında exe formatına çevrilmektedir.
Bu exe çalıştırıldıktan sonra ilgili base64 scriptini __EventFilter ve EventConsumer sınıflarının altına yerleştirmektedir.
Son olarak kod da belirlenen uygulama olan notepad.exe her çalıştırıldığında payload yürütülecek ve saldırgana iletişim kanalı açılacaktır. Metasploit kullanarak exe çalıştırıldığında dinleme yapılabilir.
Tespit Etme
– WMI kullanılarak yapılan herhangi bir saldırıyı tespit edebilmek için genellikle event viewer ile loglar incelenmektedir. Yine aynı şekilde group policy lerde bazı Event ID leri inceleyerek tespit edebiliriz. Bunlar dan bazı örneklere bakacak olursak;
- WMI log takibi için Event Viewer aracından Event ID’si 5861 takip etmemiz gerekir. Bu kısımda WMI saldırısına ait aktiviteler bulunur ve vbscript’nin tetiklediğini gösterir.
- ActiveScriptEventConsumer altında tetiklenen VBScriptle saldırganla iletişim kurulduğu zaman bir process kayıt ediliyor. Bu process scrons.exe (Event ID: 5857)dir. Kısaca WMI veritabanında yazılı olan script scrcons.exe ile tetikleniyor bu sebeple takip edilmesi gerekir.
Scrons.exe takibi yapabilmek için ise ilk olarak Audit Process Creation (Event ID: 4688) loglarını etkinleştirmek gerekir.
- Powershell Script Block Logging ile sistem üzerinde çalışan powershell
scriptlerin içeriğini loglarda görebilmeyi sağlar.
- Command Line Auditing, Process creation loglarında bir process eklendiğinde, kayıt olduğunda içeriğine bir komut satırı ekliyor. Bu gibi durumlarda Command Line Auditingi açtığımızda WMI scriptinin hangi komut
satırını kullanarak eklendiğini görebiliriz
.
– SIEM olmayan sistemlerde bir farklı yöntem olarak ücretsiz bir araç olan sysmon üzerinden de tespit edilmektedir. Sysmon da WMI tabanlı loglama da Event ID değeri 1,19,20 ve 21 takip ederek, WMI veritabanındaki kritik alanlara veri eklemeye çalışan saldırganları bu sayede tespit edebiliriz.
– WMI komut satırı aracı olan mofcomp.exe takip edilmelidir.
– SIEM üzerinden tespit etmek için kurallar yazılabilir. Wbem takip edilmelidir.
– WMI protokolü kullanımı için belirli bir port belirlenmelidir. Bu port takip edilerek uzaktan erişimleri izlenilerek tespit edilebilir.
– WMI saldırganlar tarafından erişimi mümkün olduğu için WMI kullanımı için kısıtlandırma yapılması gerekebilir. Kurum içinde yalnızca yetkili kullanıcılar için tanımlanması olumsuz durumları azaltacaktır.
– Crowdstrike da ise C# scriptini çalıştırdığımda WMIPersistence.exe dosyasını karantinaya alarak çalışmasını engellediği gözlemlenmektedir.
- WMI Event Subscription durumlarında kullanılan bazı sigma kuralları şu şekildedir;