标题:
[908813] 小测金山卡巴斯基2011 微点背后的强者
[打印本页]
作者:
点饭的百度空间
时间:
2010-10-6 21:27
标题:
[908813] 小测金山卡巴斯基2011 微点背后的强者
2010-09-23 20:40
微点的背后是工程师们的心血在默默支持.
微点向来低调示人,但就有不小让人惊叹的技术就隐于其中,如果各位有兴趣的话,今天就谈谈微点吧.高手就见笑了.
hook是主动防御的重要组成部分之一,没有HOOK,主动防御也无从谈起.但和其它主动防御不同,微点hook[钩子]难以扫描出来.当金山的主动防御开启时,使用 XueTr0.36 检测时.可以看到满山的枫叶都盛开了[红了一大片] 金山的钩子全被XueTr检测出来了.
但微点的钩子却无法扫描出来
Hook实现起来是比较容易的[但我不会使用],仅仅修改函数几个字节,或修改一部分系统指令,便可完成隐藏文件及系统监控的各种功能.
就目前我知道的Hook大概有以下几种; object Hook, SSDT Hook, inline Hook, EAT Hook, SYSENTER Hook, IDT Hook, IRP Hook, IAT Hook.这几种Hook各有特点.object Hook的功能十分强大,但实现要对系统内核有比较深的了解, 对系统内核了解不深的,就看看好了.免得蓝屏. 在国内杀毒软件中微点有能力使用object Hook.不相信的自己使用XueTr0.36 检测object Hook,看看国内的杀毒软件的钩子.不过就世界上能使用object Hook的杀毒软件也比较小......需然object Hook的功能十分强大,但检测object Hook也比较简单.这不就被XueTr0.36 检测出来了. 但是微点的object Hook是有保护的,但是也有人认为保护object Hook也没什么样,毕竟在内核没啥意思.
Object属性结构如下:
typedef struct _OBJECT_ATTRIBUTES
{
ULONG Length;
HANDLE RootDirectory;
UNICODE_STRING *ObjectName
ULONG Attributes;
PSECURITY_DESCRIPTOR SecurityDescriptor;
PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;}
OBJECT_ATTRIBUTES,*POBJECT_ATTRIBUTES
调用API基于如下汇编代码
00411A3F mov esi,esp
00411A41 push looh
00411A46 lea eax,[strDllDir]
00411A4C push eax
00411A4D call dword ptr [_imp_GetWindows DirectoryA@8(42B180h)]
好了,回到主题.那为何微点的钩子无法扫描出来? 在这之前,先讲一下钩子的挂钩方法.常用的挂钩方法方法有如下3种;
要注意的是这里的挂钩方法仅限于SSDT表和SSDT shadow表的挂钩.
1,在要挂钩的函数中使用"JMP XXXXXXXX"覆盖原函数的指令,该指令的机器码是E9XXXXXXXX,占用5个字节的地址空间.
2,在要挂钩的函数中使用"JMP FARXXXXXXXX"覆盖原函数的指令,后面的XXXXXXXX是跳转的绝对地址,该函数指令的机器码是EAXXXX0800,该指令占用7个字节的地址空间.
3,在要挂钩的函数中先使用"PUSHXXXXXXXX",之后直接用RETN返回,这样就间接实现了跳转,这两条指令共占用6个字节的地址空间.
如上所述,那要避开挂钩的函数,跳转到函数中不被挂钩的代码段就可以跳出主动防御的重重拦截,即是跳转API函数+10的地址.但是通常情况下API+5就已经可以对付大部分钩子了.为了对付这种API+5的跳转,出现了变形的API函数挂钩技术[变形JMP],变形API函数挂钩是将挂钩的地址进行变形,就是挂钩的地址不再是在API+5的范围内,变成了API函数中数十个字节中任意几个,十几个甚至数十个字节.反正是在
[(API+5<API+X) X>5]
的情况下进行的,但这种技术也不是很好使用的,需要对进行变形API函数挂钩的API函数有比较深的理解,不然是无法使用的.同样微点是使用变形API函数挂钩的,在挂钩深度上,连XueTr0.36和天琊都无法检测出来,这说明微点的工程师对挂钩的API函数有很深的理解.实际上在挂钩深度上,微点比卡巴斯基2011要深,在XueTr0.36的检测下卡巴斯基2011的挂钩还是相当多的. 国内杀毒软件也就江民,当然还有安天防线有能力这样来挂钩[北信源等不知道],中国的杀毒技术不差,但就是和360斗争,空耗实力. 悲剧呀! 那变形API函数挂钩技术和钩子隐藏有何关系呢? 我看了下资料,钩子隐蔽技术是无意中被发现的技术,这和变形API函数挂钩技术有很深的关系.一个ARK工具扫描API函数是否被挂钩时,是基于对比来实现的. 简单来说就是检测,封装API函数的原始DLL文件中API函数的地址和内存中的API函数地址,是否一样,不一样就可以说该API函数已经被挂钩(
要注意的是,这是在通常来讲的情况下,可认为其已被挂钩
.) 这是反汇编引擎对其进行扫描,但反汇编引擎通常只扫描API函数地址的前十个字节,也是说万一变形API挂钩,不在前十个字节里,就会被认为其没被挂钩,但事实上API已经被挂钩. 这就实现了API钩子隐藏. 这便是初级的API钩子隐藏技术.
object Hook,变形API函数挂钩技术,微点还有很多的技术是邻先的.但是那是微点的工程师们多小个日夜,多小心血才凝成.这对微点,这由几乎没有核心研发能力刚毕业的年轻人[但这年轻人的年龄比自己要大的多,说年轻人时真有点怪异的感觉]占大部分的微点研发部,来说由为艰难. 祝愿你们能苦尽甘来,为微点谱写又一个传奇!正像点饭的百度空间的一句话"三载磨剑綻锋芒,今日拨云迎朝阳;历经磨难終成器,破茁微点振翅飞."说实话这诗不是很好.-_- 他的百度空间是
http://hi.baidu.com/micropoint
有兴趣的去看看吧.
2010年10月6日对部分有问题的地方进行修改.欢迎高人指正.
2010年10月1日
2908813(
http://hi.baidu.com/2908813/blog ... 6386067bf4803c.html
)
作者:
2009renmin
时间:
2010-10-6 22:20
你暴露了微点的核心技术秘密。。。。
作者:
凡间幽灵
时间:
2010-10-6 22:39
“
需然
object Hook的功能十分”
虽然或诚然 俺感觉都有可能:o
“很多的技术是
领先
的.但是那是微点的工程师们
多少
个日夜,
多少
心血才凝成”
俺觉得可能是领先,多少,多少。。。。;)
“大部分的微点研发部
,
来说由为艰难”
额。。。那个逗号貌似可以拿下吧:lol:
:D:D:D
楼主莫拿板砖拍我。。。我是凑个热闹,看见好文就想顶下,哈哈加下人气撒;););)
[
Last edited by 凡间幽灵 on 2010-10-6 at 22:56
]
作者:
soonbest
时间:
2010-10-8 11:08
技术贴看着很吃力。。。汗。
作者:
meihaosuda
时间:
2010-10-8 12:41
看不懂呀,呵呵
作者:
lun0414
时间:
2010-10-8 13:23
好文章,发人深省!希望能有更多的技术文章出现!
作者:
myliukeyu
时间:
2010-10-8 13:50
楼主你太没见识了,只有病毒才会使用钩子,微点是真正的杀毒软件所以没有钩子!~
作者:
lun0414
时间:
2010-10-8 13:54
Quote:
Originally posted by
myliukeyu
at 2010-10-8 13:50:
楼主你太没见识了,只有病毒才会使用钩子,微点是真正的杀毒软件所以没有钩子!~
我对你表示无语...你用SReng和XueTr看看你的杀毒软件是不是HOOK
作者:
cia007
时间:
2010-10-8 20:02
强烈的支持微点,希望2。0更上十层楼!
作者:
lxc2009wd
时间:
2010-10-9 17:10
学习一个,看看
欢迎光临 微点交流论坛 (http://bbs.micropoint.com.cn/)
bbs.micropoint.com.cn