
COM हाइजैक की खोज और दुरुपयोग के लिए उपकरण
आपका COM हाइजैकिंग साथी
लेखक: David Tulis (@kafkaesqu3)
इस रिपॉज़िटरी में COM हाइजैकिंग के अन्वेषण के लिए कोड नमूने और प्रूफ-ऑफ-कॉन्सेप्ट शामिल हैं। COM हाइजैकिंग एक Windows पोस्ट-एक्सप्लॉइटेशन तकनीक है, जिसका उपयोग पर्सिस्टेंस या डिफेंस इवेज़न के लिए किया जा सकता है।
COM इंटरफ़ेस के बारे में अधिक जानकारी, हाइजैक खोजने के तरीके और हाइजैक का दुरुपयोग करने की तकनीकों के लिए, कृपया Derbycon 9 में दी गई प्रस्तुति COM Hijacking Techniques देखें।
Extract-HijackableKeysFromProcmonCSV: हाइजैक करने योग्य ऑब्जेक्ट्स के लिए Procmon CSV एक्सपोर्ट को पार्स करता हैHijack-CLSID: दिए गए DLL के साथ एक CLSID को हाइजैक करता हैHijack-MultipleKeys: दिए गए DLL के साथ एक साथ कई CLSDs को हाइजैक करता है। यह उन CLSIDs को खोजने के लिए उपयोगी है जो अक्सर सक्रिय होती हैंCreateProcess के साथ एक नई प्रक्रिया बनाएँCreateRemoteThread के साथ मौजूदा प्रक्रिया में इंजेक्ट करेंCreateThread का उपयोग करके वर्तमान प्रक्रिया में थ्रेड जीवनकाल मापेंCOM हाइजैक से निपटने के लिए सहायक स्क्रिप्ट वाली Powershell स्क्रिप्ट। मुख्य विशेषताएँ:
सभी COM ऑब्जेक्ट CLSIDs और डिस्क पर इम्प्लीमेंटेशन का स्थान दिखाएँ
$keys = Get-CLSIDRegistryKeys -RegHive HKCR
$results = $keys | % {$guid = Extract-GUIDFromText $_; Map-GUIDToDLL -guid $guid 2> $null }
सिस्टम पर CLSIDs का सर्वेक्षण करें
$HKCR_keys = Get-CLSIDRegistryKeys -RegHive HKCR
$HKCR_keys | where-object {$_ -like "*inprocserver"} | Measure-Object
$HKCR_keys | where-object {$_ -like "*inprocserver32"} | Measure-Object
$HKCR_keys | where-object {$_ -like "*localserver"} | Measure-Object
$HKCR_keys | where-object {$_ -like "*localserver32"} | Measure-Object
$HKLM_keys = Get-CLSIDRegistryKeys -RegHive HKLM
$HKLM_keys | Measure-Object
$HKCU_keys = Get-CLSIDRegistryKeys -RegHive HKCU
$HKCU_keys | Measure-Object
explorer:{69486DD6-C19F-42e8-B508-A53F9F8E67B8}
explorer:{9E175B6D-F52A-11D8-B9A5-505054503030}
explorer:{30CC9D06-7E62-4966-9777-BC3442E788BD}
explorer:{3eef301f-b596-4c0b-bd92-013beafce793}
explorer:{682159d9-c321-47ca-b3f1-30e36b2ec8b9}
explorer:{6B3B8D23-FA8D-40B9-8DBD-B950333E2C52}
explorer:{9aa46009-3ce0-458a-a354-715610a075e6}
explorer:{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
explorer:{AC36A05C-FB95-4C7A-868C-A43CC8D2D926}
explorer:{B52D54BB-4818-4EB9-AA80-F9EACD371DF8}
explorer:{c2f03a33-21f5-47fa-b4bb-156362a2f239}
ऐसे CLSIDs खोजें जो सिस्टम पर मौजूद न होने वाले DLL को संदर्भित करते हैं:
Find-MissingLibraries
COM हाइजैक दुरुपयोग के लिए 3 प्रूफ-ऑफ-कॉन्सेप्ट टेम्पलेट, जैसा कि Derbycon 9 प्रस्तुति में प्रदर्शित किया गया:
HijackDLL-Process: DLL लोड होने पर एक नई प्रक्रिया बनाएँHijackDLL-CreateRemoteThread: DLL लोड होने पर CreateRemoteThread API कॉल का उपयोग करके थ्रेड इंजेक्शन तकनीक निष्पादित करेंHijackDLL-Threads: हाइजैक के बाद DLL में प्रारंभ किए गए थ्रेड्स के जीवनकाल को मापने के लिए उपयोगीयह दिखाने के लिए प्रूफ ऑफ कॉन्सेप्ट कि COM हाइजैकिंग का उपयोग प्रोसेस इंजेक्शन के लिए कैसे किया जा सकता है:
पहला कदम हाइजैक करना है:
COMInjectDotNet.exe chrome.exe C:\COM\COMInjectTarget.dll
हाइजैक तुरंत ट्रिगर नहीं होगा, और इसके लिए एप्लिकेशन को प्रारंभ करने (यदि वह वर्तमान में नहीं चल रहा है), या कुछ बुनियादी एप्लिकेशन गतिविधियों की आवश्यकता हो सकती है। संभवतः कुछ बेहतर CLSIDs हैं जो अधिक बार ट्रिगर होते हैं, लेकिन ये पर्याप्त हैं।
COMInjectTarget.dll अपनी प्रगति को C:\COM में एक लॉग फ़ाइल में लिखेगा। यह किसी अन्य प्रक्रिया के भीतर से AllocConsole जैसी चीज़ का उपयोग करके केवल कंसोल पर प्रिंट करने की तुलना में अधिक स्थिर प्रतीत होता है।
निम्नलिखित मुख्य chrome.exe प्रक्रिया के भीतर से चल रहे इंजेक्ट किए गए DLL को दर्शाता है:
[*] chrome pid=9104 ppid=4900 (count 0)
[*] chrome pid=9104 ppid=4900 (count 1)
[*] chrome pid=9104 ppid=4900 (count 2)
[*] chrome pid=9104 ppid=4900 (count 3)
[*] chrome pid=9104 ppid=4900 (count 4)
[*] chrome pid=9104 ppid=4900 (count 5)
वर्तमान में समर्थित प्रक्रियाएँ हैं:
COM और COM हाइजैक के बारे में अधिक जानने के लिए: