标注的博客| 安全研究| 渗透测试| APT

首页

剖析apt29的无文件wmi和powershell后门(poshspy)

作者 zackey 时间 2020-04-03
all

Mandiant用一种我们称之为POSHSPY的隐形后门观察到了APT29。POSHSPY利用了该组经常使用的两个工具:PowerShell和Windows管理规范(WMI)。在Mandiant进行的调查中,似乎APT29部署了POSHSPY作为第二后门,如果他们失去了对主后门的访问。

POSHSPY充分利用了内置的Windows功能,即所谓的“生活在陆地上”,来制作一个特别隐蔽的后门。POSHSPY使用WMI来存储和持久化后门代码,这使得不熟悉WMI复杂性的人几乎看不到它。它使用PowerShell负载意味着只使用合法的系统进程,并且只能通过增强的日志记录或内存来识别恶意代码的执行。后门不常见的信标、流量混淆、广泛的加密和地理上本地合法的指挥控制网站(C2)的使用,使得识别其网络流量变得困难。POSHSPY的每一个方面都是高效和隐蔽的。

Mandiant最初在2015年的一次事件响应活动中确定了Posspy后门的早期变体,作为PowerShell脚本部署。在同一次交战中,攻击者更新了后门的部署,以使用WMI进行存储和持久化。在过去的两年里,Mandiant已经在其他几个被APT 29破坏的环境中发现了POSHSPY。

我们首先讨论了APT29使用这个后门作为我们“不容易突破”谈话的一部分。有关我们如何首先识别这个后门以及它所参与的史诗般的调查的更多细节,请参见幻灯片和演示文稿。

Windows管理工具

WMI是一个管理框架,自2000年以来,它内置于Windows的每个版本中。WMI在本地和远程系统上提供了许多管理功能,包括查询系统信息、启动和停止进程以及设置条件触发器。可以使用多种工具访问WMI,包括Windows WMI命令行(wmic.exe),或者通过编程和脚本语言(如PowerShell)可访问的api。Windows系统WMI数据存储在WMI公共信息模型(CIM)存储库中,该存储库由System32\wbem\repository目录中的几个文件组成。

WMI类是WMI中的主要结构。WMI类可以包含方法(代码)和属性(数据)。具有足够系统级权限的用户可以定义自定义类或扩展许多默认类的功能。

当满足指定条件时,可以使用WMI永久事件订阅来触发操作。攻击者通常使用此功能在系统启动时持久执行后门。订阅由三个核心WMI类组成:筛选器、使用者和FilterToConsumerBinding。WMI使用者指定要执行的操作,包括执行命令、运行脚本、向日志添加条目或发送电子邮件。WMI筛选器定义将触发使用者的条件,包括系统启动、程序执行、指定时间的传递和许多其他条件。FilterToConsumerBinding将使用者与筛选器关联。创建WMI永久事件订阅需要系统上的管理权限。

我们观察到APT29使用WMI来持久化后门并存储PowerShell后门代码。为了存储代码,APT29创建了一个新的WMI类并向其添加了一个文本属性,以便存储字符串值。APT29将加密的和base64编码的PowerShell后门代码写入该属性。

然后,APT29创建了一个WMI事件订阅,以便执行后门。订阅配置为运行PowerShell命令,该命令直接从新的WMI属性读取、解密和执行后门代码。这使得他们能够安装一个持久后门,而不会在系统的硬盘上留下任何工件,在WMI存储库之外。这种“无文件”的后门方法使得使用标准主机分析技术识别后门变得更加困难。

POSHSPY WMI组件

POSHSPY后门的WMI组件利用过滤器定期执行后门的PowerShell组件。在一个实例中,APT29创建了一个名为BfeOnServiceStartTypeChange的过滤器(图1),它们将其配置为在本地时间每周一、周二、周四、周五和周六上午11:33执行

图1:“BfeOnServiceStartTypeChange”WMI查询语言(WQL)筛选条件

BfeOnServiceStartTypeChange筛选器已绑定到CommandLineEventConsumer WindowsParentalControl光栅。WindowsParentalControlsMigration使用者已配置为以静默方式执行base64编码的PowerShell命令。执行时,此命令提取、解密并执行存储在RacTask类的HiveUploadTask文本属性中的PowerShell后门负载。PowerShell命令包含有效负载存储位置和加密密钥。图2显示了由WindowsParentalControlsMigrationConsumer执行的命令,称为“CommandLineTemplate”。

图2:WindowsParentalControl光栅命令行模板

图3包含“CommandLineTemplate”中解码的PowerShell命令

图3:解码的CommandLineTemplate PowerShell代码

POSHSPY PowerShell组件

POSHSPY示例的完整代码在这里提供。

POSHSPY后门旨在下载和执行额外的PowerShell代码和Windows二进制文件。后门包含几个值得注意的功能,包括:

一。作为EncodedCommand下载并执行PowerShell代码

2。将可执行文件写入程序文件下随机选择的目录,并命名该可执行文件以匹配所选的目录名,如果失败,则使用EXE扩展名将该可执行文件写入系统生成的临时文件名

三。修改每个下载可执行文件的标准信息时间戳(创建、修改、访问),以匹配2013年之前创建的System32目录中随机选择的文件

四。使用AES和RSA公钥密码加密通信

5个。使用域名、子域、顶级域(tld)、统一资源标识符(uri)、文件名和文件扩展名列表从域生成算法(DGA)派生c2url

6。使用自定义用户代理字符串或从urlmon.dll派生的系统用户代理字符串

7号。为每个网络连接使用自定义cookie名称和值或随机生成的cookie名称和值

8个。在2048字节块中上载数据

9号。在上载或下载之前,通过从文件类型中随机选择,将文件签名头附加到所有加密数据:

本例中的示例使用了位于受害者附近的组织拥有的11个合法域。当与DGA中的其他选项结合时,可以生成550个唯一的C2 URL。不频繁的信标、DGA和C2的受损基础设施的使用,以及用于绕过内容检查的附加文件头,使得使用典型的网络监视技术很难识别这个后门。

结论

POSHSPY是APT29技术和技巧的优秀例子。通过“生活在陆地上”,他们能够制造出一个非常离散的后门,可以与更传统、噪音更大的后门家庭一起部署,以帮助确保即使在补救之后仍能坚持下去。虽然很隐蔽,但如果你知道在哪里找,它很快就会曝光。启用和监视增强的PowerShell日志记录可以捕获执行时的恶意代码,而合法的WMI持久性非常罕见,因此在跨环境枚举时,恶意持久性会很快脱颖而出。这是我们发现的几个鬼鬼祟祟的后门家族之一,包括一个现成的面向后门的领域和HAMMERTOSS。在响应APT29漏洞时,必须提高可见性,在响应之前完全确定事件范围,并彻底分析不包含已知恶意软件的访问系统。

附加读数

此PowerShell日志日志日志包含有关在您的环境中提高PowerShell可见性的更多信息。

这篇优秀的白皮书由威廉·巴伦辛、马特·格雷伯和克劳迪乌·特奥多雷斯库撰写,包含了有关WMI进攻、防守和取证的额外信息。

Christopher Glyer和Devon Kerr的演示文稿包含了有关攻击者在过去Mandiant调查中使用WMI的更多信息。

FireEye FLARE团队发布了一个WMI存储库解析工具,允许调查人员从WMI存储库中提取嵌入式数据并标识WMI持久性