
प्रक्रियाओं के लोड किए गए मॉड्यूल का निरीक्षण करके EDR के अपवादों का पता लगाएं
यह टूल उन प्रोसेसों की खोज करता है जिनमें कोई विशेष बाइनरी लोड है या जिनमें नहीं है। यह निम्नलिखित परिदृश्यों में उपयोगी है:
c:\windows\sytem32\lsass.exe लोड किए हुए प्रोसेसों की खोज करने पर हमें Lsass का PID मिल जाएगा)।शायद आपको इस टूल का उपयोग करने के अन्य मूल्यवान तरीके भी मिल सकते हैं। ये परिणाम सिस्टम के सभी प्रोसेसों पर पुनरावृत्ति से बचकर और कम शोर के साथ प्राप्त किए जाते हैं।
यह टूल NtQueryInformationFile को FileProcessIdsUsingFileInformation फ्लैग के साथ कॉल करके उन सभी प्रोसेसों को प्राप्त करता है जहां एक निश्चित बाइनरी लोड है। फिर, केवल आवश्यक होने पर, सभी प्रोसेसों के PID प्राप्त करने के लिए EnumProcesses को कॉल किया जाता है, और अंत में अंतिम PID सूची प्राप्त करने के लिए दोनों परिणामों की तुलना की जाती है। यदि टूल quiet मोड में नहीं चल रहा है, तो अंतिम PID को प्रोसेस के मुख्य मॉड्यूल के पूर्ण योग्य पथ में बदल दिया जाता है।
यदि आप क्रॉस-प्रोसेस गतिविधि को कम करना चाहते हैं, तो quiet मोड (--quiet या -q) का उपयोग करें। इस स्थिति में, कोई प्रोसेस हैंडल नहीं खोला जाएगा, लेकिन टूल केवल PID प्राप्त करेगा, पूर्ण योग्य पथ नहीं।
यह टूल Win10 और बाद के संस्करणों तथा Windows Server 2016 और बाद के संस्करणों के साथ पूरी तरह से संगत है। पुराने OS संस्करणों के लिए, OpenProcess (पंक्ति src::main.rs:108) को केवल PROCESS_QUERY_LIMITED_INFORMATION के बजाय PROCESS_QUERY_INFORMATION और PROCESS_VM_READ की आवश्यकता होती है (या आप केवल quiet मोड का उपयोग कर सकते हैं जो कोई प्रोसेस हैंडल नहीं खोलता है)।
चूंकि हम स्ट्रिंग लिटरल्स को अस्पष्ट (obfuscate) करने के लिए LITCRYPT प्लगइन का उपयोग कर रहे हैं, इसलिए कोड संकलित करने से पहले LITCRYPT_ENCRYPT_KEY पर्यावरण चर (environment variable) सेट करना आवश्यक है:
C:\Users\User\Desktop\bin_finder\bin_finder> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"
उसके बाद, केवल कोड संकलित करें और टूल निष्पादित करें:
C:\Users\User\Desktop\Bin-Finder> cargo build --release
C:\Users\User\Desktop\Bin-Finder\target\release> bin_finder.exe -h
Bin-finder के दो अलग-अलग उपयोग मोड हैं। डिफ़ॉल्ट मोड उन सभी प्रोसेसों की खोज करेगा जिनमें निर्दिष्ट बाइनरी लोड नहीं है। उदाहरण के लिए, हम उन सभी प्रोसेसों को खोज सकते हैं जिनमें CrowdStrike dll लोड नहीं है:

यह काफी उपयोगी है जब आप EDR की अपवाद सूची में निर्देशिकाओं/प्रोसेसों की तलाश कर रहे हैं।
यदि आप क्रॉस-प्रोसेस गतिविधि को कम करना चाहते हैं, तो केवल PID प्राप्त करने के लिए quiet मोड का उपयोग किया जा सकता है:

साथ ही, यदि आप उस dll का नाम या पथ नहीं जानते हैं जिसे आप खोज रहे हैं, तो आप -l या --list फ्लैग का उपयोग करके एक सामान्य प्रोसेस पर लोड किए गए मॉड्यूल को सूचीबद्ध करने का प्रयास कर सकते हैं (यह यह पता लगाने के लिए भी उपयोगी है कि कोई EDR मौजूद है या नहीं):

दूसरा उपयोग मोड रिवर्स लुकअप है (फ्लैग -r या --reverse), जो उन सभी प्रोसेसों की खोज करेगा जिनमें वर्तमान में निर्दिष्ट बाइनरी लोड है। उदाहरण के लिए, शायद आप StorSvc सेवा चला रहे प्रोसेस का PID प्राप्त करने में रुचि रखते हैं। उस स्थिति में, उस dll के लिए रिवर्स लुकअप करें जो उस सेवा द्वारा उपयोग किए जाने वाले RPC सर्वर को कार्यान्वित करती है:

इस रिवर्स लुकअप का उपयोग सिस्टम में सभी प्रोसेसों पर पुनरावृत्ति किए बिना, किसी प्रोसेस के मुख्य मॉड्यूल का पूर्ण पथ (आमतौर पर एक .exe फ़ाइल) निर्दिष्ट करके सीधे उसका PID प्राप्त करने के लिए भी किया जा सकता है। इस प्रकार आप सभी चल रहे chrome.exe के PID प्राप्त कर सकते हैं:
