本文作者:李勤,雷锋网网络安全专栏作者,安全圈大姐姐,入错行的八卦爱好者。
最近,雷锋网小李遇到了一个神奇的人。
他自称为“勒索软件终结者”,
“要教勒索软件一些做人的道理”。
纳尼?感觉好厉害的样子。
小李的脑海里瞬间浮现出这样的形象。
然后,雷锋网小李在2017先知白帽大会的现场遇到了他——倪茂志。
虽然,他不是上面这种手持机枪的酷炫狂拽叼霸天的扛把子,但颇有几分扫地僧的气质。
要知道他到底厉害不厉害。先得了解什么是勒索软件:
根据百度百科,勒索软件是黑客用来劫持用户资产或资源并以此为条件向用户勒索钱财的一种恶意软件。
它如何劫持用户资产?
把你电脑里所有的文件都加密!
一旦加密,按照勒索软件的调性和加密的特殊方法,你基本是无法解密的。
也就是说,要么给钱赎文件,要么坐等期限一到文件被删,或者忍痛自己重装系统,放声大哭!
最近,也许因为勒索软件作妖无敌手,还冒出了一些特别奇葩的勒索软件。
一款勒索软件让受害者用语音说出解锁密码,又不是你家亲爱的,居然还要搞语音识别说悄悄话!
一款奇特的勒索软件:只要阅读两篇有关勒索软件的文章就可以解锁。这位勒索软件作者,你是不是从小深藏一个人民教师的梦想?
一款“可能会被判刑”的勒索软件,你敢不付赎金,它就敢控制工控系统往饮水机里投毒!
勒索软件如此猖狂又不讲道理,感觉整个人都不好了。
据倪茂志说,他研究主机安全十几年了,2015年开始研究勒索软件。
2015年,倪茂志还在一家公司愉快的当着小工,接到一个艰巨的任务:
了解勒索软件的童鞋可能知道,很多勒索软件的加密十分复杂,需要超级计算机一刻不停地计算,才能在数百年后解密。人们对这些勒索软件的反破解能力如同一艘小船在苍茫大海上遇上一艘巨轮,无疑以卵击石。
由于很多高强度的勒索软件密钥生成算法使用的是微软的加密库,这应该是一个重要的突破口,倪茂志默默地把win2K到win10的微软加密库的密钥生成算法给逆了一遍。
得出的结论是:
要采集数据生成同样的密钥,复杂度还不如直接去爆破密钥!
当他把这个结果提交了以后得到的反馈是:
难度肯定会有的呀,所以我们应该继续坚持和努力,你要知道,你现在是在解决世界的顶尖难题,加油,一定要撑住!
这……在忍无可忍就要发飙的关节上,倪茂志想到领导的知遇之恩,以及公司给发的薪水,还是默默的选择了怂……
随着在这条蛋疼的不归路上越走越远,倪茂志也在痛苦摸索中寻找到了另外一条出路:利用陷阱文件检测+轻量级的还原系统+文件备份保护来阻止勒索软件对电脑系统中文件的加密。
当他有这个思路时,也很犹豫是否要把思路说出来大家一起弄,但他仔细想了想,发现当时能写高质量代码的人可能不超过两个(也就是他自己一个)。
这分明就是在给自己挖坑嘛?算了算了,还是自己搞吧。
于是,他头悬梁,菊刺骨(不是错别字),卧薪尝胆,下班就往家里赶,耗尽所有节假日,写到昏天黑地。越搞越觉得应该单搞,索性就辞职了。
“‘勒索软件终结者’是我个人的业余作品,开发时间大概从15年12月到16年11月份左右,后面几个月都在写网页(都快把我写残了)。”倪茂志说。
倪茂志本来想找个工作,白天上班、晚上继续搞研究。但是,为了招揽前期用户,他把自己对“勒索软件终结者”的构想写了一篇文章发在了某媒体上。在简历上,为了证明自己的资历,他把这篇文章的链接附上了。
HR一看,表示这个软件思路确实做得不错,然后拒绝了他。
“你这一看就是为了找个工作养活自己,然后专心搞反勒索软件的呀。”
花掉三分之一的积蓄后,倪茂志被逼上了创业的梁山——自己开公司。
因为个人身份没法购买软件驱动签名,没有签名尼玛计算机不认你这个软件,你没法运行啊!为什么个人身份无法购买驱动签名?因为只有这样,你的软件干了坏事,警察蜀黍才能靠驱动签名认出你,找到你。
最重要的一点是,个人身份无法申请支付宝和微信收款公众号的,不申请个公司你压根就无法(收钱)回本。
“我纯粹就是为了申请到数字签名以及回本,才嗷唠一声跑去申请个公司。”
倪茂志花了这么多心血和金钱,整出来的“勒索软件终结者”到底是什么样子?
为了烘托自己的技术,他先鄙视了一下目前应对勒索软件的办法:
“刚开始研究时你会很紧张,天!我的思路不会被人先用了把?然后一看对方原理,心里微微一笑,你个战5渣,这么挫的解决方案也好意思拉出来溜!”
“ 传统备份技术大部分是冷技术、冷备份,企业用户受得了,但是普通用户受不了。”
“云备份对付小文件还可以,对付大文件不灵。云备份技术原理和 SV 的原理很像,只是对某些目录进行设置,不一定会记得把一个文件存在哪个目录里,用户有时直接存桌面了,而且大文件根本防不住,大文件直接会影响带宽,最后是直接删了。”
“很多解密勒索软件的解密工具,是因为写勒索软件作者的水平太差了,惨不忍睹,这种水平也好意思写勒索软件。”
呸完现有技术思路后,要放大招了!
倪茂志的思路是这样的:
就像警察破案,有时会先抛出卧底或诱饵。
陷阱文件就是伪装一个适合勒索软件加密的文件放到磁盘里,只要能保证让勒索软件不知道哪些文件是陷阱文件,勒索软件就必然会加密这个陷阱文件。为什么要保证勒索软件不知道?因为陷阱文件也会存一个配置文件,判断这个软件是否是陷阱文件。
当受害者的机器不小心感染并运行了勒索软件之后,勒索软件就会遍历磁盘,并且寻找符合加密文件进行加密,接着勒索软件刚好加密到陷阱文件,当加密陷阱文件时,由于文件发生变化,就会被陷阱检测系统检测到。
哼哼哈哈吼吼,抓到了勒索软件这个小婊砸!
当系统检测到陷阱文件发生了变化以后,会先阻断(使加密线程进入等待状态)当前的勒索软件的加密操作,触发还原清除系统开始进入还原清除步骤。
宝宝的反击要开始了!
还原系统会比较当前系统盘中的文件与上次还原点中系统盘的文件的差异变化,然后把记录这些变化后会重启一次系统,重启系统以后清除系统会第一时间把记录下的变化文件全部清掉。因为勒索软件肯定是在这些变化的差异文件中,因此就会一同把勒索软件给清掉,原理类似于windows系统还原。
哼哼哈哈吼吼,把勒索软件这个小婊砸从电脑里踢出去!
不过,不要高兴太早,虽然检测和清除了勒索软件,在遇到陷阱文件之前,勒索软件肯定已经加密了一些文件。怎么办?
挽回损失!
此时,就可以通过备份保护系统把被加密的文件还原回来,因为这些被加密的文件在被加密时文件备份系统都会对其进行备份的。 这样就保证哪怕中了勒索软件不仅可以清掉,而且还可以把被勒索软件所加密的文件还原回来。
哼哼哈哈吼吼,没损失不在怕的!
为了完善这个软件,倪茂志发挥了“左右互搏”的精神!
自己想一个坑,然后填一个坑(和自己过不去的典范)。
“如果你知道陷阱文件,就算放在云端,勒索软件也能知道,因此要增加陷阱文件的随机性,让用户设置陷阱文件,勒索软件就无法准确的判断哪些是陷阱文件。”
世界上最可怕的加密就是,人心!!!
“备份系统最容易遭受攻击,到处是坑,备份系统理念是什么?对小文件进行备份,对大文件进行保护,保护是只允许你读,不允许你删除和修改,从普通用户的实际应用角度来看,大文件更改几率比较小,小文件更改频率会很大,所以,对小文件进行备份,对大文件不进行备份是基于效率,如果对大文件也进行备份,写入磁盘的最大吞吐量是一定的,对大文件进行备份会影响用户体验,用户会骂娘的。”
如果勒索软件从C盘开始遍历,C盘是100兆,D盘是200兆,E盘是300兆,最佳备份空间是什么?就是300兆,如果从C盘便利到陷阱文件是100兆、200兆、300兆,其实备份空间保留300兆就够了,可以保证如果从C盘先加密加密到陷阱文件,顶多占用100兆。
在具体操作过程中还有逆序遍历,从后往前遍历,就是挑出最大值就可以了。但是如果现在同时对三个磁盘加密怎么办?同时加密就会发300兆可能不够,这时100+200+300兆,600兆够了。
倪茂志说,按照目前这种方法,基本上已知和未知的勒索软件都能被防住。但是这款“勒索软件终结者”有一个使用须知:只适合知道自己什么文件值得保护的人使用。潜台词就是: