据维基百科记载,俄罗斯联邦对外情报局(俄语:СлужбаВнешнейРазведки,英语:ForeignIntelligenceServiceoftheRussianFederation,简称SVR)是俄罗斯的情报机关之一,专门负责俄罗斯境外的情报活动。对外情报局的前身是苏联国家安全委员会第一总局,即克格勃第一总局,是1954年3月13日–1991年11月6日期间苏联的情报机构,在当时被认为是全球效率最高的情报收集机构。
图【1】克格勃第一总局&SVR标志性徽章
1991年苏联解体后,俄罗斯境内的原克格勃机关改制为俄罗斯联邦安全局(FSB),其第一总局改制为俄罗斯对外情报局(SVR)。白俄罗斯则完整保留境内克格勃机关的建制及原有名称。其总部位于俄罗斯莫斯科亚先捏沃,有一万三千名员工,特工会化身为外交人员或记者进行情报活动。
Table1APT29公开披露报告:
Table2APT29分支结构:
WellMess、WellMail、SoreFang恶意软件。
接下来,我们针对TheDukes系列、WellMess系列以及Nobelium系列分开总结梳理APT29特有的攻击活动特点。
基于上述对APT29的组织结构分类,我们分开探讨TheDukes、WellMess、Nobelium三大分支特有的攻击偏好、攻击战术、代表性攻击事件。
图【5】2015.08鱼叉邮件“选举结果可能会被修改”
附件解压后是一个名为“37486-the-shocking-truth-about-election-rigging-in-america.rtf”的LNK文件,命令行语句启动powershell进程执行base64编码的ps1脚本,ps1脚本进行当前PC机器环境检测之后按照既定文件偏移提取LNK文件中数据,然后进行异或解密,写入落地文件。落地文件包括:
%TEMP%37486-the-shocking-truth-about-election-rigging-in-america.rtf(诱饵文件)、
%APPDATA%Skypehqwhbr.lck(PowerDuke特马加载器)、%APPDATA%Skypehqwhbr.lck:schemas(PNG格式的文件流数据,携带加密PowerDuke载荷,以图片格式打开将正常显示装酒的高脚杯)。内存态的PowerDuke特马与攻击者交互实现常见的窃密、监控、后门等行为。
图【7】PowerDuke鱼叉邮件攻击流程示意图
LNK文件在真实用户环境中打开后将展示释放的诱饵文档。
上述鱼叉邮件攻击活动中投入使用的PowerDuke组件是TheDukes在美国总统大选期间使用频率较高的一款特马,自2008年至2019年期间,Dukes组件经过一系列扩充改进已形成一套功能齐全的工具集,实现功能包括简单的下载器、加载器、窃密木马、高级远控木马、提权组件(曾披露投入使用0day漏洞)、加密组件、横移组件等。在实际攻击活动中,投递载荷会根据实际情况选择多阶Dukes特马渗入。参考ESET披露的“Ghost行动”中的Dukes工具集使用流程如下:
WellMess组件使用的C&C通信协议包括HTTP、HTTPS、DNS,其中HTTP协议通信最为常见。WellMess木马上线之后会立即与C&C端交互协商用于后续通信数据加密的AESkey,更新的AESkey采用RSA算法加密传输。木马与C&C端的交互数据加密协议可分为两部分:HTTPHeader部分的Cookie字段、Bodydata部分。其中头部的Cookie数据用于传输C&C下发指令,Body部分为具体功能指令对应的上传数据。其HTTP通信数据加密协议结构如下:
截取WellMess木马HTTP通信加密流量如下:
SolarwindsOrion产品构建过程中替换的恶意源代码SolarWinds.Orion.Core.BusinessLayerBackgroundInventoryInventoryManager.cs在Sunburst后门组件中的反编译表现如下:
Sunburst后门检测真实用户环境之后,动态解密ZIP+Base64存储的配置信息后,使用DGA域名算法组合多级域名前段部分生成C&C回连域名,然后进入RAT分发函数进行C&C交互。
图【17】SunburstZIP+Base64编码C&C配置信息
Solarwinds供应链攻击事件披露之后,MSTIC、FireEye以及其他安全机构陆续披露了多个Nobelium攻击组件,包括Teardrop、Raindrop自定义的CobaltStrike加载器,Goldmax后门,GoldFinderHTTP跟踪器工具,Sibot下载器以及早期的EnvyScout、BoomBox等dropper组件。对该系列组件的调查发现Nobelium发起的一系列鱼叉邮件攻击事件,攻击目标为美国智库、非营利组织、公共部门、石油和天然气、化学和酒店行业的教育机构和私营部门公司。
图【19】引自MSTIC、FireEye,Nobelium鱼叉邮件
攻击事件关联归因是APT组织追踪溯源过程中非常重要的环节,同时也是高级威胁事件调查的最终目的。当前复杂多变的网络战环境以及各安全机构情报信息差异问题均给归因工作提出挑战。所谓的归因只是站在独立立场尽可能客观地去描述攻击者背景。出于多数APT攻击事件中特有的国际政治局势下的攻击倾向,对被攻击目标国家的政治敌对(或外交不友好)国家尝试关联验证往往是比较有用的初步关联归因思路。此外,基于恶意代码指纹、网络资产特征、攻击TTPS等维度向已知背景组织挂靠是比较常见有效的归因办法。
在对APT29组织的研究过程中,其归因结论主要由美国、英国、加拿大、瑞士等国家情报机构以及其本土安全公司提供,然后其他媒体机构对归因结论进行传播扩散。在公开披露的调查报告中,因为信息涉密问题,多数归因证据进行了阉割脱敏处理。我们在研究梳理APT29关联归因证据过程中,过滤掉以媒体机构为主的主观性较强并且缺乏切实证据的新闻信息,侧重于总结第三方安全机构调查报告中披露的具有指向性的客观线索。
接下来,我们按照本文前部分划分的APT29组织结构分开梳理其关联归因证据。
TheDukes系列是APT29最早的组织代号,早期的Dukes特马工具是在2013年由卡巴斯基安全团队作为未知类型攻击组件进行命名披露的。对于TheDukes系列的归因,我们重点探讨如何将TheDukes归因至俄罗斯政府背景黑客组织,而对于如何将APT29关联到俄罗斯联邦对外情报局(SVR)不在本文讨论范围内。
5.1.1受害者分析
2013年2月,卡巴斯基在“TheMiniDukeMystery:PDF0-dayGovernmentSpyAssembler0x29AMicroBackdoor”一文中对MiniDuke木马组件以及其参与的攻击事件进行详细披露。该系列攻击活动中,被攻击目标主要为欧洲西部、中部国家。鱼叉网络攻击活动中投入使用的诱饵素材如下。
图【20】引自Kaspersky,2013年Dukes攻击诱饵
在对Dukes2013年攻击活动的深入调查中,卡巴斯基团队通过分析大量C&C服务器日志,发现该系列攻击活动受害者包括分散在23个国家的59个独立机构,这些国家为:比利时、巴西、保加利亚、捷克共和国、格鲁吉亚、德国、匈牙利、爱尔兰、以色列、日本、拉脱维亚、黎巴嫩、立陶宛、黑山、葡萄牙、罗马尼亚、俄罗斯联邦、斯洛文尼亚、西班牙、土耳其、乌克兰、英国和美国。
2015年9月,F-Secure安全公司在“THEDUKES7YEARSOFRUSSIANCYBERESPIONAGE”(译为:TheDukes7年的俄罗斯网络间谍活动)报告中继续披露了格鲁吉亚、乌干达、波兰、哈萨克斯坦、吉尔吉斯斯坦、阿塞拜疆、乌兹别克斯坦等国家。
图【21】2008-2009年,Dukes针对波兰、捷克、国美智库攻击活动中诱饵文件
至此,我们梳理自2008年-2016年期间TheDukes的攻击目标包括几乎全体欧洲国家、部分美洲国家、少数亚非国家,其中主要目标国家为以美国为主的北约成员国和以乌克兰、格鲁吉亚、哈萨克斯坦、阿塞拜疆为代表的欧洲中部国家。结合当时世界各国的情报间谍能力、美俄之间的政治局势以及俄罗斯西南方向敏感的地缘政治关系,TheDukes极有可能具有俄罗斯政府背景。
图【22】引自F-Secure,UTC+3时区中的莫斯科
5.1.3vcaz情报机构调查
图【23】引自美国参议院情报特别委员会调查报告Report_Volume1.pdf,13/67页
上述关联点是当前可公开收集的可初步将TheDukes关联到俄罗斯的论据,虽然美国各情报部门并未披露过多调查细节,但结合国际政治局势及美方提供的众多国际司法指控证据来看,将TheDukes归因至俄罗斯应该是较为合理的。
WellMess系列木马在2018年由JPCERT作为一款独立的新型木马披露。2020年,在对英美在内的全球COVID-19疫苗研制机构的网络间谍活动中出现了WellMess的身影,英国、美国、加拿大三国的国家情报机构(NCSC、NSA、CISA、CSE)联合发文将该系列攻击事件归因至具有俄罗斯联邦对外情报局背景的APT29,具体归因点并未披露。外界至今对于将WellMess归因至APT29仍然存在少许争议。
2020年8月,英国普华永道安全咨询公司在“WellMessmalware:analysisofitsCommandandControl(C2)server”一文中给出了部分归因证据,即WellMess与已知APT29SeaDuke组件在关联,二者均存在使用攻击失陷的第三方网站作为C&C服务器,以及二者在网络通信中使用的数据加密协议较为相似。我们重点注意通信数据加密协议,二者在HTTP协议通信过程中,均会使用header部分的Cookie字段来传输C&C指令,并且在C&C指令的加密逻辑上较为相似。
Table3加密协议比较
分析对比二者HTTP通信中传输的自定义加密数据表现如下,二者非常相似。
图【24】SeaDuke与WellMess通信流量
综上,考虑到SeaDuke和WellMess特有的应用层数据加密协议以及使用HTTPheader部分Cookie字段传输加密数据的共同偏好,可将该关联点作为将WellMess归因至SeaDuke所属的APT29的强关联论据。
划分Nobelium分支的一个标志性事件是2020年12月曝光的Solarwinds供应链攻击活动,该攻击活动的主要受害者为美国和欧洲国家的政府实体、科研、能源等机构。攻击活动发现之后,美方情报机构联合FireEye、Volexity等第三方安全公司对攻击活动进行深入调查分析。在已披露的调查报告中,其实并没有提供将Solarwinds事件归因至APT29的确切证据,各安全公司多采用私有命名对幕后攻击者进行归类,随后美方政府基于受害者立场下的国际政治局势因素将该事件归因至APT29。准确来讲,是将Solarwinds供应链攻击事件定性为俄罗斯政府背景支持的间谍活动。
微步情报局在深入总结已有情报信息之后,梳理了两条可用于归因的佐证线索:卡巴斯基披露的Sunburst木马(Solarwinds供应链攻击活动中植入的特马)与Kazaur木马(归属于俄罗斯背景的Turla组织的特马)的代码相似性,瑞士安全公司Prodaft在SilverFish组织的调查报告中攻击者背景分析。下面我们分别来论述:
5.3.1Sunburst与Kazaur的代码相似性
其次,Sunburst和Kazuar特马运行过程中都采用动态方式获取核心函数,通过计算遍历获取的WindowsAPI名称摘要与硬编码值比较来判定,二者均采用自定义修改的FNV-1a哈希算法。FNV哈希算法全名为Fowler-Noll-Vo算法,是以三位发明人GlennFowler、LandonCurtNoll、PhongVo的名字来命名的,最早在1991年提出。FNV-1a摘要算法的标准实现逻辑如下,算法中包含两个初始向量:初始哈希种子offset_basis,迭代相乘的种子FNV_prime。简单描述其逻辑为:从待计算字符串中取出指定步长数据,将取出数据先与初始哈希向量做异或运算,然后将结果与初始乘法种子做乘法运算,将计算结果赋值为初始哈希向量,然后取待计算字符串后续单位数据迭代上述过程,最终得到计算结果。
Sunburst和Kazuar在使用FNV-1a算法时均进行了相同的修改:增加一个新的硬编码key,将标准FNV-1a计算后的哈希最后与该key进行异或运算。
二者在代码层实现如下:
图【27】Sunburst改变后的FNV-1a算法
图【28】Kazuar改变后的FNV-1a算法
在计算当前PC机器UID标识序列时,Sunburst和Kazuar均采用相同算法(MD5+XOR),即通过既定字符串计算MD5摘要,然后将该散列值与出初始四字节逐字节异或得到最终UID序列。
Sunburst中UID生成算法如下:
图【29】SunburstGUID生成算法
Kazuar中GUID生成算法如下:
图【30】KazuarGUID生成算法
5.3.2SilverFish调查报告
图【31】Prodaft渗入Solarwinds事件木马主控端后台的流程
接下来我们将逐一梳理该调查报告中将Solarwinds事件归因至俄罗斯黑客组织的细节:
5.3.2.1C&C后台源代码中携带的开发者ID
在C&C后台的PHP源代码中静态包含14个人的昵称和ID,多数ID曾在俄语地下论团中活跃。该线索可以初步证明攻击者拥有浏览俄语黑客团队的习惯。
图【32】摘自Prodaft报告,含黑客ID的PHP代码
5.3.2.2C&C后台关于中马机器的俄语信息备注
C&C后台面板中上线机器一栏均存在名为“Comment”的信息单元格,此位置用于后台操作人员填写关于受控机器信息,当前已存在的备注信息多采用俄语俚语或白话,如“dno”、“pidori”、“poeben”、“poebotina”、“psihi”、“hernya”、“xyeta”、“gavno”。该线索说明C&C后台操作人员具有俄语背景。
图【33】摘自Prodaft报告,Comment中的俄语俚语描述信息
5.3.2.3流量重定向代码过滤CIS独联体国家受害者
基于当前C&C后台拓线的其他失陷类型C&C站点上存在用于流量重定向的PHP代码,该代码会过滤掉包含阿塞拜疆、亚美尼亚、白俄罗斯、哈萨克斯坦、吉尔吉斯斯坦、摩尔多瓦、俄罗斯、塔吉克斯坦、土库曼斯坦、乌兹别克斯坦、乌克兰、格鲁吉亚在内的CIS独联体国家的受害者机器回连流量,其中还设置了俄语、乌克兰语等在内的语种过滤条件,对于美国和加拿大不予过滤。代码中使用注释语句为俄语。考虑到Solarwinds供应链攻击事件受害者遍布全球,攻击者在受害者回连流量重定向代码中主动过滤掉非目标的俄语系国家,该行为可作为将Solarwinds供应链攻击事件归因至俄罗斯背景黑客组织的强归因论据。
图【34】摘自Prodaft报告,重定向流量过滤代码
在绝大多数的APT攻击活动中,落地攻击载荷会对当前PC环境进行探测,以决定是否进行或调整后续攻击行为,比如杀软检测、虚拟机检测、安全分析工具检测等等。在早期的TheDukes系列工具集中,存在一种应用简单的数理统计思维的检测方式,在环境检测代码中,设置一个初始为0的score变量,然后逐一检测是否存在杀软产品、是否处于虚拟环境、是否存在安全工具、是否包含异常PC用户名称、是否存在异常文件名称,如任一匹配,则score加上对应权值,待检测代码执行之后将score指与给定阈值进行比较,以此判断当前环境是否为目标环境。其代码实现如下图所示:
图【36】TheDukes工具集PC环境检测
在TheDukes系列工具集中,MiniDuke、CozyDuke、OnionDuke、HammerDuke、PolyglotDuke等组件均会使用Twitter社交平台托管攻击C&C地址,以PolyglotDuke下载器组件为例,下载器落地后先解密特定TwitterURL,然后请求该URL获取特定分隔符之间的流数据,对其进行解密处理得到真实的C&C地址。攻击者提前准备的Twitter动态信息如下:
图【38】引自ESET报告,使用Twitter托管加密C&C配置信息
使用图像隐写术进行攻击指令或攻击载荷下发是一种有效对抗流量检测设备的方法。常见的图像隐写术是通过在各个像素(每个像素二进制数据共24bit,红绿蓝三元素依次各占据8bit)的各字节低位填充隐藏数据,解密代码通过提取各隐藏数据进行拼接解密处理得到真实载荷,而对像素中三色素进行小数值范围内改动并不会明显改变图片质量。APT29组件中RegDuke即是通过这种方式实现攻击载荷传递。参考ESET绘制的像素嵌入结构如下:
图【39】引自ESET,RegDuke图像隐写结构
图【40】引自ESET,PNG图像载体及隐藏数据提取
图【41】WellMessC&C通信流量加密协议
2、供应商软件构建过程投毒的经典供应链攻击案例,具备策划重大攻击活动的能力。
Table5APT29三大分支概述
攻击战术倾向:鱼叉邮件攻击,windows平台攻击为主。WellMess2018年6月至今攻击目标倾向:以英国、美国、加拿大为主,覆盖政府、医疗、科研机构、高校、高科技企业等行业目标。
代表性攻击事件:2020年7月针对COVID-19疫苗研制机构的间谍活动。
攻击战术倾向:网络渗透攻击,Windows、Linux双平台攻击。Nobelium2018年11月至今攻击目标倾向:以美国、加拿大、英国为主的欧美地区国家,侧重于高政权、高市值机构,覆盖政府、军工、航空航天、能源、高科技企业等行业,用于窃取高价值情报信息。
代表性攻击事件:Solarwinds供应链攻击。
攻击战术倾向:鱼叉邮件攻击,供应链攻击,0day漏洞利用。总结APT29历史攻击活动中投入使用的武器库资产如下: