主动防御型杀毒软件的技术探讨

来源:互联网 发布:win7多重网络叠加软件 编辑:程序博客网 时间:2024/04/30 14:41
文章作者:MGF
信息来源:邪恶八进制信息安全团队(
www.eviloctal.com

  近日,带有“未知病毒主动防御”功能的KV2005上市,对于全球的黑客来说那可是一个
不好的消息。在本文开始之前,先看看媒体是怎么介绍的:

〈〈间谍程序、游戏木马、黑客程序等网络病毒的频频爆发,使国内外反病毒领域开始意识
到,单纯依靠“特征码技术”已经不能适应反病毒需求。作为打响防范“未知病毒”第一枪
的“未知病毒主动防御”系统,已经由国内反病毒厂商开发成功。

  昨日,国内知名反病毒厂商江民科技发布“四大利器”集于一身的KV2005“未知病毒主
动防御”系统。据介绍,这一系统包括“未知病毒克星”、“木马一扫光”、“KV病毒预警
系统”、“隐私信息保护”四大部分,成功实现了主动防御技术与病毒特征码技术的结合。
尤其是新增的“未知病毒克星”功能组件,采用病毒行为主动防御技术,可自动判别当前系
统进程的安全状况。用户可以根据进程安全性的高低,判别电脑是否感染未知病毒,并视情
况采取进一步措施。

  该公司总裁王江民表示,江民科技在未知病毒防范方面已形成一套从病毒防御到病毒查
杀的完整防、查、杀体系。“木马一扫光”、“未知病毒克星”都应用了“黑白名单”技术,
将正常的系统组件和应用程序全部列入“白名单”,从根本上跨越了未知病毒主动防御的技
术障碍。

  “未知病毒检测工具”配合“木马一扫光”“隐私保护”功能组件,不仅能够100%防御
木马入侵,而且还可以基于行为特征自动监控及诊断,主动防御98%的未知病毒,意味着中国
反病毒技术在主动防毒领域已经开始全面领先国际同类产品。
〉〉

  那么什么是“主动防御”,它的实现技术又是怎样的呢?本人在这里简单献丑一下,说
得不对的地方欢迎扔鞋砸鸡蛋(但是请不要泼粪^_^)!

  所谓“主动防御”,就是全程监视进程的行为,一但发现“违规”行为,就通知用户,
或者直接终止进程。它类似于警察判断潜在罪犯的技术,在成为一个罪犯之前,大多数的人
都有一些异常行为,比如“性格孤僻,有暴力倾向,自私自利,对现实不满”等先兆,但是
并不是说有这些先兆的人就都会发展为罪犯,或者罪犯都有这些先兆。因此“主动防御”并
不能100%发现病毒,它的成功率大概在60%-80%之间。如果再加上传统的“特征码技术”,
几乎可以发现100%的恶意程序了。在国外,诺顿,Kaspersky,McAfee等等杀毒巨头,都已经
向“主动防御”+“特征码技术”过渡了,这是杀毒软件的必然发展趋势。

  防火墙是一个运用“主动防御”技术的典型例子,大家都用过防火墙了,对于防火墙经
常询问用户是否放行一个进程访问网络,或者有不明连接进入本机而发出警告是否印象深刻
呢?其实防火墙就是在全程监视进程的网络行为,一但发现违反规则的行为就发出警告,或
者直接根据用户设定拒绝进程访问网络。当然,现在的防火墙一般都把系统网络进程(比如
services.exe,svchost.exe,lsass.exe等)记在“受信名单”里,这些进程是默认允许访
问网络的,如果禁止的话,操作系统就不正常了,这也是现在很多病毒和木马都喜欢远程注
入这些系统进程以突破防火墙而访问网络的原因。

  下面重点说一下“主动防御”的实现技术。大家都写过程序,知道在一个程序里如果要
实现自己的功能就必须要通过接口调用操作系统提供的功能函数,在DOS里几乎所有的系统
功能或第三方插件都是通过中断提供的,在WINDOWS里一般是通过DLL里的API提供,也有少数
通过INT 2E或SYSENTER提供。一个进程有怎么样的行为,通过看它调用了什么样的API就大概
清楚了,比如它要读写文件就必然要调用CreateFile(),OpenFile(),NtOpenFile(),ZwOpenFile()
等函数,要访问网络就必然要使用Socket函数。因此只要挂接系统API(尽量挂接RING0层的
API,如果挂接RING3层的API将有可能被绕过),就可以知道一个进程将有什么动作,如果有
危害系统的动作该怎么样处理等等。例如瑞星杀毒,大家可以在它的安装目录里找到几个驱动
文件,其实这些驱动就是挂接了ntoskrnl.exe,ndis.sys等系统关键模块里的API,从而对进
程的普通行为,网络行为,注册表行为进行监视的。

  最后让我们设想一下一个“主动防御”型杀毒软件的一般流程:通过挂接系统建立进程
的API,杀毒软件就在一个进程建立前对进程的代码进行扫描,如果发现SGDT,SIDT,自定位
指令(一般正常软件不会有这些指令),就提示,如果用户放行,就让进程继续运行;接下来
监视进程调用API的情况,如果发现以读写方式打开一个EXE文件,可能进程的线程想感染PE文件
,就发出警告;如果收发数据违反了规则,发出提示;如果进程调用了CreateRemoteThread(),
则发出警告(因为CreateRemoteThread()是一个非常危险的API,正常进程很少用到,倒是被病毒
木马用得最多)。...。可以想象,未来我们运行程序可能要被提示多次,访问网络也被提示多次,
各种各样的提示将大多数人搞的昏头转向。想安全就要管严,放松就不安全了!

原创粉丝点击