Turla也被称为Snake、Uroburos、Waterbug和WhiteBear。由GData在2014年披露后,卡巴斯基、赛门铁克、ESET持续对该组织进行追踪和分析。可以根据该组织使用的恶意文件的编译时间推迟至早在2011年。追溯到2006年,可以发现恶意文件Agent.BTZ与该组织存在关联,这一结论基于对代码和功能的比对。因此可以推测出该组织早在2006年就已经开始进行攻击。
Turla团队采用rootkit技术监视计算机,以实现数据窃取。这个方法在Windows早期版本的系统中非常实用,可以有效隐藏在计算机中,拥有较高权限。从Windows vista开始,微软加强了对第三方驱动加载过程的控制,需要获取证书并由用户同意才可以正常安装。因此Turla组织转而使用更复杂的侵入过程并植入不带rootkit套件的远控软件对信息进行采集,但这增大了被发现的几率。
Turla组织的攻击目标跨足政府机构、使馆、军事机构、教育研究机构和制药公司。最初在攻击美国情报部门后被披露。在最近几年,该组织曾针对德国外交部和法国军队相关公司的服务器进行攻击,并窃取了大量情报信息。
对Turla组织使用的恶意软件进行分析后,总结出以下信息:
1、攻击者在编写恶意软件时输出的debug信息是英文,但不是母语;
2、攻击者的基础设施来源于俄罗斯;
3、攻击者使用的默认语言为俄语;
4、Agent.BTZ中也出现了类似的痕迹。
因此,将其定为来源于俄罗斯的威胁攻击组织。
Turla组织撕开防御设备的方法是通过运用社会工程学手段的鱼叉攻击以及水坑攻击来完成。
在最初被发现的攻击过程中,攻击者使用了带有漏洞的PDF文件,并通过电子邮件进行投递。利用社会工程学手段引诱用户点击这份PDF文件并将其转发给同事或上级。同时,附件中也存在“.SCR”扩展名的恶意软件安装程序,在安装时释放RAR文件并打开内置的正常PDF文件。
图 正常的PDF文件
与此类似的攻击手法伏影实验室在4月发布的疫情攻击相关的文章也有详细分析。
2010-2016年间,该组织始终利用浏览器进行攻击,包括水坑攻击以及0day漏洞。攻击者对攻击网站植入下图中标识出来的恶意JavaScript脚本,当用户访问被攻陷的网站时,即执行该JavaScript脚本。
经过整理,我们获取了所有的曾经被攻击过的网站及其名称:
上述网站在14-17年间被用作水坑攻击的站点,这些站点被嵌入了JavaScript代码,在用户访问的时候执行,其功能大多为获取浏览器的插件列表,屏幕分辨率等信息。同时,Turla在进行攻击时会主动选择他们感兴趣的用户,下发恶意文件,而最为重要的一种形式是利用假的Adobe Flash安装包安装后门。
Turla比较有特点的攻击方式是利用Adobe进行攻击诱骗,这种结果也与捕获的方向有关,相当一部分政府的网站在建设成型以后,很少会快速迭代更新,使用更加先进的体系结构,而Adobe Flash这个存在大量漏洞的插件已经深度的整合在这些网站中。因此,在捕获相关威胁时,与Adobe Flash相关的攻击从未缺席。
2.3 MITM流量劫持与修改
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组织常用RAT简析
在侵入内部网络后,Turla组织会对目标进行筛选,挑选出感兴趣的,具有高价值信息的目标,并在感染设备上投放恶意软件。从2011年起至今,Turla被发现针对Windows、Linux、MacOS平台均开发了对应的恶意软件,持续窃取机密信息。
该后门会对环境进行检测和处理,通过识别一些网络监测工具来判断是否可以执行,包括:tcpdump.exe、windump.exe、ethereal.exe、wireshark.exe、dsniff.exe。在与C2进行通信则采用了HTTP协议,通过对
该后门用ID来对受害者进行标记,在第一次进行通信时,会发送带有计算机信息的数据包到C2,并且使用加密算法对发送内容进行加密,但是攻击者将密钥也通过这一方式进行传输,因此可以对流量进行解密分析。
当Turla组织根据回传信息判断出目标值得进行更进一步的攻击时,攻击者才会将第二阶段的后门部署在目标设备上。可以将第一阶段后门理解为Turla组织的攻击试探,这种方式能够有效的避免将Uroburos下载到无关设备上,减少暴露风险。
Uroburos是最为出名的一个后门,在Turla第一次被发现时,从被攻陷设备中提取出来的一个rootkit后门。为了保证攻击行为的隐秘性和效率,攻击者在使用该后门的同时也使用了一个加密的虚拟文件系统。
Uroburos通过创建服务来保证自身能持续驻留在系统中,在注册表中可以找到如下键值信息:
HKLM\System\CurrentControlSet\Services\Ultra3
Uroburos的主要功能如下:
l 关键函数hook
l 解密虚拟文件系统
l 注入Ring3层
l C&C通信
l 数据包抓取
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。分析其他文件捕获记录,可以发现还可能包括配置文件和其他类型的文件。
Uroburos支持对流量进行抓取,对数据包进行修改和拦截。可以处理HTTP,ICMP,SMTP协议流量,可以通过命名管道获取应用层传输的信息。
同时,攻击者预留了接口用于增加新的协议和新的方法来对流量进行处理,攻击者通过对虚拟文件系统中包含的文件进行更新来达到持续攻击的目的。
Uroburos提供tcp、enc、np、reliable、frag、udp、m2d、doms、t2m、domc通信方式。在代码中可以看到np,reliable,frag,enc,m2b,m2d是通过NamedPipe进行通信。tcp,udp都是在驱动层构造数据包进行通信。
攻击者在入侵的初期会判断被攻击目标的价值,在引起攻击者的兴趣后,攻击者会将Carbon后门植入到设备中。Carbon is a modular tool that achieves corresponding functions by replacing different plugins.。
在初期捕获的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还提供了carbon_system.dll的64位版本,以供在x64环境下使用。Cobra is the project name that can be seen in the PDB information which Turla did not remove in the 64-bit version.。
f:\Workshop\Projects\cobra\carbon_system\x64\Release\carbon_system.pdb
但是在x86版本中并未发现该PDB信息,攻击者在编译完成后,并没有对x64版本操作,直接打包到了carbon_system的loader文件中。
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架构的恶意文件中,并未被清理:
该后门的loader部分会先进行自解密,得到代码。通过计算函数名的哈希值查找要调用的函数地址,以解密后的代码为例。这两个函数并没有加密存储,通过IDA等工具可以直接看到其代码,自解密函数为sub_5711E0,计算hash函数为sub_570E10。完成函数的导入之后,从自身文件中读取数据并进行解密,解密函数为sub_56D480,解密后是两个PE文件,写入到磁盘中。
日志内容写入文件%APPDATA%\Roaming\kb6867.bin中。
释放的文件包含主后门程序,该后门通过loader加载,在执行时通过对EAT表进行修改来增加函数进行导出,对原始导出表进行修改。
替换后的函数先对加密后的库文件名和函数名进行解密,并通过动态加载的方式,得到函数地址,接着创建名为\\.\pipe\ms32loc的命名管道,随后创建线程,等待其他进程的连入。该后门通过设置注册表项,来写入一些基础配置信息。在注册表内记录信息时,请使用以下路径:HKCU\Software\Microsoft\[dllname],并填入相应的信息
4.6 第二阶段后门——Javascript后门
第一种JavaScript用于替换Mosquito后门,利用假的Adobe Flash Player安装包进行安装。
获取返回的数据,并用base64解码执行。
第二种JavaScript文件读取%programdata%\ 1.txt并使用eval函数执行其内容。在HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run中添加local_update_check来开机启动。
此后门通过文档进行传播,利用宏进行攻击,在宏代码中,调试可以发现,该初始代码通过xor算法对数据进行解密,解密后的数据写入mailform.js文件中,释放文件存储在%APPDATA%\Microsoft\Windows路径下:
执行该mailform.js文件,传入参数NPEfpRZ4aqnh2YuGwQd0,该参数是R**密钥,负责解密内置的数据,解码后,仍然是一个JavaScript文件,该文件即为KopiLuwak后门。
移动自身文件,根据系统版本不同,转到不同文件夹中:
c:\Users\
c:\Users\
c:\Documents and Settings\
通过设置注册表HKEY_CURRENT_USER\software\microsoft\windows\ccurrentversion\run\来完成持久化驻留,键值为wscript.exe mailform.js “NPEfpRZ4aqnh2YuGwQd0”。
通过cmd.exe执行以下命令,并将结果写入与mailform.js同一目录下的~dat.tmp文件中,并使用R**算法对结果进行加密,密钥为“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等构建的后门,入侵攻击,横向移动工具等,将自身行动掩盖在大量的攻击活动中,以期获得更多的情报信息,延缓被发现和检测的时间。
同时,该组织善于使用水坑网站对目标进行渗透,在很长一段时间内,都不容易被发现,因此对于该组织的防御应着重关注网页访问记录,排查伪造域名的政府、基础网站,以此来降低被攻击的风险。
以上是Turla组织指的是什么的详细内容。更多信息请关注PHP中文网其他相关文章!