
WMImplant का C# पोर्ट जो दूरस्थ सिस्टम्स को क्वेरी करने के लिए CIM या WMI का उपयोग करता है
WMImplant का C# पोर्ट जो रिमोट सिस्टम को क्वेरी करने के लिए CIM या WMI का उपयोग करता है। यह प्रदान की गई क्रेडेंशियल्स या वर्तमान उपयोगकर्ता के सत्र का उपयोग कर सकता है।
नोट: कुछ कमांड PowerShell को WMI के साथ संयोजन में उपयोग करेंगे, जिन्हें --show-commands कमांड में ** से दर्शाया गया है।
CIMplant, @christruncer के WMImplant का C# पुनर्लेखन और विस्तार है। यह आपको रिमोट सिस्टम के बारे में डेटा एकत्र करने, कमांड निष्पादित करने, डेटा निकालने, और अधिक की अनुमति देता है। यह टूल Windows Management Instrumentation, WMI, या Common Interface Model, CIM का उपयोग करके कनेक्शन की अनुमति देता है; अधिक सटीक रूप से Windows Management Infrastructure, MI का उपयोग करता है। CIMplant को लक्ष्य सिस्टम पर स्थानीय व्यवस्थापक अनुमतियों की आवश्यकता होती है।
बिल्ड किए गए संस्करण का उपयोग करना शायद सबसे आसान है, जो Releases के अंतर्गत उपलब्ध है, बस ध्यान दें कि यह Debug मोड में संकलित है। यदि आप स्वयं समाधान बनाना चाहते हैं, तो नीचे दिए गए चरणों का पालन करें।
CIMplant.exe --help
CIMplant.exe --show-commands
CIMplant.exe --show-examples
CIMplant.exe -s [remote IP address] -c cat -f c:\users\user\desktop\file.txt
CIMplant.exe -s [remote IP address] -u [username] -d [domain] -p [password] -c cat -f c:\users\test\desktop\file.txt
CIMplant.exe -s [remote IP address] -u [username] -d [domain] -p [password] -c command_exec --execute "dir c:\\"
cat - फ़ाइल की सामग्री पढ़ता है
copy - फ़ाइल को एक स्थान से दूसरे स्थान पर कॉपी करता है
download** - लक्ष्य मशीन से फ़ाइल डाउनलोड करें
ls - किसी विशिष्ट निर्देशिका की फ़ाइल/निर्देशिका सूची
search - किसी उपयोगकर्ता पर फ़ाइल खोजें
upload** - लक्ष्य मशीन पर फ़ाइल अपलोड करें
command_exec** - एक कमांड लाइन कमांड चलाएं और आउटपुट प्राप्त करें। PowerShell को अक्षम करने के लिए nops फ्लैग के साथ चलाएं
disable_wdigest - UseLogonCredential के लिए रजिस्ट्री मान को शून्य पर सेट करता है
enable_wdigest - UseLogonCredential रजिस्ट्री मान जोड़ता है
disable_winrm** - लक्ष्य सिस्टम पर WinRM अक्षम करता है
enable_winrm** - लक्ष्य सिस्टम पर WinRM सक्षम करता है
reg_mod - लक्ष्य मशीन पर रजिस्ट्री संशोधित करें
reg_create - लक्ष्य मशीन पर रजिस्ट्री मान बनाएं
reg_delete - लक्ष्य मशीन पर रजिस्ट्री हटाएं
remote_posh** - रिमोट मशीन पर PowerShell स्क्रिप्ट चलाएं और आउटपुट प्राप्त करें
sched_job - Win32_ScheduledJobs के पुराने API तक पहुँचने के कारण लागू नहीं किया गया
service_mod - सिस्टम सेवाएँ बनाएं, हटाएं, या संशोधित करें
process_kill - लक्ष्य मशीन पर प्रक्रिया को नाम या प्रक्रिया आईडी के माध्यम से समाप्त करें
process_start - लक्ष्य मशीन पर प्रक्रिया प्रारंभ करें
ps - प्रक्रिया सूची
active_users - लक्ष्य सिस्टम पर सक्रिय प्रक्रियाओं वाले डोमेन उपयोगकर्ताओं को सूचीबद्ध करें
basic_info - लक्ष्य सिस्टम के बारे में बुनियादी मेटाडेटा को सूचीबद्ध करने के लिए उपयोग किया जाता है
drive_list - स्थानीय और नेटवर्क ड्राइव सूचीबद्ध करें
ifconfig - सक्रिय नेटवर्क कनेक्शन वाले NIC से IP जानकारी प्राप्त करें
installed_programs - लक्ष्य मशीन पर स्थापित प्रोग्रामों की सूची प्राप्त करें
logoff - लक्ष्य मशीन से उपयोगकर्ताओं को लॉग ऑफ करें
reboot (or restart) - लक्ष्य मशीन को रिबूट करें
power_off (or shutdown) - लक्ष्य मशीन को बंद करें
vacant_system - जांचें कि क्या उपयोगकर्ता सिस्टम से दूर है
edr_query - EDR विक्रेताओं के लिए स्थानीय या रिमोट सिस्टम क्वेरी करें
logon_events - उन उपयोगकर्ताओं की पहचान करें जो सिस्टम पर लॉग ऑन हुए हैं
* सभी PowerShell को --nops फ्लैग का उपयोग करके अक्षम किया जा सकता है, हालांकि कुछ कमांड निष्पादित नहीं होंगे (अपलोड/डाउनलोड, WinRM सक्षम/अक्षम करें)
** PowerShell उपयोग को दर्शाता है (या तो PowerShell Runspace का उपयोग करके या Win32_Process::Create विधि के माध्यम से)

