解剖主动防御技术 瑞星、卡巴、江民甚至连360都集成有主动防御模块,撇开技术实质和水平来看,我们必须承认主动防御技术已和云安全一同成为国产杀软的两大技术方向。而要谈到主动防御,我们就不得不提微点。如果仔细考究起来,云安全一词是在2008年7月由趋势科技率先提出的,而主动防御技术早在2005就由微点官方提出,其软件也已基本成型。只是由于一些特殊的原因,直到2008年主动防御才同云安全一道进入大众的视野。那个特殊原因大家心知肚明,这里我就不细说了。本贴以微点为例不仅是因为微点是这一技术的首倡者、先行者,更重要的是,到今天为止,它仍是这一领域的领军者。“一直被模仿,从未被超越”这一句话用在微点身上再合适不过。说到这里,“枪手”一词是不是已经浮现在某些人的脑海里呢?我不是枪手,我只承认自己是点饭。我常往返于微点社区与卡饭论坛之间,懂得的并不比大家多,只是常将“贫贱不能移,富贵不能淫”的话语记在心头。若硬要给我戴上一顶“枪手”的帽子,恕本人不念先贤“以和为贵”的教诲。(卡饭有一股风气,好像只要明确表达对某杀软的爱憎就被归为枪手一列,对这种“不正之风”鄙人深感无奈) 言归正传,为了说明主动防御的技术特点,我摘取几段微点官方09年12月31日的病毒快报如下: 木马下载者
Trojan-Downloader.Win32.Geral.btg 该样本是使用“Microsoft visual C++/C”编写的“木马下载者,由微点主动防御软件自动捕获,采用“WinUpack”加壳方式试图躲避特征码扫描,加壳后长度为25,540字节,图标为“file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/ksohtml/wps_clip_image-785.png”, 使用“ exe”扩展名,通过网页木马、下载器下载、移动介质(如U盘)等方式进行传播。
用户中毒后,会出现计算机及网络运行缓慢,杀毒软件无故退出且无法启动,出现大量未知进程等现象。
病毒分析
1.病毒运行后动态获取所需API地址,检查"%SystemRoot%\system32\taskmgr.exe"是否存在,不存在就退出当前进程。
2.如果"%SystemRoot%\system32\taskmgr.exe"存在,就设置病毒自身为系统、隐藏属性。
3.检查病毒所在目录下是否存在AUTORUN.inf,如果不存在,设置系统重启后自我删除,否则就执行explorer.exe。
4.创建名称为"YMING"的互斥量,设置自己为"SeDebugPrivilege"权限。
5.遍历进程查找ekrn.exe,如果找到就调用命令行删除ekrn服务,结束ekrn.exe和egui.exe进程。
6.遍历进程查找nod32.exe,如果找到就调用命令行删除nod32服务,结束nod32krn.exe和nod32kui.exe进程。
7.释放动态库文件"%SystemDriver%\bsn.dll",并设置为隐藏属性。
8.遍历进程查找RavMonD.exe,如果找到就结束RavMonD.exe和rstray.exe进程。
9.创建线程,枚举并杀毒软件窗口。
10.调用rundll32.exe以RKTV为参数加载"%SystemDriver%\sbes.dll",最后删除此文件。
11.在bsn.dll中,释放驱动文件"%SystemRoot%\fonts\pci.sys",创建名称为"aae"的服务,向名称为"\\.\NUV"的设备发送控制码,查找并结束360tray.exe、360safe.exe、safebox.exe、krnl360svc.exe、zhudongfangyu.exe、rstray.exe、Mcshield.exe等进程,并遍历磁盘删除360和卡巴斯基的安装目录,恢复SSDT。
12.创建线程,释放文件并加载动态库文件"%Temp%\nnn1.tmp"。
13.在nnn1.tmp中,提升自身权限,创建线程,连接网络,下载病毒列表到本地保存为"%SystemRoot%\Fonts\rh.ini";创建大量安全软件映像劫持;查找并关闭类名为"AfxControlBar42s"的窗口。
14.创建线程,遍历查找进程,如果存在avp.exe,就通过释放avp.exe中的模块使进程退出,然后停止avp服务,退出线程。
15.创建线程,检查"%SystemRoot%\system32\dllcache\linkinfo.dll"是否存在,如果不存在,就拷贝"%SystemRoot%\system32\linkinfo.dll"为"%SystemRoot%\system32\dllcache\linkinfo.dll",将"%SystemRoot%\system32\linkinfo.dll"映射到内存,释放驱动文件"%SystemRoot%\fonts\niuxs.sys",创建名称为"niuxs"的服务,感染"%SystemRoot%\system32\linkinfo.dll"。
这个马儿动作不少,提权、进程注入、修改注册表、映像劫持,真是“无恶不作”。如果让HIPS或基于HIPS的安全软件来防御的话,木马的绝大多数动作都会被拦截下来,可问题在于,用户要对每一个报警动作作出准确的判断,在忍受频繁询问的同时还承受着无法彻底清除病毒的隐患。那微点又是如何呢? file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/ksohtml/wps_clip_image-2302.png 你看,就一个警示框,明确报出,彻底删除。问题的关键在于微点是如何做出判断的。从警示框可以看出,微点并不是对某一动作的单一报警,而是先让程序运行开来,待判断一个程序为木马的条件全部或基本满足后,就可以下结论,并实施“抓捕”了。当然,不一定要等到木马完全终结的那一刻才作出判断,过程当中就会露出马脚,我们当然不会知道微点是截止到上面的哪一步才作出判断的,但我们仍然可以猜得个大概。 为了更好的说明问题,请让我带着大家温习一下高中数学:
充分条件:有甲这个条件一定会推出乙这个结果,有乙这个结果不一定是 甲这唯一个条件.关联词是 只要……就……
如 只要天下雨,地就会湿。
有“下雨”这个条件就一定有“地湿”这个结果,但“地湿”这个结果不一定就是“天下雨”造成的,也许还可能有其他的条件原因,如洒水车洒的、别人喷的等等。
必要条件:有甲这个条件不一定能推出乙这个结果,但乙这个结果一定要 有甲这个条件。关联词是 只有……才……
如 只有阳光充足,菜才能长得好。 有“阳光充足”这个条件“菜”不一定就长得好,还需要施肥、浇水等其他条件。但“菜”要长得好一定要有“阳光充足”这个条件。
回到正题,请问“修改注册表的就是木马吗?”回到当然是否定的。几乎所有的软件在安装的过程中都要修改注册表,在这一步就像HIPS一样警声长鸣是非常不合适的。但几乎说有的木马都要修改注册表,那么“修改注册表”不是判断程序为木马的充分条件而是一个必要条件。还有,创建和修改服务、开发端口等等。这些都是判断程序为木马的必要条件(个别情况为充分条件),当然可以对这些必要条件进行细分,危险程度也有所不同,如哪些服务的创建和修改是危险的,哪些端口的开发是可疑的等等。将这些必要条件和充分条件结合起来,构筑一个判定木马的逻辑体系,将监控中的程序动作与之对比,就可以判断程序是木马、后门、病毒还是蠕虫了。 可见,微点不是HIPS,当然也不是智能化的HIPS。两者原理不同,不可等量齐观。 HIPS监控的是“点”,靠的是规则。不管你是好人还是坏人,不论你是要切菜还是杀人,只要你拿刀,我就报警。 微点监控的是“线”,靠的是条件。拿刀可以,我要看你接下来要做什么,才能下结论,切菜可以,杀人不行。 所以说,主动防御本质上是数学上的逻辑问题。学不好逻辑,其他杀软休想赶上微点,更别提超过了。 说的这里,大家应该明白为什么微点主防没有扫描了吧。(严格说也有,主防有病毒库在选中、复制、粘贴文件等操作的过程中,对收集到的已知病毒进行快速过滤,但这只是辅助)它的原理决定了主防的表现形式。
最后来说说各大杀毒软件的“主动防御”吧。 瑞星2010的主动防御有不小的进步,也是比较接近微点的一个杀软。这让我联想到那个“特殊原因”,事情就容易理解了。理解吧,理解万岁!我什么都没说,你们可不要想歪喽。 卡巴斯基的主动防御彰显了俄罗斯黑客的顶尖技术和核武器的全面杀伤力,不过HIPS的味道还是浓了些。 江民的主防嘛!我们就叫他HIPS吧。 金山嘛……我只能一声叹息。 360的话,可以无视之。 |