Translated ['src/network-services-pentesting/135-pentesting-msrpc.md'] t

This commit is contained in:
Translator 2025-07-17 22:09:47 +00:00
parent 46fc97ef24
commit 7a6857d6a9

View File

@ -12,7 +12,7 @@ RPC एंडपॉइंट मैपर को TCP और UDP पोर्ट
``` ```
## MSRPC कैसे काम करता है? ## MSRPC कैसे काम करता है?
क्लाइंट एप्लिकेशन द्वारा शुरू किया गया, MSRPC प्रक्रिया में एक स्थानीय स्टब प्रक्रिया को कॉल करना शामिल है जो फिर क्लाइंट रनटाइम लाइब्रेरी के साथ इंटरैक्ट करती है ताकि सर्वर को अनुरोध तैयार और भेजा जा सके। इसमें मानक नेटवर्क डेटा प्रतिनिधित्व प्रारूप में पैरामीटर को परिवर्तित करना शामिल है। यदि सर्वर दूरस्थ है, तो परिवहन प्रोटोकॉल का चयन रनटाइम लाइब्रेरी द्वारा किया जाता है, यह सुनिश्चित करते हुए कि RPC नेटवर्क स्टैक के माध्यम से वितरित किया गया है। क्लाइंट एप्लिकेशन द्वारा शुरू किया गया, MSRPC प्रक्रिया एक स्थानीय स्टब प्रक्रिया को कॉल करने में शामिल होती है जो फिर क्लाइंट रनटाइम लाइब्रेरी के साथ इंटरैक्ट करती है ताकि सर्वर को अनुरोध तैयार और भेजा जा सके। इसमें पैरामीटर को एक मानक नेटवर्क डेटा प्रतिनिधित्व प्रारूप में परिवर्तित करना शामिल है। यदि सर्वर दूरस्थ है, तो परिवहन प्रोटोकॉल का चयन रनटाइम लाइब्रेरी द्वारा किया जाता है, यह सुनिश्चित करते हुए कि RPC नेटवर्क स्टैक के माध्यम से वितरित किया गया है।
![https://0xffsec.com/handbook/images/msrpc.png](https://0xffsec.com/handbook/images/msrpc.png) ![https://0xffsec.com/handbook/images/msrpc.png](https://0xffsec.com/handbook/images/msrpc.png)
@ -34,16 +34,16 @@ use auxiliary/scanner/dcerpc/management
use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
rpcdump.py <IP> -p 135 rpcdump.py <IP> -p 135
``` ```
सभी विकल्पों को छोड़कर `tcp_dcerpc_auditor` विशेष रूप से पोर्ट 135 पर MSRPC को लक्षित करने के लिए डिज़ाइन किए गए हैं। All options except `tcp_dcerpc_auditor` are specifically designed for targeting MSRPC on port 135.
#### उल्लेखनीय RPC इंटरफेस #### Notable RPC interfaces
- **IFID**: 12345778-1234-abcd-ef00-0123456789ab - **IFID**: 12345778-1234-abcd-ef00-0123456789ab
- **Named Pipe**: `\pipe\lsarpc` - **Named Pipe**: `\pipe\lsarpc`
- **Description**: LSA इंटरफेस, जिसका उपयोग उपयोगकर्ताओं की गणना करने के लिए किया जाता है। - **Description**: LSA इंटरफेस, जिसका उपयोग उपयोगकर्ताओं की सूची बनाने के लिए किया जाता है।
- **IFID**: 3919286a-b10c-11d0-9ba8-00c04fd92ef5 - **IFID**: 3919286a-b10c-11d0-9ba8-00c04fd92ef5
- **Named Pipe**: `\pipe\lsarpc` - **Named Pipe**: `\pipe\lsarpc`
- **Description**: LSA डायरेक्टरी सेवाएँ (DS) इंटरफेस, जिसका उपयोग डोमेन और ट्रस्ट संबंधों की गणना करने के लिए किया जाता है। - **Description**: LSA डायरेक्टरी सेवाएँ (DS) इंटरफेस, जिसका उपयोग डोमेन और ट्रस्ट संबंधों की सूची बनाने के लिए किया जाता है।
- **IFID**: 12345778-1234-abcd-ef00-0123456789ac - **IFID**: 12345778-1234-abcd-ef00-0123456789ac
- **Named Pipe**: `\pipe\samr` - **Named Pipe**: `\pipe\samr`
- **Description**: LSA SAMR इंटरफेस, जिसका उपयोग सार्वजनिक SAM डेटाबेस तत्वों (जैसे, उपयोगकर्ता नाम) तक पहुँचने और उपयोगकर्ता पासवर्ड को ब्रूट-फोर्स करने के लिए किया जाता है, चाहे खाता लॉकआउट नीति कुछ भी हो। - **Description**: LSA SAMR इंटरफेस, जिसका उपयोग सार्वजनिक SAM डेटाबेस तत्वों (जैसे, उपयोगकर्ता नाम) तक पहुँचने और उपयोगकर्ता पासवर्ड को ब्रूट-फोर्स करने के लिए किया जाता है, चाहे खाता लॉकआउट नीति कुछ भी हो।
@ -63,29 +63,84 @@ rpcdump.py <IP> -p 135
- **Named Pipe**: `\pipe\epmapper` - **Named Pipe**: `\pipe\epmapper`
- **Description**: DCOM इंटरफेस, जिसका उपयोग ब्रूट-फोर्स पासवर्ड ग्राइंडिंग और WM के माध्यम से जानकारी एकत्र करने के लिए किया जाता है। - **Description**: DCOM इंटरफेस, जिसका उपयोग ब्रूट-फोर्स पासवर्ड ग्राइंडिंग और WM के माध्यम से जानकारी एकत्र करने के लिए किया जाता है।
### IP पते की पहचान करना ### Identifying IP addresses
[https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver) का उपयोग करते हुए, [Airbus research](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/) से आता है, _**IOXIDResolver**_ इंटरफेस के अंदर _**ServerAlive2**_ विधि का दुरुपयोग करना संभव है। Using [https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver), comes from [Airbus research](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/) is possible to abuse the _**ServerAlive2**_ method inside the _**IOXIDResolver**_ interface.
इस विधि का उपयोग HTB बॉक्स _APT_ से **IPv6** पते के रूप में इंटरफेस जानकारी प्राप्त करने के लिए किया गया है। 0xdf APT लेखन के लिए [यहाँ](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) देखें, इसमें _stringbinding_ का उपयोग करते हुए [Impacket](https://github.com/SecureAuthCorp/impacket/) से rpcmap.py का एक वैकल्पिक तरीका शामिल है (ऊपर देखें)। This method has been used to get interface information as **IPv6** address from the HTB box _APT_. See [here](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) for 0xdf APT writeup, it includes an alternative method using rpcmap.py from [Impacket](https://github.com/SecureAuthCorp/impacket/) with _stringbinding_ (see above).
### मान्य क्रेडेंशियल्स के साथ RCE निष्पादित करना ### Executing a RCE with valid credentials
यदि एक मान्य उपयोगकर्ता के क्रेडेंशियल्स उपलब्ध हैं, तो मशीन पर दूरस्थ कोड निष्पादित करना संभव है, [dcomexec.py](https://github.com/fortra/impacket/blob/master/examples/dcomexec.py) का उपयोग करके impacket ढांचे से। It is possible to execute remote code on a machine, if the credentials of a valid user are available using [dcomexec.py](https://github.com/fortra/impacket/blob/master/examples/dcomexec.py) from impacket framework.
**विभिन्न उपलब्ध वस्तुओं के साथ प्रयास करना याद रखें** **Remember to try with the different objects available**
- ShellWindows - ShellWindows
- ShellBrowserWindow - ShellBrowserWindow
- MMC20 - MMC20
## पोर्ट 593 ## Port 593
[rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) से **rpcdump.exe** इस पोर्ट के साथ इंटरैक्ट कर सकता है। The **rpcdump.exe** from [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) can interact with this port.
### स्वचालित इंटरफेस गणना और गतिशील क्लाइंट जनरेशन (NtObjectManager) ## Automated Fuzzing of MSRPC Interfaces
PowerShell गुरु **James Forshaw** ने ओपन-सोर्स *NtObjectManager* मॉड्यूल के अंदर अधिकांश Windows RPC आंतरिकताओं को उजागर किया। इसका उपयोग करके आप किसी भी RPC सर्वर DLL / EXE को सेकंडों में **पूर्ण विशेषताओं वाले क्लाइंट स्टब** में बदल सकते हैं - कोई IDL, MIDL या मैनुअल अनमार्शलिंग की आवश्यकता नहीं है। MS-RPC interfaces expose a large and often undocumented attack surface. The open-source [MS-RPC-Fuzzer](https://github.com/warpnet/MS-RPC-Fuzzer) PowerShell module builds on James Forshaws `NtObjectManager` to *dynamically* create RPC client stubs from the interface metadata that is already present in Windows binaries. Once a stub exists the module can bombard each procedure with mutated inputs and log the outcome, making **reproducible, large-scale fuzzing of RPC endpoints possible without writing a single line of IDL**.
### 1. Inventory the interfaces
```powershell
# Import the module (download / git clone first)
Import-Module .\MS-RPC-Fuzzer.psm1
# Parse a single binary
Get-RpcServerData -Target "C:\Windows\System32\efssvc.dll" -OutPath .\output
# Or crawl the whole %SystemRoot%\System32 directory
Get-RpcServerData -OutPath .\output
```
`Get-RpcServerData` UUID, संस्करण, बाइंडिंग स्ट्रिंग्स (नामित-पाइप / TCP / HTTP) और **पूर्ण प्रक्रिया प्रोटोटाइप** को निकाल लेगा जो भी इंटरफेस इसे मिलते हैं और उन्हें `rpcServerData.json` में संग्रहीत करेगा।
### 2. फज़्ज़र चलाएँ
```powershell
'.\output\rpcServerData.json' |
Invoke-RpcFuzzer -OutPath .\output `
-MinStrLen 100 -MaxStrLen 1000 `
-MinIntSize 9999 -MaxIntSize 99999
```
संबंधित विकल्प:
* `-MinStrLen` / `-MaxStrLen` उत्पन्न स्ट्रिंग्स के लिए आकार सीमा
* `-MinIntSize` / `-MaxIntSize` उत्परिवर्तित पूर्णांकों के लिए मान सीमा (ओवरफ्लो परीक्षण के लिए उपयोगी)
* `-Sorted` प्रक्रियाओं को एक क्रम में निष्पादित करें जो **पैरामीटर निर्भरताओं** का सम्मान करता है ताकि एक कॉल के आउटपुट अगले के इनपुट के रूप में कार्य कर सकें (पहुंच योग्य पथों को नाटकीय रूप से बढ़ाता है)
फज़्ज़र 2 रणनीतियों को लागू करता है:
1. **डिफ़ॉल्ट फज़्ज़र** यादृच्छिक प्राइमिटिव मान + जटिल प्रकारों के लिए डिफ़ॉल्ट उदाहरण
2. **सॉर्टेड फज़्ज़र** निर्भरता-जानकारी क्रम (देखें `docs/Procedure dependency design.md`)
हर कॉल को `log.txt` में परमाणु रूप से लिखा जाता है; एक क्रैश के बाद **अंतिम पंक्ति तुरंत आपको दोषपूर्ण प्रक्रिया बताती है**। प्रत्येक कॉल का परिणाम तीन JSON फ़ाइलों में भी वर्गीकृत किया जाता है:
* `allowed.json` कॉल सफल रहा और डेटा लौटाया
* `denied.json` सर्वर ने *Access Denied* के साथ प्रतिक्रिया दी
* `error.json` कोई अन्य त्रुटि / क्रैश
### 3. Neo4j के साथ दृश्य बनाएं
```powershell
'.\output\allowed.json' |
Import-DataToNeo4j -Neo4jHost 192.168.56.10:7474 -Neo4jUsername neo4j
```
`Import-DataToNeo4j` JSON कलाकृतियों को एक ग्राफ संरचना में परिवर्तित करता है जहाँ:
* RPC सर्वर, इंटरफेस और प्रक्रियाएँ **नोड्स** हैं
* इंटरैक्शन (`ALLOWED`, `DENIED`, `ERROR`) **रिश्ते** हैं
Cypher क्वेरीज़ का उपयोग करके खतरनाक प्रक्रियाओं को जल्दी से पहचानने या क्रैश से पहले के कॉल की सटीक श्रृंखला को फिर से चलाने के लिए किया जा सकता है।
⚠️ फज़्ज़र *विनाशकारी* है: सेवा क्रैश और यहां तक कि BSOD की अपेक्षा करें - हमेशा इसे एक अलग VM स्नैपशॉट में चलाएँ।
### स्वचालित इंटरफेस एन्यूमरेशन और डायनामिक क्लाइंट जनरेशन (NtObjectManager)
PowerShell गुरु **James Forshaw** ने ओपन-सोर्स *NtObjectManager* मॉड्यूल के अंदर अधिकांश Windows RPC आंतरिकताओं को उजागर किया। इसका उपयोग करके आप किसी भी RPC सर्वर DLL / EXE को सेकंडों में एक **पूर्ण विशेषताओं वाला क्लाइंट स्टब** में बदल सकते हैं - कोई IDL, MIDL या मैनुअल अनमार्शलिंग की आवश्यकता नहीं है।
```powershell ```powershell
# Install the module once # Install the module once
Install-Module NtObjectManager -Force Install-Module NtObjectManager -Force
@ -123,8 +178,6 @@ $client.EfsRpcOpenFileRaw([ref]$ctx, "\\\127.0.0.1\test", 0)
``` ```
प्रमाणीकरण (Kerberos / NTLM) और एन्क्रिप्शन स्तर (`PacketIntegrity`, `PacketPrivacy`, …) को सीधे `Connect-RpcClient` cmdlet के माध्यम से प्रदान किया जा सकता है - **उच्च-विशेषाधिकार नामित पाइप** की सुरक्षा करने वाले सुरक्षा वर्णनकर्ताओं को बायपास करने के लिए आदर्श। प्रमाणीकरण (Kerberos / NTLM) और एन्क्रिप्शन स्तर (`PacketIntegrity`, `PacketPrivacy`, …) को सीधे `Connect-RpcClient` cmdlet के माध्यम से प्रदान किया जा सकता है - **उच्च-विशेषाधिकार नामित पाइप** की सुरक्षा करने वाले सुरक्षा वर्णनकर्ताओं को बायपास करने के लिए आदर्श।
---
### संदर्भ-जानकारी RPC फज़िंग (MS-RPC-Fuzzer) ### संदर्भ-जानकारी RPC फज़िंग (MS-RPC-Fuzzer)
स्थैतिक इंटरफ़ेस ज्ञान अच्छा है, लेकिन आप वास्तव में जो चाहते हैं वह है **कवरेज-गाइडेड फज़िंग** जो *संदर्भ हैंडल* और जटिल पैरामीटर श्रृंखलाओं को समझता है। ओपन-सोर्स **MS-RPC-Fuzzer** प्रोजेक्ट ठीक उसी कार्यप्रवाह को स्वचालित करता है: स्थैतिक इंटरफ़ेस ज्ञान अच्छा है, लेकिन आप वास्तव में जो चाहते हैं वह है **कवरेज-गाइडेड फज़िंग** जो *संदर्भ हैंडल* और जटिल पैरामीटर श्रृंखलाओं को समझता है। ओपन-सोर्स **MS-RPC-Fuzzer** प्रोजेक्ट ठीक उसी कार्यप्रवाह को स्वचालित करता है:
@ -143,20 +196,18 @@ Invoke-MSRPCFuzzer -Pipe "\\.\pipe\efsrpc" -Auth NTLM `
-Iterations 100000 ` -Iterations 100000 `
-OutDir .\results -OutDir .\results
``` ```
एक एकल आउट-ऑफ-बाउंड लिखना या अप्रत्याशित अपवाद तुरंत प्रकट होगा, जिसमें सटीक opnum + फज़्ड पेलोड होगा जिसने इसे ट्रिगर किया - एक स्थिर प्रमाण-ऑफ-कॉन्सेप्ट एक्सप्लॉइट के लिए एकदम सही प्रारंभिक बिंदु। एकल आउट-ऑफ-बाउंड्स लिखना या अप्रत्याशित अपवाद तुरंत प्रकट होगा, जिसमें सटीक opnum + फज़्ड पेलोड होगा जिसने इसे ट्रिगर किया - स्थिर प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट के लिए एकदम सही प्रारंभिक बिंदु।
> ⚠️ कई RPC सेवाएँ **NT AUTHORITY\SYSTEM** के रूप में चलने वाली प्रक्रियाओं में कार्यान्वित होती हैं। यहाँ कोई भी मेमोरी-सुरक्षा समस्या आमतौर पर स्थानीय विशेषाधिकार वृद्धि या (जब SMB/135 के माध्यम से उजागर किया जाता है) *दूरस्थ कोड निष्पादन* में परिवर्तित होती है। > ⚠️ कई RPC सेवाएँ **NT AUTHORITY\SYSTEM** के रूप में चलने वाली प्रक्रियाओं में कार्यान्वित होती हैं। यहाँ कोई भी मेमोरी-सुरक्षा समस्या आमतौर पर स्थानीय विशेषाधिकार वृद्धि या (जब SMB/135 के माध्यम से उजागर किया जाता है) *दूरस्थ कोड निष्पादन* में परिवर्तित होती है।
---
## संदर्भ ## संदर्भ
- [Automating MS-RPC vulnerability research (2025, Incendium.rocks)](https://www.incendium.rocks/posts/Automating-MS-RPC-Vulnerability-Research/) - [Automating MS-RPC vulnerability research (2025, Incendium.rocks)](https://www.incendium.rocks/posts/Automating-MS-RPC-Vulnerability-Research/)
- [MS-RPC-Fuzzer context-aware RPC fuzzer](https://github.com/warpnet/MS-RPC-Fuzzer) - [MS-RPC-Fuzzer context-aware RPC fuzzer](https://github.com/warpnet/MS-RPC-Fuzzer)
- [NtObjectManager PowerShell module](https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools/tree/master/NtObjectManager) - [NtObjectManager PowerShell module](https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools/tree/master/NtObjectManager)
- [https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/) - [https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/)
- [https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/](https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/) - [https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/](https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/)
- [https://0xffsec.com/handbook/services/msrpc/](https://0xffsec.com/handbook/services/msrpc/) - [https://0xffsec.com/handbook/services/msrpc/](https://0xffsec.com/handbook/services/msrpc/)
- [MS-RPC-Fuzzer (GitHub)](https://github.com/warpnet/MS-RPC-Fuzzer)
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}