WMI Atakları


WMI (Windows Management Instrumentation); Windows işletim sistemlerinde hemen hemen her nesnenin kontrol edilebilmesini sağlayan, işletim sistemindeki operasyonları ve yönetim işlevlerini gerçekleştirebilen bir teknolojidir.

WMI, veri toplamadan çok daha fazlası için kullanılabilir. Yapılandırma verilerini sağlama konusunda mükemmel bir iş çıkarsa da, çok çeşitli saldırgan etkinlikleri için de kullanılabilir.

WMIC.exe, WMI için komut satırı arayüzü sunar.

WMI, birçok modern saldırının en kolay ve en gizli bileşenlerinden biridir. WMI büyük ölçüde yönetici hakları gerektirir ancak bu bir kez başarıldığında, sömürü sonrası için kapıyı ardına kadar açar.

Uygulama kontrolünden ve host tabanlı güvenlik araçlarından kurtulmanın mükemmel bir yoludur.

Keşif (Reconnaissance)


wmic process get CSName,Description,ExecutablePath,ProcessId,parentprocessid,commandline,creationdate: Çalışan processlere dair detaylı araştırma

wmic useraccount list full : Local kullanıcı hesaplarını bulma.

wmic group list full

wmic netuse list full

wmic qfe get Caption,Description,HotFixIDJnstalledOn

wmic startup get Caption,Command,Location,User

wmic startup list full
: AutoStart processlerini bulma.



Birçok WMI keşif komutu zararsızdır ve bir ortamda oldukça yaygındır. Bu, onları geniş ölçekte tanımlamayı zorlaştırabilir. Bununla birlikte, saldırganların bu bilgiyi sorgulamak için çok özel bir yöntemi olabilir. Komut satırlarını yakalıyorsanız, kendine has özelliklerden faydalanabilir ve ilginç imzalar oluşturabilirsiniz.

Örnek olarak, bir sistemde başarılı bir şekilde oturum açtıktan hemen sonra wmic useraccount list komutunu görürseniz, iki olay birlikte bir saldırganın belirli davranışını belirlemenize yardımcı olabilir.

Bazı WMI ataklarını simüle etmek için Caldera kullanılabilir. Açık kaynak atak simülasyon aracıdır. İlk olarak aşağıdaki gibi bir profile oluşturulmalıdır.  




Sonrasında ilgili profile yapmak istediğimiz saldırıları (abilities) eklememiz gerekmektedir.



Eklediğimiz saldırıları oluşturduğumuz "Adversary Profiles" bölümünde görebilmekteyiz.




"Operations" bölümünde oluşturduğumuz "Adversary" profili ile saldırıları başlatabiliriz.









Yanal Hareket (Lateral Movement)


"WMIC process call create", yerel ve uzaktan kod yürütülmesine izin verecek şekilde tasarlanmıştır. Bunu, PsExec'in çok daha fazla gizliliğe sahip yerleşik bir sürümü olarak düşünebilirsiniz. Göreceğimiz gibi, bir komut satırında "process call create" ifadesini her gördüğünüzde, özellikle uzaktan yürütmeyi kolaylaştıran "node:/" seçeneğini içermesi durumunda şüpheler artmaktadır.

wmic /node:<remote-ip> /user:<username> process call create "x.exe <-n process name> <-l port >”
 


Kalıcılık: WMI Event Consumer Backdoor (Persistence)


WMI, belirli olayları izleme yeteneği sağlar ve tetiklendiğinde, script çalıştırma ve kod yürütme gibi aksiyonlar alabilen event consumer’ları uyarır. Yönetici ayrıcalıkları gereklidir, ancak bir kez elde edildikten sonra saldırganlar, uygun araçlar olmadan tespit edilmesi zor olan bir arka kapı oluşturmak için WMI kullanabilir. WMI consumer’ları SYSTEM ayrıcalıklarıyla çalışır.

Bu teknik üç adım içerir:

1- Belirli bir tetikleyiciyi açıklayan bir olay filtresi (event filter) oluşturulmalıdır. (Örneğin her 30 saniyede tetiklensin.)

2- Çalıştırılacak bir script ve/veya yürütülebilir dosya ile sisteme bir event consumer eklenir.

3- Son olarak, consumer ve event bir binding yoluyla birbirine bağlanır ve kalıcılık mekanizması WMI reposuna yüklenir.

