Post

PowerShell "WMI, CIM, GWMI, WinRM, PsRemoting, RPC, WS-Management"

PowerShell "WMI, CIM, GWMI, WinRM, PsRemoting, RPC, WS-Management"

WMI (Windows Management Instrumentation), CIM (Common Information Model), GWMI (Get-WmiObject), WinRM (Windows Remote Management), PSRemoting (PowerShell Remoting), RPC (Remote Procedure Call) ve WS-Management (Web Services for Management) Windows tabanlı sistemlerde "uzaktan yönetim" ve "bilgi alışverişi" için kullanılan protokol ve araçları içeren bir dizi teknolojidir.

  • WMI: (Windows Management Instrumentation), sistem yönetimi için bir altyapı sağlayan Microsoft teknolojisidir. WMI, Windows işletim sistemine dahil edilmiştir ve bilgisayar kaynaklarını yönetmek için kullanılabilir. WMI, özellikle uzak bilgisayarlardaki sistem bilgilerini toplamak ve yönetmek için kullanışlıdır.
  • CIM: (Common Information Model), sistem yönetimi için bir standarttır. CIM, WMI gibi teknolojilerin de temelini oluşturur ve sistemlerdeki bilgi ve kaynakların yönetimi için standart bir model sağlar. CIM, farklı işletim sistemleri ve cihazlar arasında biletişimi kolaylaştırarak, sistem yönetimini standartlaştırmak ve basitleştirmek için kullanışlıdır.
  • GWMI (Get-WMIObject): PowerShell üzerinde WMI sorgularını çalıştırmak için kullanılır. GWMI, özellikle uzak bilgisayarlardaki sistem bilgilerini toplamak ve yönetmek için kullanışlıdır. GWMI ile, WMI sınıflarına ve özelliklerine erişebilir ve bu özelliklerin değerlerini alabilirsiniz.
  • RPC:RPC (Remote Procedure Call), genellikle bir programlama dilinin işlevlerini uzaktaki bir sunucuda çağırmak ve çalıştırmak için kullanılan bir protokoldür. RPC tabanlı işlemler, belirli bir programlama diline veya platforma bağlı olarak farklı komutlara sahip olabilir. Örneğin, Python'da RPC komutları farklı olabilirken, Java'da farklı olabilir.
  • WinRM: WinRM (Windows Remote Management), Microsoft Windows işletim sisteminde uzaktan yönetimi sağlayan bir yönetim protokolüdür. WinRM, sistem yöneticilerinin uzaktaki Windows tabanlı sistemleri uzaktan yönetmelerine ve komutları çalıştırmalarına olanak tanır. Unix tabanlı sistemlerde kullanılan SSH'nin benzeri şekilde, Windows tabanlı sistemler için standartlaştırılmış iletişim sağlar. PowerShell, WinRM'i uzaktan yönetim görevleri için kullanabileceğiniz Enter-PSSession ve Invoke-Command gibi cmdlet'lerle sağlar. Bu cmdlet'leri kullanarak yöneticiler uzaktan oturumlar oluşturabilir, komutları çalıştırabilir ve uzaktaki Windows makinelerinden sonuçları alabilir.
  • PSRemoting:PSRemoting, PowerShell Uzaktan Yönetimi anlamına gelir ve PowerShell'in uzaktaki bilgisayarlar üzerinde komutlar çalıştırma ve yönetim görevlerini gerçekleştirme yeteneğini ifade eder. PSRemoting, WinRM (Windows Remote Management) protokolünü kullanarak uzaktaki Windows makineleri ile iletişim kurar ve bu sayede uzaktaki sistemlere komutlar göndererek işlemleri gerçekleştirir.
  • WS-Management: WS-Management (Web Services for Management) veya WS-Man, ağ üzerinde sistem yönetimi için kullanılan bir web hizmetleri tabanlı protokoldür. WS-Management, Microsoft ve diğer şirketler tarafından geliştirilmiş ve DMTF (Distributed Management Task Force) tarafından standartlaştırılmıştır. Bu protokol, sistemler arasında veri ve komut değişimi yapmak için SOAP (Simple Object Access Protocol) ve XML tabanlı mesajlaşma kullanır. "WS-Management" uzaktan yönetim ve izleme işlemlerini destekler. Bir ağdaki sistemleri ve cihazları uzaktan izlemek, yapılandırmak ve yönetmek için kullanılır.

WMI, CIM, GWMI, WinRM, RPC, PSRemoting ve WS-Management için yaygın olarak kullanılan portlar:

WMI (Windows Management Instrumentation):
TCP 135: WMI, RPC (Remote Procedure Call) üzerinden hizmete bağlanmak için bu portu kullanır.
Dinamik Portlar: WMI, RPC istemci ve sunucu tarafında dinamik olarak bir port aralığı seçer. Bu port aralığı genellikle 49152 ile 65535 arasındadır.

CIM (Common Information Model):
CIM, doğrudan bir port kullanmaz. WMI gibi, CIM de RPC (Remote Procedure Call) aracılığıyla çalışır ve TCP 135 üzerinden hizmete bağlanır.

GWMI (Get-WmiObject):
GWMI, WMI sorguları yapmak için kullanılan PowerShell cmdlet'lerinden biridir. GWMI'nın doğrudan bir portu yoktur. WMI'ın kullandığı portlarla iletişim kurar.

