作者:南京翰海源CEO 方兴(FlashSky)
版权申明:该文版权属于南京翰海源公司,任何人或单位、网站转载、引用都必须标记南京翰海源公司。否则视为侵权。
引子
很久不写技术文章了,这次决定写一下,起源于在微博上和@np就是p @奥卡姆剃刀对后门的讨论,他们都是在IT各自领域深有建树的专家,但是发现他们对于IT安全的理解,却和我们这些专业从事安全领域的技术人员的角度和认识,存在着巨大的鸿沟。这是怎么了?我觉得作为安全领域的技术人员,是有义务向IT领域的技术人员,做相关安全的普及,换奥卡姆剃刀的话就是,【IT安全最大的问题不是普通公众对IT安全的不理解,而是信息专业者但非安全领域者,他们对安全的似是而非的理解】。
但是为了写清楚这些问题,我粗粗列了个纲要,发现要写的相关的东西非常多,而且要面对非安全领域的人员,如何深入浅出把问题讲透彻,是个很伤脑筋的问题,但既然说出来了,我还是尽力而为吧。前面先讲个真实案例,目的是想让这些信息领域的人理解安全的视角和他们视角的差异。
2001年,我还没进入安全领域但已经对安全感兴趣开始研究了,最早研究的是WINDOWS的身份认证体系,一个月后,我写了一个小工具,任何我们内网的其他用户的WINDOWS的主机,我都能直接用他们身份远程用,可以获得用户设立的共享目录访问权,如果恰巧登陆用户是管理员用户(大多数都如此),就可以通过\\A\C$获得所有磁盘读写权和远程安装权限,当时我给一个对WINDOWS认证体系有研究的同事演示拿到他主机的控制权后,他认为不可思议,我怎么能从算法上破解了WINDOWS认证算法?当我把我的方法告诉他后,他说从来没有想到过原来攻击者是可以这样发起攻击的。
WINDOWS的远程共享登录机制如下:
A要登陆B机,输入后,其实是A主机通过SMB协议向B发送登录请求
B返回一条挑战C’给A主机
A主机根据当前用户名N’,用用户口令的散列M’(如果此当前用户登陆失败,会跳出用户口令提示框,根据用户输入的用户N’和口令计算M’),再配合挑战C’生成新的散列M1’,将N’,M1’发送回B主机
B主机SMB内核查找本机是否有同样用户名N’的用户,查找N’用户的散列P’,再配合挑战C’生成新的散列M2’,检查M2’和M1’是否一致,一致认证通过生成令牌,不一致拒绝。
这是认证算法体系非常知名的挑战认证体系,可以有效保证AB之间都获取不了对方的真实散列但可以实现登陆认证。我不是数学研究者,这些散列算法不是我的知识领域能够突破的障碍,那如何能达到自己的目的呢。我想到如果一个用户打开邮件或浏览网页里,如果包含这样的资源,会直接向B发起SMB的会话请求,且默认就是以当前用户和散列自动发起,直到失败才会跳出对话框,OK,我马上就知道如何实现这个突破的,假设A是攻击目标,B是自己的主机。给A发一封包含资源的邮件或吸引他打开一个包含网页,这样A主机会向B主机发来一个SMB认证申请,等待B主机回应挑战,B主机先不回应,同时B主机也去向A主机发起的SMB认证申请,A主机回答B主机一个挑战C’,B主机把此挑战又作为A主机向B主机申请挑战的回应,这个时候,A主机就会用他用户N’的散列M’和C’来计算M1’发送给B主机,然后B主机以同样N’和M1’回答A主机,于是,B主机在无需知道M’的前提下,利用系统本身功能和协议自身的机制,用A机N’用户的身份登陆A机。只要两个主机有独立IP打开SMB许可,也可以远程发起攻击,无论他密码设定多强,这个散列计算算法再强,也无法解决的问题。
后来,我看到了国外安全研究人员2001同年也发布了SMB中继攻击演示,其实和我这个就是一个道理,这种问题存在了多年之后的2008年,微软通过策略简单限制过一下AB直接互连申请SMB的情况,但其实攻击者如果有2台主机B/C,B接受A的SMB请求,C发送A SMB请求,就能突破这个限制。
当然做密码算法的人会指出:有很多可以解决这类问题的认证协议,而且一些关键主机使用了这样的体系,但事实是,到现在为止,大多数的计算机依旧轻易可实施此类攻击,即使使用了这样体系的主机,攻击者搞定工作人员的普通主机,再利用工作人员自身的权限获得这类关键主机的核心数据,2011年RSA令牌种子失窃案正是如此,攻击者通过一个NDAY漏洞的邮件搞定了RSA的HR的主机,再用HR身份发带当时FLASH 0DAY的业务邮件给财务总监搞定财务总监主机,再用财务总监身份搞定有RSA令牌种子服务器权限的管理人员主机,以此获取了RSA令牌的种子,然后破解了美国最大军火承包商洛克马丁公司的RSA令牌身份认证系统窃取机密。
我们做安全的,每天都接触和了解着如上我们IT体系如此脆弱的事实,并且知道随着IT发展,我们越来越多重要的东西都依赖于这样一个脆弱的环境,因此充满了恐惧;或许他们都只是风险(技术可行)还没有成为大规模的事实(攻击者实施意愿,其实在我看来攻击事实已经够多了,只是出于危害感知、攻击取证以及攻击者控制而非破坏意图没有浮出水面而已),但是当医疗的心脏起搏器、汽车的控制系统、你家的煤气管道、高铁的自控系统都开始依赖于这些脆弱的IT系统时,未来的人类社会,是否能够承受的起这样的风险事实。
安全研究者的安全视角
要理解安全研究者的视角,就需要脱离开单纯从加密这个视角思维来看待安全,而要从结合计算机体系角度来看待安全,这个角度看待,其实更容易理解我们安全研究者的视角,其实本质不应该如此吗?
计算机体系是基于代码逻辑控制,处理信息和对外控制的系统,虽然核心资产主要落脚在信息(控制系统不一定落在这里),但信息只是被动体,运算与控制才是是主动体。控制失手,信息亦失手,很多信息领域的谈it安全,只侧重信息角度,以为加密是安全的全部至少大部,但我观点正好相反,基于计算机控制的安全问题才是it安全核心。它很难靠加密体系解决。因为在计算机体系下,信息是参与条件,处理对象,处理结果。信息很难在控制处理的过程中保持加密状态,信息对控制必须无密化,攻击者拿到了控制,自然获得控制处理过程里的信息和篡改流经的信息。加密保障的是信息在存储,认证,传输中的安全,但难以保安全障控制处理中的信息安全
因此IT系统的安全,未结合计算机体系的控制视角而只是从数学加密体系的信息视角看待,是导致我们当前安全体系如此脆弱的一个重大原因。
Ø 从计算机架构角度看安全
我们现在通用的计算机体系,都来自冯诺伊曼。冯诺伊曼体系的关键特点如下
(1)把计算机要执行的指令和要处理的数据都采用二进制表示(指令也是数据,数据也可以当指令)
(2)把要执行的指令和要处理的数据按照顺序编成程序存储到计算机内部让它自动执行。(数据和控制体系、指令混杂,数据可以影响指令和控制)
(3)程序依据程序员代码设定的逻辑,接受外部的输入进行计算,并对结果进行输出(程序的行为取决程序员编码逻辑与外部输入数据驱动的分支路径选择)
在冯诺伊曼体系下,我们可以看到安全相关的特性
1)指令也是数据,数据也可以当指令:意味着指令是可以被数据篡改(病毒感染)、外部数据可以做指令植入(木马植入、数据区执行、程序自修改)
2)数据和控制体系、指令混杂:意味着数据区域的紊乱越界可以影响控制与指令(数据处理边界缺乏检查越界可以导致代码执行的安全问题)
3)程序的行为取决程序员编码逻辑与外部输入数据驱动的分支路径选择:意味着程序员可以依据自己的主观意志实现功能与逻辑(后门)、输入者通过数据触发特定分支也是可能(后门、业务逻辑漏洞)
可以看到,基于冯诺伊曼体系下的计算机体系的基础架构里,就天然决定了安全漏洞、木马、后门这些安全问题是难以根除的。通过漏洞、后门,攻击者可以完全获得控制代码执行和程序行为,通过木马可以长期控制系统行为,通过业务逻辑漏洞可以获得攻击者特定的业务目的,这些安全问题,最多只能用加密来部分缓解但无法根本解决。加密保护针对的是信息,因此比较适合的领域是存储数据、传输数据、登录认证这些领域,但并非计算机的执行与控制这个领域。
Ø 从操作系统角度看安全
操作系统是管理和控制计算机硬件与软件资源的计算机程序,操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。
操作系统会配合CPU的体系结构实现了权限分层,一般分为2层:用户层与内核层。用户层对其他软件和用户提供支持,内核层为OS核心、硬件驱动、基础的关键核心任务。这些权限实体的划分,也没有具体的标准,除了OS自己配置好后,也来自于管理权限用户的授权。
操作系统实现了多用户下的认证、授权与访问控制体系。这个体系是在计算机基础架构上一个重要的安全举措,极大地提升了系统的安全性,但这套体系是基于用户权限和资源受信和控制的,他针对的是操作系统可以鉴别的用户实体而非程序实体以及外部数据提供者实体。针对程序实体的授权,是由用户判定授权的,但是程序本身是一个非常复杂的权限体系,他的代码逻辑来自开发者/厂商,数据驱动逻辑来自外部数据提供者的(很多应用还支持外部用户提供可执行的脚本,如浏览器之类),但是一旦授权后,代表的却是用户的信用,这要求用户对自己完全不可控制的开发者/厂商和外部数据提供者的信用做背书。用户其实根本无法鉴别程序的全部逻辑分支是否符合自身安全需要,代码与逻辑是否足够安全可以抵御外部数据提供者的攻击,很多用户其实连自己的安全需求都是不明确的,这种情况下,通过用户鉴别来给程序授权,以防止程序和外部数据提供者的恶意攻击的机制,基本为零。这是当前后门、木马、漏洞能够轻易绕过权限机制的一个本质性因素。
Ø 总结
计算机体系下程序行为实质由代码和外部数据决定,代码数据可混杂,决定了后门(代码触发行为),漏洞(数据触发行为)的基础。而os基于用户权限的授权体系无法甄别程序行为与用户行为授权意愿,这是后门漏洞木马得以突破acl获得控制权的本原。不从这些基础上,让it人员清楚我们说的安全与他们传统理解的信息安全也就是数据安全的区别,想让他们从我们视角来看安全,可能很难。
其实传统安全也一样,比如瞎子国里所有管理者都是眼瞎的长官(用户)必须依赖贴身秘书(厂商提供的硬件与软件,实质是程序代码)和工作实施人员(外部数据提供者)来读绝密文件并处理相关工作,但秘书和工作实施人员其他时间做什么的都无法监督和控制,甚至无法鉴别今天来的和昨天来的秘书是不是同一个人,再强的加密,再好的对高级长官的权限控制,都挡不住安全问题。
可悲的是计算机领域的现实安全问题,正如上面的情形,但是很多安全研究者、IT信息从业者者往往只认为,解决好对对每位瞎子长官的身份认证、信息存储和传送加密,以及对每位瞎子长官权限的控制管理就能解决所有的安全问题。丝毫就没意识到所有瞎子长官依赖的秘书和工作人员这里的问题。
这个论述不是用来否定加密体系的作用,是要阐述解决数据安全为主的加密体系和解决控制安全为主的现有安全对抗体系是计算机安全里并重的东西。前者已有理论和很多应用并走到大多数攻击者前面,但后者,攻击者远远走到我们的前面。我们的很多高级安全专家,信息从业人员,还有学校教材,对安全理解有太多误区和偏差,偏偏他们认为自己对安全的认识很透彻深入,认为搞安全的不就是加密和权限控制这些已有很好方法与成果的玩意就能解决,不理解安全实际面临的复杂性和紧迫性。
攻击者视角
攻击者为什么会发起攻击呢?不外乎利益与成本的驱动,攻击者的利益是什么呢?不外乎:
Ø 国家利益(政治军事情报):不得不承认,随着IT系统的广泛部署和深入渗透,IT系统形成的数字空间有着巨大的国家利益存在。美国发布的网络空间行动战略(http://wenku.baidu.com/view/cad24e7c168884868762d6d4.html)将网络安全上升到国家安全,并将其列为陆海空太空之后的第五空间,成立网络战争司令部,部署攻击部队和防御部队(如果IT系统已经很安全,有必要吗?),下面是部分内容节选,翻译全文参考链接:
n 美国关键基础设施的安全和有效运作,依赖网络空间、工业控制系统和信息技术,但它们却极易遭到破坏和非法侵入。……,我们确信,大量针对国防部网络系统的恶意行动尚未被发现。
n 实施恶意网络行为的门槛低,其中包括黑客工具随处可得,意味着由个人或小团体组成的网络行为体一旦下定决心,可能会对美国防部与美国家和经济安全造成重大破坏。小型技术可产生与其规模不成比例的效果;潜在敌手不必因试图对美国家安全构成重大威胁而制造价值不菲的武器系统。
n 美国防部重点关注于网络威胁的诸多核心环节;这些环节包括外部威胁行为体、内部人员威胁、供应链脆弱性以及美国防部行动能力所面临的威胁。
n 软件与硬件在被整合为操作系统之前就有遭恶意篡改的风险。用于美国内的信息技术产品大多在国外生产与组装。国防部依赖国外生产与研发的信息产品,在有关设计、制造、服务、销售、使用等环节的风险管理上构成挑战。
n 将网络空间视为一个行动领域,则是国防部有关国家安全使命的关键性组织概念。这使国防部得以在网络空间进行组织、训练和装备,如同我们在陆、海、空、天所采取的行动,以支撑国家安全利益。
n 国防部长已将担负网络空间任务的职责赋予美军战略司令部、其他作战司令部以及各军事部门。
n 积极的网络防御要求美国防部能够同步、实时地发现、监测、分析,以及降低网络攻击威胁。
n 由于未必能阻止全部网络攻击,美国防部将继续改进其网络传感器,以监测和减轻针对美国防部网络系统的恶意行为。
n 加强国防部购买的所有软、硬件系统的安全措施,不允许留有能被渗透的漏洞,也不允许保留测试系统模型,这包括从改进核武器指挥控制系统,到更新文字处理软件。上述原则将成为国防部可信赖的防卫系统和供应链风险降低战略的一部分,
n 国防部将开发重新思考网络空间技术基础的革命性技术。为此,国防部将与处于领先地位的科研机构展开合作,以发展安全的、抵御恶意活动能力更强的新网络空间能力。
Ø 经济利益:这么多有价值的资产可以通过攻击获取,其间的经济利益不言自明。看下美国网络司令部在国会听证会上的数字空间导致的损失评估(http://www.fas.org/irp/congress/2012_cr/cispa.html )是每年3000亿美金的损失,达到美国GDP的2%,这是什么概念?如果考虑IT资产在所有资产的比例情况,这个比例会是多大?如果我们的IT体系已经足够安全健壮,会是这样触目惊心吗?
Ø 心理利益:这个是比较少的情况,但不排除部分攻击技术技艺高超者为了显示自己的能力或报复社会,或者提出自己的政治观念而发起攻击,比如匿名者。
当然,攻击者不是没有成本的,主要成本有:
Ø 技术成本:发起攻击者需要付出技术的成本,包括漏洞挖掘成本、漏洞利用研究成本、安全防御技术对抗研究成本、木马或后门研发成本。如果是针对密码对抗,可能还有数学研究、加密破解计算的技术成本。
Ø 实施成本:信息收集成本、攻击实施成本、入侵控制与窃取实施与对抗成本。
Ø 时间与机会成本,暴露成本:攻击者如果入侵失败,或者入侵被发现,有时间与机会成本。同时可能防御者防御更严密,另外入侵被发现可能导致攻击者研究的0DAY漏洞、特种木马或苦心植入的后门被曝光。
Ø 附加成本:针对后门,可能会影响产品的稳定性与性能。
Ø 惩罚成本:如果后门被发现了,会影响商誉、导致产品被市场清除、被受害者追责。入侵被发现了可能会引来取证和法律外交追责。如果很容易检测取证追责体系有效,这个成本就很高。但是如果不容易检测,也难取证,就更难追责了,惩罚成本的风险较低,就难以通过惩罚成本阻吓攻击者。
Ø 心理成本:攻击者部分成员可能会有心理成本。
攻击者目前对抗的核心在哪里?
从美国暴露的损失来看,针对IT系统的攻击如此泛滥(当然很多IT领域的人觉得很安全,其实是很多事情没有曝光而已,借用美国NAS的前任局长的一句话:世界上只有2类人,一类知道自己被黑了,一类不知道自己被黑了,参考http://www.reuters.com/article/2013/05/16/us-cyber-summit-hackers-idUSBRE94F18620130516),但是从曝光的攻击案例中,大部分是针对程序实现安全漏洞和缺陷,配合木马发起的(后门由于在早期不留痕迹,而且很多类型后门无法指正,所有还没有确凿的案例),少量是针对密码实现过程的缺陷发起的(比如加密从数学上没问题,但实现时,真随机数如何产生?导致的CPU负载和时间会泄露信息,内存信息泄露,密钥使用存储等,这些地方都可以让理论完美的算法失效),极少有针对密码算法的缺陷发起的(我印象中中只知道一例,火焰病毒是利用了微软证书机制的碰撞算法弱点发起的,有其他案例的可以补充)。
从这些案例中可以看出,针对IT系统的控制层保护的缺失(后门控制、漏洞导致的失去控制、木马植入)以及实现(非安全设计、非安全开发、加密和认证算法实现缺陷)发起的攻击是目前攻击者核心关注的领域,针对加密算法数学层面的攻击,也是存在但比较少的,当然攻击拿到加密的东西通过破解算法或暴力计算来搞的很多。
评论关闭。