前几天(5月12日)爆发的 WannaCry 勒索软件,大伙儿应该都听说了吧。作为一个经常谈论信息安全话题的博客,俺正好借这个机会聊聊【勒索软件】。 考虑到 WannaCry 相关的报道已经很多,针对该蠕虫的防范措施,网上也已经很多。所以俺就【不】再讨论 WannaCry 相关的话题。今天要聊的是:【勒索软件】将成为黑色产业链的最爱,它的危险性,以及菜鸟们的防范措施。
“恶意软件”也称为“流氓软件”,洋文叫做“Malware”(“Malicious Software”的简写式),维基百科的条目在“这里”。 顾名思义,这是一种对用户而言存在恶意的软件。 “恶意软件”的范围很广,有些对用户的危害较小(比如广告),有些的危害比较大(比如今天要聊的勒索软件)。 “恶意软件”可以根据不同的【维度】来进行分类。如果根据【传播方式】来分类,大致可以归纳出如下几种:
捆绑形式
这种类型的恶意软件,通常是捆绑在某些正常软件中,以此来获得传播。 举例:
想当年,360的老板周鸿祎就是靠“3721上网助手”(后改名“雅虎助手”)起家的。这个 3721 在当时真可谓臭名昭著——它就是靠捆绑的方式(捆绑在某些免费共享软件中),来获得巨大的装机量。
病毒形式(viruses)
“病毒”这玩意儿,大伙儿应该比较熟悉了(尤其是经历过 DOS 时代的 PC 老用户)。 “病毒”的主要特色是“传染性”——“文件型病毒”可以从一个文件扩散到另一个文件;“引导型病毒”可以从一个磁盘(硬盘/软件)扩散到另一个磁盘。
蠕虫形式(worms)
“蠕虫”这个概念,熟悉的人就比较少了。 “蠕虫”也具备传染性(导致很多人把“病毒”跟“蠕虫”混淆)。这两者的差别在于——蠕虫的传染是【主动】且【实时】,不需要人为介入;而病毒的传染相对而言是被动的(需要人为介入)。 比如说:文件型病毒要想获得传播机会,前提是:病毒所感染的宿主文件要被用户打开,病毒才能得到运行机会;相比之下,蠕虫可以在【无人介入】的情况下,通过网络在电脑主机之间进行扩散(而且这种扩散可以实现【指数级增长】)。 举例: 这次的“WannaCry 勒索软件”就是以蠕虫形式传播。
木马形式(trojan horses)
“木马”相比“病毒”和“蠕虫”的主要差别就是——木马【不】具有传染性。 举例:
俺曾经聊过一款很高级的木马,名叫“黑暗幽灵”,由咱们天朝六扇门(公安部)隆重出品。具体介绍参见这篇博文。
逻辑炸弹形式(logic bomb)
“逻辑炸弹”这个概念,即使在信息安全行业中,听说的人也不多。 “逻辑炸弹”也是【不】具有传染性的(这点与“木马”类似)。它跟“木马”的差别在于: 木马是【外来】的——必须通过某种方式(比如:系统漏洞、欺骗)侵入电脑主机;而“逻辑炸弹”通常是由【内部人员】(比如软件系统的开发人员或维护人员)植入到软件系统中。 为了通俗地理解,你可以把“逻辑炸弹”想象成某种数字化的定时炸弹——在达到某个特定的逻辑条件时就会被触发,然后执行破坏性的动作。 举例: (为了让大伙儿加深印象,说一个国外的知名案例) 某公司的程序员负责维护本公司的人事系统。此人担心自己有一天会被解雇,所以就在人事系统中植入一个“逻辑炸弹”。 这个“逻辑炸弹”每天都会去判断人事系统中的解雇人员名单,一旦名单中包含此人的名字,逻辑炸弹就“引爆”——把整个服务器的硬盘格式化掉。 刚才俺介绍“恶意软件的类型”,聊了很多种。有些同学会纳闷——为啥其中没有提及“勒索软件”捏? 因为“勒索软件”这个名词是根据恶意软件的【行为】来命名的。而前面俺介绍“恶意软件的类型”,是根据【传播方式】来谈分类。 实际上,前面提到的【每一种类型】,都可以制作成“勒索软件”——可以有木马形式的勒索软件(这种是最常见的),可以有蠕虫形式的勒索软件(比如这次的 WannaCry),也可以有病毒形式以及逻辑炸弹形式。
如今这个世道,道德高尚的黑客(hacker)越来越少,而人品低劣的骇客(cracker)却越来越多。(关于这两者的差别,可以参见旧博文——《每周转载:关于黑客文化和黑客精神》)。 骇客们(cracker)大都是追求经济利益的。所以勒索软件的作者,毫无疑问都是骇客(cracker)而【不会是】黑客(hacker)。 “勒索软件”增多是因为——基于“勒索软件”来赚钱,越来越好赚了。为啥捏?俺总结了如下几个原因: 如今网上的技术菜鸟实在太多了,大部分网民完全没有信息安全的意识。比如说:很多人用一台没有任何安全防范的 Windows 电脑上网浏览(这种行为被戏称为“裸奔”);还有很多人会轻易相信网络钓鱼邮件。 所以,勒索软件的作者,日子实在太好过了。比如说:他们可以先搭建一个网页挂马的网站;然后大范围群发钓鱼邮件,诱骗菜鸟点击这个挂马的网址;总会有很多让菜鸟中招(被植入木马);植入的木马悄悄地在系统中寻找有价值的文档,并进行加密;等到加密得差不多了,就弹出一个界面提醒菜鸟要交赎金啦。 由于菜鸟的基数很大;所以中招的受害者,基数也很大;哪怕受害者中只有一小部分人愿意支付赎金,对勒索软件的作者而言,也是一笔不菲的横财。 如今的“网络匿名术”已经越来越发达。俺的老读者肯定明白这点——因为本博客写了很多“网络匿名”的教程。 在这种情况下,勒索软件的作者如果善于匿名化,即使他/她通过网络跟受害者沟通(交涉赎金),警方也很难定位到他/她的真实身份。 在比特币诞生之前的时代,勒索软件如果想拿钱,通常需要让受害者把钱(赎金)转账到自己的户头。如此一来,恶意软件作者就暴露了自己的账户,从而大大增加了被捕的危险性。 有了比特币之后,恶意软件的作者【无需】再使用传统的银行帐号,大大增加警方追捕的难度。
因为俺写了很多网络匿名的教程(比如:《如何隐藏你的踪迹,避免跨省追捕》系列教程),曾经有读者指责俺普及的这些匿名化教程,会助长网络犯罪。 今天借这篇博文自我辩护一下: 任何技术都具有两面性——既可以用来行善,也可以用来作恶。就好比菜刀可以用来切菜,也可以用来砍人。如果因为某项技术可以被用于作恶,就企图禁止该技术——这种想法是极其愚蠢滴! 换一个角度来谈:在信息时代,技术的进步/发展是无法阻挡的。比如:当年美国唱片联盟(RIAA)想要打击 BT 下载,结果如何捏?BT 下载依然火爆。 在如今这个信息时代,与其花很多脑力/精力去【对抗】技术进步,还不如想着如何去【适应】技术进步。 另外,
俺之所以花很多力气普及“网络匿名术”,是因为这个技术对于捍卫人权和民权,至关重要。具体请参见《“对抗专制、捍卫自由”的 N 种技术力量》。
下面聊的某些特性,可能已经在少数勒索软件中出现了;还有一些特性,虽然目前尚未面世,但是毫无疑问,将来会有某些骇客想到这些点子。 俺写这个章节,出发点是:警告大伙儿(尤其是菜鸟)关于勒索软件的危险性;但从另一个角度——某些恶意软件的作者也会从本章节得到启发。这又是一个尴尬的【两面性】。 将来的勒索软件必然会更狡猾——它们能分析哪些文件是值得加密的,哪些是没必要加密的。比如说,Windows 上的 exe 文件(可执行文件)通常是【没必要】加密的。相反,Office 文档(Word、Excel、PowerPoint)显然更值得加密。 具备这点的勒索软件,加密的效率会更高(因为加密的文件数大大降低了)。很有可能,你尚未察觉到任何异常,它已经把全部【有价值的文件】都加密完了。
更智能的勒索软件,可以做到【透明加密】(技术行话叫做“on-the-fly encryption”)。 具备此特性的勒索软件,先要在系统中安装驱动(文件过滤型驱动),并在驱动中进行动态加密/解密。也就是说,当用户想要打开文件的时候,动态解密(文件照样能打开),当保存文件的时候,动态加密(存储在磁盘上的【文件内容】是密文)。 能实现此功能的勒索软件,可以让加密文件的【文件名】保持原样,连【文件修改时间】也保持原样,再加上文件也能正常打开/保存。因此受害者几乎不可能发现异样。因为此特点,这类勒索软件可以潜伏很久(潜伏期很长)。 (顺便说一下:一旦实现【透明加密】,即使你用哈希校验工具计算被加密文件的散列值(比如:MD5、SHA1、SHA256),得到的依然是正常的值。因为哈希校验工具也要通过文件驱动,才能得到文件内容) 当它已经加密了【足够多】的文档,并且这些文档对用户而言都是【有价值】。然后在某一天,勒索软件把上述那个(动态加密/解密的)驱动卸载,并彻底销毁解密密钥,然后就可以弹出一个勒索赎金的界面。 “潜伏期很长”还【不是】此类勒索软件的杀手锏。它更危险之处在于:可以让受害者的【备份策略失效】。 啥意思捏?因为受害者无法察觉到【透明加密】,所以受害者还是会如往常一样进行文件备份(备份到“网盘、外置硬盘”)。结果捏,备份出去的文件已经是被加密的了(已经废了)。 如今的网民,越来越依赖于各种网络服务的帐号,比如“邮箱帐号、聊天帐号、社交帐号、游戏帐号 ……”。所以,帐号势必成为骇客们眼中的高重要目标(越重要就越能够拿到赎金)。 假如说,你能够在 PC 上修改你的某个帐号密码/用户密码,那么这台 PC 上的木马,同样也可以做到。 (请注意:大部分修改密码的界面,都【不要求】输入“人机验证码”。这就大大方便了木马程序来进行类似的操作) 聊完“帐号劫持”,肯定有些同学会跟俺提:两步验证机制。很多人(包括 IT 技术人员)【误以为】“两步验证机制”是坚不可摧滴。其实不然! 俺的观点是:两步验证机制(安全界的术语叫“双因素认证”),确实有用,但也不是 100% 安全(再次唠叨:绝对的安全是不存在滴)。 比如说:很多“两步验证机制”是基于“短信发送验证码”。假如说,你的手机上被植入了一个很高级的木马,那么该木马完全有可能访问到短信内容。因此该木马就可以发起一个“修改用户密码”的操作,并顺利通过“两步验证”。 前面聊的几个,都是针对个人用户(桌面系统 或 移动系统/手持设备)。下面再来聊另一种形式——针对企业用户(内部业务系统)。 在前面的章节,俺已经扫盲了“何为逻辑炸弹”,此处就不再罗嗦。 “逻辑炸弹”因为是【企业内部人员】(以下简称“内鬼”)设置的,所以就可以做得非常隐藏。比如说:有些逻辑炸弹可以做到【源代码级】,只有通过源代码审查才【有可能】发现。 “逻辑炸弹”的另一个特点是:可以设置成——潜伏足够长时间。也就是说,当逻辑炸弹引爆的时候,制作它的内鬼或许早已离开这家公司,隐藏了逻辑炸弹的业务系统,在足够长的时间之后,已经有足够多的人经手过。这就会导致警方非常难排查作案者。 针对企业用户的勒索软件,本来就可以勒索更高的赎金(企业相比个人,支付能力更强)。而基于“逻辑炸弹”的勒索软件,又不同于其它类型的勒索软件。因为逻辑炸弹是【内鬼】设置的(内鬼很清楚企业内部系统中,哪些是最要害的)。因此,在引爆之后,这类逻辑炸弹可以加密企业服务器中最重要的那些业务数据;甚至有可能的话,连备份服务器上的数据一起加密掉。这种情况下,这个内鬼就可以勒索【天价】的赎金。
之所以写本章节,是考虑到本文的读者里面,有些是新读者,可能没有看过旧博文。
要防范“勒索软件”,本质上就是要防范【入侵】。因为勒索软件首先要入侵你的系统,之后才有可能对你构成某种威胁;有了威胁,才有可能勒索赎金。所以,你需要了解的是:【如何防范入侵】。
关于这个话题,俺已经写了一个很长的系列教程《如何防止黑客入侵》。想学习的同学,自己点进去看。
(注:此系列于2010年开始动笔,当时考虑到很多菜鸟并不清楚“黑客/骇客”的差异,所以用了这个标题。更严谨的标题的应该是《如何防止骇客入侵》) 企业用户不同于个人用户——企业用户需要防范两种勒索软件的来源——分别来自“内鬼”与“外部骇客”。在企业面临的各种勒索软件威胁中,危险性最高的组合是:内鬼设置的【基于逻辑炸弹的勒索软件】。 那么,如何防范捏? 老实说,这是一个非常大的话题(足以单写一个系列教程)。考虑到俺的大部分读者都【不是】企业的高层管理者。这方面聊太多,也没啥人愿意看(白白浪费俺的口水)。所以在这里仅仅提几个要点:
1、检查机制
所谓的“检查机制”就是说:要有一套机制来检查系统中的重要部分。 比如说“代码评审”(code review)就属于这类——评审有助于发现不怀好意的程序员做的手脚。
2、审计机制
(此处所说的“审计/audit”指的是【安全审计】) 管理方面比较成熟的企业,应该有内部的安全审计。有些安全审计有助于在【事前】发现内鬼;即使无法在“事前”发现内鬼,安全审计也有助于【事后追溯】(查出是谁干的)。
3、分权机制
良好的分权机制,首先是可以降低内鬼植入勒索软件的概率;退一步讲,就算被植入了,良好的分权机制也可以降低勒索软件引爆之后的破坏性。 比如说:如果有两台服务器,一台运行的是业务系统,另一台用来【备份】前者的业务数据。那么,这俩台服务器的管理员【不能】是同一人。
4、员工素质
前面提的这些机制,最终都需要落实到【人】。所以“员工素质”是前面所有这些机制的基础与保障。越庞大的企业系统,【人】就越发成为最大的弱点。这也就是为什么——在入侵企业的过程中,【社会工程学】手法总是屡试不爽(不了解“社会工程学”的读者,可以看“这里”的扫盲)。 顺便插一个八卦:
因为曝光了“棱镜门丑闻”而享誉全球的斯诺登,原先只是 NSA(美国国安局)的某家外包公司的雇员。他本来是没有足够的权限来接触到这么多 NSA 的机密材料。但是他很善于使用【社会工程学】,于是就获得足够多的权限。
这个其实是【不一定】滴。 如今的勒索软件有很多种,其作者也各不相同。有些作者拿了赎金就闪人了,才不管你的死活。 如果你交了钱还拿不回文件,那就是典型的“赔了夫人又折兵”。 上次有个读者问俺:如果被勒索软件加密的文件非常非常非常宝贵(重要的定语说3遍),咋办? 俺的观点是:如果你真的想通过交赎金的方式拿回文件,也要先设法跟勒索软件的作者建立某种沟通方式,然后讨论出一种类似于【分期付款】的形式。比如说:你先支付 20% 的赎金,让对方解密 20% 的文件(你可以把加密文件发给对方,让对方解密完再发回),然后你再给 20% 赎金,对方再解密 20% 文件 (以此类推)。在这种形式之下,即使对方耍流氓,你的现金损失也小很多。 有这个想法的同学太天真啦! 关于杀毒软件的弊端(缺陷),俺在博客上不止一次提到过。简而言之,其弊端大致可以归纳为两大类:漏报 & 误报。下面这篇教程的开头部分,聊了“杀毒软件的原理”以及“漏报 & 误报”的原因。感兴趣的同学可以去看看。
《在线查毒工具 VirusTotal 的 N 种玩法——从“误报/漏报”聊到“攻击者对它的利用”》
有这个想法的同学也比较天真。针对苹果系统的勒索软件已经出现了(包括:macOS 和 iOS)。 顺便从【经济学】的角度来分析一下: “苹果 PC”的平均价格明显高于“【非】苹果的 PC”。这体现出:从总体而言(平均而言),苹果 PC 用户的【支付意愿】强于非苹果的 PC 用户。而勒索软件的作者在考虑经济效益的时候,多半会把这点作为重要参考因素。 说得更直白一些:当面临勒索时,苹果用户更容易榨出油水。
并没有哪种系统的绝对安全的——Linux 也不例外。关键是看【入侵成本】与【潜在收益】的比例。套用经济领域的一个热门词汇就是【投资回报率】——骇客在尝试入侵之前,也是要评估“投资回报率”滴 :) 对 Linux 系统而言,更大的吸引力在于【企业内部服务器】。如果某个企业内部服务器上存储了重要的【业务数据】,那么这个服务器的价值会远远高于个人的 PC 或移动设备。 这次 WannaCry 大规模爆发,连堂堂的【公安部】都中招了(差点让俺笑掉大牙)。而且公安部中招的地方就是【隔离的内网】。 这充分说明了:光靠“内网物理隔离”是【远远不够】滴!而且,内网隔离有时候甚至会起到【反作用】。因为那些在隔离内网的操作人员,会获得一种【虚假的安全感】,他们反而会疏于防范(比如很多人【误以为】:隔离内网的主机不需要设置主机防火墙)。 另外,
前面俺多次提到【内鬼】的威胁。但是千万【不要】误以为:只有内鬼才会威胁到企业内网。实际上,高明的外部骇客,可以通过 APT(advanced persistent threat)的方式,逐步渗透到企业内网,最终依然能攻陷重要的内部服务器(关于这种手法,俺曾经在博客评论区探讨过。感兴趣的同学,可以用博客界面右侧栏的“站内搜索”找到俺当时的讨论)
俺博客上,和本文相关的帖子(需翻墙):
《如何防止黑客入侵》(系列)
《在线查毒工具 VirusTotal 的 N 种玩法——从“误报/漏报”聊到“攻击者对它的利用”》
《吐槽一下 Windows 的安全漏洞——严重性超乎想象》
《为什么桌面系统装 Linux 可以做到更好的安全性(相比 Windows & macOS 而言)》
《如何隐藏你的踪迹,避免跨省追捕》(系列)
《扫盲操作系统虚拟机》(系列)
《社会工程学扫盲》(系列)
《如何对付公安部门的“网络临侦”?——“黑暗幽灵(DCM)木马”之随想》