langzi2009
中级用户
  
积分 311
发帖 299
注册 2009-8-2
|
#1 金山对主动防御的见解~~~~分析
说说主动防御
导读: 这部分在金山毒霸 2010 Beta 中暂时没有可对照的实体对象, 所以本篇并不是讲述主动防御在金山毒霸 2010 Beta 中应用.
主动防御应不应该有?
1) 这个可以有, 也应该有. 我想问大家一个问题, 主动防御是什么? 其实主动防御什么都不是 主动防御只是为了迎合宣传的需要而早就的一个 "技术" 概念. 那主动防御到底代表了什么? 在我眼中, 主动防御意味着另一个名词: 访问控制. 用过 Vista/7 系列视窗操作系统的用户一定不会对这个东西感到陌生:
下载 (23.69 KB)
2009-11-18 18:21
对, 这就是 UAC, 用户账户控制的询问窗口. 这其实就是个简单的访问控制, 或者说, 主动防御 在需要管理员权限的程序真正开始执行前, 就文件进行分析, 随后决定向用户提供怎么的提示信息并询问用户是否允许其获得相应权限, 这就是 UAC 的主要职责. 关于针对不同程序 UAC 所给出的不同提示的具体含义, 请参见 Smallfrogs 的文章: Windows Vista UAC 和 可信任安全
当然, 这样的提示与询问是很容易造成困惑的, UAC 不能很好的判断所有程序, 于是用户需要面对大量关于 "未能识别的程序" 的请求. 当出现大量需要用户去自行研究判断的交互时, 我们便称这样的机制是不易用的. 同时 UAC 只能在程序执行前进行 "一刀斩", 无法灵活的处理实际使用中所遇到的具体问题, 比如我无法判断这个程序是否友善, 但是我又急需他所宣传的功能, 我愿意尝试运行, 但同时也担心遭遇风险, 这该怎么办? 很显然这时候 UAC 已经无法满足用户的需求, 于是大家向一种能在程序运行中作出反应的保护模式寻求帮助, 那就是行为防御. 在安全软件中的行为防御包含两个阵营: 控制派与非控制派, 对于控制派阵营的用户, 他们希望能够尽可能的掌握软件的每一个行为和动向, 所以他们借助于标准的 HIPS 来达成这个需求, 由于这类用户普遍对操作系统知识具有基础水平或更高的了解, 而这样的用户在所有用户中所占的比例较小, 今天就不谈他们. 对于非控制派用户, 他们对软件具体行为的细节并不关心, 只希望能够避免使用中所遇到的潜在风险. 安全厂商为了迎合消费者的这种需求, 开发出了具有行为防御功能的模块, 并去了个名字, 叫主动防御. 在早期的主动防御产品里, 他的交互和使用模式更多还是脱胎于 HIPS 软件, 通过一些关键函数的拦截, 完成对操作系统特定位置的保护. 例如一款支持浏览器主页保护的主动防御产品, 在发现一个游戏补丁试图更改主页设置时, 会弹出询问, 提示用户该游戏补丁试图变更当前的主页设置, 游戏补丁的进程名是什么, 当前的主页是什么, 这个补丁又试图改成什么, 都会一一显示在界面中, 并询问用户是否同意修改.
至此, 一切似乎都很美好, 用户关心的主页设置得以保留, 同时游戏补丁又可继续安装下去(如果该补丁设计时没有要求一定要修改成功, 否则不继续安装的话). 但随着病毒等计算机威胁的越来越隐秘与越来越深入操作系统, 用户开始发现并不是所有的提示都是那么通俗易懂了. 例如对下面这个提示, 请问大家如果是你, 你会选择允许还是阻止呢?
下载 (12 KB)
2009-11-18 18:20
因为病毒和正常软件的界限开始不清晰, 于是针对某一个特定行为的拦截逐渐变得不易用. 为了解决这个问题, 厂商开始引入了 "智能的" 的主动防御产品. 所谓智能, 是指当通过某一个或者两个行为无法界定出是否危害的时候, 将判断过程拉长, 通过更多的行为来综合判断程序是否包含恶意, 以减少对用户造成的干扰与困惑. 但智能不代表真的具备了智力, 只是通过一些辅助手段来达成了一定程度的自动化. 例如, 当一个程序具备以下行为特点时, 他可能是:
开机启动, 设置全局挂钩, 链接网络远程地址上传本地文件, 向用户文件夹写入文件.
A) 恶意软件 B) 非恶意软件
不知道各位会选择什么呢? 事实上, 这可能是一款盗号木马, 但同时也可能是 QQ. 于是我们需要辅助手段来判断, 我们需要检查文件是否具备可信任的数字签名, 当然, 数字签名也不能保证程序一定安全, 只是一般具备合法数字签名的程序都表明其来自正规公司, 基于正规公司不太会干缺德事这么一个观点, 所以大多数行为防御软件会认为此软件是可信任的. 同时我们需要更新白名单, 对于一些和恶意软件存在交叉的非恶意软件, 我们需要给他颁发 "良民证", 免得因为他长的贼头贼脑的被我们错抓错杀. 但是即使加上了许多辅助判断手段, 依旧无法完全避免对无恶意软件的误报, 而由此导致的恐怖问题是, 有时候用户会错误的将一些正确的报警当做误报, 特别是在钓鱼网站愈演愈烈的今天, 用户可能从钓鱼网站下载了恶意的仿冒程序而浑然不知, 甚至将杀毒软件的报警误认为是误报.
绕了那么大一个圈子, 那这和金山毒霸, 或者更具体一点, 和金山毒霸 2010 Beta 有什么关系呢? 的确, 大家从截图中都没发现金山毒霸 2010 Beta 中有主动防御的字眼或者类似的功能, 我用了一会儿也暂时没发现. (当然, 类似清理专家 2.7.5 那种系统防火墙也是访问控制功能的一种体现, 不过看大家都不认同他为主动防御, 那这里我也就先忽略他了...)
对于金山毒霸, 该不该搞主动防御呢?
如果问我这个问题, 我的回答会是: 应该要搞, 但不是现在其他厂商所搞的这种主动防御. 具体来说, 类似主动防御的访问控制和拦截功能在客户端需要有, 但是不一定需要做成现在其他厂商所提供的那样子.现在的访问控制或者说主动防御功能管得太宽, 对于向特定位置写入文件, 创一个服务, 修改某个注册表键值, 这些都要考虑的话对于用户的承受力是个挑战, 同时这些可能恶意也可能非恶意的行为判断起来太模棱两可. 我觉得, 主动防御, 搞得就是精确. 精确是指什么呢? 注册一个服务, 许许多多的程序都会这样干, 为了获得高权限, 为了自动启动, 目的各式各样. 但是试图结束杀毒软件进程, 这一个行为指向性和目的性很高, 除了用户通过 taskmgr 或者其他进程管理器主动执行这项操作之外, 其他所有试图结束杀毒软件进程的企图和程序都可以被认为带有恶意.
金山毒霸需要怎么样的主动防御?
都说主动防御不是救世主, 这句话大家都认同, 但不是救世主, 不意味着主动防御不行, 而是说主动防御不能解决所有问题. 而基于这个观点, 在当前技术手段的限制之下, 我们可以退而求其次, 不要求主动防御大包大揽, 具备对超 9 成的恶意软件都具有识别功能, 因为这样不可避免的要引来较多误报. 在我看来, 目前金山毒霸需要的, 是一个精确的行为防御功能, 他不需要对设置全局钩子, 注入其他进程, 读写其他进程内存空间之类模棱两可的行为作出反应, 不需要通过对一连串常见操作进行权衡来报一个可能恶意但也可能非恶意的程序. 需要的有所响应的只是一些精确的行为, 比如尝试结束杀毒软件的程序, 比如在 HOSTS 中屏蔽杀毒软件厂商地址. 这样, 我们或许只获得了 10-20% 的检测率提升, 但是我们也有效规避了日常使用中可能存在的误报, 提高了报警的可信度.
同时, 对于那些模棱两可的行为也并不是完全不理会, 我们可以记录这些模棱两可的访问动作但不给予拦截或提示, 只是后台记录并计算一个权重值, 当达到可疑标准时, 不需要报告用户说发现可疑程序, 而仅仅只是为这个程序添加较高的优先级将其反馈给云端(也就是服务器), 通过云端以更详细更可靠的方式(往往也伴随着更大的系统开销)进行的分析后再反馈这个程序的具体信息, 由此得知, 它是否可疑. 乍一看这套反馈机制和普通的后台上报没有区别, 但同样他也做到了更精确. 一个具备多种敏感行为的程序, 它存在风险的概率显然要高于其他仅具备一个敏感行为或者没有敏感行为的程序, 将威胁性较高的程序优先分析, 这是对云端计算资源的有效利用, 同时也是将分析筛选机制部分前移到客户端的一种表现.
|
※ ※ ※ 本文纯属【langzi2009】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 [color=red][size=6]与时俱进[/size][/color] |
 |
|