【RootKit】Chaos-Rootkit解读-1 进程隐藏
去年学了点kernel开发,实战太少了,看看别人的代码怎么写的
项目地址:https://github.com/ZeroMemoryEx/Chaos-Rootkit
进程隐藏
测试环境:

连接到rookit

使用效果:


原理剖析
在Driver.c/processIoctlRequest中处理这个功能的ioctl
NTSTATUS processIoctlRequest( |
核心功能函数HideProcess
首先通过PsLookupProcessByProcessId找到EPROCESS

然后就是找到activelist双向链表,然后将当前eprocess从双向链表中摘除

关于eprocess的双向链表activelist你可以回顾前文:【Win Pwn】HEVD-内核栈溢出(下)
这里简单提及:
在刚才的
EPROCESS中,有一段记录的是程序的链表:ActiveProcessLinks,而且windows会生成一段独特的标识来标记每一个程序:UniqueProcessId,在这段 双向 链表上每段程序都可以被找到,因为可以向前和向后查找。



调试
这里我新建了一个cmd.exe,进程pid为:4648(0x1228)


此时他的flink和blink为



之后使用rootkit

开发
双向链表删除作为数据结构基础部分没啥好说的,值得一提的是这里的锁设计
DWORD |
在os运行时,内核可能会对这块链表进行修改,当我们修改时在这里添加一个锁可以有效地避免条件竞争导致出现的未定义行为
防护

其实可以这样想,在任务管理器中我们已经看不到了这个进程,那么为什么在windbg中依然能够通过PID找到该进程呢?
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.






