微步情报局长期致力于追踪发现全球高级威胁团伙活动轨迹,Turla APT 组织作为一支极具代表性的高级威胁组织,其一直是微步情报局追踪的重点。近日,我们整合梳理了 Turla 组织历史攻击事件、已积累情报数据、并对该组织武器库组件进行深度分析,最终形成本篇总结报告(本文侧重于对 Windows 平台的战术、技术分析,并侧重于对2015年之后的攻击事件分析)。本文主要内容如下:
基于攻击目标、攻击战术、武器库组件对 Turla 组织进行深度画像。
总结概括 Turla 组织发展历程,描述其基础的攻击框架。
总结提取 Turla 组织攻击载荷特有的 TTPS 指纹。
微步在线通过对相关样本、IP 和域名的溯源分析,已提取录入相关 IOC,可用于威胁情报检测。微步在线威胁感知平台 TDP、本地威胁情报管理平台 TIP、威胁情报云 API、互联网安全接入服务 OneDNS 等均已支持对此次攻击事件和团伙的检测。
Turla,也被称为 Snake,Venomous Bear、WhiteBear 、Waterbug、Uroboros 等,是一个具有俄罗斯政府背景的 APT 组织。此外,卡巴斯基曾证实上世纪90年代著名网络间谍组织“月光迷宫”(Moonlight Maze)为 Turla 组织的前身。该组织因其复杂的恶意攻击组件以及泛散的攻击目标而闻名。Turla 组织在2008年因入侵美国中央司令部计算机系统而被曝光,随后几年,多家安全公司相继披露多起有关 Turla 组织的攻击事件。根据关联 Turla 使用攻击组件推测该组织最早活动时间约为2004年,2015年年中开始,其活动频次明显加剧。自活动至今,Turla 组织发起的攻击活动中的受害者涉及地域已超过45个国家,其攻击目标包括政府机构、大使馆、国际组织、军队、高等教育机构、科研机构、制药公司等等。其最终攻击目的为情报刺探,通过一系列网络间谍活动窃取目标单位敏感情报信息。
根据爱沙尼亚情报机构披露信息,Turla 组织疑似归属于俄罗斯联邦安全局(简称 FSB,负责俄罗斯联邦国内的反间谍工作,同时为 APT29 背后支撑机构之一)。
截图引自:https://www.valisluureamet.ee/pdf/raport-2018-ENG-web.pdf
Turla 组织发起的网络间谍活动主要针对 Windows 平台,当然也被发现存在少数针对 Macos 和 Linux 平台的攻击活动。Turla 活动至今,历经几个主流 Windows 操作系统的更替,在历史攻击活动中投入使用的恶意软件较为繁杂,包括自研特马和开源木马,包括多开发语言环境,其中部分特马保持持续更新迭代至今仍被投入使用。Checkpoint 安全人员联合 intezer 归因引擎对俄罗斯背景 APT 组织使用的恶意软件进行关联分析,截取 Turla 组织的各攻击组件关联如下所示。
截图来源:https://apt-ecosystem.com/russia/map/
基于微步情报局对 Turla 组织的追踪积累以及国内外友商披露信息,我们对 Turla 组织画像如下。
Table 1 Turla 组织黑客画像
名称 | 图拉、Turla、Venomous Bear、Waterbug、Snake、Uroboros,WhiteBear。 |
时间线 | 2008年被披露,2015年后攻击活跃,最早活动时间可追溯至2004年。 |
背景 | 具有俄罗斯政府支持背景,疑似归属于俄罗斯联邦安全局(FSB)。 |
攻击目标 | Turla 组织攻击目标地域覆盖欧洲、亚洲、南美洲等板块,重点集中在中东、欧盟、北约成员国,具体包括越南、新加坡、孟加拉国、摩洛哥、吉尔吉斯、阿联酋、奥地利、瑞士、德国、罗马尼亚、土库曼斯坦、塔吉克斯坦、卡塔尔、希腊、英国、索马里、俄罗斯、巴基斯坦、美国、乌克兰、韩国等在内的超过45个国家和地区。其攻击目标行业涵盖政府机构、大使馆、国际组织、军队、高等教育机构、科研机构、制药公司等。 |
攻击目的 | 网络监听、情报窃取 |
攻击方式 | Web 渗透入侵、网络劫持、水坑攻击、鱼叉攻击、供应链攻击、RCE 漏洞、U 盘社攻。 |
鱼叉载荷类型 | 漏洞文档、宏文档、伪装安装包 |
曾使用漏洞 | CVE-2007-5633 、CVE-2008-3431 、CVE-2009-1123 、CVE-2009-0824 、CVE-2010-0232 、CVE-2010-1592 、CVE-2012-1723 、CVE-2013-5065 、CVE-2013-3346 、CVE-2017-0261 |
武器库木马 | 包括开源工具、泄露工具、自研特马等,见下表梳理。 |
三句话描述 | 1. 大规模的 Web 站点渗透入侵、用攻陷站点作为后续攻击活动中的 C2 服务器或托管恶意代码。 2. 甄别目标 PC 机器,精准投放攻击载荷,渗透目标网络,注重持续监听。 3. 高级恶意代码开发能力和反追踪能力,攻击事件暴漏后便会对武器库进行更新、弱化指纹特征。 |
Turla 组织在历史攻击活动中曾投入使用种类繁杂的攻击组件,包括具备基础的数据收集和 shell 执行等功能的后门、具备完整远控功能持续监听的高级组件以及包括泄露的方程式攻击组件在内的多个第三方组件。我们根据各组件的功能复杂程度以及在实际攻击活动中可能下发启用的阶段进行简要梳理,其总结描述如下。
Table 2 Turla 武器库木马清单
类型 | 描述 |
初级后门/加载器/插件 | The Epic:基础后门 |
Skipper:基础后门,一般采用浏览器插件形式植入。 | |
KSL0T:按键记录器。 | |
Wipbot:具备下载功能的基础后门。 | |
IronNetInjector:打包 Ironpython 引擎的恶意 ipy 加载器。 | |
PNG Dropper:用于携带隐藏在 PNG 文件之间载荷的木马程序。 | |
中级后门 | KopiLuwak:Javascript 后门,中间阶段组件,曾在宏文档解出。 |
HyperStack:具备客户端、服务端,基于管道协议进行局域网内各主机 RPC 通信。用于网段监听。 | |
Neptun:RPC 后门,类似于 HyperStack。 | |
Outlook Backdoor:用于窃密电子邮件,并以邮箱作为 C2 的窃密木马。 | |
Nautilus:由英国国家网络安全中心披露的 Turla 特马 | |
Mosquito:由 Eset 披露的 Turla 特马,疑似通过网络劫持投放,伪装成合法安装程序(如 Flash)的持久化后门。 | |
AcidBox:由 Palo Alto Networks 团队披露的后门组件,可以将敏感数据作为图标资源的覆盖物添加,滥用 SSP 接口进行持久性和注入以及 Windows 注册表中的有效负载存储。 | |
高级后门 | Crutch:监听 PC 机器及可移动存储介质,窃取 office/pdf 类敏感文件,通过在线云盘进行回传。一般用于偏后期的攻击阶段投放。 |
Agent.BTZ:一种复杂的蠕虫,具有在网络和闪存驱动器中传播,收集敏感信息并将数据发送到远程命令和控制服务器的能力。Agent.BTZ 以其在2008年美国网络攻击中的主要作用而闻名。 | |
Uroburos:Turla 使用的复杂 rootkit,Agent.BTZ 的继承者。Uroburos 由驱动程序和加密的 VFS 组成。它能够完全控制受感染的系统,执行任意命令并窃取敏感信息。 | |
ComRAT:Agent.BTZ 恶意软件的直接后代,对 Agent.BTZ 进行大幅度重构,增强 RAT 功能。 | |
Penquin:Uroburos 恶意软件的 Linux 版本 | |
Carbon:Turla 自研的模块化攻击组件,保持持续更新。Carbon 恶意软件是一个可扩展的框架,充当其命令和控制服务器提供的插件的插件管理器。该框架是先进且统一的,包括协调器,释放器,下载器以及将注入浏览器和电子邮件客户端的库。 | |
Gazer:用于监听目标主机的高级后门组件。由 Eset 公开披露。 | |
LightNeuron:针对 Microsoft Exchange 主服务器的后门。除了是功能齐全的后门外,它的独特之处还在于它可以监视电子邮件。常见于后续攻击阶段投放。 | |
DarkNeuron:成对出现的组件程序,包含客户端和服务器,用于局域网段监听。客户端用于感染端点并窃取敏感信息。该服务器用于感染 netwrok 服务器,并充当客户端的本地 C2。 | |
Kazuar:Kazuar 是 .NET 编写的后门恶意软件,它使操作员能够完全远程访问受感染的计算机。它是一个可扩展的后门,它能够加载其他插件以增强其 Trojan 功能,新版本支持反向 Web 服务。 | |
第三方工具 | Empire:Empire 是一个开源,跨平台的远程管理和开发后框架,可在 GitHub 上公开使用。用于扩充提供 Powershell 功能。 |
Certutil:certutil 是一个命令行实用程序,可用于获取证书颁发机构信息和配置证书服务。 | |
PsExec:用于 shell 执行和横向移动 | |
Nbtstat:nbtstat 是用于对 NetBIOS 名称解析进行故障排除的实用程序。 | |
SScan 和 NBTScan:网络侦察 | |
IntelliAdmin:用于执行 RPC 命令 | |
PsExec:PsExec 是免费的 Microsoft 工具,可用于在另一台计算机上执行程序。它由 IT 管理员和攻击者使用。 | |
Meterpreter:MSF loader 载荷 | |
方程组工具:泄露的 EternalBlue,EternalRomance,DoublePulsar,SMBTouch 方程式组件。 | |
Mimikatz:盗窃凭证 |
Turla 组织是一支活跃十余年的高级威胁组织,也是迄今为止被公开披露的最为复杂、强大的 APT 组织之一。其持续更新投入的高级武器库组件以及繁杂的攻击流程均给安全分析人员的追踪关联提出了巨大的挑战。根据已公开披露的 Turla 组织攻击事件以及在此期间操作系统版本迭代、安全检测能力的提升,我们可以初步将 Turla 组织的发展划分为三个阶段。
第一阶段为2004年至2010年,该阶段是“月光迷宫”(Moonlight Maze)攻击事件后紧跟的时期,此阶段 Turla 组织借助已积累的网络漏洞武器库对 Linux/Unix 平台发起了多次网络攻击活动。而对于 Windows 平台而言,该阶段主流操作系统为 Windows XP,薄弱的系统安全机制给攻击者提供了绝佳的攻击环境。Turla 组织著名的 Agent.BTZ 特马以及后续迭代的 Uroburos rootkit 组件正是该阶段的产物,比较具有代表的攻击事件为2008年对美国国防司令部的攻击活动,即 Buckshot Yankee 事件。
第二阶段为2010年至2016年。该阶段也是 Windows XP 过渡到 Windows 7 的阶段,随着操作系统对非系统驱动的增强检测,Turla 逐渐舍弃之前频繁使用的 rootkit 类攻击组件,转而使用用户层攻击组件进行间谍活动。在此期间,Turla 选择的攻击载荷投递方式主要为浏览器水坑攻击。Turla 大批量入侵目标人员相关的政府政务网站,在 Web 页面植入恶意 Javascript 代码,筛选有价值目标人员之后下发攻击组件,打包恶意载荷的 Adobe Flash 升级包是 Turla 最为常用的组件下发形式,而在此期间安全漏洞日益严峻的 Flash 插件更是给了攻击者更多的恶意代码执行的入口选择。除此之外,此阶段多家国外安全公司披露了 Turla 组织通过卫星通信固有安全缺陷来劫持通信流量隐藏真实 C2 服务器的攻击技术,公开披露被劫持的多家卫星通信运营商提供的通信业务覆盖地域非常广泛,主要为以中东为主的亚洲大陆板块。第二阶段同样为 Turla 组织武器库特马大量扩充(或被披露)的一个阶段,包括著名的 Carbon、Mosquito、Gazer、Crutch 系列组件。
截图来源:https://apt-ecosystem.com/russia/map/
第三阶段为2016年至今。该阶段 Turla 组织的攻击框架趋向于标准化,除了持续更新优化武器库特马之外,还涉及对多种流行的开源攻击框架、攻击工具的使用。在投递载荷形式上也有了较大的调整,包括常规的宏文档、漏洞文档为载体的鱼叉邮件等。恶意代码开发语言除了传统的 C/C++ 之外,当前阶段也表现出对 Python、Powershell 等脚本类语言的青睐。该阶段最为明显的特点是对于已曝光攻击组件的快速更新迭代,在系统安全机制绕过、杀软检测、沙箱对抗方面与时俱进。
通过总结分析近几年的 Turla 攻击样本,我们简要绘制 Turla 组织从武器投递到横向扩散阶段的攻击流程图如下。攻击载荷投递包括常见的水坑攻击和鱼叉邮件等方式,Turla 组织习惯于使用前期入侵的合法政务网站(还包括其他企业站点)作为 C2 服务器,除了失陷站点之外还经常使用 Pastebin 平台存放恶意代码资源,使用网络云盘、电子邮箱存储回传的窃密数据。在恶意程序安装至横向扩散阶段,Turla 组织惯于使用多阶后门来实现,一阶后门组件一般会收集 PC 数据,由攻击者侦察判断是否进行下一步攻击渗透。后续的高级后门一般会配合攻击者远程交互进行局域网内横移渗透,通过管道协议的 RPC 通信进行局域网段监听。
通过分析梳理 Turla 组织攻击事件中投递载荷所使用的攻击技术以及代码实现细节,可以发现 Turla 组织恶意代码开发人员存在较多的功能实现偏好。我们总结提取这些特殊的 TTPS 指纹,对其进行总结描述。
在以 PC 主机为恶意代码执行环境的 APT 攻击活动中,攻击组件的持久化是一个必不可少的重要环节,该功能的实现设计同样直接影响因用户敏感而导致的曝光风险几率。Turla 组织在持久化设计部分使用过多种方式,均能体现出攻击者的特有设计偏好。
3.1.1 Powershell&WMI
WMI 是微软基于 Web 的企业管理(WBEM)的实现版本,这是一项行业计划,旨在开发用于访问企业环境中管理信息的标准技术。主要与 Powershell 命令配合使用可以实现无文件攻击重要方式,具有良好的隐蔽性也是目前较为常用的持久化手段。WMI 对象主要是执行一个 WQL(WMI Query Language)的查询后,本地调用 Powershell 执行响应的代码由于没有文件保存在本地磁盘能够较好的免查杀。
Turla 组织近几年在对中欧国家的攻击活动中曾频繁使用 Powershell 类型的攻击载荷。在持久化功能设计方面,Turla 组织通过将核心的攻击载荷存储于 Windows 注册表项中,落地的命令行脚本如下所示,通过创建两个 WMI 事件过滤器和一个特定的 WMI 用户对象,过滤寻找注册表载荷路径然后通过配置执行参数启动 Powershell 引擎执行。WMI 事件执行需满足两个条件之一:当前系统时间为 15:30:40;系统启动运行300秒至400秒之间。
该脚本只具备简单常见的 WMI 执行功能,其本身并不具备明显的恶意代码指纹。
3.1.2 自启动服务
自启动服务是一种将可执行文件注册成服务或者调用系统进程如 svchost 加载 dll 文件运行服务的持久化方式。Turla 组织长期更新使用的二阶后门 Carbon 即通过注册自启服务实现持久化,逆向分析过程可见攻击者伪造的服务项描述内容,通过这种伪造正规服务的描述欺骗用户一定程度上降低被察觉发现的几率。
在 Turla 组织频繁使用的 HyperStack 系列 RPC 后门中也是通过注册自启动服务来实现持久化,其服务名称以及相关描述均带有明显的欺骗伪装特性。
3.1.3 攻击者侦察后指定持久化方式
Kazuar 是 Turla 组织开发的一款成熟的后阶组件,该木马是基于 .NET 框架开发,支持扩展,可加载其他插件以增强其远控功能。该组件为 PC 环境侦察之后选择性下发的后阶木马,持久化部分由攻击者远程指定。代码设计部分实现了常见的多种持久化方式,实际攻击活动中将根据 PC 环境选择其一实现持久化驻留。
3.2 PC环境检测及适配
为了保证落地攻击载荷适配多种 PC 环境使其稳定运行,Turla组织的攻击组件中大多存在环境适配、工具探测、安全机制绕过等相关的代码。
3.2.1 安全工具检测
遍历进程,检测各主流网络协议分析工具(如 tcpdump、snoopypro、dsniff、wireshark 等),如存在则抛出相应异常,并进行日志记录(Sniffer found: .{tool name})。
3.2.2 操作系统版本检测
Carbon 木马加载程序中,核心服务组件 %SystemRoot%\system32\alrsvc.dll 文件根据当前操作系统版本选择性解密释放。若为 WIN7 及以上系统则有 #161 资源释放,反之则有 #162 资源释放。
3.2.3 失陷主机检测
通过 WritePrivateProfileStringW 函数写入特定注册表项 “DestDir”,以此作为中马标记。检测当前主机是否存在该标记来决定后续执行流程。
3.2.4 Powershell 环境适配
Powershell、Python 类脚本语言是 Turla 组织近几年比较青睐的编程语言。Powershell 作为 Windows10 默认 shell 工具,依靠 .NET Framework 的强大功能、对 Windows 系统的各接口兼容以及其易于混淆变化的特点在恶意代码中也变得越来越常见,随之而来的是包括 Windows Defender 在内的绝大多数 EDR 类产品对于 ps1 脚本苛刻的扫描检测。Turla 为了顺利执行 Powershell 恶意载荷采取了一系列绕过或对抗的技术。
譬如通过内置开源的 PowershellRunner 工具,通过底层 .Net 接口执行 ps1 载荷。该工具在 Turla 组织使用过的多个后门组件中出现过。
为了绕过 Windows Defender 自带的恶意 ps1 指纹检测,Turla 的 ps1 加载器会对扫描接口 amsi.dll!AmsiScanBuffer 进行 hook 绕过,即 amsi 旁路绕过。所捕获的攻击样本中的 amsi 旁路绕过代码如下,通过既定方法获取 amsi.dll!AmsiScanBuffer 函数地址,然后函数头部 hook 7 字节(x64 环境则为6字节),写入 {mov ax, 1 ret 0x18} 两条汇编对应的 opcode 字节码,使得 amsi.dll!AmsiScanBuffer 函数直接返回执行成功状态并平衡堆栈,其带出参数 *result 保持最初的初始化状态为空,即 AMSI_RESULT_CLEAN,以此绕或 amsi 检测。
3.2.5 Python 类攻击载荷
Python 作为一门功能强大、开发效率高的编程语言,深受程序员喜爱。在 Turla 组织的攻击活动中,我们同样可以看到 Python 载荷的存在。Turla 组织除了在部署于亚美尼亚网站的水坑攻击活动中投入使用了 py2exe 类的攻击载荷之外,在2021年2月由 Palo Alto Networks 团队披露的 IronNetInjector 攻击组件中,同样可以看到 Python 的身影。区别于传统 Python 脚本,IronNetInjector 组件中使用的是 ipy 文件(IronPython 脚本),这是一种需要特定 ipy 引擎执行的 Python 文件,ipy 引擎是 Python 编程语言的开源实现,该语言与 .NET Framework 紧密集成。IronPython 可以使用 .NET Framework 和 Python 库,而其他 .NET 语言也可以轻松使用 Python 代码。基于对 ipy 引擎的依赖,ipy 类 Python 文件可完美绕过当前绝大多数的动态沙箱检测。实际攻击活动中的样本载荷如下,通过打包免安装的 ipy 引擎进行下发。
通过内置加密编码资源做免杀处理,然后进行后续后门组件释放。这是一类较为新颖的恶意载荷加载方法。
攻击杀伤链中安装植入和命令控制两个阶段是决定攻击载荷是否能完成攻击任务的关键阶段,在较多的著名定向网络间谍活动的深度披露报告中,我们都可以看到恶意代码设计人员对于最终攻击载荷的运行调控细节。就 APT 攻击的定义而言,如何长期潜伏、持续监听目标网络是衡量该 APT 组织攻击能力的一个重要依据。Turla 组织历史攻击载荷在运行控制以及隐匿性设置方面均存在明显指纹特征。
3.3.1 文件隐藏
Turla 早期攻击活动中投入使用的 Uroburos rootkit 后门会通过对底层文件类 API 进行 hook 来隐藏虚拟文件系统,达到隐匿核心载荷和数据的目的。
Turla 组织后续主流的 ring3 攻击组件中绝大多数包含落地载荷文件时间修改的代码。
3.3.2 木马运行频率
Turla 组织攻击组件中常见对于木马运行时间间隔、运行频率控制的相关代码。其控制时间间隔少则半小时,多则数十天。Turla 模块化攻击组件 Carbon 后门运行调控的配置文件解密出的时间间隔调控参数如下。
Turla kazaur 后门中通过特定算法计算出约14天到28天之间的随机间隔时间。
Turla 组织历史活动中使用的 Powershell 加载器设置特定木马运行时间的代码如下所示。
3.3.3 RPC 集群
Turla 组织的历史攻击活动中,在 PC 主机攻陷之后,常常伴随后续的局域网段监听操作。其已知的实现方式主要为通过管道协议的 RPC 通信实现。Turla 依靠 RPC 协议开发了一整套后门程序。这些后门用于执行横向移动并控制本地网络中的其他计算机,而无需依赖外部 C2 服务器。其实现的功能包括简单的文件上传,文件下载以及通过 cmd.exe 或 PowerShell 执行命令,同时还支持添加插件。该系列 RPC 后门一般分为两个组件:服务器和客户端。攻击者可以通过 C2 服务器控制客户端组件在服务器组件所在的另一台机器上执行命令。在 HyperStack、Neptun 等 RPC 后门中均可看到高度相似的实现代码。
本篇报告较长,完整版可以移步公众号“微步在线研究响应团队”查看。