绕过安全软件挂钩SSDT的检测
来源:互联网 发布:js特效网站 编辑:程序博客网 时间:2024/04/30 15:28
绕过安全软件挂钩SSDT的检测
很多安全软件都靠挂钩SSDT中的函数来检测恶意代码,就拿卡巴举例吧,他挂了NtCreateKey来检测注册表的创建,NtCreateThread和NtResumeThread/NtWriteVirtualMemory来检测远程注入, 等等,这些钩子让我们后期的动作很可能暴露,怎么样才能为所欲为呢?
我这里提一种方案:
1. 首先在用户态读取NTOSKRNL.EXE,找出原始的SSDT的位置,提交到内核驱动中,内核保存起来以便使用
2. 在用户态勾住Ntdll中的NtCreateThread,
3.当调用NtCreateThread,直接将NtCreateThread的参数以及SSDT索引号通过DeviceIoControl传递到自己的驱动中,在自己的驱动手动压栈并根据对应的SSDT索引号来调用相应的函数,最后将返回值传递到应用层,这个只是针对NtCreateThread的特例,其他的可以照搬,不过不用担心必须针对任何一个函数都要在驱动做特定的措施,可以写个通用的,这个就自己想办法了,我倒是早就实现了一个,不过感觉有点黄and暴力,就不贴代码了.
经过我们这番处理之后,流程的变化我简单描述一下:
干净的系统创建线程的流程:
CreateThread->NtCreateThread->(2000通过int 2e进入内核)->原始的SSDT表中的NtCreateThread->
安装安全产品后的创建线程的流程:
CreateThread->NtCreateThread->(2000通过int2e进入内核)->被挂钩的SSDT表中的NtCreateThread(这里安全软件开始检测)->原始的SSDT表中的NtCreateThread->
经过我们处理后的流程:
CreateThread->NtCreateThread->(通过DeviceIoControl进入内核)->直接调用原始的SSDT表中的NtCreateThread->
可能有人说那还不如直接恢复SSDT来的痛快, (那还不被发现了哦! 呵呵,要低调低调)
- 绕过安全软件挂钩SSDT的检测
- 绕过安全软件挂钩SSDT的检测
- 绕过安全软件挂钩SSDT的检测
- 挂钩SSDT
- 修改SSDT来挂钩API的代码
- 挂钩SSDT隐藏进程
- 挂钩shadow SSDT
- SSDT的检测与恢复
- 挂钩SSDT详解附源代码
- Kernel下检测还原正确的SSDT
- Kernel下检测还原正确的SSDT
- Kernel下检测还原正确的SSDT
- Kernel下检测还原正确的SSDT
- iOS应用程序安全(24)-越狱检测与绕过
- 分享PHP小马一枚,完美绕过安全狗检测。
- 不用挂钩绕过 Klister 0.4 ——运行一个自己控制的线程调度程序
- 文件上传检测的多种绕过姿势
- 文件上传检测的多种绕过姿势
- FMode使用入门
- 云计算-cloud computing
- 启程
- mysql查询优化之基于索引的排序
- blog
- 绕过安全软件挂钩SSDT的检测
- java类——使用dom4j创建xml文件
- JSP 如何在客户端同步显示服务器时间
- java类——操作Access数据库
- 调侃国足
- java类——操作MySql数据库
- oracle to_char() to_date()函数学习
- java类——操作SqlServer数据库
- TC35T 猫开发笔记(1)