6种编程语言的大杂烩:针对Zebrocy恶意软件的分析
导语:Zebrocy是一个使用俄语的恶意软件,我们在近期的研究中发现,该恶意软件呈现出非常奇怪的特征。
一、概述
Zebrocy是一个使用俄语的恶意软件,我们在近期的研究中发现,该恶意软件呈现出非常奇怪的特征。为了让各位读者能够迅速了解该恶意组织的历史,我们归纳了以下三个特征,大家可以简单了解:
1、Zebrocy恶意软件会对受害者进行分析,并创建访问方式;
2、Zebrocy在2013年之前,始终与BlackEnergy共享相同的恶意软件和基础设施,或者与该组织所使用的具有相似之处;
3、在过去五年中,Zebrocy所使用的基础设施、恶意软件部署方式、恶意软件目的与Sofacy和BlackEnergy都具有相似性和重叠性,但与此同时,在这段时间之内,它与这两个恶意软件还保持着一定程度上的差异。
我们最初是在2015年年末发现了比较罕见的“Zebrocy Delphi Paylaod”,并在一份未公开的报告中描述这一恶意软件。目前,恶意软件集、活动范围和基础架构已经与此前相比有较大程度的扩展。该恶意软件集使用六种编程语言编写而成。该恶意组织的相关活动已经持续多年,针对数百个政府、外交部门和军事相关目标发动攻击,最初是作为Sofacy的一个下属组织开展活动。
我们在SAS2019会议的演讲中,分享了一个名为“Zebrocy的多语言恶意软件大杂烩”(Zebrocy’s Multilanguage Malware Salad)议题。该议题是基于我们近五年来对Zebrocys恶意组织的深入研究,并且是首次公开提供了关于Zebrocy组织及其特征的一些解读:
1、恶意软件仍然活跃,在SAS2019会议召开前一周,该恶意软件还在发动一波新的攻击,并且使用了一个新型的Golang语言恶意软件下载工具变种。
2、在至少五年时间内,Zebrocy恶意软件持续对其后门进行重新开发和重新部署,但其中都包含一致的分析和进程枚举行为。
3、多个定制化的第二阶段植入物,都是基于第一阶段的进程枚举结果而获取特定凭据。
4、在该恶意组织的多个恶意软件中,发现了一部分重复的代码,表明他们会将此前的一些代码进行复用。
5、Zebrocy在长达五年的时间内,所使用的恶意软件和基础设施都与Sofacy和BlackEnergy/GreyEnergy有高度复杂的重叠性,这表明该恶意软件背后的组织与另外两个组织之间可能存在互相支持的关系。
6、BlackEnergy的初始恶意软件开发和部署,可以追溯至2013年。
尽管Zebrocy从来没有使用过0-Day漏洞进行攻击,但这个组织可能与更为高调的BlackEnergy和Sofacy具有关联,并且可能是它们的开山鼻祖。Zebrocy恶意软件提供了一个灵活且功能强大的恶意软件集,并且该恶意软件背后的组织在2018年内发起的鱼叉式钓鱼和入侵活动数量呈现出迅速增长的趋势,因此这一组织需要引起网络安全行业的重视。
Zebrocy以非常独特和出乎意料的方式与其他恶意活动共享数据点,并有所关联。Zebrocy最初与Sofacy共享有限的基础设施,具有相重合的目标和攻击方向。此外,Zebrocy还与此前的BlackEnergy/Sandworm共享恶意软件代码,并与更近一段时期的BlackEnergy/GreyEnergy共享非常有限的基础设施,也具有相重合的目标。值得注意的是,Trula在2018年部署并传播的宏,与此前未公开发布过的Zebrocy代码几乎完全相同。
能看到其他安全研究团队也陆续发现了这些共同点,我们非常激动。此前有研究人员发现,Zebrocy将Sofacy的XAgent作为第二阶段植入物进行分发,这一点一直以来没有得到证实,但目前我们已经可以证实,所以从整体看上去,我们似乎都在逐渐得出相同的结论。
二、第一盘菜:Zebrocy的初步恶意活动
在2015年年末,在我们最初关注到Zebrocy恶意软件事件时,我们就注意到了2015年10月的AutoIT下载程序和Delphi后门Payload。从那开始,我们注意到Zebrocy的代码就像是一盘沙拉,使用几种语言共同编写,并且经常被发布到各种代码共享站点之中。Zebrocy恶意活动通过鱼叉式钓鱼操作进行,在不使用任何0-Day攻击的情况下,提供各种目标分析工具和下载工具。在Zebrocy第二阶段植入完成后,将进行浏览器凭据窃取、键盘输入记录、Windows凭据窃取以及一些文件与通信的窃取工作。
这一盘菜是在主菜之前上桌,因为获取并维护访问,并不是一件容易的事情。并且,由于该组织似乎从具有破坏性的BlackEnergy/Sandworm APT与高产并具有0-Day能力的Sofacy APT中继承了血统,因此这盘菜非常有趣。接下来,我们根据过去五年中的发现,更加详细地分析Zebrocy恶意软件集、恶意活动及发展历史。
值得注意的是,与Zebrocy相关的鱼叉式钓鱼活动持续到2019年4月,也就是SAS2019会议召开前的一周。根据该恶意软件Go语言下载工具变种的最新更改,可以清楚地表明,Zebrocy恶意软件集仍然在积极开发中。我们观察到的恶意活动持续到2019年5月下旬,推测恶意活动可能会持续一整年。
在SAS2019演讲之后,我们发现了一个新的Zebrocy后门系列,部署了一个新的下载工具。由此可见,Zebrocy正持续扩展其恶意软件集。我们发现,该恶意组织似乎重新选择了C语言编写恶意代码,并在其武器库中使用Nim语言作为扩展。在不久的将来,我们会在Securelist网站(卡巴斯基技术博客)中发布关于此下载工具的更全面分析,同时也会发布其参考指标,希望能够为其他安全人员或厂商提供帮助。Zebrocy的新型Nim下载工具主要针对全球范围内的一些国家,其中已经发现的一些国家包括:哈萨克斯坦、塔吉克斯坦、土库曼斯坦、德国、吉尔吉斯斯坦、英国、缅甸、叙利亚、乌克兰、阿富汗、坦桑尼亚、伊朗。
三、追溯Zebrocy的关联性
在过去五年中,该组织的血统是一个最受关注的话题。我们在持续约两年的Delphocy Delphi恶意活动结束后,发现了Zebrocy Delphi Payload的突然出现。值得注意的是,这个Delphocy Delphi后门与Bootkit内核加载器组件共同提供,后者保持与BlackEnergy恶意软件内核加载器相同的唯一代码。总体·而言,与Sofacy相比,恶意软件集更加具有创新性,并且与BlackEnergy具有一定的相似性。
实际上,如果我们汇总出多年时间中与Zebrocy相关的全部事件,那么就能梳理出该恶意活动的详细档案,包括血统、所使用的恶意软件和运作方式。
1、早期,Zebrocy Delphi后门与Sofacy基础设施有所重叠(2015年底到2016年初)。
2、Delphocy Delphi的部署(2013年至2015年底)以及Zebrocy Delphi时间轴的开始部分(2015年底)。
3、BlackEnergy和Delphocy Bootkit之间具有共享的独特内核代码(2013年至2015年)。
4、Zebrocy使用独特的恶意软件集,采用古老的Delphi编程语言,加入不常见的敏捷开发功能,使用Python、C#和Go语言执行屏幕抓取、获取分卷序列号ID、获取系统信息、列出当前进程列表。
5、Zebrocy与最近的BlackEnergy/GreyEnergy的主要攻击目标与基础设施有所重合。
6、Zebrocy与最近的Turla恶意活动中传播的恶意宏具有代码重复。
当我们在2015年10月初首次发现Zebrocy时,发现相关恶意活动并不完全是Sofacy或者BlackEnergy所为。Zebrocy使用已经编译的AutoIT脚本,针对外交目标发起了攻击,该脚本将会下载新的Delphi语言编写的Payload。这种Payload非常值得关注,因为Delphi本身就是一种非常古老的语言,并且目前,使用Delphi语言编写的与APT组织相关的恶意软件,只有在2012年发现的Delphocy后门和Madi后门。这些恶意软件文件和活动事件表明,该恶意软件与BlackEnergy相关。但基础设施的重合,则表明该恶意软件与Sofacy有关。
四、在SAS2018上的分享和预测
在去年的SAS2018会议上,有研究人员发表了名为“Masha和那些熊”(Masha and these Bears)的演讲,重点关注了SPLM/XAgent Sofacy恶意活动,由于二者包含共同的目标和攻击方向而提到了Zebrocy。以下是分享并预测的一些内容:
1、SPLM/XAgent的攻击数量将在2018年全面下降,Sofacy将采用更加传统的恶意活动方式。
2、Zebrocy恶意活动出现新的增长。
3、Zebrocy使用了BlackEnergy模块的Build-Id格式。
4、Zebrocy传播范围有所扩张。
5、Zebrocy恶意软件集的使用语言发生了扩展。
这些预测,在后来演变成了全球化的恶意事件,Zebrocy开展了大规模的全球化恶意活动,并且有时会具有与Soafacy相同的目标。在2018年的下半年,Zebrocy恶意软件增加了C#、Python和Go语言。该恶意组织经常会对恶意软件集进行创新,因此我们预计,此类行为后续还会再次发生。
五、Zebrocy Delphi后门:与Delphocy和BlackEnergy存在代码复用
在2013年至2015年期间,Delphocy针对乌克兰和波兰发动攻击,入侵过程中部署了一个带有Bootkit加载器的Delphi后门,以及一个不带Bootkit的后门。在Bootkit加载器中,包含了一个例程,它与BlackEnergy内核加载器共享相同的编译代码,有助于将Zebrocy恶意软件与BlackEnergy恶意软件集联系起来。
这种独特的加密实现,同时存在于BlackEnergy的内核加载器和Delphocy的Bootkit内核加载器之间,二者具有相同的代码。该代码又与一些恶意事件具有关联:
1、Delphocy/BlackEnergy所使用的代码末尾与之相同,但BlackEnergy则具有另外的代码。
2、Delphocy的用户模式Delphi Payload(2015年10月)末尾部分与之相同。
3、Zebrocy Delphi Payload(2015年10月)的开始部分与之相同。
在2013年,旧版本的Delphocy Bootkit和BlackEnergy恶意软件平台共享了自定义加密例程的一小部分内核模式代码。尽管Delphocy使用简化的用户模式持久性技术取代了这一Bootkit,但BlackEnergy恶意软件则继续使用此代码,直到2015年底。随后,这些APT停止了基于Delphi的Delphocy项目,也停止了在BlackEnergy恶意软件中使用这一神秘的代码块。几乎是与此同时,开始部署基于Delphi的Zebrocy后门。在几个月后,一个Zebrocy后门连接到一个由特定电子邮件地址注册的域名。该电子邮件地址已经用于注册当时在Sofacy使用的IP上托管的另一个Sofacy域名(rammatica[.]com/raveston[.]com)。
需要注意的是,Delphocy和BlackEnergy的内核模式代码在2013年从Carberp代码库中加入了独特的内容,包括散列、注入、Bootkit。令人惊讶的是,同样的加密密码也被复制到2018年的VPNFilter代码中。显然,这种代码复用的模式在其他APT恶意软件中并不常见,同一段代码的使用时间已经跨越了五年,或更长时间。其中,部分AutoIT代码是从代码共享平台上复制,并粘贴到自己开发的代码之中。这与Sofacy的SPLM/XAgent代码库不同,它使用了至少六年之久,并且完全是定制的代码。
六、Zebrocy的多编程语言混合
Zebrocy恶意软件使用了多种编程语言和多种技术共同组合,其中包括在线论坛、GitHub、Pastebin等网站上共享的合法代码或恶意代码。尽管例如Empire、Responder、BeEF和Mimikatz的开源软件、渗透测试软件经常会被各种恶意组织使用,但这种重复的“复制/粘贴”行为在使用俄语的APT恶意软件集中并不常见。同样不寻常的是,Zebrocy恶意软件经常会增加使用不同语言的恶意软件组件。该恶意软件共使用过AutoIT、Delphi、C#、PowerShell、Go、Python、Nim这8种编程语言。
6.1 AutoIT组件
该恶意组织在2015年10月初的第一波Zebrocy鱼叉式网络钓鱼中,通过电子邮件的方式将压缩后的AutoIT附件发送给至少十几个目标。该恶意组织当时成功说服了大多数收件人打开附件,通常情况下约有一半的收件人试图打开附件。AutoIT代码的功能主要是对目标进行分析,同时下载其他恶意软件。该代码似乎是使用来自AutoIT脚本论坛、GitHub等多个来源的代码拼凑而成。
在AutoIT可执行文件中,包含脚本中所列出的60多个函数,其中有10个比较值得关注的函数。大约四年后,在各种较新版本的Go和C#下载工具变种中,保持了相同的初始分析功能,其中屏幕抓取、获取系统信息和获取当前进程列表的功能,内置于每一个启动例程之中。例如,根据目标系统的卷序列号生成唯一的受害者ID,并在其初始连接中收集,报告给C2服务器,以实现持续跟踪。
6.2 C# Zebrocy后门
Zebrocy产生了一个C#后门,它保留了与其他各种后门实现相同的功能。
在这个实现中,最值得关注的是,它同样实现了屏幕抓取、获取系统信息和获取当前进程列表的功能。此外,通过第一阶段的后门,可以实现对目标的分析,并查找潜在的凭据收集来源,从而有针对性地开发第二阶段的凭据收集工具。此外,Zebrocy在2018年之中,推出了一个基于C#语言构建的Cannon后门。
6.3 Delphi后门
Zebrocy Delphi后门已经被公开记录,但这可能会引出一个更加有趣的分析部分。由于Delphi后门在恶意软件集中不断出现,早期的Zebrocy似乎出现在2013年初至2015年底针对乌克兰和波兰目标开展攻击的Delphocy恶意软件中。同样有趣的是,2013年在Delphocy中实现的独特加密密码Bootkit内核模式加载器,与BlackEnergy的内核模块以及Carberp具有相同的简单API散列函数。尽管Delphocy在2015年部署了不包含Bootkit的第二个版本,但BlackEnergy平台仍然使用相同的内核加载器代码进行部署,直到2015年底。
最新版本的BlankEnergy内核模式组件与Delphocy内核加载器共同使用相同代码,并且在2015年底一起停止使用,这似乎并不是一个巧合。这样的情况发生在Delphocy项目发布不包含Bootkit加载器的第二轮Delphi变种之后。Zebrocy Delphi变种从2015年的最初版本开始持续发展。尽管看起来风马牛不相及,但这种不同寻常的Delphi代码从一个恶意活动中消失,又在另一个恶意活动中出现,似乎不仅仅是巧合。
6.4 Go语言
该组织的后门持续被修改,最后一次部署是在2019年3月下旬。这些后门中还包含来自外部的大量代码。其功能同样是屏幕截取、收集系统信息、列出系统当前运行的进程,以便分析目标,并进一步开展第二阶段的凭据收集任务。在过去的一年中,我们监测到Zebrocy Go后门的出现,并产生各类恶意行为。Vitaly Kremez经常会发布简明而有趣的推文,突出展现Go下载代码中的一些变化,以及对相关Zebrocy恶意软件的更深入分析。
七、恶意软件第二阶段
由于此前有研究人员发现SPLM/XAgent会作为Zebrocy的第二阶段,这些发现成果令我们非常重视。为此,我们进行了大量监测,但没有得到实际的证据支撑。同时,也有一些研究人员进行了合理猜测,他们判断也许Zebrocy下载工具在尝试下载更多的阶段之前都被缓解了,但这些猜测也同样无法被证实。
然而,我们自己寻找了一些答案。为了解释受害者系统中以外的软件安装,无论使用哪种语言,每个第一阶段的后门都会收集系统信息、抓取屏幕并列出正在运行的进程。我们在针对首个发现的Zebrocy后门进行分析时就发现了这种恶意软件行为,并且这种行为延续到了2019年最新一轮的Go后门之中。在后门将收集到的信息发送到C2之后,会出现长时间的延时。最终,目标系统会接收定制的第二阶段植入物,从而从特定的软件中检索凭据。同事,有一些不常见的软件包,包括鲜为人知的定制化Chromium版本CentBrowser、来自亚洲工作时的7Star。在某些具体情况下,还会部署密码窃取恶意软件,从而解决更加常见的软件问题。
此外,我们在2017年和2018年发现,攻击者针对目标使用了C#编写的Zebrocy文件内容窃取程序和键盘记录程序。在SAS2018“Masha和这些熊”的演讲中,对这段代码和其Build-Id值格式进行了部分审计。
八、后续展望
在2016年初的Zebrocy 2.2版本,连接了与Sofacy具有共同Whois并托管资源的域名,后续版本的Zebrocy使用了与BlackEnergy资源非常相似的命名方法和URL构造。从此之后,就像BlackEnergy一样,大部分Zebrocy C2都没有使用域名注册。该恶意软件绝大多数情况下都会通过IPv4直接与主机进行通信,而不进行域名解析。但是,Zebrocy恶意软件会不定时连接硬编码的域名服务器。
通过对这一系列恶意活动进行分析,表明该恶意软件及其幕后的组织长期在进行获取网络目标的恶意活动。正如我们在SAS2018和SAS2019上所预测的那样,这个最新的Nim编码增加了恶意软件集所使用的语言列表。我们预测,Zebrocy在2019年将针对政府部门和军事相关组织发起攻击。
发表评论