您现在的位置: Tracy‘Blog > 博客 > 心情杂记 > 正文
CTF与工作

        唔,本来快转开发了,突然来了个Wannacry,又做了几天的分析人员。

        怎么说呢,感觉挺好的吧,虽然大半年没有打开过ida、od之类的。连着几天的分析,看公司各路大神的调试技巧,还是有点收获的。

        最主要,这竟然有一种打CTF的感觉,也是一直有件事挂心里,坐着、躺着、吃饭、睡觉都在想:它可能会是怎么实现的?想到了,就想立马开电脑调试验证一把。

        不过,跟CTF不同的是,你考虑的不再仅仅是分析清楚,拿到flag。你不仅要快一些分析清楚,你还要想好怎么防御,还得同时写清楚分析报告,更者,你还得想想友商的进度。

        我想,这应该是最累的吧。

        第一波各个厂商PR结束后,大家认为分析,应该是可以到此结束了。

        可我还没弄清楚整个加密逻辑,为什么有些地方加密,有些地方不加密。于是,追着这个点,调试了一天多。中间也无数次被各类琐事打断。

        可能,做分析,最忌讳这些吧。一会儿来一件优先级更高的事情,一会儿得停一停,做下其他的。于是,思路就乱了,又得重来了。

        记得周二在理清楚,写分析报告之前,我头脑还是无比清晰的。

        每个验证点、试验点,都会想好,记录好。

        然而,分析完、写完报告后,整个人都处于一种混沌状态。一下子不知道该做什么了,一下子把绷紧了几天的弦给松下来了。

        而这个过程,又与以前打比赛,及其相似。有时候,很是享受这个过程,很是享受短时间突破、搞清楚某个原理的过程。

        所以,可以说,来这里后。对我来说,安全能力提升,这应该是第一次有这感觉吧。

        或许前面也有做过蛮多分析、写过蛮多分析报告。

        但总觉得,并不是这个感觉,没有沉淀到收获的感觉。

        

        打完这场“CTF”后,还是挺有感悟的。

        毕竟,社会、职场、现实,并不会是设计好了的CTF题,不会像CTF时有一种信念指引你:一定是可以做出来的。不然,出题人会被打死吧。。。

        可,这次这道RE+CRYPT,从各个角度来说,也是像极了CTF。只不过,是一大群人,在一起做,在做的同时,还一起分享进度、一起讨论。

        虽然,大家都有作弊的嫌疑,但不肯否认,大家也都在为补全信息在努力。

        在不知道能不能做出来的情况下,都在竭尽所能的去多获取一些信息,多做一些尝试。

        因为对手挑战的是整个地球上的安全人员。

        从刚开始的认为无解,到后来依稀有数据恢复、取证、安全类公司跳出来说可以通过数据恢复的方法来找回大多数文件。

        再到后来,有专门针对这道题的数据恢复工具。

        再然后,人们开始关注CRYPT库的安全性,以至于找到了从内存中恢复RSA私钥的可能性。


        整个过程不得不说是大家一起努力的结果。因为,事情总是要去做的,要去尝试的,要去解决的,不妥协才是最大的努力。

        当然,不仅仅得攻,还得防。

        记得从周五开始预警后,周六、日不少安全人员就开始常驻公司了,怎么去防止被传染。

        从各个维度进行测试、分析,得出结论后开发、下发版本、PR、TIPS提醒用户,等等等等。

        而这个过程,又似乎是像极了CTF时的攻防赛,怎样有效率的把信息共享出去,在攻击的同时补好自己以及被攻下来机器的漏洞,是一个团队需要好好协作的。


        再来说说,整个个分析过程、进展吧。

        其实在还没开始分析之前,单凭界面和外部描述。单纯的猜想这个勒索软件实现方案,以及需要测试验证的事情。

        比如,我在还没开始分析前,想到的:

        1、比特币的收款地址总共有多少?不是一一对应的话。比特币收款地址、支付地址,与中毒机器之间有什么联系?作者怎么确认是谁付款了?

        2、试解密过程是怎样实现的?

        3、支付后,付款的过程是这样的?是不是给私钥后,所有人可解?

        而后,再拿到了样本。知道了收款地址不是一一对应,中间也没有什么联系,作者单纯靠contact us里提供的信息来判断是否支付。(其实也是可以刷记录进行伪造的)

        试解密过程,其实是内置公私钥完成的。不影响其他文件的加解密。

        在没有完全理清楚密钥分发过程之前,我一直是认为,只用到了根公约去对AESkey做加解密的。只要有一个用户交钱了,拿到了根私钥,就可以拯救地球了。

        可后来,总觉得,这样有点不服场景。然后就开始了进一步分析。

        再然后看到了一些网上的分析报告。我突然觉得,我对它的理解还很不够。

        等所有加解密这块理清楚后,我很想知道哪些数据会被填充,那些数据不会做随机数填充,而是单纯的移动、删除。

        有两个调试环境,在两台桌子上。来来回回跑了一天,我自己机器上始终不填充,只做删除。

        而另一台机器,始终填充随机数,而后删除。

        于是,我荒废了一天跑来跑去的调试。

        后来受不了了,克隆另一台虚拟机。都放到自己机器上,两台一起调试。

        然后找到才了整体的逻辑。

        等我写完完整报告后。发现,美亚已经发了。

        不过还好,跟我分析出来的保持一致。只是,他们对200M以上文件的处理方式分析的比我到位。

        再然后,360针对这些逻辑,开发了专门的恢复工具。

        其实在最开始调试的时候,就有想过如何去获取到有价值的私钥。

        尝试过在内存中dump出DK2,也的成功过。不过,那条件很苛刻,必须在调用CryptEncrypt之前。所以,这基本不可能。

        也想过,去找生成随机AES密钥用到的,随机数种子。后来发现,调用的是CryptGenRandom,据说也是无比安全的。

        也想过,去找生成公私钥对的随机种子,发现,也是不可能的。

        

        再后来,也就认为,没有多大可能去完成破解了。

        不过其实心里还一直有个大胆的想法:去分析tasksvc,分析它和本地Tor代理的通信协议。去黑盒fuzz一些东西出来。

        当然,也只是想了想,并没投入精力、人力去做这些。

        再后来,看到了有人提出xp下,可能会存在未被擦出的生成RSA公私钥对所需的质数。

        也在git上找到了程序,可本地测试并未成功,并且我手动dump出来的RSA私钥也的确和git上程序恢复得到的私钥不同。

        大牛看了看源码,说,我知道问题出在哪了。然后,就写了个fix_key的工具出来。还别说,真管用。而我们正在想说可以实现了的时候。

        发现官微上,北京那边已发布解密工具了。


        于是,作罢,想想,xp上的问题出在CryptAPI上,是不是调试一下,可以看看WIN7的内部实现呢?

        当然,一直说着要去看的我,当今天为止,我还是没去看。。。2333

        

        攻防,绝对是一个相互体,也绝对是一起进步的。攻击越多,安全厂商的防御措施也会不断的增强。而增强后的技术分析报告,又给有心人很好地教材范本。

        所以,这是种是一个闭环。

        也许,WannaCry V3.0,在加密后,首先自重启了呢?

        也许,WannaCry V3.0,会多所有的文件做随机数填充,而后移动删除呢?

        也许,WannaCry V3.0,会直接内存加载,不在给你分析现场的机会呢?

        而我们,要面对的,不仅仅是WannaCry,而是更多更多的情况。


        正如影子经纪人所说:六月份将一一放出更多的0day,攻击工具。

        我想,那将又是所有安全人员能力提升的机会吧。


——Tracy_梓朋

2017年5月21日13:28:46

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’