WinRM (Windows Remote Management):
TCP 5985: WinRM varsayılan olarak HTTP üzerinden çalışır ve bu portu kullanır. Bu port, HTTP üzerinden metinsel verileri şifrelenmeden ileten açık bir porttur.
TCP 5986: WinRM, HTTPS üzerinden çalıştırıldığında bu portu kullanır. Bu port, verilerin şifrelenmesini sağlar ve daha güvenlidir.

PSRemoting (PowerShell Remoting):
PSRemoting, WinRM protokolünü kullandığından, PSRemoting portları da WinRM portları ile aynıdır.
TCP 5985: HTTP üzerinden çalışan PSRemoting için kullanılır.
TCP 5986: HTTPS üzerinden çalışan PSRemoting için kullanılır.

RPC (Remote Procedure Call):
TCP 135: RPC hizmeti için kullanılır.
Dinamik yüksek portlar (49152-65535): RPC sunucuları ve istemcileri arasında dinamik olarak atanır.

WS-Management (Web Services for Management):
TCP 5985: WinRM protokolü üzerinden WS-Management hizmetini "HTTP" üzerinden çalıştırmak için kullanılır.
TCP 5986: WinRM protokolü üzerinden WS-Management hizmetini "HTTPS" üzerinden çalıştırmak için kullanılır.

***Not: Yukarıda belirtilen port numaraları varsayılan portlardır. Sistem yöneticileri ve güvenlik politikaları, bu port numaralarını değiştirebilir veya kısıtlayabilir

PowerShell Üzerinde Örnek Sorgular:

#Uzak bir bilgisayarda etkileşimli bir PowerShell oturumu açmak:
Enter-PSSession -ComputerName MUHASEBE-03
#Uzak bir bilgisayarda yeni bir dosya oluşturma:
New-Item -Path "\\RemoteComputerName\C$\Temp" -Name "NewFile.txt" -ItemType File
#MUHASEBE-03 adlı uzaktaki bilgisayarda "Get-Process" komutunu çalıştırır işlem listesini alır.
Invoke-Command -ComputerName MUHASEBE-03 -ScriptBlock { Get-Process }
#Uzak bir bilgisayarda yeni bir dosya oluşturma ve içeriğini düzenleme:
$filePath = "\\MUHASEBE-03\C$\users\ayse\desktop\indexed.php"
$content = @"
<?php
echo "Hello, world!";
?>
"@

Set-Content -Path $filePath -Value $content
#Bu komut uzak sunucu üzerinde yüklü olan yazılımların bir listesini döndürecektir.
$ComputerName = "MUHASEBE-03"
$SoftwareList = Get-WmiObject -Class Win32_Product -ComputerName $ComputerName | Select-Object Name, Version, Vendor, InstallDate, Product
$SoftwareList
#Uzak bir bilgisayarın açık TCP bağlantılarını görüntüleme:
Get-NetTCPConnection -ComputerName "MUHASEBE-03" | Where-Object { $_.State -eq "Established" } | Select-Object -Property LocalAddress,LocalPort,RemoteAddress,RemotePort
#Uzak bir bilgisayarın sistem bilgisini görüntüleme:
Get-WmiObject -Class Win32_ComputerSystem -ComputerName "MUHASEBE-03" | Select-Object -Property Name,Manufacturer,Model,TotalPhysicalMemory
#Uzak bir bilgisayardaki Windows günlük kayıtlarını görüntüleme:
Get-EventLog -LogName System -ComputerName "MUHASEBE-03" | Select-Object -Property TimeGenerated,Message
#Uzak bir bilgisayardaki etkin oturumları görüntüleme:
Get-CimInstance -ClassName Win32_LogonSession -ComputerName "MUHASEBE-03" | Select-Object -Property LogonId
#Uzak bir bilgisayarda kullanıcı hesaplarını listeleme:
Get-WmiObject -Class Win32_UserAccount -ComputerName "MUHASEBE-03"
#Uzak bir bilgisayarda kullanıcı hesaplarını listeleme:
Get-WmiObject -Class Win32_UserAccount -ComputerName "MUHASEBE-03"
#Uzak bir bilgisayarın belirli bir kullanıcısının oturumunu kapatma:
Invoke-WmiMethod -Class Win32_OperatingSystem -Name Win32Shutdown -ArgumentList 4 -ComputerName "MUHASEBE-03" -Credential (Get-Credential)
#Uzak bir bilgisayarda bir programı kaldırma:
$program = Get-WmiObject -Class Win32_Product -Filter "Name='ProgramName'" -ComputerName "MUHASEBE-03"
$program.Uninstall()
#Yerel bilgisayarınızın disk kullanımını görüntüleme:
Get-Volume | Select-Object -Property DriveLetter,FileSystemLabel,Size,UsedSpace,DriveType | Sort-Object -Property DriveType,DriveLetter
Yerel bir kullanıcının oturum açma istatistiklerini almak için "Get-WinEvent" kullanmak:
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624;Level=0;StartTime=(Get-Date).AddDays(-7)} | Where-Object {$_.Properties[5].Value -eq 'username'} | Select-Object TimeCreated,
Message

ve daha niceleri...

Umarım faydalı olmuştur – I hope it was helpful

This post is licensed under CC BY 4.0 by the author.