मैं CIMplant को इस तरह से कोड करना चाहता था जो execute-assembly के माध्यम से उपयोग की अनुमति दे, इसलिए सब कुछ एक निष्पादन योग्य में पैक किया गया है और रिफ्लेक्टिव रूप से लोड किया गया है। आप बिना किसी समस्या के बीकन के माध्यम से सभी कमांड चला सकेंगे। आनंद लें!

यह ऑपरेशन का मस्तिष्क है, प्रोग्राम का ड्राइवर।
यह वह जगह है जहाँ प्रारंभिक CIM/WMI कनेक्शन बनाए जाते हैं और बाकी एप्लिकेशन को पास किए जाते हैं
WMI कमांड के लिए सभी फ़ंक्शन कोड
CIM (MI) कमांड के लिए सभी फ़ंक्शन कोड
बेशक, पहली चीज जिसके बारे में हमें जागरूक होना चाहिए वह है प्रारंभिक WMI या CIM कनेक्शन। सामान्य तौर पर, WMI संचार प्रोटोकॉल के रूप में DCOM का उपयोग करता है जबकि CIM WSMan (या WinRM) का उपयोग करता है। इसे CIM के लिए संशोधित किया जा सकता है, और CIMplant में किया जाता है, लेकिन अब के लिए केवल डिफ़ॉल्ट मानों पर चर्चा करते हैं। DCOM के लिए, पहली चीज जो हम कर सकते हैं वह है पोर्ट 135 पर प्रारंभिक TCP कनेक्शन देखना। कनेक्ट करने वाली और प्राप्त करने वाली प्रणालियाँ फिर उपयोग करने के लिए एक नया, बहुत उच्च पोर्ट तय करेंगी, इसलिए यह बहुत भिन्न होगा। WSMan के लिए, प्रारंभिक TCP कनेक्शन पोर्ट 5985 पर होता है।
इसके बाद, आप Event Viewer में Microsoft-Windows-WMI-Activity/Trace इवेंट लॉग देखना चाहेंगे। Event ID 11 खोजें और संभव हो तो IsLocal प्रॉपर्टी पर फ़िल्टर करें। आप Microsoft-Windows-WinRM/Analytic लॉग में Event ID 1295 भी देख सकते हैं।
अंत में, आप Win32_OSRecoveryConfiguration क्लास के साथ DebugFilePath प्रॉपर्टी में किसी भी संशोधन को देखना चाहेंगे। पहचान के बारे में अधिक विस्तृत जानकारी हमारी ब्लॉग श्रृंखला के भाग 1 में पाई जा सकती है: CIMplant Part 1: Detection of a C# Implementation of WMImplant