
विंडोज RPC इंटरफ़ेस डिस्कवरी और विश्लेषण उपकरण जिसमें दृश्य एंडपॉइंट गणना, PE पार्सिंग, प्रतीक समाधान, रीयल-टाइम ETW स्निफिंग, और सुरक्षा ऑडिटिंग के लिए ऑन-द-फ्लाई क्लाइंट कोड जनरेशन शामिल है।
कृपया हमारी ब्लॉग पोस्ट घोषणा पढ़ें।
RPC Investigator (RPCI) एक .NET/C# Windows Forms UI एप्लिकेशन है जो Windows RPC एंडपॉइंट्स के लिए एक उन्नत खोज और विश्लेषण इंटरफ़ेस प्रदान करता है। यह उपकरण NtApiDotNet प्लेटफ़ॉर्म की मौजूदा मुख्य RPC क्षमताओं के आसपास एक दृश्य इंटरफ़ेस प्रदान करता है, जिसमें शामिल हैं:
इन मुख्य सुविधाओं के अलावा, RPCI अतिरिक्त क्षमताएं प्रदान करता है:
RPC Investigator कई कार्यप्रवाहों का समर्थन करता है:
इस उदाहरण में, हम विंडोज टास्क शेड्यूलर RPC सेवा का निरीक्षण करेंगे, जिसका उपयोग शेड्यूल किए गए कार्यों को प्रबंधित और निष्पादित करने के लिए किया जाता है। हम सेवा को ढूंढेंगे, क्लाइंट कोड उत्पन्न करेंगे, और फिर क्लाइंट को कस्टमाइज़ करेंगे ताकि वह एक्सपोज़ की गई प्रक्रियाओं में से एक के साथ इंटरैक्ट कर सके।
पहले, File -> Load From Service पर क्लिक करके विंडोज सेवाओं की सूची लोड करें। यह एक नई सेवा सूची विंडो खोलता है:

Schedule सेवा खोजें, जो विंडोज टास्क शेड्यूलर है, सेवा चुनें और Go पर क्लिक करें।

RPCI द्वारा सभी संबंधित RPC DLL को लोड करने से पहले आपको संकेत दिया जाएगा। जारी रखने के लिए Yes पर क्लिक करें। लोड होने के बाद, आप सेवा प्रक्रिया में लोड किए गए सभी मॉड्यूल में खोजे गए सभी RPC सर्वरों की एक सूची देखेंगे। विंडोज टास्क शेड्यूलर RPC सर्वर का इंटरफ़ेस ID 86D35949-83C9-4044-B424-DB363231FD0C है। सूची में उस पंक्ति को खोजें जिसमें यह इंटरफ़ेस ID है, जिसमें Task Scheduler नामक एक चल रही सेवा होनी चाहिए, पंक्ति पर राइट-क्लिक करें और New Client चुनें।

क्लाइंट विंडो का बायां भाग RPC सर्वर मेटाडेटा और क्लाइंट कोड से कमांड लाइन आउटपुट दिखाता है। दाहिनी ओर दो टैब दिखाता है:
इस उदाहरण में हम SchRpcHighestVersion प्रक्रिया को कॉल करेंगे। यह विधि एक एकल तर्क, out int version स्वीकार करती है, जो प्रक्रिया को कॉल करने के बाद, RPC इंटरफ़ेस द्वारा समर्थित उच्चतम टास्क शेड्यूलर प्रोटोकॉल संस्करण को शामिल करेगा। उच्च 16-बिट मुख्य संस्करण हैं और निम्न 16-बिट लघु संस्करण हैं।
इस प्रक्रिया को कॉल करने के लिए:
Client Code विंडो में, Run विधि खोजें, जो RPC क्लाइंट के लिए मुख्य प्रवेश बिंदु है।
प्रक्रिया को कॉल करने के लिए Run विधि के मुख्य भाग को संपादित करें:
public async Task<bool> Run()
{
int version;
int status = SchRpcHighestVersion(out version);
if (status == 0) {
long major = (version & 0xffff0000) >> 16;
long minor = version & 0x0000ffff;
Console.WriteLine("highest supported RPC version: {0}.{1}", major, minor);
} else {
Console.WriteLine("call to SchRpcHighestVersion failed with error: {0:X}", status);
}
return true;
}
यह कोड जोड़ने के बाद, Run बटन पर क्लिक करके क्लाइंट चलाएं। यह C# कोड संकलित करेगा और फिर Run विधि को निष्पादित करेगा।
यदि संकलन सफल होता है, तो आपको Output बॉक्स में कुछ इस प्रकार दिखाई देगा:
> Run() output:
highest supported RPC version: 1.6

