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本身漏洞丛生而造就的安全辉煌,但诺顿自己当然非常清楚,安全是永不日落的永恒话题,只是对象发生了悄然改变而已。这不,最新消息显示,诺顿现在已经开始对服装(口袋)进行安全认证了。这是诺顿进行转变和创新的一端。其他的客商如何呢?

3,319 total views, 2 views today

《Windows安全软件的思考》有2个想法

  1. 个人感觉更多是矛与盾的关系。无论是DSE也好,PG也好,甚至是Secure Boot,到今天已经如同笑话一样了。想当年DEP刚出来的时候多牛,现在哪个会被DEP卡住,ASLR也是一样。
    曾经听过最可笑的话就是部署xxx系统就能安全了。事实上根本没有任何所谓安全,今天看10年前所采用的所谓安全技术,简直就像看笑话一样。前几天爆出的那个Turla的事件,最大的问题不也是这些设备在20+年以前发射的。
    甚至于更有趣一些的,Stuxnet一类的APT恶意程序,用来的那些偷来的合法数字签名,就连在大多数人眼中牢不可破的数字签名,Flame不也用MD5碰撞攻击伪造了合法的中间证书吗。在这种根证书就是M$自己的证书链的保护下,这些明天的恶意程序又能给我们创造出多大的惊喜呢。
    在Turla的文章中看到了一句话,大概是,普通黑阔还在盗QQ时,高级黑阔已经开始搞卫星了。不是系统更加安全了,只是看到的不是前沿,甚至是很多年以前的东西。今天的防御技术如果还对10年前的恶意程序使用的技术束手无策的话,那世界早就应该是恶意程序的天下了。

发表评论

电子邮件地址不会被公开。