首页 > 代码库 > 对Windows安全软件的思考
对Windows安全软件的思考
引用注明>> 【作者:张佩】【原文:www.YiiYee.cn/blog】
最近以来,我重新翻阅了几本Windows系统下的安全类书籍,同时上网查阅资料,很意外地发现,很多几年前流行的牛叉技术,虽然还在书本和网页上历历在目,但实际上多数已不能在新系统中使用了。我由此也发生了一些个人的思考,虽然多年不接触安全技术,但思考的能力还在。
分析安全问题的来源
总是因为存在安全隐患,才有了攻击动作的发生;而因为有了大量的攻击,才继而产生了安全防护的需求。所以一定要研究安全隐患的来源。总体上分类,安全问题可以划分为本地和分布式两种,所以安全攻击的方法也可以分为本地攻击和分布式网络攻击。
先看存在于本地机器上的安全隐患,也就是在一台安装了Windows系统的PC机内部的安全隐患,把它分成下面两类:
第一类,是OS架构本身存在的结构性的设计缺陷或不周到,从而导致了被后门软件利用,并据此发动的针对本地资源的攻击。这些不周到主要体现在OS为一系列的Hook技术提供了便利。存在于Windows系统上的Hook技术,从1990年代以来就一直很热门。概言之,它包括静态修改二进制文件和执行时动态修改运行逻辑这两种方法。
但我发现,若干年以来微软已通过一些很基础的手段,基本上消除了这些缺陷或不周到。它通过数字签名的方法,令大部分的静态修改的方法失效。现在数字签名只对运行于64位OS或启动了Secure Boot的32位OS的驱动程序强制使用,以及对所有的Metro应用强制使用,但将来不排除它也会服务程序甚至桌面用户程序应用强制使用。通过数字签名的方法来检查二进制文件的完整性,任何静态修改都会破坏文件完整性,从而令文件加载失败。
通过Patch Guard的方法,令OS的内核文件和关键数据得到保护,这令针对OS系统的运行时Hook完全失效。Patch Guard机制动态检查系统的完整性,一旦检测到修改就令系统蓝屏。流行的IDT、SSDT和运行时补丁等Hook手法,从此全都失效了。
另外,微软新OS不断增强对Access Control List(ACL)的管理,强化系统对象的安全性。
这些基本架构的变化,足以令大部分传统的后门技术失效。我想,这正是诺顿软件惊呼“安全软件已死”的原因所在。
第二类,我称之为特例性的软件模块中存在的设计失误或代码Bug。操作系统中还存在大量的软件模块,它们不是系统的基础功能模块,但依然被很多软件所使用。这些模块可能由微软提供,也可能由第三方提供。但因为这些软件模块数量庞杂,应用范围局限,通用性不强,接口不统一等特点,所以一般的安全软件可能无暇顾及它们,或不能完全覆盖它们,后门软件也因此能找到生存空间。
比如前段时间爆发的基于Open SSL的Heart-bleed漏洞和Linux/Unix系统上的Bash Shell漏洞,都源于软件实现中存在的代码Bug。这类问题的本质是因为软件的设计和编写都是由程序员完成的,人类天生做不到百分百面面俱到,只是看问题发生时的严重程度而已。
探索分布式网络应用的安全技巧
如果软件模块是运用在分布式应用中的,则当其安全隐患爆发时,危害程度将非常地大,远远超过单机系统上产生的危害。所以值得对网络安全做专门的思考。
对于一个存在于分布式(网络)协议和实现模块中的设计不周,也可以通过一定的技术创新加以改善。我举分布式拒绝服务攻击(DDoS)的例子来说明可能的情况:
当恶意攻击者组织成千上万的“肉机”对指定的服务器进行无效而巨量的网络请求,以在短时间内急遽消耗其网络资源,从而令其失去正常的响应能力,这是DDoS攻击的实现方式。如果脱离技术细节来思考这个问题的话,会发现攻击者总是使用非法的途径来获取他的“肉机”资源。因为使用合法途径来组织这些机器不仅过于昂贵而且很容易被发现。攻击者将木马程序种入到目标系统令其感染,从而成为其“肉机”。可见肉机本身也是受害者。在DDoS攻击过程中,成千上万的受害者“肉机”,懵懵懂懂地向受害者“服务器”发起攻击,令事件变成了两位受害者之间的战争,而真正的敌人永远躲在幕后。
从我收集到的资料看,当前的服务器一般采用消极防御的策略躲避肉机轰炸,没有办法采取主动措施以制止肉机的攻击。作为同病相怜的两个人,如果能够做到声气相通的话,肉机未必不会幡然悔悟。但基于C/S的架构下,如果没有client的配合,server端没法主动投递消息或指令给客户端。在此例中,客户端是木马程序,也根本不可能响应server端的请求。但不妨让我们想一想一种可能性,就是恰好在肉机端存在一个能解析server指令的client软件。当server检查到此肉机参与到DDoS攻击后,就尝试向此Client投递消息。最低效果是,当Client收到消息后向用户弹出一个风险警示的提示框,建议用户紧急采取查杀木马的措施。用户可能会立刻采取有效的措施,也可能不会,但如果命中率达到一定高度,将能有效并快速减缓DDoS攻击的力度;从长远看,肉机作为攻击者最有价值的资源,通过此方式,将大大削弱攻击者所拥有的有生力量。
我将此种方法称为“云防护”,即不仅仅依靠服务器单机的力量,也同样把受裹挟的肉机拉拢到己方阵营,与服务器协同作战。
客户端的普及是有效实施“云防护”的基础。国内BAT公司的客户端软件有很大的装机量,如果加以利用,应该很有前景。
远见创新
在过去的若干年中,我逐渐领悟到一个知识,通过对基础框架的分析和研究而进行的理论和实践创新,远比单纯的技术复制和实现重要得多。在计算机生态环境发生重要改变,从重单机PC端运用转向轻客户端的云互联运用的当下,安全的内涵与外延也注定会发生重大改变。
当诺顿感概“安全软件已死”时,他们所感慨的是伴随XP及更老OS而远逝的因OS本身漏洞丛生而造就的安全辉煌,但诺顿自己当然非常清楚,安全是永不日落的永恒话题,只是对象发生了悄然改变而已。这不,最新消息显示,诺顿现在已经开始对服装(口袋)进行安全认证了。这是诺顿进行转变和创新的一端。其他的客商如何呢?
对Windows安全软件的思考