Turla Cyber​​group Outlook后门分析

Turla(Uroboros的Snake)是一个网络间谍组织,在入侵受保护的物体(包括美国武装部队中央司令部的网络)后,于2008年声名fa起。 从那时起,他专攻世界各地的军事设施和外交机构的袭击。 著名受害者包括2013年的芬兰外交部 ,2014年至2016年的瑞士国防公司RUAG 。 以及2017年底至2018年初的德国政府


在最近的事件之后,一些媒体发布了有关攻击者方法的信息-使用电子邮件附件控制恶意软件并从系统转移被盗数据。 但是,没有提供有关后门的技术信息。 在此报告中,我们发布了对Turla后门的分析,该分析是使用电子邮件中的PDF附件进行管理的。



媒体报道 ,德国外交部的几台计算机被后门感染。 显然,攻击始于2016年,并于2017年底被安全部门发现。最初,攻击者入侵了联邦公共管理高中(Hochschule des Bundes),此后他们进入网络内部,直到2017年3月获得外交部网络的访问权。 。 Turla的操作员可以访问大约一年的一些机密数据(例如,德国外交部员工的电子邮件)。


我们的调查还显示,针对Microsoft Outlook的这种恶意软件已被各种政治和军事部门使用。 我们确保其他两个欧洲国家的外交部和主要的国防承包商也受到损害。 我们的调查使我们能够建立Turla运营商为此活动注册的数十个电子邮件地址,并用于获取被盗的受害者数据。


1.重点


Turla Group的Outlook后门具有两个功能。


首先,是转发给攻击者的外发信件被盗。 主要影响Microsoft Outlook,但也与东欧流行的The Bat!有关。


其次,将字母用作其C&C协议的传输层。 通过后门命令请求的文件将作为附件添加到专门创建的PDF文档中。 后门命令也以PDF附件的形式发送。 这允许保密。 重要的是要注意,攻击者不会利用PDF阅读器或Microsoft Outlook中的任何漏洞。 恶意软件会解码PDF文档中的数据,并将其解释为命令。


竞选目标是Turla的典型代表。 我们已经发现了几个受此后门损害的欧洲政府机构和国防公司。 攻击者可能会使用它来确保在受限访问网络中的持久性,在该网络中,配置良好的防火墙或其他网络安全工具有效地阻止了通过HTTP(S)与C&C服务器的传统通信。 下图列出了提及某些政府顶级域的后门代码行。 mfa是外交部的域名,.gouv是法国政府(.gouv.fr)的子域名,ocse是欧洲安全与合作组织。



图1.与Malvari代码中的公共服务相关的域


根据分析和遥测数据,我们发现该后门至少从2013年就开始在野外分发。 与Turla一样,我们不能只关注编译时间戳,因为它们通常是伪造的。 但是,我们认为第一个版本是在2013年之前编译的,因为今年的版本已经相当先进了。 之后,我们发现了一个与基础版本更相似的版本,该版本的编译日期为2009年。 尚无法确定确切的发布日期。 以下时间线基于我们的遥测和来自开源的数据:


2009年 :基本版本的Outlook后门的编译时间戳(可能是伪造的)。 仅电子邮件内容的快照。
2013 :改进:后门可以执行命令。 它们以XML格式通过电子邮件发送。
2013 :针对蝙蝠的最新已知版本!
2016年 :改进:团队以附件形式发送到特别创建的PDF文档中。
2017年 :改进:后门程序能够创建PDF文档来攻击者窃取数据。
2018年3月 :报告德国政府网络遭到破坏。
2018年4月 :改进:后门可以使用Empire PSInject执行PowerShell命令。


2.全球架构


在最新版本中,后门是一个独立的DLL,即使仅实现了Outlook的安装,在其中也存在用于自我安装以及与Outlook和The Bat!,电子邮件客户端进行交互的代码。 任何允许您执行其他过程的Turla组件都可以轻松删除它。


在本节中,我们的分析基于2017年上半年发布的样本。 可能包含有关较旧或较新样本的信息。


2.1。 安装方式


要建立后门,攻击者会导出一个名为Install的DLL或将其注册到regsvr32.exe。 参数是目标电子邮件客户端。 下图显示了可能的值。 在最新版本中,仅实现了Outlook的安装。



图2.可能的安装参数


由于没有硬编码的路径,因此DLL文件可以位于磁盘上的任何位置。


2.1.1。 Microsoft Outlook


