এই নিবন্ধে, আমরা দেখাব কিভাবে উইন্ডোজে একটি নির্দিষ্ট প্রোগ্রাম (প্রক্রিয়া) চালু করার একটি ইভেন্ট ট্র্যাক করা যায় এবং একটি ক্রিয়া সম্পাদন করা যায় (একটি স্ক্রিপ্ট, কমান্ড, প্রোগ্রাম চালানো, একটি ইমেল প্রেরণ ইত্যাদি)। উদাহরণ স্বরূপ, আমরা notepad.exe প্রসেস চালু করার ট্র্যাক করব। এবং যখন একজন ব্যবহারকারী নোটপ্যাড খোলে, উইন্ডোজ স্বয়ংক্রিয়ভাবে একটি নির্দিষ্ট পাওয়ারশেল স্ক্রিপ্ট চালাবে।
প্রথমত, উইন্ডোজে প্রক্রিয়া নিরীক্ষা নীতি কনফিগার করুন। আপনি স্থানীয় গ্রুপ পলিসি এডিটর (gpedit.msc
ব্যবহার করে একটি স্বতন্ত্র কম্পিউটারে অডিট নীতি কনফিগার করতে পারেন ) আপনি যদি আপনার AD ডোমেনে কম্পিউটার এবং সার্ভারে একটি নীতি কনফিগার করতে চান, তাহলে গ্রুপ পলিসি ম্যানেজমেন্ট কনসোল ব্যবহার করুন (gpmc.msc
)।
- কম্পিউটার কনফিগারেশন এ যান -> উইন্ডোজ সেটিংস -> নিরাপত্তা সেটিংস৷ -> স্থানীয় নীতি -> অডিট নীতি;
- খুলুন অডিট প্রক্রিয়া ট্র্যাকিং বৈশিষ্ট্য এবং সাফল্যের জন্য সক্ষম করুন ঘটনা;
- চালিয়ে গ্রুপ নীতি সেটিংস প্রয়োগ করুন:
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*”}
ফলস্বরূপ, আমরা এই কম্পিউটারে ব্যবহারকারীদের দ্বারা প্রোগ্রাম চালু করার ইতিহাস পেয়েছি৷
তারপরে টাস্ক শিডিউলারে একটি নতুন টাস্ক তৈরি করুন যেটি ইভেন্টআইডি 4688 সহ একটি ইভেন্ট উপস্থিত হলে চলবে৷
- টাস্ক শিডিউলার খুলুন (
taskschd.msc
) এবং একটি নতুন টাস্ক তৈরি করুন -> টাস্ক তৈরি করুন; - টাস্কের নাম প্রদান করুন এবং নির্দিষ্ট করুন যে এটি অবশ্যই সকল ব্যবহারকারীর জন্য চালানো হবে (টাস্ক চালানোর সময়, নিম্নলিখিত ব্যবহারকারীর অ্যাকাউন্ট ব্যবহার করুন -> BUILTIN\Users ) আপনি যদি GPO ব্যবহার করে একটি টাস্ক তৈরি করেন, তাহলে এই ফর্ম্যাটটি ব্যবহার করুন:
%LogonDomain%\%LogonUser%
; - ক্রিয়াতে ট্যাবে, আপনি যে কাজটি করতে চান সেটি সেট করুন। এই উদাহরণে, আমি একটি PowerShell স্ক্রিপ্ট চালাব (কল
powershell.exe
গুণাবলী সহ:-ExecutionPolicy Bypass -file "C:\PS\ProcessRunEvent.ps1
); - তারপর টাস্কটিকে একটি উইন্ডোজ ইভেন্টে আবদ্ধ করুন। ট্রিগারস-এ যান ট্যাব, নতুন নির্বাচন করুন -> একটি ইভেন্টে -> কাস্টম -> নতুন ইভেন্ট ফিল্টার;
- পরবর্তী উইন্ডোতে, নিম্নলিখিত ইভেন্ট ফিল্টার বিকল্পগুলি নির্দিষ্ট করুন:
ইভেন্ট লগ: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 চালানোর চেষ্টা করুন। প্রতিবার একজন ব্যবহারকারী নোটপ্যাড খোলে, আপনার পাওয়ারশেল স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে চলবে।
উদাহরণস্বরূপ, আপনি একটি পপ-আপ বিজ্ঞপ্তি প্রদর্শন করতে পারেন বা PowerShell ব্যবহার করে একটি ইমেল পাঠাতে পারেন৷নির্দিষ্ট অ্যাপটি বন্ধ করার পরে, কখনও কখনও আপনি একটি ব্যাকআপ স্ক্রিপ্ট চালাতে চাইতে পারেন, ইত্যাদি৷ আপনি যদি কোনও প্রোগ্রাম থেকে বেরিয়ে যাওয়ার ট্র্যাক করতে চান তবে ইভেন্ট আইডি 4689 সহ ইভেন্টটি ব্যবহার করুন৷ —
A process has exited
. এর আগে আমরা একটি PowerShell স্ক্রিপ্ট দেখিয়েছিলাম যাতে কোনো প্রক্রিয়া বন্ধ হয়ে গেলে স্বয়ংক্রিয়ভাবে পুনরায় চালু হয়। একটি প্রক্রিয়ার রান/স্টপ ইভেন্ট ট্র্যাক করার সমাধানটি আরও মার্জিত এবং চলমান উইন্ডোজ প্রক্রিয়াগুলি নিরীক্ষণ করার জন্য পাওয়ারশেল স্ক্রিপ্টের প্রয়োজন হয় না৷