Bu üç adım, genellikle MOF dosyasına yazılır. Daha da gizli olmak için PowerShell Set-Wmilnstance veya Createlnstance da kullanılabilir.

WMI Ataklarının Tespiti ve Tehdit Avı Senaryoları


wmic process call create

/node

Invoke-WmiMethod/Invoke-CimMethod

Wmiprvse.exe’nin olağandışı parent-child processleri

Scrcons.exe (ActiveScriptConsumer)


    1- WMI'yı tespit etmek istiyorsanız, ilk önceliğiniz kesinlikle komut satırı denetimi almak olmalıdır. Yeni nesil uç nokta tespit ve müdahale araçlarının çoğu, tüm komut satırlarını kaydetmeye yönelik yetenekler içerir.




    2- PowerShell Kullanımı: Aşağıdaki komutlar WMI Event Filters, Consumers ve Binding ‘leri toplamak için kullanılabilir. Microsoft dökümanlarında ve saldırılarda görülen event consumerların çoğu, standart "root/Subscription" namespace’ini kullanır, ancak aynı kalıcılığı "root/Default" namespace’ine katarak gerçekleştirmek mümkündür.

Get-WMIObject -Namespace root\Subscription -Class __EventFilter

Get-WMIObject -Namespace root/Subscription -Class __EventConsumer

Get-WMIObject -Namespace root/Subscription -Class __FilterToConsumerBinding

Get-WMIObject -Namespace root/Default -Class __EventFilter

Get-WMIObject -Namespace root/Default -Class __EventConsumer

Get-WMIObject -Namespace root/Default -Class __FilterToConsumerBinding









WMI kalıcılık bileşenlerini kaldırmak için aşağıdaki komutlar uygulanabilir. (Remove-WmiObject)

Get-WMIObject -Namespace root\Subscription -Class __EventConsumer | Remove-WmiObject -Verbose

Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding | Remove-WmiObject -Verbose

Get-WMIObject -Namespace root\Subscription -Class __EventFilter” | Remove-WmiObject -Verbose

Ayrıca, birçok kalıcılık mekanizmasını bulmaya ve kaldırmaya yarayan AutoRun programı aracılığıyla da WMI kalıcılıkları bulunabilir ve kaldırılabilir.



(CommandLineEventConsumer: bir event filter’ın (tetikleyici) payload’unun çalıştırılabilir olmasına izin verir. Evil.exe gibi zararlı bir yürütülebilir dosya veya parametrelerle birlikte rundll32.exe veya powershell.exe gibi daha karmaşık bir şey görebilirsiniz.)

(ActiveScriptEventConsumer: Diskteki bir scripte giden yolu veya yalnızca script metnini kullanarak inanılmaz derecede esnektirler. Visual Basic veya JScript, bu tür consumerlar için desteklenen iki betik dilidir.)

    3- Şüpheli WMI etkinliğini tespit etmek için başka bir özellik, bir sistem üzerinde çalışan processlerdir.

Bir process ağacı aracılığıyla parent-child process ilişkilerini analiz ederek, genellikle anormal kalıplar türetebiliriz. Standart WMI işlemi wmiprvse.exe'dir. Parent process’i svchost.exe processi olmalıdır. Olağandışı child ve parent process ilişkileri şüphelidir.

Eğer wmiprvse'nin W3WP (IIS Webserver process) gibi bir parent process ile çalıştığını görürseniz, bu anormal olur ve webshell etkinliğinin bir göstergesi olabilir. Registry’de şüpheli bir aktivite gerçekleştiren bir komut istemi oluşturan wmiprvse kombinasyonu, bir analistin bir EDR aracında potansiyel bir compromise’a karşı uyarmak için tam olarak görebileceği bir aktivitedir.





    4- scrcons.exe: ActiveScriptConsumer çalışıtırldığında, child process olarak scrcons.exe processi görülür. scrcons.exe’nin child processlerinde cmd.exe,regsvr32.exe,dllhost.exe,powershell.exe gibi processlerin görülmesi durumu şüphelidir.


KAYNAKLAR

https://www.sans.org/blog/wmic-for-incident-response/

https://learn.microsoft.com/en-us/windows/win32/wmisdk/monitoring-events?redirectedfrom=MSDN

https://medium.com/threatpunter/detecting-removing-wmi-persistence-60ccbb7dff96

https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns

Yorum Gönder

0 Yorumlar