Turla开发人员依靠COM对象劫持来确保恶意软件的持久性。 这是多年来在野外使用的一种著名方法, 包括Turla小组 。 该方法的本质是通过修改Windows注册表中的相应CLSID条目来重定向目标应用程序使用的COM对象。


在我们的情况下,对Windows注册表进行了以下更改:


HKCU\Software\Classes\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066} = Mail Plugin HKCU\Software\Classes\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066}\InprocServer32 = [Path to the backdoor DLL] HKCU\Software\Classes\CLSID\{49CBB1C7-97D1-485A-9EC1-A26065633066}\InprocServer32\ThreadingModel = Apartment HKCU\Software\Classes\CLSID\{84DA0A92-25E0-11D3-B9F7-00C04F4C8F5D}\TreatAs = {49CBB1C7-97D1-485A-9EC1-A26065633066} 

{84DA0A92-25E0-11D3-B9F7-00C04F4C8F5D} -捕获的CLSID。 它对应于Outlook Protocol Manager,并且从理论上讲会加载合法的Outlook DLL OLMAPI32.DLL{49CBB1C7-97D1-485A-9EC1-A26065633066}与任何已知软件均未关联。 此CLSID是任意的,仅用作COM重定向的占位符。


修改完成后,每次Outlook加载其COM对象时,都会加载后门DLL。 根据我们的观察,这是在Outlook启动期间发生的。


COM重定向不需要管理员权限,因为它仅适用于当前用户。 采取了保护措施以防止此类恶意重定向。 根据MSDN :“对于Windows Vista和Windows Server 2008,如果进程完整性级别高于平均水平,则COM运行时将忽略用户的COM配置,而仅访问每台计算机的COM配置。”


Outlook进程以中等完整性运行,如下图所示。 因此,它没有受到保护,无法针对每个用户进行COM转发。



图3. Outlook流程完整性级别


最后,使用COM对象的捕获可以使后门避免检测到,因为后门的路径(在我们的示例中为C:\Users\User\Documents\mapid.tlb )不会出现在插件列表中,如下图所示。



图4. Outlook插件列表-mapid.tlb不出现


即使恶意程序没有出现在加载项列表中,也使用标准的Microsoft API-MAPI(邮件应用程序编程接口)与Outlook进行交互。


2.1.2。 蝙蝠!


按照时间顺序,后门的最新版本不再包含The Bat!..插件的注册代码,但是,用于管理邮箱和邮件的所有代码仍然存在。 如有必要,可以手动配置。


注册为The Bat的插件! 恶意软件修改了%appdata%\The Bat!\Mail\TBPlugin.INI 。 这是为The Bat!注册插件的合法方法,某些插件(例如,反垃圾邮件)也使用它。


每次注册后,您都要启动The Bat! 后门DLL被调用。 下图显示了DLL如何实现插件所需的导出。



图5. The Bat!插件的标准导出


2.2。 与邮件客户端的互动


与邮件客户端的交互取决于目标。


2.2.1。 Microsoft Outlook


Microsoft支持消息应用程序编程接口(MAPI),该接口允许应用程序与Outlook进行交互 。 Turla后门使用此API来访问和管理受感染系统的一个或多个用户的邮箱。


首先,后门使用MAPILogonEx连接到消息传递系统,如图所示。



图6. MAPI登录


第二个参数(lpszProfileName)为空, MAPI_USE_DEFAULTMAPI_USE_DEFAULT标志。 根据文档:“消息传递子系统必须覆盖lpszProfileName参数的默认配置文件名称。除非lpszProfileName为NULL或为空,否则MAPI_EXPLICIT_PROFILE忽略MAPI_EXPLICIT_PROFILE标志。”


相反,未设置MAPI_NEW_SESSION标志。 根据文档:“如果存在以前的名为MapiLogonEx的会话MAPI_ALLOW_OTHERSMAPI_ALLOW_OTHERS标志,并且未设置MAPI_NEW_SESSION标志, MAPI_NEW_SESSION lpszProfileName参数将lpszProfileName忽略。”


我们认为,Outlook使用标志MAPI_ALLOW_OTHERS打开一个默认会话。 因此,后门将使用以前打开的会话来访问邮箱的默认配置文件。 这说明初始化后门插件时缺少用户名和密码请求。


