WINDOWS MANAGEMENT INSTRUMENTATION (WMI)
Windows Management Instrumentation (WMI), bilgisayarların daha iyi yönetilmesine olanak tanıyan, Windows sistemleri söz konusu olduğunda hızlı ve verimli yönetim için tasarlanmış Microsoft’un bir dizi özelliğidir ve Windows’ta yerleşik bir teknolojidir. WMI, Microsoft’un endüstri standardı Web Tabanlı Kurumsal Yönetim (WBEM) protokolünün uygulamasıdır. WMI, hem kodlanabilir hem de programlanabilir arabirimlere sahiptir.
WMI; Windows işletim sistemlerinde nesnelerin kontrol edilebilmesini sağlayan, işletim sistemindeki operasyonları ve yönetim işlevlerini gerçekleştirebilen bir teknolojidir. Tüm bu işleri bünyesindeki 900’e yakın sınıf sayesinde gerçekleştirebilir. Bu sınıfların her birinde çeşitli amaçlara yönelik olarak hazırlanmış fonksiyonlar bulunur. Bu fonksiyonlarla birlikte WMI, birçok işlevi yerine getirebilir. WMI, geniş bir Windows yönetim verisi ve yöntemi koleksiyonuna tek tip bir erişim mekanizması sağlar. WMI, bilgisayarların durumlarını toplamak, ayarları yapılandırmak, uygulamaları çalıştırmak ve kod yürütmek gibi pek çok şeyi yapabilme özelliğine sahiptir.
Namespaces (Ad Alanları): Ad alanı, WMI ile ilgili sınıflar için bir kapsayıcı görevi görür. Buna bir örnek verecek olursak, içinde resimlerin olduğu bir “Resim Klasörü” olarak düşünebiliriz. Tüm ad alanları, ROOT ad alanı altında bulunur. Tüm ad alanları ROOT ad alanından türetilir ve Microsoft, bir ad alanı açıkça belirtilmediğinde bir komut dosyası dilinden nesneleri sorgularken varsayılan ad alanı olarak ROOT\CIMV2 kullanır.
Classes (Sınıflar): Bir WMI sınıfı, sisteminizdeki belirli bir öğeyi temsil eder. İşletim sistemindeki operasyonları yönetebilmek için sınıflar kullanılır. Sınıflar, WMI sağlayıcıları tarafından verileri WMI hizmetlerine geçirmek için, verilerin gerçek olarak ayarlanmasına, incelenmesine ve yakalanmasına izin veren olaylar ve özellikler içerirler.
Sıkça kullanılan WMI sınıfları:
- Get-WmiObject -Class Win32_BIOS
- Get-WmiObject -Class Win32_ComputerSystem
- Get-WmiObject -Class Win32_OperatingSystem
WMI YAPISI
Clients (İstemciler): İstemciler, verileri sorgulamak, çeşitli işlemleri yapmak için WMI sınıfları ile etkileşime girerler. Built-in fonksiyonlardır. Microsoft işletim sistemlerinde gömülü olarak gelirler. Çalıştırmak için herhangi bir toola gerek duyulmaz.
wmic.exe
WMIC.exe, Windows Yönetim Araçlarına komut satırı erişimine izin veren yerleşik bir Microsoft programıdır. Bu aracı kullanarak yöneticiler, yüklü donanım ve Windows ayarları hakkında ayrıntılı bilgi için işletim sistemini sorgulayabilir, yönetim görevlerini çalıştırabilir ve hatta diğer programlar veya komutlar çalıştırılabilir.
Powershell
PowerShell, WMI ile etkileşim kurmak için zengin işlevsellik içeren güçlü bir komut dosyası dilidir. PowerShell sürüm 3’ten itibaren, WMI ile etkileşim kurmak için kullanılabilir. PowerShell, WMI’ye doğrudan erişebilir, böylece donanım bileşenlerini sorgulamak, sistem sağlığını kontrol etmek veya yapılandırmayı otomatikleştirmek için komut satırları yazılabilir.
Windows Scripting Host (WSH)
Windows masaüstünden hem de komut isteminden komut dosyaları çalıştırmanıza olanak tanır. Tüm Microsoft işletim sistemlerinde yerleşik olarak bulunur. WSH, oturum açma komut dosyası oluşturma, yönetim komut dosyası oluşturma ve makine otomasyonu gibi etkileşimli olmayan komut dosyası oluşturma ihtiyaçları için idealdir. Küçük belleğe sahip olduğu için WSH, basit ve hızlı görevleri gerçekleştirmek için uygundur. Varsayılan olarak, desteklenen iki komut dosyası dili vardır, bunlar JScript ve VBScript‘tir. Aslında herhangi bir metin düzenleyiciyi açıp komut dosyalarını yazabilir ve *.vbs veya *.js olarak kaydedilebilir.
wbemtest.exe
Wbemtest.exe arayüzü olan WMI aracıdır. Nesne örneklerini numaralandırabilir, sorgular gerçekleştirebilir, olayları kaydedebilir, WMI nesnelerini ve sınıflarını değiştirebilir ve yöntemleri hem yerel hem de uzaktan çağırabilir.
winrm.exe
Winrm.exe, WMI nesne örneklerini numaralandırmak, yöntemleri çağırmak ve WinRM hizmetini çalıştıran yerel ve uzak makinelerde nesne örnekleri oluşturmak ve kaldırmak için kullanılabilir. winrm.exe, WinRM ayarlarını yapılandırmak için de kullanılabilir.
winrs.exe
Windows Remote Shell (WinRS), bir komut satırı aracıdır. WinRM etkinleştirilirse, bir ana bilgisayarda uzaktan komut yürütmek için kullanılabilir.
Query Languages: WMI hizmetlerini sorgulamak için WQL (Windows Management Instrumentation Query Language) bulunur. WQL, basit anlamda WMI için SQL sözdizimidir.
WMI Repository (WMI Deposu): Sınıfların tüm statik verilerini saklayan veritabanlarıdır. WMI veritabanının birincil işlevi, bilgi işlem operasyonları yönetimi için altyapı yönetim hizmetleri sağlamaktır. Depolar, sınıfları, yapıyı, ad alanlarını (namespace) vb. tanımlayan MOF (Yönetilen Nesne Biçimi) dosyaları tarafından tanımlanır. Veritabanı dosyaları;
%WINDIR%\System32\Wbem\Repository dizini altında bulunur.
MOF Files (MOF Dosyaları): MOF dosyaları WMI ad alanlarını, sınıfları, sağlayıcıları vb. tanımlamak için kullanılır. .mof uzantılı dosyalar %WINDIR%\System32\Wbem dizini altında bulunur. MOF Dosyaları, WMI veritabanındaki objelerin tutulduğu formattır.
WMI Providers (WMI Sağlayıcıları): WMI Sağlayıcıları, Windows tarafından yönetilebilen nesneler hakkındaki bilgileri kullanıma sunar. WMI’ın belkemiği denilebilir. Depolarda tanımlanan her şeye WMI sağlayıcılarının yardımı ile erişilebilir. Sağlayıcı, bir nesneden WMI’ya veri sağlar ve WMI’dan da nesneye iletileri işler. WMI sağlayıcısı, sınıfları tanımlayan bir DLL ve MOF dosyasından oluşur.
WMI Service (winmgmt): WMI servisi, WMI sisteminin Windows’taki uygulamasıdır ve WMI sağlayıcıları, WMI deposu ve uygulamaları yönetme arasında aracı görevi gören bir işlemdir. İşletim sistemi, cihazlar, uygulamalar ve hizmetler hakkında yönetim bilgilerine erişmek için ortak bir arayüz ve nesne modeli sağlar. WMI, geliştiricilerin ve BT yöneticilerinin belirli görevleri otomatikleştirmek için komut dosyaları ve uygulamalar yazmasına olanak tanıyan Windows işletim sisteminin temel bir bileşenidir. Başlangıçta otomatik olarak çalışır.
REMOTE ACCESS (UZAKTAN ERİŞİM)
WMI, uzak bilgisayarlara bağlanmak için iki protokolü desteklemektedir:
- DCOM (Dağıtılmış COM)
- WinRM (Windows Uzaktan Yönetim)
DCOM daha eski teknolojidir ve günümüzde pek tercih edilmemektedir. Birçok sunucuda varsayılan olarak etkinleştirilmiş olsa da, eski olduğu kabul edilir.
WinRM, web hizmeti tabanlı modern bir protokoldür ve PowerShell 3’te kullanıma sunulmuştur. Son zamanlarda WinRM, Windows için önerilen uzaktan yönetim protokolü olarak DCOM ‘un yerini almıştır. Daha güvenilir ve daha hızlıdır. WinRM, Web Services Management (WSMan) spesifikasyonu üzerine kurulmuştur. Karşı bilgisayar ile iletişim kurabilmek için aynı portların ve WMI servisinin açık olması gerekir.
WMI KÖTÜYE KULLANIMI
WMI, saldırganlar için son derece güçlü bir araçtır. Keşif, AV algılama, kod yürütme, yanal hareket, gizli veri depolama ve kalıcılığa kadar her şeyi gerçekleştirmek için son derece güçlü olabilecek çok sayıda WMI nesnesi, yöntemi ve olayı vardır.
WMI, iyi amaçlı kullanımı dışında kötü amaçlı kullanım imkanı da sunabilir. Saldırganlar genellikle WMI’yi;
- Keşif,
- Hedef sistemde kalıcılık sağlamak,
- Kötü amaçlı komut dosyaları çalıştırmak ve daha fazlası için kötüye kullanabilir.
Ayrıca, WMI mevcut tüm Windows işletim sistemi sürümlerinde mevcuttur, bu nedenle tehdit aktörlerinin hedeflerinin geniş bir alana yayılmış olması bu konuyu daha da tehlikeli hale getirmektedir. Diğer bir yandan bu teknolojinin kötü niyetli kullanımını tespit etmesi zor olduğu için tercih etmeleri kaçınılmaz oluyor.
WMI SALDIRILARINI ÖNLEME
- Sistem yöneticileri WMI hizmetini devre dışı bırakabilir. Bir kuruluşun WMI kullanması önemlidir ancak WMI hizmetini durdurmanın, istenmeyen yan etkilerini göz önünde bulundurması gerekebilir.
- WMI’ın bağlantı noktaları engellenebilir. Uzak cihazlardan WMI’a bağlanma özelliğini devre dışı bırakarak kullanmak WMI’yi uzaktan engeller, ancak hizmetin yerel olarak çalışmasına izin verir. Bu çözüm önerisi tamamen devre dışı bırakmaktan daha iyidir.