ZAYOTEM
WMI (Windows Management Instrumentation, Windows Yönetim Araçları); 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. 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 bulunmaktadır.
Sisteminizde bulunan bilgisayarların Donanımsal ya da Yazılımsal bilgilerine ulaşmak ve ulaşılan bu değerlerle müdahalede bulunmak için kullanılan sorgulardır
En basit örnek olarak bilgisayarda process çalıştırabilir ya da kapatabiliriz.
CIM (Common Information Model, Ortak Bilgi Modeli). bir işletmenin/ağın/sistemin farklı bölümleri hakkında bilgi içeren genişletilebilir, nesne yönelimli bir veri modelidir. 3 farklı sınıfı vardır.
Çekirdek sınıflar, tüm yönetim alanları için geçerli olan yönetilen nesneleri temsil eder. Bu sınıflar, yönetilen sistemleri analiz etmek ve tanımlamak için temel bir wordlist barındırır.
__Parameters ve __SystemSecurity sınıfları, çekirdek sınıfların örnekleridir.
Ortak sınıflar, belirli yönetim alanları için geçerli olan nesneleri temsil eder. Bununla birlikte, ortak sınıflar belirli bir uygulamadan veya teknolojiden bağımsızdır. Ortak sınıflar, çekirdek sınıfların bir uzantısıdır. CIM_UnitaryComputerSystem sınıfı, ortak bir sınıf örneğidir.
Kısacası belirli alanları yöneten çekirdek gibi davranan sınıflardır.
Genişletilmiş sınıflar, bazı özel eklemeler ile ortak sınıfları temsil eder.
Örnek olarak, Çekirdek Sınıf: Etçiller, Ortak Sınıf: Kedigiller, Genişletilmiş Sınıf: Kaplan
Genişletilmiş bir sınıf tipik olarak UNIX veya Microsoft Win32 ortamı gibi belirli bir platform için geçerlidir. Win32_ComputerSystem sınıfı, genişletilmiş bir sınıf örneğidir ve sadece Windows’a özgüdür. Bizi asıl ilgilendiren kısım bu sınıflardır.
Genellike sistem yöneticileri, sistemi kontrol altına almak, belirli işleri otomatize etmek ve uzaktan sistemi kontrolü için kullanırlar.
Aynı iş farklı amaç. Bazı örnekleri ise; Uzaktan sistemi kontrol etmek, güvenlik ayarlarını değiştirmek, sistem hakkında bilgi toplamak, kullanıcı ve grup yetkilerini değiştirmek, sistem ayarlarını bozmak veya değiştirmek, processleri zamanlayarak istenilen zamanda çalıştırmak, kod çalıştırmak
WMI Query Language (SQL For WMI), Bildiğimiz SQL mantığında çalışan bir sorgu dilidir.
Örnek bi WQL sorgusu: SELECT * FROM Win32_Service WHERE State='Stopped'
Senkron sorgu: küçük sorgular veya yerel bir sisteme yapılan sorgular için iyidir.
Asenkron sorgu: Asenkron sorgular daha karmaşıktır ve daha düşük düzeyde güvenlik sağlar, ancak genellikle sistem performansını iyileştirir.
Bu sorgu türü sadece 1 adet interface gerektirir. Bu nedenle de asenkron sorguya göre kullanması kolaydır. Fakat senkron sorgu, uygulama bir network üzerinden büyük sorgular yaparken kilitlenmesine sebep olabilir. Daha çok küçük sorgular için tavsiye edilir.
Asenkron sorgu, kodlamak zor olsa da, sistem veya ağ performansının büyük bir veri grubunun sorgulanmasından etkileneceği durumlarda tercih edilen sorgu türüdür. Fakat düzgün ayarlanmadığı zaman performans artışı yerine düşüş yaşanabilir. Kullanmak için programlama dillerini belirli bir seviyede bilmek gerekir.
Örnek kullanım alanları;
Senkron sorgu: Bir Trojan zararlısı, zararlı linkten payload indirmek için senkron sorgu kullanması daha mantıklıdır.
Asenkron sorgu: Bir Worm zararlısı, bağlı olduğu ağdaki sistemlere bulaşmak için bu sorguyu kullanırsa hem daha verimli hem de sıkıntı yaşama ihtimalini düşürür.
Şüphelendiğimiz bir zararlı, wmic.exe’ye şüpheli bir parametre gönderip çalıştırıyorsa WMI kullandığını söyleyebiliriz.
Örnek olarak: wmic.exe shadowcopy delete parametresi ile zararlı, sistemde ki shadow dosyaları silebilmektedir.
Zararlılar, Win32_ComputerSystem sorgusunu yapıp dönüş değerine bakarak kendisinin Vmware, VirtualBox gibi sanallaştırma ortamlarında çalıştıklarını anlayabilirler
Miner Downloader zararlısı, wmi sorgularını kullanarak internete bağlı olup olmadığını anlayabilmektedir.
winmgmts:{impersonationLevel=Impersonate}!\\.\root\CIMV2:Win32_PingStatus.Address= ‘www.google.com’
Not: impersonationLevel, WMI’ya bağlanmak için kullanılacak seviyeyi belirtir. Impersonate seviyesi WMI sorguları yapmak için önerilen seviyedir.
WMI sorgularını bir çok şekilde çalıştırabiliriz; Powershell, Powershell Script, VBScript, C/C++, Python, WMI Test Tool (WBEMTest.exe), Third Party Services (SolarWinds vs.)