首页
社区
课程
招聘
只谈思想
发表于: 2011-4-6 15:48 6737

只谈思想

2011-4-6 15:48
6737
拦截恶意驱动

方法一:
主要思想是:
Hook 调用DriverEntry的代码,此段代码位于nt!IopLoadDriver+0xXX(偏移)函数中。

实现的方法比较简单:

1,找到位于IopLoadDriver中的调用DriverEntry的调用点;
2,HOOK该调用点,进入到自己构造的MyDriverEntry函数,验证当前正在加载的驱动代码(特征码)。我这里只做了一些简单的特征码匹配,如果匹配成功,则证明当前正在加载的驱动是一个病毒驱动。
3,在验证当前加载的驱动时,可以根据特征码,签名,以及行为分析来判断是否允许加载这个驱动。

方法二:
注册一个内核回调,PsSetLoadImageNotifyRoutine,在加载一个image的时候去判断;

方法三:
好像看到别人用堆栈回溯的方法,找到调用DriverEntry的上一级上一级XXXX函数去HOOK,相关的实现自己找啦,哈哈哈

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
2
一上来就有这样的好文章,学习了~~
2011-4-6 16:03
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
3
只知道  鬼影中会自动开启服务 加载驱动,没真正去分析。。。。lz 膜拜。。。
2011-4-6 16:47
0
雪    币: 388
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
学习了,在过滤驱动的时候,是否有更加有效的检测方式呢
2011-4-6 17:06
0
雪    币: 392
活跃值: (89)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
只要AntiVirus.sys驱动在atixx.sys之前加载起来,那atixx.sys就不可能加载起来了。
至于AntiVirus.sys如何尽可能早的启动,则只是策略的问题了,比如:boot类型,预先防御……
2011-4-6 17:11
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
好好学习, 十分感谢.
2011-4-6 17:17
0
雪    币: 392
活跃值: (89)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
更有效的应该是策略问题;
源码提供的是检测点(HOOK点),至于在这个检测点上,如何检测,那完全取决于你的想象力。DEMO中,只是以提取特征码为方法来拦截,属于事后策略。
2011-4-6 17:18
0
雪    币: 122
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Good!小鸟mark下!
2011-4-6 18:21
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好文章。学习了。做个记号
2011-4-7 11:08
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
10
明白了, 思想就是钩住入口.然后检测合法性.
看情况返回失败.
理论上只有利用软件本身的漏洞才能加载驱动了.
添加白名单, 利用云服务器.
2011-4-7 11:52
0
雪    币: 392
活跃值: (89)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
11
恩,是的,可以采用多种策略,综合分析。
2011-4-7 15:19
0
游客
登录 | 注册 方可回帖
返回
//