APT28 Turla俄毛的这波高阶组合拳打的可以

释放双眼,带上耳机,听听看~!

点击上方“凌天实验室”可订阅哦!



Turla,也被称为Snake,是迄今为止最为高级的威胁组织之一,被认为隶属于俄罗斯政府(该组织成员均说俄语),因其复杂的恶意软件而闻名。


1

Turla:一个极具威胁的黑客组织

自2007 年以来,Turla组织一直处于活跃状态,并制造了许多影响一时的大事件。比如,在2008年被指攻击了美国中央司令部,2016年,对瑞士军工企业RUAG集团的大规模网络攻击。此外,被Turla攻击过的组织远不止于此,这包括乌克兰、欧盟各国政府以及各国大使馆、研究和教育组织以及制药、军工企业。


最近,Turla回来了参与了对德国外交部和法国军方的重大袭击。


为了混淆检测,其运营商开始使用PowerShell脚本,提供直接的内存加载和恶意软件可执行文件和库的执行。这允许他们绕过在磁盘上丢弃恶意可执行文件时可能触发的检测。

Turla在2018年首次使用PowerShell,当时卡巴斯基实验室的专家收集证据分析了基于开源项目Posh-SecMod的Turla PowerShell加载程序。专家认为,由于代码中存在bug,它经常会崩溃。


本文旨在帮助防御者反击这些PowerShell脚本。我们还将展示各种有效载荷,包括基于RPC的后门和利用OneDrive作为其命令和控制(C&C)服务器的后门。


2

PowerShell Loader

PowerShell加载器有三个主要步骤:持久性,解密和加载到嵌入式可执行文件或库的内存中。

 持久性 

PowerShell脚本不是简单的dropper; 它们会持续存在于系统中,因为它们只会定期将内嵌的可执行文件加载到内存中。我们已经看到Turla运算符使用两种持久性方法:

Windows管理工具(WMI)事件订阅

更改PowerShell概要文件(profile.ps1文件)

Windows管理工具 

当持久性通过WMI实现时,攻击者创建两个WMI事件过滤器和两个WMI事件消费者。使用者是启动base64编码的PowerShell命令的命令行,这些命令加载存储在Windows注册表中的PowerShell脚本。

 

图1.使用WMI的持久性

这些事件将分别在15:30:40运行,系统正常运行时间在300到400秒之间。变量$ HL39fjh包含图2中所示的base64编码的PowerShell命令。它读取存储加密有效负载的Windows注册表项,并包含解密有效负载所需的密码和salt。

图2. WMI使用者PowerShell命令

最后,该脚本将加密的有效负载存储在Windows注册表中。请注意,攻击者似乎每个组织使用不同的注册表位置。因此,它不是检测类似入侵的有用指标。

profile.ps1文件 

攻击者会更改PowerShell配置文件。使用配置文件作为登录脚本来自定义环境。添加命令,别名,函数,变量,管理单元,模块和PowerShell驱动器。

图3.被劫持的profile.ps1文件

base64编码的PowerShell命令与WMI使用者中使用的命令非常相似。

 解密 

存储在Windows注册表中的有效负载是另一个PowerShell脚本。它是使用Penetration测试框架PowerSploit中的开源脚本Out-EncryptedScript.ps1 生成的。此外,变量名称随机化以混淆脚本。

图4.解密例程

使用3DES算法解密有效载荷。本例中的初始化向量PINGQXOMQFTZGDZX对于每个样本是不同的。每个脚本的密钥和salt也不同,并且不存储在脚本中,而是仅存储在WMI筛选器或profile.ps1文件中。

 PE装载机 

在上一步中解密的有效负载是PowerShell反射加载器。它基于同一PowerSploit框架中的脚本Invoke-ReflectivePEInjection.ps1。可执行文件在脚本中进行了硬编码,并直接加载到已在系统上运行的随机选择的进程的内存中。

在某些示例中,攻击者指定了不应该注入二进制文件的可执行文件列表。

图5.排除进程的示例列表

有趣的是,名称avp.exe,avpsus.exe,klnagent.exe和vapm.exe是指卡巴斯基实验室的可执行文件。似乎Turla运营商真的想避免将他们的恶意软件注入卡巴斯基软件。

AMSI绕过

2019年3月以来部署的一些示例中,Turla开发人员修改了他们的PowerShell脚本以绕过反恶意软件扫描接口(AMSI)。这是一个允许任何Windows应用程序与已安装的反恶意软件产品集成的界面。它对PowerShell和宏特别有用。

他们没有找到新的旁路,而是重新使用了2018年Black Hat Asia在AMSI的兴衰中所提出的技术。它包括库amsi.dll中函数AmsiScanBuffer开头的内存中修补程序。

PowerShell脚本加载.NET可执行文件以检索AmsiScanBuffer的地址。然后,它调用VirtualProtect以允许在检索到的地址处写入。

最后,修补程序直接在PowerShell脚本中完成,如图6所示。它将AmsiScanBuffer的开头修改为始终返回1(AMSI_RESULT_NOT_DETECTED)。因此,反恶意软件产品将不会接收缓冲区,这会阻止任何扫描。

图6.修补AmsiScanBuffer函数


3

有效载荷


我们提供的PowerShell脚本是用于加载各种有效负载的通用组件,例如RPC后门和PowerShell后门。

 RPC后门 

Turla开发了一整套依靠RPC协议的后门程序。这些后门用于执行横向移动并控制本地网络中的其他机器,而无需依赖外部C&C服务器。

实现的功能非常基础:文件上载,文件下载和通过cmd.exe或PowerShell执行命令。恶意软件还支持添加插件。

此RPC后门分为两个组件:服务器和客户端。操作员将使用客户端组件在存在服务器组件的另一台机器上执行命令。