完成此操作后门程序将可以访问该邮箱,并且可以使用其他MAPI功能轻松地对其进行管理。 它将遍历各种消息存储,解析字母,并为传入和传出消息添加回调。 日志文件显示以下过程(用户名和地址已更改):


 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ========= Analyzing msg store ( 1 / 1 ) ========= Service name:MSUPST MS Pst path:C:\Users\[username]\Documents\Outlook Files\[email address].pst Wait main window before open current store Loop count = 46 This is default message store PUSH store to list >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _____________ FOLDERS _____________ Setting sink on folders in 1 stores. ========Process msg store ( 1 / 1 ) ========= Account: [email address] Successfull set sink on Outbox folder of current store. Successfull set sink on Inbox folder of current store. 

如图所示,它使用HrAllocAdviseSink函数在每个收件箱和发件HrAllocAdviseSink设置回调。



图7.在发件箱中注册回调


2.2.1.1。 回调收件箱


收件箱中的回调记录了传入消息的元数据,包括发件人和收件人地址,主题和附件名称。 下面的示例(保存了开发人员的拼写):


 RECIVE ->{ From: sender@example.com To: receiver@example.net Cc: Bcc: Subj: Mail subject Att: an_attachment.pdf } 

然后,他分析了攻击者关于团队主题的信函和附件。 此功能在第2.3节中介绍。


最后,它通过使用操作员的电子邮件地址检查传入的消息来拦截NDR。 包含操作员地址的任何字母都将被拒绝。 如果受害人怀疑出了什么问题并联系支持服务却没有看到答案,这可能会引起问题。


2.2.1.2。 发件箱中的回叫


与收件箱中一样,发件箱记录所有已发送电子邮件的元数据。 生成以下记录(操作员地址已更改):


 21:57:56 SEND <-{ From: To: recipient@example.com Cc: Bcc: Subj: My title Att: [1] "last_presentation.pdf" } 21:57:56 Sending data message 21:57:56 Message ENTRYID: [Message ENTRYID] 21:57:56 Data message was send. To: [redacted]@gmx[.]com From: Subj: My title 21:57:56 Set last time. 21:57:56 Spawned thread for cleaning up outgoing messages (id 2848) 21:58:34 Ending work, client: Outlook 21:58:34 Number of messages to remove: 1 21:58:34 Message ENTRYID: [Message ENTRYID] 21:58:34 DeleteMessages executed successfully. 21:58:34 Number of not removed messages: 0 

您可能会注意到,它会将所有传出的邮件转发到攻击者的地址@ […]@gmx[.]com 。 GMX-流行的免费电子邮件服务; 攻击者可能选择了它,因为组织通常不会阻止gmx.com域。


该电子邮件地址在我们研究的示例中进行了硬编码,如下图所示。 但是,可以使用后门功能之一对其进行更新。 攻击者似乎为每个目标至少注册了一个电子邮件地址
组织,其格式为firstname.lastname@gmx[.]com ,其中包含真实员工的姓名。 这样可以避免检测,因为通常很难将这样的地址与真实员工的个人邮箱区分开。 在2018年6月进行样本分析时,该地址不可用。



图8.运算符的硬编码地址


后门以一定的间隔将报告发送到操作员的地址。 该报告包括唯一的标识符,包括MAC地址,完整的日志文件和命令结果(如果有)。 然后,它使用MISTY1加密数据,如第2.3.2.2节中进一步所述,并创建具有加密内容的有效PDF文件。 在此加密数据Blob之前,文档包含jpeg的1x1白色图像,并在恶意程序中进行了硬编码。 这使您可以创建有效的PDF,该PDF在打开时仅显示一个空白页。


最后,后门会附加PDF并将电子邮件发送给攻击者。 下图是由后门创建的PDF文件的示例。



图9.由后门创建的用于窃取数据的PDF文档的开头


使用发件箱中的回调函数发送报告。 这意味着该信件将在发送合法用户消息的同时离开。 后门无法在用户无法识别的时间内发送带有被盗数据的信件,因此避免了检测。 由于隐身,这种控制和控制机制很难在野外发现。


2.2.2。 掩盖恶意用户的行为


由于后门在用户使用计算机和Outlook时起作用,因此恶意软件试图隐藏恶意活动,例如,来自操作员的传入消息。


首先,后门始终删除发送给操作员或从操作员接收的邮件。 如下图所示,几秒钟后您会看到出现了一条新消息,但是该消息未出现在邮箱中。



图10.未读消息


其次,后门拦截CreateWindowsEx ,如下图所示。 这样可以防止创建Outlook等用于通知的窗口(如NetUIHWND),该窗口显示在屏幕的右下方。



图11.配置CreateWindowsEx函数的捕获



图12.拦截CreateWindowsEx


