驱动类的恶意软件(驱动隐藏)如何排查,隐藏进程如何排查?

1 个回答

  • 蓝银皇
    天道忌满,人道忌全。 水满则溢, 物极必反。
    驱动类恶意软件(驱动隐藏)和隐藏进程的排查要分 **内核层** 和 **用户层** 两个维度去看,因为这类恶意代码常常利用内核钩子或直接修改内核数据结构来绕过普通工具的检测。 ## 1. 驱动类恶意软件(驱动隐藏)排查方法 ### ① 检查加载的驱动列表 * **Windows** * `sc query type= driver`(查看注册的驱动服务) * `driverquery /v`(查看加载的驱动及路径) * Sysinternals **Autoruns** → `Drivers` 选项卡 * **WinDbg** 或 **KD** → 查看 `!drvobj` 输出的驱动对象,和磁盘上的驱动文件比对 * **Linux** * `lsmod`(列出加载的内核模块) * `cat /proc/modules` * `modinfo <模块名>`(查看模块信息) * `dmesg`(查看驱动加载日志) > 恶意驱动可能会通过 **DKOM(Direct Kernel Object Manipulation)** 修改内核链表,使 `lsmod` 等命令看不到它,所以要用内核调试器比对实际内存结构。 ### ② 检查驱动文件签名与路径 * 驱动文件一般位于: * Windows:`C:\Windows\System32\drivers\` * Linux:`/lib/modules/$(uname -r)/kernel/` * 校验文件签名(Windows): * `sigverif`(签名验证工具) * `Get-AuthenticodeSignature`(PowerShell) * 如果发现未签名、路径异常、文件名伪装(如 `nvx.sys` 模仿显卡驱动),需要重点分析。 ### ③ 内核内存结构比对 * 使用内核调试器(WinDbg / KD)读取内核对象(`PsLoadedModuleList`)并与用户态命令结果对比,找出被 DKOM 隐藏的驱动。 * Linux 可读取 `/dev/kmem` 或使用 `volatility`/`rekall` 对内存镜像进行分析。 ## 2. 隐藏进程的排查方法 ### ① 用户态排查 * Windows: * `tasklist /v`、`wmic process list` * Sysinternals **Process Explorer**(会用更底层 API 获取进程信息) * Linux: * `ps aux`、`top`、`htop` * `lsof -p <pid>`(查看进程打开的文件和网络连接) > 但如果是内核层隐藏(Rootkit),这些命令可能被 Hook,导致看不到目标进程。 ### ② 内核态排查 * Windows: * 用 WinDbg 附加内核,查看 `PsActiveProcessHead` 链表与 `tasklist` 对比 * 检查 SSDT、Shadow SSDT、内核回调表(`PsSetCreateProcessNotifyRoutine`)是否被恶意篡改 * Linux: * 从 `/proc` 遍历进程目录,与内核 `task_struct` 链表做对比 * 检查 `sys_call_table` 是否被 Hook ### ③ 内存取证 * 使用 **Volatility**、**Rekall** 等内存取证工具: * `pslist`(常规进程列表) * `psscan`(内存扫描,能找出被隐藏的进程结构体) * 对比结果找出隐藏进程 ## 3. 综合建议 1. **对照分析** * 用户态工具(tasklist/lsmod) vs 内核态调试器/内存分析工具 2. **签名与白名单机制** * 只允许加载经过签名的驱动 3. **内存扫描** * 用 Volatility 对内存镜像做进程、模块扫描 4. **实时监控** * 启用 EDR(Endpoint Detection & Response)类产品,监控内核钩子与驱动加载事件
    发布于 2025-08-12 00:03 •IP属地 吉林
    举报
    评论
    收藏