我是如何一不小心阻止了勒索病毒的全球蔓延

2018-02-26 15:25:27 浏览数 (1)

原作者 MalwareTech

编译 CDA 编译团队

本文为  CDA 数据分析师原创作品,转载需授权

前言

上周全球爆发电脑勒索病毒,“疫情”已波及 99 个国家。包括中国、俄罗斯、英国、美国在内的众多国家,都被该病毒搅得鸡犬不宁。

除英国国家医疗服务体系(NHS)、美国联邦快递、西班牙电信公司外,俄罗斯内政部的1000 多台电脑也纷纷“中招”,受到严重影响。而据俄罗斯RT新闻网报道,最新的数据统计显示,全球范围内已有超过 10 万台电脑被攻击。

但就在这场损伤巨大的全球“浩劫”中,一位“意外的英雄”横空出世——署名为 MalwareTech 的一名英国信息安全研究员,将该病毒中隐藏的“停止开关”找了出来,成功阻止了该病毒在全球的传播扩散。

处理完邮件和 Skype 电话之后,我终于有足够的时间理一理上周五发生的疯狂事件——就是这次勒索病毒 WannaCry 的全球爆发,现在我想来讲讲我的故事。

那天我上午 10 点醒来,像往常一样登录英国的网络威胁共享平台,我一直在跟进 Emotet 银行病毒的发展动态。其中有几个帖子,是关于一些机构组织被勒索软件攻击,看起来似乎暂时还不严重。之后我就出门和朋友一起吃午饭了。谁知与此同时,名为 WannaCry 的勒索病毒已在全球范围内爆发了。

我回到家已经是两点半左右了,我发现此时威胁共享平台上已全是国家医疗服务体系(NHS)被攻击的帖子,这时我才意识到事件的严重性。以往公共部门系统被病毒攻击并不能算得上是什么新闻,但是这次在全国范围内的爆发极为罕见的。(大多数 NHS 员工不会打开钓鱼邮件,这表明这次的大规模传播使用的时其他方法)。

我很快在一个研究员朋友 Kafeine 的帮助下得到了该病毒的样本。在分析环境中运行样本后,我立即注意到它访问了一个未注册的域名,出于职业习惯,我顺手花 8.5 英镑(约合 75 元人民币)注册了这个域名。

使用 Cisco Umbrella ,可查询到在之前还没有对该域名的访问,直到我注册之后(伦敦时间早上八点左右),访问量开始激增.....

与此同时,我在虚拟环境中再次运行样本,就可以看到勒索病毒的页面; 有意思的是,在加密了我作为测试的假文件之后,它会连接到端口 445 上的随机IP地址(由 SMB 使用)。大规模的连接尝试立即让我想起漏洞扫描器,而且它在SMB端口扫描的使我想到了最近的 ShadowBroker 泄漏的 NSA 漏洞...一个 SMB 漏洞。显然我没有证据表明它就是扫描 SMB host 或使用了泄漏的 NSA 漏洞,接着我在推特上发布了我的发现,接着又去处理新传播的域上。

注册域名并不是一时兴起。我日常工作就是要找到可以跟踪、并阻止僵尸网络(以及其他恶意软件)的方法,所以我总是留意发现未注册的恶意软件控制服务器(C2)域名。事实上,我在过去一年里注册了数千个这样的域名。

我们的标准模式如下:

1. 发现活跃僵尸网络的未注册或过期的 C2 域,并将其指向我们的 sinkhole ( sinkhole 是种服务器,旨在捕获恶意流量并防止受感染计算机被感染他们的人所控制)。

2. 收集关于感染地理分布和规模的数据,包括可用于通知受害者感染并协助执法的IP地址。

3. 反向工程恶意软件,看看代码中是否存在任何漏洞,这能够通过我们注册的域来接管恶意软件/僵尸网络,并防止传播或恶意使用。

至于 WannaCry ,步骤 1, 2 和 3 都是一样的,此时我还不知道。

域名上线几秒钟后,我收到了一个 Talos 分析师的 DM ,要求我提供的扫描 SMB host 的样本。似乎我们在不知不觉中阻止了勒索病毒的扩散,这也解释了为什么他无法运行我之前运行的完全相同的样本。虽然十分好奇,但是由于时间压力,我无法深入调查,因为现在 sinkhole 服务器正在接近最大负荷,这很危险。