下图显示了NetUIHWND窗口的示例,当收到新消息时,该窗口通常显示在桌面上。 由于拦截了CreateWindowEx ,当攻击者向后门发送一封信时,不会显示通知。



图13.新消息通知


2.2.3。 蝙蝠!


尽管事实证明蝙蝠插件的注册功能! 不再存在,存在使用The Bat!API执行与Outlook相同功能的继承代码。


如下图所示,后门使用与The Bat!的通信通道来接收用户信息,阅读和发送信件。 但是,所有其他功能(例如,用于记录消息或执行命令的功能)与Outlook相同。



图14. Bat!频道


2.3。 后门


如上一部分所示,恶意软件可以处理和过滤消息。 同时,它是功能齐全的电子邮件驱动后门,可以独立于其他任何Turla组件运行。 后门不需要永久的Internet连接,并且可以在将邮件发送到外部地址的任何计算机上工作。 这在严格控制的网络中很有用,例如,使用Internet流量过滤。 此外,即使攻击者的电子邮件地址无效,他们也可以通过从其他地址发送命令来重新获得控制。 在这种情况下,该字母也将对用户隐藏,因为它将包含由后门解释的命令。 因此,后门程序与检查传入网络流量的rootkit一样具有容错能力。


2.3.1。 pdf格式


在2018年初,多家媒体表示Turla运营商使用电子邮件附件来管理受感染的计算机。 媒体是对的。 对Turla Outlook后门的分析显示了它如何发送和解释命令。


使用专门创建的PDF附件通过电子邮件发送命令。 我们无法使用命令找到真实的PDF示例,但是这些可能是有效的PDF文档,以及后门为渗透而创建的PDF文件。


通过PDF文档,后门可以恢复操作员在杂志中称为容器的内容。 这是一种特殊格式的Blob,其中包含用于后门的加密命令。 下图显示了删除此容器的过程。 从技术上讲,该应用程序不必是有效的PDF文档。 唯一的要求是它必须包含正确格式的容器。



图15.从PDF中提取命令容器


该容器具有许多不同检查的复杂结构。 可以设计它来防止通信错误,但是我们认为该结构主要是为了抵消反向工程而创建的。 容器的结构如下图所示。



图16.命令容器结构


在初始化向量之前,立即有一个命令描述符列表。 下表中显示了不同的ID值:




ID描述符2和4用于提取加密和解压缩功能,如下图所示。 但是,恶意程序仅实现一种加密算法和一种压缩算法。 因此,这些字段的唯一目的是使对后门的分析变得复杂。



图17.偏移量解压缩和解密功能


团队位于结构的最后部分。 它们使用MISTY1加密,并使用bzip2压缩。 同一PDF文件中可以有许多不同的命令,并且每个命令可以具有多个参数。


2.3.2。 密码学


在这里,我们描述使用的加密算法。


2.3.2.1。 XOR加密


