এই আর্টিকেলে আমরা দেখাবো কিভাবে Windows-এ একটি নির্দিষ্ট প্রোগ্রাম (প্রসেস) চালু হওয়ার ইভেন্ট ট্র্যাক করতে হয় এবং একটি অ্যাকশন সম্পাদন করতে হয় (স্ক্রিপ্ট, কমান্ড, প্রোগ্রাম চালানো, ইমেইল পাঠানো, ইত্যাদি)। উদাহরণস্বরূপ, আমরা notepad.exe প্রসেস চালু হওয়া ট্র্যাক করব। এবং যখন একজন ইউজার Notepad খুলবে, Windows স্বয়ংক্রিয়ভাবে একটি নির্দিষ্ট PowerShell স্ক্রিপ্ট চালাবে।
প্রথমে, Windows-এ প্রসেস অডিট পলিসি কনফিগার করুন। আপনি স্ট্যান্ড-অ্যালোন কম্পিউটারে লোকাল গ্রুপ পলিসি এডিটর (gpedit.msc) ব্যবহার করে অডিট পলিসি কনফিগার করতে পারেন। আপনি যদি আপনার AD ডোমেনের কম্পিউটার এবং সার্ভারে পলিসি কনফিগার করতে চান, তবে গ্রুপ পলিসি ম্যানেজমেন্ট কনসোল (gpmc.msc) ব্যবহার করুন।
- Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Audit Policy এ যান;
- Audit process tracking প্রপার্টিজ খুলুন এবং Success ইভেন্টের জন্য সক্রিয় করুন;

- Group Policy সেটিংস প্রয়োগ করতে চালান:
gpupdate /force
এখন, Windows-এ যেকোনো প্রসেস শুরু হলে, Event Viewer -> Windows Logs -> Security-এ EventID 4688 (A new process has been created) এর সাথে একটি ইভেন্ট দেখাবে। ইভেন্টটি দেখাবে কে প্রসেসটি চালিয়েছে (Account name), প্রসেসের নাম (New Process Name), এবং প্যারেন্ট প্রসেসের নাম (Creator Process Name)।

আপনি নির্দিষ্ট প্রসেস ব্যবহার করে ইভেন্ট লগ থেকে অ্যাপ চালু হওয়ার ইভেন্ট সিলেক্ট করতে পারেন 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*”}
ফলস্বরূপ, আমরা এই কম্পিউটারে ইউজারদের দ্বারা প্রোগ্রাম চালু হওয়ার ইতিহাস পেয়েছি।

তারপর Task Scheduler-এ একটি নতুন টাস্ক তৈরি করুন যা EventID 4688 সহ ইভেন্ট आने पर চালাবে।
- Task Scheduler (
taskschd.msc) খুলুন এবং একটি নতুন টাস্ক তৈরি করুন -> Create Task; - টাস্কের নাম দিন এবং নির্দিষ্ট করুন যে এটি সব ইউজারের জন্য চালাতে হবে (When running the task, use the following user account -> BUILTIN\Users)। যদি আপনি GPO ব্যবহার করে টাস্ক তৈরি করেন, তবে এই ফরম্যাট ব্যবহার করুন:
%LogonDomain%\%LogonUser%; - Actions ট্যাবে, আপনি যে অ্যাকশনটি করতে চান সেটি সেট করুন। এই উদাহরণে, আমি একটি PowerShell স্ক্রিপ্ট চালাব (call
powershell.exewith attributes:-ExecutionPolicy Bypass -file "C:\PS\ProcessRunEvent.ps1);
- তারপর টাস্কটি একটি Windows ইভেন্টের সাথে বাঁধুন। Triggers ট্যাবে যান, New -> On an event -> Custom -> New Event Filter সিলেক্ট করুন;
- পরবর্তী উইন্ডোতে, নিচের ইভেন্ট ফিল্টার অপশনগুলো নির্দিষ্ট করুন:
Event logs:Security
Event ID:4688
Keywords:Audit Success

- তারপর XML ট্যাবে যান এবং Edit query manually অপশনটি সক্ষম করুন। ফিল্টারে নিচের লাইনটি যোগ করে কোয়েরি এডিট করুন:
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 চালানোর চেষ্টা করুন। প্রতিবার একজন ইউজার Notepad খোলেই, আপনার PowerShell স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে চালবে।
উদাহরণস্বরূপ, আপনি একটি পপ-আপ নোটিফিকেশন দেখাতে পারেন বা PowerShell ব্যবহার করে ইমেইল পাঠাতে পারেন।

নির্দিষ্ট অ্যাপ বন্ধ হওয়ার পর, কখনও কখনও আপনি একটি ব্যাকআপ স্ক্রিপ্ট চালাতে চাইতে পারেন। আপনি যদি একটি প্রোগ্রাম বন্ধ হওয়া ট্র্যাক করতে চান, তবে Event ID 4689 — A process has exited ব্যবহার করুন।
আমরা আগে একটি PowerShell স্ক্রিপ্ট দেখিয়েছি যা একটি প্রসেস বন্ধ হলে তা স্বয়ংক্রিয়ভাবে রিস্টার্ট করে। প্রসেস চালু/বন্ধ ইভেন্ট ট্র্যাক করার সমাধানটি আরও সুন্দর এবং চলমান Windows প্রসেস মনিটর করার জন্য PowerShell স্ক্রিপ্টের প্রয়োজন নেই।