我着手确保 sinkhole 服务器的稳定,并从我们注册的域名获取数据(目前,我们仍然不知道注册域名的目的,但是明确的是感染了 Wannacry 病毒的电脑会连接到该域名,让我们可以跟踪病毒传播现状)。我建了一个病毒传播实时跟踪地图。

大约伦敦时间下午 6 点 23 分,我要求员工查看其蠕虫代码,并验证我们注册的域名不会被改变(有些病毒会使用算法定期更改域名,所以我们需要知道是否有新域名需要去注册),同时我对实时地图进行了一些更新,以应对新访客的快速涌入。

大约 5 分钟后,员工获得消息:域名注册已经触发了勒索病毒,意味着我们把所有人的文件都加密了(不用担心,后来被证实并非如此),但当时仍然引起了些恐慌。我联系了Kafeine,他将 ProofPoint 研究员 Darien Huss 新发步的推文转给了我,他证实相反的观点(通过注册该域名我们已经阻止了勒索病毒的传播)。

紧接着我再次加载了分析环境,并运行了样本...啥事儿没有。接着,我修改了主机文件,使域名无法连接,并再次运行...病毒再次开始运行。

你可能看不到一个成年男子此时激动的像个两百斤的孩子,那就是我。从勒索病毒的第一次运行失败,然后紧接着第二次运行的成功意味着我们阻止了病毒的传播,并阻止了自注册域名以来病毒感染的任何新电脑。

那么为什么我们 sinkhole 会阻止这场全球勒索病毒呢?

Talos 做了一个很好的分析,在这我将利用 Darien 的截图解释。代码中有这样的语句:

访问该域名

如果 该域名存在

那么 停止攻击

反之如果该域名不存在

那么 开始继续攻击...

这些代码意味着不断尝试连接到我们注册的域名,并且如果连接不成功,病毒会劫持系统,如果连接成功,则停止。

这可能是病毒的作者留的“退路”,他希望自己的病毒最后能够得以控制,而不是一放出就任其传播,最后无法收场。注册这个域名相当于一个“停止开关”,能够控制病毒的传播。

在某些沙箱环境中,通过回复具有沙箱 IP 地址的所有 URL ,而不是 URL 指向的真实IP地址从而拦截流量。这样做的副作用是,如果未注册的域被查询,它将如被注册一样响应(这不应该发生)。

我认为,他们试图访问一个有意未注册的域名,而该域名域名会在某些沙箱环境中显示被注册,然后一旦发现域名响应,他们就知道处于存在病毒并防止进一步分析沙盒中。这种技术并不是前所未有的,而是经常被 Necurs 木马使用(他们会查询5个完全随机的域名,如果它们都返回相同的 IP ,它将退出); 然而,因为 WannaCry 使用了一个硬编码的域名,我的注册使他们认为在沙箱内,从而退出...

因此我们最初无意中阻止了病毒的传播和进一步扩散。现在我们知道这一点,我们将继续控制该域名,以防止此样本的任何进一步感染。

还有一件值得重视的就是,我们的 sinkhole 只会阻止这个样本扩散,不能保证他们不再对域进行修改并再次尝试。所以非常重要的是,记得及时升级系统,安装补丁。

除了这个博客中提到的名字和公司,我还要感谢:

NCSC 英国 - 他们的威胁情报共享计划为我们提供了识别本次攻击背后的病毒所属的宝贵信息。他们也帮助确保我们的 sinkhole 没被误认为是犯罪控制的基础设施,以便我们能够为他们提供通知英国搜影响用户的信息。

FBI&ShadowServer - 他们在短时间内提醒英国之外的用户,这是很大的帮助。

2sec4u - 减少我的工作量。

Microsoft - 为已不受支持的操作系统(如 Windows XP 和 Windows 2003)更新,现在人们可以通过升级而不需要更新系统来防止病毒。

请及时更新系统,这里有实时更新指南:

https://www.ncsc.gov.uk/guidance/protecting-your-organisation-ransomware

现在我应该睡觉了...

ref:

https://www.malwaretech.com/2017/05/how-to-accidentally-stop-a-global-cyber-attacks.html

0 人点赞