容器的一部分(从第一个CRC32开始)使用用户定义函数生成的字节流进行XOR加密。 它需要一个种子,该种子通过调用rand传递给srand以生成第二个数字。 第二个种子在以下所示的函数中用作XOR中数据的参数。


 int __usercall F_bytestream_xor@<eax>(unsigned int len@<edx>, int ciphertext@<ecx>, unsigned int seed) { unsigned int v3; // ebx int v4; // esi unsigned int v5; // edi int result; // eax unsigned int v7; // ecx char *v8; // edx unsigned int v9; // esi byte key[512]; // [esp+Ch] [ebp-204h] char *v11; // [esp+20Ch] [ebp-4h] v3 = len; v11 = (char *)ciphertext; srand(seed); v4 = 0; v5 = 0; do { result = rand(); *(_DWORD *)&key[4 * v5++] = result; } while ( v5 < 128 ); v7 = 0; if ( !v3 ) return result; v8 = v11; do { v8[v7] ^= key[v4]; v9 = v4 + 1; result = -(v9 < 512); v4 = result & v9; ++v7; } while ( v7 < v3 ); return result; } 

2.3.2.2。 任务1


Turla开发人员更喜欢在后门中使用不太常见或经过修改的加密算法:



在Outlook后门中,他们实现了MISTY1,这是三菱电机密码专家在1995年开发的对称加密算法。 它具有以下属性:


  • 是对称的
  • 有一个128位的密钥
  • 使用两个预先计算的表:s7(128字节)和s9(2048字节)
  • 使用三个功能:FL,FO,FI
    o FL在字节写入和扩展密钥之间执行一些XOR操作
    o FO在记录和扩展键之间执行XOR操作,还使用FI
    o FI使用s7和s9执行非线性扩展
  • 使用64位块进行操作
  • 执行八个循环(循环-调用FO功能)
  • 使用Feistel密码


图18. MISTY1



图19.块加密的八个周期


Turla开发人员对算法做了些微修改:


  • 如下图所示,向FI函数添加了两个XOR操作
  • 由两个硬编码的1024位密钥加上一个2048位初始化向量生成一个128位密钥
  • 更改了表s7和s9。 这会破坏所有基于s表值识别密码算法的工具的操作。 修改后的和原始s表都包含相同的值,只需将它们改组即可


图20. FI功能的比较(原始在左侧,Turla开发在右侧)


2.3.3。 功能介绍


后门具有许多功能,从文件提取到执行命令。 下表列出了各种功能。




对于0x29函数,Turla开发人员从Empire PSInject项目复制了代码。 这使您可以在名为PowerShell Runner的特殊可执行文件中运行PowerShell代码,而无需调用powershell.exe 。 主要优点是,即使powershell.exe文件被锁定在受感染的计算机上,该恶意软件仍可以执行PowerShell命令。


经过分析后门程序,我们能够创建一个可以被恶意程序成功解释的PDF文档。 下图显示了Outlook收到包含此PDF的电子邮件后,MessageBox的执行和计算器( calc.exe )的启动。 这表明后门可能是用来接收PDF附件中的命令的,它具有功能并且可以由了解此自定义格式的任何人控制。



图21.执行PDF文档中指定的命令


2.4。 附加功能


除了实现为电子邮件客户端插件的后门功能之外,该恶意软件还具有其他功能。


2.4.1。 虚拟文件系统


该恶意程序不使用任何配置文件,但在Windows注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Settings\ZonePolicy\支持小型虚拟文件系统。 其他Turla后门(例如Gazer )也将虚拟文件系统存储在Windows注册表中。 我们能够确定一些注册表值,如下表所示。



2.4.2。 杂志杂志


如前所述,该程序将保存日记,该日记会定期通过电子邮件发送到操作员的特殊创建的PDF文档中。 它存储在%appdata%/Microsoft/Windows/scawrdot.db并使用硬编码的512字节XOR密钥进行加密。 每次渗透到操作员后,都会清除日志文件。 因此,在法医检查期间,不可能看到后门的所有过去动作,只能看到最后一个。


这些日志非常有用,它们使Turla操作员可以跟踪后门操作。 下图显示了解密日志的示例。



图22.解密的日志文件


3.结论


该报告显示,Turla开发人员在开发后门程序时有足够的想法。 据我们所知,Turla是目前唯一使用通过电子邮件或PDF附件进行完全管理的后门的网络间谍组织。


Turla后门并不是第一个使用受害者的真实邮箱接收命令并窃取数据的人。 但是,这是使用标准API(MAPI)与Microsoft Outlook交互学习的第一个后门。 与我们研究的使用Outlook Express的先前版本相比,这是一个重大改进。 相反,新的Turla后门甚至可以与最新版本的Outlook一起使用。


, , , , Turla . , Uroburos, .


, Turla, , . , , . , - , .


, PDF-, Turla, , .


ESET Turla, .


GitHub .


4.


4.1。 散列


8A7E2399A61EC025C15D06ECDD9B7B37D6245EC2 — Win32/Turla.N; (GMT) 2013-06-28 14:15:54
F992ABE8A67120667A01B88CD5BF11CA39D491A0 — Win32/Turla.AW; GMT 2014-12-03 20:50:08
CF943895684C6FF8D1E922A76B71A188CFB371D7 — Win32/Turla.R; GMT 2014-12-03 20:44:27
851DFFA6CD611DC70C9A0D5B487FF00BC3853F30 — Win32/Turla.DA; GMT 2016-09-15 08:14:47


4.2.


%appdata%/Microsoft/Windows/scawrdot.db
%appdata%/Microsoft/Windows/flobcsnd.dat
mapid.tlb


4.3.


HKCU\Software\Microsoft\Windows\CurrentVersion\Settings\ZonePolicy\
HKCU\Software\Classes\CLSID{49CBB1C7-97D1-485A-9EC1-A26065633066}
HKCU\Software\Classes\CLSID{84DA0A92-25E0-11D3-B9F7-00C04F4C8F5D}

Source: https://habr.com/ru/post/zh-CN421399/


All Articles