RPC Investigator में कई कॉन्फ़िगरेशन सेटिंग्स हैं।
कॉन्फ़िगरेशन सेटिंग्स को एप्लिकेशन के भीतर Edit -> Settings मेनू के माध्यम से संशोधित किया जा सकता है।
अपनी प्रारंभिक रिलीज़ के बाद, RPC Investigator को .NET Framework एप्लिकेशन से .NET 7 एप्लिकेशन में परिवर्तित किया गया था। यदि आपको बिल्ड समस्याओं का सामना करना पड़ता है, तो सुनिश्चित करें कि विज़ुअल स्टूडियो अद्यतित है। .NET Framework संस्करण से निर्माण करने से पहले सभी बिल्ड आउटपुट फ़ोल्डरों को साफ़ करना एक अच्छा विचार है।
साथ ही, असुरक्षित BinaryFormatter वर्ग से protobuf-net में स्थानांतरण के कारण, .NET Framework संस्करण के साथ उत्पन्न RPC लाइब्रेरी .NET संस्करण के साथ असंगत हैं।
यदि आप RPC Investigator में यादृच्छिक क्रैश का अनुभव कर रहे हैं, तो आप अपने व्यवस्थापक से आपके EDR को समायोजित करने के लिए कहकर समाधान पा सकते हैं। हमने पाया है कि कुछ EDR JIT'ed भाषाओं के साथ समझदारी से व्यवहार नहीं करते हैं।
कुछ मामलों में RPC Investigator को EDR द्वारा दुर्भावनापूर्ण के रूप में पहचाना जाता है, जिसमें वायरस टोटल पर कुछ झूठी सकारात्मक शामिल हैं। यह एक ज्ञात समस्या है। ऐसा इसलिए है क्योंकि RPC Investigator में NtObjectManager शामिल है - जेम्स फोरशॉ द्वारा बनाया गया एक पैकेज जो विंडोज डिफेंडर सहित कई EDR द्वारा (झूठी सकारात्मक) के रूप में पहचाना जाता है।
चूंकि विंडोज RPC एक दशक से अधिक समय से एक लोकप्रिय शोध विषय रहा है, यहां नाम देने के लिए बहुत सारे संबंधित संसाधन और शोध प्रयास हैं। हमने नीचे कुछ सूचीबद्ध किए हैं जो हमें इस उपकरण के निर्माण के दौरान मिले:
यदि आप RPC आंतरिक विवरण से अपरिचित हैं या तकनीकी पुनश्चर्या की आवश्यकता है, तो हम इस विषय पर एक आधिकारिक स्रोत की सिफारिश करेंगे - सिंगापुर में एलेक्स आयोनेस्कु का 2014 का SyScan टॉक, All about the RPC, LRPC, ALPC, and LPC in your PC.
| सेटिंग | विवरण | डिफ़ॉल्ट |
|---|
| dbghelp.dll | dbghelp.dll मॉड्यूल का फ़ाइल स्थान | स्थापित विंडोज किट में नवीनतम संस्करण खोजें। |
| Symbol Path | विंडोज सिम्बल का पथ, जो एक सिम्बल सर्वर या स्थानीय निर्देशिका हो सकता है | srvc:\symbolshttps://msdl.microsoft.com/download/symbols |
| Trace Level | लॉगिंग ट्रेस स्तर | info |