首页
社区
课程
招聘
[原创]没有对应驱动文件的系统线程
发表于: 2019-1-19 11:33 7598

[原创]没有对应驱动文件的系统线程

2019-1-19 11:33
7598
/*
早在2014.10.22都已经写过一个失败的隐藏系统线程的代码.
现在看来,当时失败在函数的处理上,里面有很多无效/非法的指令.

这几天突然看到:
https://github.com/tandasat/MemoryMon.git
https://github.com/Cr4sh/DrvHide-PoC.git
来个灵感的想法,写个测试,所以有了此文.

此驱动在procexp.exe是查不到的,因为驱动加载失败.
保留搜索内存的PE特征也应该搜索不到,因为驱动加载失败.
但是procexp.exe查看system的进程的线程信息能看到,但是你找不到对应的驱动,因为驱动加载失败.
假如驱动支持卸载,让驱动启动成功,卸载函数不做任何处理,我想驱动卸载后自己的那个系统线程还会继续运行.

最后说下:
这是个小玩意,
也许对你有用,
请勿用于非法用途,
小心MemoryMon监控出.
其实线程回调也能监控出,并进程识别和阻断(自己编写杀系统线程的代码)的.

编译环境:VS2017+WDK10
测试环境:Windows 10 x64

made by correy
made at 10:38 2019/1/19
https://correy.webs.com
*/

#include <ntifs.h>
#include <windef.h>
#include <intrin.h>

#define TAG 'tset' //test


PVOID gThreadObj;


/*
这里有众多的注意事项要说明:
1.函数内不准有异常处理的函数,特别是X64.
2.编译选项要关闭/JMC.否者会出现一些怪异的函数.
3.编译选项要关闭/guard:cf
4.此函数可考虑用汇编写.
5.此函数也可考虑用ShellCode写.
6.此函数不可访问本驱动的全局变量.
7.此函数不可直接调用系统的API,可获取地址,因为导入表在本驱动.
*/
#pragma region Context code that cannot reference any exports directly
#pragma optimize("", off)
#pragma check_stack(off)
#pragma runtime_checks("", off)


KSTART_ROUTINE MyThreadStart;
VOID MyThreadStart(__in PVOID  StartContext)
/*
此函数的功能在于的你的想象.
StartContext传入的内容,你想想吧!但这必须是你申请的内存,不可使本驱动的(局部或全局)变量.
*/
{
    //LARGE_INTEGER li;

    UNREFERENCED_PARAMETER(StartContext);

    __debugbreak();


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (12)
雪    币: 515
活跃值: (3272)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
2
2019-1-19 13:12
0
雪    币: 4006
活跃值: (721)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
这样已经在用了,补充一点,如果多个函数需要运行,需要注意函数命名...
2019-1-20 16:15
0
雪    币: 285
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感觉还是有点复杂,我是写了两个驱动,第一个驱动就是个pe加载器,在DriverEntry中申请内存手动将另一个驱动读入内存,然后重定位,然后抹头,创建线程,入口点设置为这个驱动的入口点,最后加载器返回驱动加载失败退出。
2019-1-21 00:22
0
雪    币: 284
活跃值: (3599)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
5
alloc一段buf,拷代码,处理重定位什么的,新线程指向buf,卸载驱动,这样的?
2019-1-21 09:24
0
雪    币: 405
活跃值: (2280)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
不在任何模块内的系统线程,各种回调,可能在WIN10 64下触发PG蓝屏。
2019-1-21 16:35
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
高手在民间
2019-1-21 17:05
0
雪    币: 4006
活跃值: (721)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
wowocock 不在任何模块内的系统线程,各种回调,可能在WIN10 64下触发PG蓝屏。
正解,但也很好绕过,直接向不受pg保护的模块写入当跳板即可
2019-1-21 22:53
0
雪    币: 938
活跃值: (943)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
驱动的 DRIVER_OBJECT 引用计数加1不是更骚嘛
2019-1-22 10:26
0
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
英雄在看雪
2019-1-22 15:33
0
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
xiexie 分享
2019-1-22 18:58
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
有何作用
2019-1-27 18:11
0
雪    币: 44
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这不是前段时间被人举报的ID DG@KANXUE
2019-1-28 11:00
0
游客
登录 | 注册 方可回帖
返回
//