图7. RPC后门使用情况

例如,由以下SHA-1哈希EC54EF8D79BF30B63C5249AF7A8A3C652595B923标识的样本是客户端版本。该组件打开命名管道\\ pipe \\ atctl,协议序列为“ ncacn_np ”,通过RpcStringBindingComposeW函数。然后,该示例可以通过调用NdrClientCall2函数来发送命令。负责解析参数的导出过程HandlerW表明,也可以尝试模拟匿名令牌或尝试窃取另一个进程令牌,仅用于执行命令。

它的服务器对应物执行繁重的工作并实现不同的命令。它首先检查注册表项值HKLM \ SYSTEM \ CurrentControlSet \ services \ LanmanServer \ Parameters \ NullSessionPipes是否包含“ atctl ”。如果是,则服务器通过SetSecurityInfo函数将管道对象上的安全描述符设置为“ S:(ML ;; NW ;;;; S-1-16-0) ” 。这将使管道可供所有人使用(不受信任/匿名完整性级别)。

下图显示了相应的MIDL存根描述符以及类似的语法和接口ID。

图8.左侧的RPC后门客户端MIDL,右侧的服务器

如前所述,这个后门还支持加载插件。服务器创建一个线程,搜索与以下模式lPH * .dll匹配的文件。如果存在这样的文件,则加载它并调用其导出函数ModuleStart。在我们到目前为止的各种插件中,有一个能够从USB拇指驱动器中窃取最近的文件和文件。

此RPC后门的许多变体都在野外使用。在其中一些中,我们已经看到了本地代理(使用upnprpc作为端点,ncalrpc作为协议序列)和嵌入PowerShellRunner的新版本直接运行脚本而不使用powershell.exe。

 RPC欺骗服务器 

在我们的研究中,我们还发现了一个带有嵌入式pdb路径C:\ Users \ Devel \ source \ repos \ RPCSpoofer \ x64 \ Release_Win2016_10 \ RPCSpoofServerInstall.pdb(SHA-1:9D1C563E5228B2572F5CA14F0EC33CA0DEDA3D57)的可移植可执行文件  。

此实用程序的主要用途是检索已注册接口的进程的RPC配置。为了找到那种进程,它遍历TCP表(通过GetTcpTable2函数),直到它找到已打开特定端口的进程的PID,或者检索已打开特定命名的进程的PID。管。找到此PID后,此实用程序将读取远程进程的内存并尝试检索已注册的RPC接口。这个代码,如图9所示,似乎从这个Github存储库中删除了。

图9. 在远程进程中搜索rpcrt4.dll的.data部分的代码片段(Hex-Rays屏幕截图)

起初我们不确定如何使用检索到的信息,但是另一个样本(SHA-1:B948E25D061039D64115CFDE74D2FF4372E83765)帮助我们理解。如图10所示,此示例检索RPC接口,将标志取消设置为RPC_IF_ALLOW_SECURE_ONLY ,并使用WriteProcessMemory函数修补内存中的“dispatch table” 。这些操作将允许示例将其RPC函数添加到现有的RPC接口。我们认为重用现有RPC接口比创建自定义RPC接口更为隐蔽。

图10.检索当前进程的RPC调度表的代码片段(Hex-Rays屏幕截图)

 PowerStallion 

PowerStallion是一个轻量级PowerShell后门程序,它使用Microsoft OneDrive(云中的存储服务)作为C&C服务器。凭证在脚本开头是硬编码的,如图11所示。

图11. PowerStallion脚本中的OneDrive凭据

值得注意的是,Turla运营商再次使用免费电子邮件提供商GMX,如Outlook Backdoor和LightNeuron。他们还在电子邮件地址中使用了目标组织的真实员工的姓名。

然后它使用net use命令连接到网络驱动器。然后,如果命令可用,它将在循环中检查,如图12所示。此后门只能执行其他PowerShell脚本。它将命令结果写入另一个OneDrive子文件夹,并使用XOR键0xAA对其进行加密。

图12. PowerStallion后门的主循环

另一个有趣的假象是脚本修改本地日志文件的修改,访问和创建(MAC)时间以匹配合法文件的时间 – 在该示例中为desktop.ini。

图13.修改本地日志文件的MAC时间

我们相信这个后门是一个恢复访问工具,以防主要的Turla后门(如Carbon或Gazer)被清理,操作员无法再访问受感染的计算机。我们已经看到运营商将此后门用于以下目的:

监控反恶意软件日志

监视Windows进程列表

安装ComRAT版本4,Turla第二阶段后门之一


4

结论

Turla将使用越来越多的通用工具,攻击者倾向于配置或修改这些开源工具以更好地满足他们的需求。因此,仍然可以分离不同的活动集群。

最后,开源工具的使用并不意味着Turla已停止使用其自定义工具,对Turla LightNeuron的分析进一步证明了该组织仍在开发复杂的自定义恶意软件。

原文链接:https://www.welivesecurity.com/2019/05/29/turla-powershell-usage/ 

直译


凌天
实验室

凌天实验室,是安百科技旗下针对应用安全领域进行攻防研究的专业技术团队,其核心成员来自原乌云创始团队及社区知名白帽子,团队专业性强、技术层次高且富有实战经验。实验室成立于2016年,发展至今团队成员已达35人,在应用安全领域深耕不辍,向网络安全行业顶尖水平攻防技术团队的方向夯实迈进。



“阅读原文”我们一起穿越安百信息安全资讯平台~

本文源自微信公众号:凌天实验室

人已赞赏
安全工具

教你200行python代码把女朋友糊弄的明明白白的

2019-10-14 14:06:23

安全工具

CobaltStrike + Metasploit 组合安装

2019-10-14 14:07:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索