इस लेख में, हम दिखाएंगे कि विंडोज़ में एक निश्चित प्रोग्राम (प्रक्रिया) लॉन्च करने की घटना को कैसे ट्रैक किया जाए और एक क्रिया करें (एक स्क्रिप्ट, कमांड, प्रोग्राम चलाएं, एक ईमेल भेजें, आदि)। एक उदाहरण के रूप में, हम notepad.exe प्रक्रिया के लॉन्च को ट्रैक करेंगे। और जब कोई उपयोगकर्ता नोटपैड खोलता है, तो विंडोज़ स्वचालित रूप से एक विशिष्ट पावरशेल स्क्रिप्ट चलाएगा।
सबसे पहले, विंडोज़ पर प्रोसेस ऑडिट पॉलिसी को कॉन्फ़िगर करें। आप स्थानीय समूह नीति संपादक (gpedit.msc
का उपयोग करके एक स्टैंड-अलोन कंप्यूटर पर ऑडिट नीति कॉन्फ़िगर कर सकते हैं। ) यदि आप अपने AD डोमेन में कंप्यूटर और सर्वर पर नीति कॉन्फ़िगर करना चाहते हैं, तो समूह नीति प्रबंधन कंसोल (gpmc.msc
) का उपयोग करें। )।
- कंप्यूटर कॉन्फ़िगरेशन पर जाएं -> Windows सेटिंग -> सुरक्षा सेटिंग -> स्थानीय नीतियां -> ऑडिट नीति;
- खोलें ऑडिट प्रक्रिया ट्रैकिंग गुण और सफलता . के लिए इसे सक्षम करें इवेंट;
- समूह नीति सेटिंग चलाकर लागू करें:
gpupdate /force
अब, Windows में कोई भी प्रक्रिया प्रारंभ करते समय, EventID 4688 . के साथ एक ईवेंट (A new process has been created
) इवेंट व्यूअर -> विंडोज लॉग्स -> सुरक्षा में दिखाई देगा। घटना से पता चलता है कि इस प्रक्रिया को किसने चलाया है (खाता का नाम ), प्रक्रिया का नाम (नई प्रक्रिया का नाम ), और मूल प्रक्रिया का नाम (निर्माता प्रक्रिया का नाम )।
आप PowerShell का उपयोग करके विशिष्ट प्रक्रिया द्वारा ईवेंट लॉग से ऐप लॉन्च ईवेंट का चयन कर सकते हैं:
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} | Select-Object TimeCreated,@{name='NewProcessName';expression={ $_.Properties[5].Value }}, @{name='User';expression={ $_.Properties[1].Value }}|where-object {$_.NewProcessName –like “*notepad.exe*”}
परिणामस्वरूप, हमें इस कंप्यूटर पर उपयोगकर्ताओं द्वारा प्रोग्राम लॉन्च करने का इतिहास मिला।
फिर कार्य शेड्यूलर में एक नया कार्य बनाएं जो EventID 4688 वाला कोई ईवेंट दिखाई देने पर चलेगा।
- कार्य शेड्यूलर खोलें (
taskschd.msc
) और एक नया कार्य बनाएं -> कार्य बनाएं; - कार्य नाम प्रदान करें और निर्दिष्ट करें कि इसे सभी उपयोगकर्ताओं के लिए चलाया जाना चाहिए (कार्य चलाते समय, निम्न उपयोगकर्ता खाते का उपयोग करें -> BUILTIN\Users ) यदि आप GPO का उपयोग करके कोई कार्य बनाते हैं, तो इस प्रारूप का उपयोग करें:
%LogonDomain%\%LogonUser%
; - कार्रवाइयां पर टैब, वह क्रिया सेट करें जिसे आप करना चाहते हैं। इस उदाहरण में, मैं एक पावरशेल स्क्रिप्ट चलाऊंगा (कॉल करें
powershell.exe
विशेषताओं के साथ:-ExecutionPolicy Bypass -file "C:\PS\ProcessRunEvent.ps1
); - फिर टास्क को विंडोज इवेंट से बांधें। ट्रिगर . पर जाएं टैब में, नया select चुनें -> एक ईवेंट पर -> कस्टम -> नया ईवेंट फ़िल्टर;
- अगली विंडो में, निम्नलिखित ईवेंट फ़िल्टर विकल्प निर्दिष्ट करें:
इवेंट लॉग:Security
ईवेंट आईडी:4688
कीवर्ड:Audit Success
- फिर XML . पर जाएं टैब को सक्षम करें और क्वेरी को मैन्युअल रूप से संपादित करें . सक्षम करें विकल्प। फ़िल्टर में निम्न पंक्ति जोड़कर क्वेरी संपादित करें:
and *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
कोड> - आपको निम्न XML क्वेरी प्राप्त होगी:
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security"> *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]] and *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]] </Select> </Query> </QueryList>
- कार्य सहेजें।
Notepad.exe चलाने का प्रयास करें। हर बार जब कोई उपयोगकर्ता नोटपैड खोलता है, तो आपकी पावरशेल स्क्रिप्ट स्वचालित रूप से चलेगी।
उदाहरण के लिए, आप एक पॉप-अप सूचना प्रदर्शित कर सकते हैं या पावरशेल का उपयोग करके एक ईमेल भेज सकते हैं।विशिष्ट ऐप को बंद करने के बाद, कभी-कभी आप एक बैकअप स्क्रिप्ट चलाना चाह सकते हैं, आदि। यदि आप किसी प्रोग्राम से बाहर निकलने को ट्रैक करना चाहते हैं, तो इवेंट आईडी के साथ ईवेंट का उपयोग करें 4689 —
A process has exited
. इससे पहले हमने एक प्रक्रिया को स्वचालित रूप से पुनरारंभ करने के लिए एक पावरशेल स्क्रिप्ट दिखाई थी यदि यह बंद हो जाती है। किसी प्रक्रिया के रन/स्टॉप ईवेंट को ट्रैक करने वाला समाधान अधिक सुरुचिपूर्ण है और चल रही विंडोज़ प्रक्रियाओं की निगरानी के लिए पावरशेल स्क्रिप्ट की आवश्यकता नहीं है।