隐藏技术-进程隐藏

本文最后更新于:2021-08-09 晚上

进程隐藏

在windows中,用户程序的所有操作都是基于WIN32API来实现的,例如使用任务管理器查看进程等操作,这就给了病毒木马操作的空间。它可以通过HOOK技术拦截API的调用,并对数据进行监控和修改,从而达到不可告人的目的。

实现进程隐藏可以HOOK ZwQuerySystemInformain来实现进程的隐藏。遍历进程通常是调用EnumProcesses或者CreateToolhelp32Snapshot等来实现。跟踪这些函数可以发现,他们内部都调用了ZwQuerySystemInformain函数。

可以用调试器跟踪一下CreateToolhelp32Snapshot函数,可以看到在内部调用了ZwQuerySystemInformain函数

在ZwQuerySystemInformain函数的内部判断检索的信息是否是进程信息,若是,则对返回的进程信息进行修改,将隐藏的进程信息从中去掉再返回。

这需要用到Inline Hook,关于Inline Hook看这里

HOOK-Inline Hook

函数介绍

ZwQuerySystemInformation

获取指定的系统信息

1
2
3
4
5
6
NTSTATUS WINAPI ZwQuerySystemInformation(
_In_ SYSTEM_INFORMATION_CLASS SystemInformationClass,
_Inout_ PVOID SystemInformation,
_In_ ULONG SystemInformationLength,
_Out_opt_ PULONG ReturnLength
);

SystemInformationClass:要检索系统的信息类型。SystemProcessInformation(5)表示检索系统的进程信息。

SystemInformation:指向缓冲区的指针,用于接受请求的信息。该信息的大小和结构取决于SystemInformationClass的值。如检索信息是SystemProcessInformation那么缓冲区为SYSTEM_PROCESS_INFORMATION结构数组。

SystemInformationLength:SystemInformation指向缓冲区的大小。

ReturnLength:指向函数写入请求信息的实际大小的位置。

返回值:返回NTSTATUS成功或错误代码。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!