一、Turla组织概述
Turla,又名Snake,Uroburos,Waterbug,WhiteBear。由GData在2014年披露后,卡巴斯基、赛门铁克、ESET持续对该组织进行追踪和分析。根据该组织使用的恶意文件的编译时间,最早可以追溯到2011年。通过对代码及功能对比,可以追溯到2006年检测名称为Agent.BTZ的恶意文件与该组织有关联。因此可以推测出该组织早在2006年就已经开始进行攻击。
Turla组织使用了rootkit技术对计算机进行监控,完成数据窃取功能。这个方法在Windows早期版本的系统中非常实用,可以有效隐藏在计算机中,拥有较高权限。从Windows vista开始,微软加强了对第三方驱动加载过程的控制,需要获取证书并由用户同意才可以正常安装。因此Turla组织转而使用更复杂的侵入过程并植入不带rootkit套件的远控软件对信息进行采集,但这增大了被发现的几率。
Turla组织攻击目标包括政府机构,使馆,教育,研究和制药公司等。最初在攻击美国情报部门后被披露。近几年,该组织攻击了德国外交部,法国相关公司的服务器,窃取了大量的情报信息。
对Turla组织使用的恶意软件进行分析后,总结出以下信息:
- 攻击者在编写恶意软件时输出的debug信息是英文,但不是母语;
- 攻击者的基础设施来源于俄罗斯;
- 攻击者使用的默认语言为俄语;
- Agent.BTZ中也出现了类似的痕迹。
因此,研究者将其定为来源于俄罗斯的威胁攻击组织。
二、Turla组织入侵手法
Turla组织撕开防御设备的方法是通过运用社会工程学手段的鱼叉攻击以及水坑攻击来完成。
2.1 社会工程学攻击
在最初被发现的攻击过程中,攻击者使用了带有漏洞的PDF文件,并通过电子邮件进行投递。通过社会工程学诱导用户点击执行该PDF文件,并发送给其他或更高级别的人。同时,附件中也存在“.SCR”扩展名的恶意软件安装程序,在安装时释放RAR文件并打开内置的正常PDF文件。
正常的PDF文件
与此类似的攻击手法伏影实验室在4月发布的疫情攻击相关的文章也有详细分析。
2.2 水坑攻击
2010-2016年间,该组织始终利用浏览器进行攻击,包括水坑攻击以及0day漏洞。攻击者对攻击网站植入下图中标识出来的恶意JavaScript脚本,当用户访问被攻陷的网站时,即执行该JavaScript脚本。
经过整理,我们获取了所有的曾经被攻击过的网站及其名称:
网址 | 归属或名称 |
armconsul.ru | 亚美尼亚大使馆领事处-俄罗斯 |
mnp.nkr.am | Artsakh共和国自然保护和自然资源部 |
aiisa.am | 亚美尼亚国际和安全事务研究所 |
adgf.am | 亚美尼亚存款担保基金 |
hxxp://www.namibianembassyusa.org | 纳米比亚大使馆–美国 |
hxxp://www.avsa.org | 美国非洲紫罗兰学会 |
hxxp://www.zambiaembassy.org | 赞比亚大使馆-美国 |
hxxp://russianembassy.org | 俄罗斯大使馆-美国 |
hxxp://au.int | 非洲联盟 |
hxxp://mfa.gov.kg | 吉尔吉斯斯坦外交部 |
hxxp://mfa.uz | 乌兹别克斯坦外交部 |
hxxp://www.adesyd.es | 西班牙外交与国防学院 |
hxxp://www.bewusstkaufen.at | 一家门户网站-奥地利 |
hxxp://www.cifga.es | Cifga实验室 |
hxxp://www.jse.org | 西班牙少年足球协会 |
hxxp://www.embassyofindonesia.org | 印度尼西亚大使馆–美国 |
hxxp://www.mischendorf.at | 米申多夫镇-奥地利 |
hxxp://www.vfreiheitliche.at | 奥地利某政党官网 |
hxxp://www.xeneticafontao.com | 私人公司网站 |
hxxp://iraqiembassy.us | 伊拉克大使馆-美国 |
hxxp://sai.gov.ua | 乌克兰政府网站 |
hxxp://www.mfa.gov.md | 摩尔多瓦外交部 |
hxxp://mkk.gov.kg | 吉尔吉斯斯坦国家人事局网站 |
上述网站在14-17年间被用作水坑攻击的站点,这些站点被嵌入了JavaScript代码,在用户访问的时候执行,其功能大多为获取浏览器的插件列表,屏幕分辨率等信息。同时,Turla在进行攻击时会主动选择他们感兴趣的用户,下发恶意文件,而最为重要的一种形式是利用假的Adobe Flash安装包安装后门。
Turla比较有特点的攻击方式是利用Adobe进行攻击诱骗,这种结果也与捕获的方向有关,相当一部分政府的网站在建设成型以后,很少会快速迭代更新,使用更加先进的体系结构,而Adobe Flash这个存在大量漏洞的插件已经深度的整合在这些网站中。因此,在捕获相关威胁时,与Adobe Flash相关的攻击从未缺席。
2.3 MTM流量劫持与修改
Turla组织在进行攻击时,通过MITM(中间人攻击)来劫持Adobe的网络,使得用户在请求下载最新的软件更新包时,替换用户的下载内容,在用户无感的情况下下载恶意软件,并完成对目标主机的控制。但此种方式需要获取核心路由的权限,甚至需要针对企业/政府的关键节点进行劫持。
但是在用户侧观察到的攻击过程则显得非常简单,例如用户访问以下链接,该链接归属于Adobe公司,是Adobe的子域名,http://admdownload.adobe.com/ bin/live/flashplayer27_xa_install.exe,通过此链接下载Turla的恶意文件,但是该请求的http头中的referer字段被更改成了:
http://get.adobe.com/flashplayer/download/?installer=Flash_Player,这个地址与正常下载Adobe的域名相同,协议不同。分析认为,这里是为了绕过Adobe检测机制而插入的referer信息,以便于能够正常访问到admdownload.adobe.com。
三、Turla攻击技术梳理
- ATT&CK矩阵
四、Turla组织常用RAT简析
在侵入内部网络后,Turla组织会对目标进行筛选,挑选出感兴趣的,具有高价值信息的目标,并在感染设备上投放恶意软件。从2011年起至今,Turla被发现针对Windows、Linux、MacOS平台均开发了对应的恶意软件,持续窃取机密信息。
4.1 第一阶段后门——The Epic
该后门会对环境进行检测和处理,通过识别一些网络监测工具来判断是否可以执行,包括:tcpdump.exe、windump.exe、ethereal.exe、wireshark.exe、dsniff.exe。在与C2进行通信则采用了HTTP协议,通过对<div>something</div>格式的内容进行解析,来获取C2下发的指令。
该后门用ID来对受害者进行标记,在第一次进行通信时,会发送带有计算机信息的数据包到C2,并且使用加密算法对发送内容进行加密,但是攻击者将密钥也通过这一方式进行传输,因此可以对流量进行解密分析。
当Turla组织根据回传信息判断出目标值得进行更进一步的攻击时,攻击者才会将第二阶段的后门部署在目标设备上。可以将第一阶段后门理解为Turla组织的攻击试探,这种方式能够有效的避免将Uroburos下载到无关设备上,减少暴露风险。
4.2 第二阶段后门——Uroburos
Uroburos是最为出名的一个后门,在Turla第一次被发现时,从被攻陷设备中提取出来的一个rootkit后门。攻击者在使用该后门时,同时也在使用一个加密的虚拟文件系统,以此来确保自己的攻击活动隐秘且高效。
Uroburos通过创建服务来保证自身能持续驻留在系统中,在注册表中可以找到如下键值信息:
HKLM\System\CurrentControlSet\Services\Ultra3
Uroburos的主要功能如下:
- 关键函数hook
- 解密虚拟文件系统
- 注入Ring3层
- C&C通信
- 数据包抓取
Inline hook
Uroburos采用Inline hook的方式对关键函数进行修改,如:
对ZwQueryKey(), ZwEnumerateKey(), ZwCreateKey() 和 ZwSaveKey()函数hook,目的是为了隐藏在注册表中增加的持续驻留用的键。
对ZwReadFile()函数hook,是为了隐藏自身文件。
对ZwQuerySystemInformation()函数hook,是为了隐藏驱动对象。
对ZwTerminateProcess()函数hook,是为了在停止工作时对环境进行清理,避免蓝屏等问题出现。
对ObOpenObjectByName()函数hook,是为了隐藏虚拟文件系统。
部分hook函数列表
解密文件系统
Uroburos提供了NTFS和FAT32两种虚拟文件系统以适应不同情况的设备,通过该虚拟文件系统,攻击者可以在系统中存放窃取的数据,黑客工具抑或是需要输出的运行日志信息,而通过对内核函数的hook,也避免了被杀软找到该虚拟文件系统,从而提高了隐蔽性,同时,因不会占用系统磁盘,在用户侧的感知几乎为0。
该虚拟文件系统使用CAST-128进行加密,密钥硬编码在驱动文件中,在驱动挂载运行时进行解密,解密后,该文件系统中存放.bat脚本,该脚本通过使用net命令进行内网机器发现,获取局域网中机器的基础信息以供横向移动时使用。
在文件系统中还有一个队列文件,每一个队列文件中都包含一个uid,类型,时间戳和载荷,载荷还包括一个用于解密的key。根据GDATA捕获的其他文件的分析,可能还包括配置文件,文件等信息。
数据包抓取
Uroburos支持对流量进行抓取,对数据包进行修改和拦截。可以处理HTTP,ICMP,SMTP协议流量,可以通过命名管道获取应用层传输的信息。
同时,攻击者预留了接口用于增加新的协议和新的方法来对流量进行处理,攻击者通过对虚拟文件系统中包含的文件进行更新来达到持续攻击的目的。
C&C通信
Uroburos提供tcp、enc、np、reliable、frag、udp、m2d、doms、t2m、domc通信方式。在代码中可以看到np,reliable,frag,enc,m2b,m2d是通过NamedPipe进行通信。tcp,udp都是在驱动层构造数据包进行通信。
4.3 第二阶段后门——Carbon
攻击者在入侵的初期会判断被攻击目标的价值,在引起攻击者的兴趣后,攻击者会将Carbon后门植入到设备中。Carbon是一个模块化的工具,通过替换不同的插件来实现对应功能。
在初期捕获的Carbon样本中,其插件模块被放置在资源段中,其中最主要的模块是一个叫做carbon_system.dll的模块,该模块存在2个导出函数,ModuleStart和ModuleStop。在ModuleStart函数中,会创建多个互斥体用于区分不同的模块单元,并在System\\目录下创建log文件,用于记录执行过程中产生的debug信息。
carbon_system.dll作为主功能模块,会创建windows命名管道用于其他模块间的通信,接收其他功能模块获取的信息,并将其写入文件中,等待上传。carbon_system.dll通过GetDiskFreeSpaceExA获取磁盘信息,用于监视磁盘使用情况,当磁盘写满后,会将“求助信息”写入到待上传日志文件中,通知攻击者。
carbon_system.dll通过LoadLibrary调用其他模块,并调用start函数启动,在日志中记录启动时间,模块名称等信息。
还会搜集当前设备上运行的进程信息,监视进程变化,并将进程信息记录在日志文件中,同样的,仍然是使用管道来进行数据的传输。
carbon在执行任务时会从配置文件中读取具体的任务信息:
task_id | task_filepath | task_config_filepath | task_result_filepath | task_log_filepath | [execution_mode | username | password]
每一个任务都有自己独立的id号,通过额外的参数来指定运行的方式和方法。
carbon_system.dll就如同一个控制终端一样,是一个体系化开发的攻击套件,可以任意增加或删除模块,只需要提供对应的导出函数即可调用,并且,carbon_system.dll通过监控不同模块产生的日志信息,来判断是否成功执行了命令,这也在一定程度上,隐藏了攻击者的活动。
同时,Turla还提供了64位版本的carbon_system.dll文件,以适应x64环境。在64位版本中,Turla并没有删除PDB信息,可以看到其项目名称是cobra。
f:\Workshop\Projects\cobra\carbon_system\x64\Release\carbon_system.pdb
但是在x86版本中并未发现该PDB信息,攻击者在编译完成后,并没有对x64版本操作,直接打包到了carbon_system的loader文件中。
4.4 第二阶段后门——Carbon其他版本
carbon v3.51与4.3节中提到的最初版本区别在于通信部分,v3.51中通过http请求来与C2进行交互,并在其中随机填充了例如:www.yahoo.com,www.bbc.com,www.google.com等域名,用以隐藏自身流量,部分下载和获取的信息保存在\\\\.\\IdeDrive1\\\\Results\\result.txt文件中。这里提到的\\\\.\\IdeDrive1\\\\目录是虚拟文件系统中的目录。
在此版本中,攻击者删除了对磁盘文件的监控,不再报告被感染设备的存储情况,降低每次传输的信息数据量。而对运行进程的获取则集中在tcpdump.exe、windump.exe、windump.exe、wireshark.exe、wireshark.exe、snoop.exe。当发现了此类进程后,会记录日志进行回传:
在v3.61版本的carbon模块中可以找到一些debug信息,与上一版本不同的是,这次的debug信息是留存在x86架构的恶意文件中,并未被清理:
4.5 第二阶段后门——Mosquito
该后门的loader部分会先进行自解密,得到代码。解密后的代码通过计算函数名hash来查找所需要调用的函数地址。这两个函数并没有加密存储,通过IDA等工具可以直接看到其代码,自解密函数为sub_5711E0,计算hash函数为sub_570E10。完成函数的导入之后,从自身文件中读取数据并进行解密,解密函数为sub_56D480,解密后是两个PE文件,写入到磁盘中。
日志内容写入文件%APPDATA%\Roaming\kb6867.bin中。
释放的文件包含主后门程序,该后门通过loader加载,在执行时通过对EAT表进行修改来增加函数进行导出,对原始导出表进行修改。
替换后的函数先对加密后的库文件名和函数名进行解密,并通过动态加载的方式,得到函数地址,接着创建名为\\.\pipe\ms32loc的命名管道,随后创建线程,等待其他进程的连入。该后门通过设置注册表项,来写入一些基础配置信息。注册表路径如下:HKCU\Software\Microsoft\[dllname],填入信息如下:
键值 | 解析 |
Flags | 含有C&C地址 |
layout | MAC地址 |
[dllname]tr32 | 和Flags键值 |
[dllname]fgtb | 数据 |
4.6 第二阶段后门——Javascript后门
第一种JavaScript用于替换Mosquito后门,利用假的Adobe Flash Player安装包进行安装。
获取返回的数据,并用base64解码执行。
第二种JavaScript文件读取%programdata%\ 1.txt并使用eval函数执行其内容。在HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run中添加local_update_check来开机启动。
4.7 第二阶段后门——KopiLuwak
此后门通过文档进行传播,利用宏进行攻击,在宏代码中,调试可以发现,该初始代码通过xor算法对数据进行解密,解密后的数据写入mailform.js文件中,释放文件存储在%APPDATA%\Microsoft\Windows路径下:
执行该mailform.js文件,传入参数NPEfpRZ4aqnh1YuGwQd0,该参数是RC4密钥,负责解密内置的数据,解码后,仍然是一个JavaScript文件,该文件即为KopiLuwak后门。
移动自身文件,根据系统版本不同,转到不同文件夹中:
c:\Users\<USERNAME>\AppData\Local\Microsoft\Windows\mailform.js
c:\Users\<USERNAME>\AppData\Local\Temp\mailform.js
c:\Documents and Settings\<USERNAME>\Application Data\Microsoft\Windows\mailform.js
通过设置注册表HKEY_CURRENT_USER\software\microsoft\windows\ccurrentversion\run\来完成持久化驻留,键值为wscript.exe mailform.js “NPEfpRZ4aqnh1YuGwQd0”。
通过cmd.exe执行以下命令,并将结果写入与mailform.js同一目录下的~dat.tmp文件中,并使用RC4算法对结果进行加密,密钥为“2f532d6baec3d0ec7b1f98aed4774843”,加密后删除原始文件:
- systeminfo
- net view
- net view /domain
- tasklist /v
- gpresult /z
- netstat -nao
- ipconfig /all
- arp -a
- net share
- net use
- net user
- net user administrator
- net user /domain
- net user administrator /domain
- set
- dir %systemdrive%Users*.*
- dir %userprofile%AppDataRoamingMicrosoftWindowsRecent*.*
- dir %userprofile%Desktop*.*
- tasklist /fi “modules eq wow64.dll”
- tasklist /fi “modules ne wow64.dll”
- dir “%programfiles(x86)%”
- dir “%programfiles%”
- dir %appdata%
该后门内置了两个地址:http://soligro.com/wp-includes/pomo/db.php, http://belcollegium.org/wp-admin/includes/class-wp-upload-plugins-list-table.php,用于通讯,可以通过路径推断第二个网站使用了WordPress,并被攻击者攻陷,用于C2托管。
利用POST方法将前述加密数据发送到这两个网站其中任意一个中,其中发送的User-Agent字段除了使用”Mozilla/5.0 (Windows NT 6.1; Win64; x64);填充外,在末尾补充了当前计算机名称生成的一个UID,算法如下,其中zIRF代表字符串“KRMLT0G3PHdYjnEm”,Vxiu代表当前计算机用户名:
C2在接收到数据后,会回复四种指令:
当接收到work指令时,会将搜集到信息全部发回C2,接收到fail指令时,则清理注册表HKEY_CURRENT_USER\software\microsoft\windows\ccurrentversion\run\中的数据。
总结
Turla组织是目前APT团伙中使用最为复杂攻击工具的组织之一,其目标涵盖了欧洲各国外交部,欧洲、美洲等国家的情报部门。在前期的攻击活动中,该组织使用自研武器对外进行攻击,特征较为明显。在近几年,该组织转而大规模使用开源平台,如MSF、cobalt strike等构建的后门,入侵攻击,横向移动工具等,将自身行动掩盖在大量的攻击活动中,以期获得更多的情报信息,延缓被发现和检测的时间。
同时,该组织善于使用水坑网站对目标进行渗透,在很长一段时间内,都不容易被发现,因此对于该组织的防御应着重关注网页访问记录,排查伪造域名的政府、基础网站,以此来降低被攻击的风险。
IOC
40aa66d9600d82e6c814b5307c137be5
f4f192004df1a4723cb9a8b4a9eb2fbf
cb1b68d9971c2353c2d6a8119c49b51f
e1ee88eda1d399822587eb58eac9b347
db93128bff2912a75b39ee117796cdc6
a67311ec502593630307a5f3c220dc59
a7853bab983ede28959a30653baec74a
2145945b9b32b4ccbd498db50419b39b
62e9839bf0b81d7774a3606112b318e8
cd4c2e85213c96f79ddda564242efec3b970eded8c59f1f6f4d9a420eb8f1858
bf6f30673cf771d52d589865675a293dc5c3668a956d0c2fc0d9403424d429b2
b51105c56d1bf8f98b7e924aa5caded8322d037745a128781fa0bc23841d1e70
8490daab736aa638b500b27c962a8250bbb8615ae1c68ef77494875ac9d2ada2
fc9961e78890f044c5fc769f74d8440fcecf71e0f72b4d33ce470e920a4a24c3
e7fd14ca45818044690ca67f201cc8cfb916ccc941a105927fc4c932c72b425d
b295032919143f5b6b3c87ad22bcf8b55ecc9244aa9f6f88fc28f36f5aa2925e
b362b235539b762734a1833c7e6c366c1b46474f05dc17b3a631b3bff95a5eec
b79cdf929d4a340bdd5f29b3aeccd3c65e39540d4529b64e50ebeacd9cdee5e9
244896995b6b83f11df944ccda41ed9f1f1d811ebf65d75fe4337fd692011886
05254971fe3e1ca448844f8cfcfb2b0de27e48abd45ea2a3df897074a419a3f4
26a1a42bc74e14887616f9d6048c17b1b4231466716a6426e7162426e1a08030
5d0973324b5b9492ddf252b56a9df13c8953577bdb7450ed165abbe4bf6e72d8
2a61b4d0a7c5d7dc13f4f1dd5e0e3117036a86638dbafaec6ae96da507fb7624
6e7991f93c53a58ba63a602b277e07f7
7481e87023604e7534d02339540ddd9565273dd51c13d7677b9b4c9623f0440b
d2a0eec18d755d456a34865ff2ffc14e3969ea77f7235ef5dfc3928972d7960f
05d07279ed123b3a9170fa2c540d2919
参考链接
https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2014/08/20082358/uroburos.pdf
https://www.circl.lu/pub/tr-25/
https://www.welivesecurity.com/wp-content/uploads/2017/08/eset-gazer.pdf
https://www.welivesecurity.com/2017/03/30/carbon-paper-peering-turlas-second-stage-backdoor/
https://unit42.paloaltonetworks.com/unit42-kazuar-multiplatform-espionage-backdoor-api-access/
https://www.welivesecurity.com/wp-content/uploads/2018/01/ESET_Turla_Mosquito.pdf
https://www.welivesecurity.com/2019/05/29/turla-powershell-usage/
https://securelist.com/kopiluwak-a-new-javascript-payload-from-turla/77429/
https://www.welivesecurity.com/2018/05/22/turla-mosquito-shift-towards-generic-tools/