分享

后门、漏洞与木马杂谈(1)

 看见就非常 2015-03-02

作者:南京翰海源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’的前提下,利用系统本身功能和协议自身的机制,用AN’用户的身份登陆A机。只要两个主机有独立IP打开SMB许可,也可以远程发起攻击,无论他密码设定多强,这个散列计算算法再强,也无法解决的问题。

        后来,我看到了国外安全研究人员2001同年也发布了SMB中继攻击演示,其实和我这个就是一个道理,这种问题存在了多年之后的2008年,微软通过策略简单限制过一下AB直接互连申请SMB的情况,但其实攻击者如果有2台主机B/CB接受ASMB请求,C发送A SMB请求,就能突破这个限制。

        当然做密码算法的人会指出:有很多可以解决这类问题的认证协议,而且一些关键主机使用了这样的体系,但事实是,到现在为止,大多数的计算机依旧轻易可实施此类攻击,即使使用了这样体系的主机,攻击者搞定工作人员的普通主机,再利用工作人员自身的权限获得这类关键主机的核心数据,2011RSA令牌种子失窃案正是如此,攻击者通过一个NDAY漏洞的邮件搞定了RSAHR的主机,再用HR身份发带当时FLASH 0DAY的业务邮件给财务总监搞定财务总监主机,再用财务总监身份搞定有RSA令牌种子服务器权限的管理人员主机,以此获取了RSA令牌的种子,然后破解了美国最大军火承包商洛克马丁公司的RSA令牌身份认证系统窃取机密。

    我们做安全的,每天都接触和了解着如上我们IT体系如此脆弱的事实,并且知道随着IT发展,我们越来越多重要的东西都依赖于这样一个脆弱的环境,因此充满了恐惧;或许他们都只是风险(技术可行)还没有成为大规模的事实(攻击者实施意愿,其实在我看来攻击事实已经够多了,只是出于危害感知、攻击取证以及攻击者控制而非破坏意图没有浮出水面而已),但是当医疗的心脏起搏器、汽车的控制系统、你家的煤气管道、高铁的自控系统都开始依赖于这些脆弱的IT系统时,未来的人类社会,是否能够承受的起这样的风险事实。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多