Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Lab 4: Simple Rootkit

Thành viên
Nhóm 3
Nguyễn Nhật Quân 21522497

Phạm Nguyễn Hải Anh 21520586

Thực hành
Yêu cầu 1: Tìm hiểu code và thay đổi code sao cho khi chạy driver
lên sẽ ẩn mộtchương trình tùy ý, hiển thị thông tin sinh viên khi
driver được chạy.

#define SYSCALL_INDEX(_Function) *(PULONG)((PUCHAR)_Function+


1)
#define HOOK_SYSCALL(_Function, _Hook, _Orig ) \
_Orig = (PVOID) InterlockedExchange( (PLONG) &MappedSy
stemCallTable[SYSCALL_INDEX(_Function)], (LONG) _Hook)

#define UNHOOK_SYSCALL(_Function, _Hook, _Orig ) \


InterlockedExchange( (PLONG) &MappedSystemCallTable[SY
SCALL_INDEX(_Function)], (LONG) _Hook)

⦁ SYSCALL_INDEX sẽ lấy ra chỉ mục của hàm ban đầu trong bảng SSDT

HOOK_SYSCALL sẽ thực hiện thay thế hàm ban đầu bằng hàm được hook

UNHOOK_SYSCALL sẽ thay thế lại hàm đã được hook hiện tại bằng hàm ban đầu
Hệ điều hành Windows sử dụng hàm ZwQuerySystemInformation để thực hiện
truy xuất đến các thông tin của hệ thống. Task manager cũng sử dụng hàm này để
lấy ra danh sách các tiến trình đang chạy hiện tại.

Lab 4: Simple Rootkit 1


NTAPI ZwQuerySystemInformation(
IN ULONG SystemInformationClass,
IN PVOID SystemInformation,
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength);

Hàm ZwQuerySystemInformation sẽ trả về danh sách liên kết chứa thông tin về
các tiến trình nếu SystemInformationClass = 0x5
Prototype của hàm ZwQuerySystemInformation được lưu lại với tên biến
OldZwQuerySystemInformation

typedef NTSTATUS (*ZWQUERYSYSTEMINFORMATION)(


ULONG SystemInformationCLass,
PVOID SystemInformation,
ULONG SystemInformationLength,
PULONG ReturnLength
);

ZWQUERYSYSTEMINFORMATION OldZwQuerySystemInformation;

Chương trình định nghĩa hàm NewZwQuerySystemInformation tương tự như hàm


ZwQuerySystemInformation nhưng sẽ ẩn đi các tiến trình mà trong tên có chuỗi
kí tự được xác định

Hàm NewZwQuerySystemInformation đang duyệt qua danh sách tiến trình và tìm
tiến trình có chứa chuỗi “notepad” trong tên thông qua trường ProcessName. Sau
đó thực hiện ẩn tiến trình đó đi bằng cách gán SystemInformation = NULL.

Lab 4: Simple Rootkit 2


Chỉ cần hook hàm
ZwQuerySystemInformation → NewZwQuerySystemInformation là có thể thực
hiện được mục đích

Vậy nếu thay thể “notepad” thành tên của chương trình chúng ta muốn ẩn thì sẽ có
thể ẩn đi. Ở đây em thế thành “explorer”

Lab 4: Simple Rootkit 3


Sau đó tiến hành build và chạy thử:

Khi chưa start service:

Khi start service:

Lab 4: Simple Rootkit 4


Lab 4: Simple Rootkit 5

You might also like