MonitorProcess là một Windows Kernel Driver có chức năng giám sát và phân tích các tiến trình thực thi lệnh trên hệ thống, đặc biệt là cmd.exe và powershell.exe.
Khi phát hiện các tiến trình này được khởi tạo, driver sẽ tạm dừng tiến trình trong 5 giây, ghi nhận câu lệnh được thực thi, sau đó cho phép tiến trình tiếp tục hoạt động bình thường.
- 🔍 Theo dõi tiến trình tạo mới thông qua
PsSetCreateProcessNotifyRoutineEx. - 🧠 Nhận diện tiến trình đặc biệt (
cmd.exe,powershell.exe) theo tên image. - ⏸️ Tạm dừng tiến trình trong 5 giây bằng cách:
- Gửi tín hiệu
SuspendProcess(PID)hoặc sử dụngZwSuspendProcess.
- Gửi tín hiệu
- 📜 Ghi lại câu lệnh thực thi (Command Line) bằng cách:
- Truy cập
PEB→RTL_USER_PROCESS_PARAMETERS.CommandLine.
- Truy cập
▶️ Tiếp tục tiến trình sau khi trích xuất xong dữ liệu (ZwResumeProcess).- 🪵 Ghi log ra file hoặc output debug để kiểm tra hành vi.
| Thành phần | Phiên bản khuyến nghị |
|---|---|
| 💻 Hệ điều hành | Windows 10 / 11 (x64) |
| ⚙️ Visual Studio | 2019 hoặc 2022 |
| 🧩 WDK (Windows Driver Kit) | 10.0.22621 trở lên |
| 🧱 Ngôn ngữ | C / C++ (Kernel Mode) |
- Driver đăng ký callback
- Sử dụng
PsSetCreateProcessNotifyRoutineExđể nhận thông tin khi tiến trình được tạo.
- Sử dụng
- Kiểm tra tên tiến trình
- Nếu
ImageFileNamelàcmd.exehoặcpowershell.exe, driver sẽ tiếp tục xử lý.
- Nếu
- Tạm dừng tiến trình
- Gọi
ZwSuspendProcessđể dừng tạm thời trong 5 giây.
- Gọi
- Đọc command line
- Truy cập
PEB->ProcessParameters->CommandLineđể lấy lệnh mà tiến trình chuẩn bị thực thi.
- Truy cập
- Ghi log
- Lưu câu lệnh ra
DbgPrint.
- Lưu câu lệnh ra
- Tiếp tục tiến trình
- Sau 5 giây, driver gọi
ZwResumeProcessđể cho phép tiến trình tiếp tục hoạt động.
- Sau 5 giây, driver gọi
- Mở project bằng Visual Studio + WDK
- Chọn cấu hình:
Release x64 - Build → tạo file
MonitorProcess.sys
Chạy dưới quyền Administrator:
sc create MonitorProcess type= kernel binPath= "C:\Path\To\MonitorProcess.sys"
sc start MonitorProcess