导语:美国网络安全公司Mandiant发现APT29(俄罗斯黑客组织)设置的隐蔽后门--POSHSPY。
POSTSPY最大程度的利用了内置于Windows系统中的特性来设置隐蔽的后门,这些特性被称为“living off the land”(意思是入侵者使用系统凭据和合法的软件管理工具访问系统,感染和收集有价值的数据)。POSHSPY使用WMI来存储后门代码,使其对不熟悉WMI机制的人不可见。PowerShell只有在合法系统过程能被执行,如果是恶意代码执行,能通过加强日志分析或者内存就可以发现。
POSHSPY中的特点,如罕见的后门信标、流量混淆、多层加密以及地理位置合法的C2(command and control,指挥控制)网站,增加了网络流量识别的难度,也使得POSHSPY性能高效,执行隐秘。
2015年Mandiant在一次事件响应发现了早期变种的POSHSPY后门,部署为PowerShell脚本。随后,在同样的事件响应中,攻击者更新了后门的部署策略,改用WMI来做存储和持久化。从那以后,在过去的两年,Mandiant在其他一些被APT29攻击的系统中发现了POSHSPY。
我们在 “No Easy Breach”讨论中第一次探讨了APT29这个后门。有关我们第一次检测后门的方法和调查报告的更多细节,请读者查看幻灯片和演讲视频。
Windows管理规范简介
WMI是一个管理框架,内置在2000以后的每个Windows版本中。VMI为本地系统和远程系统提供很多管理能力,包括查询系统信息,开始和结束处理过程及设置条件触发器。多种方式都能访问WMI,如:Windows WMI命令行(wmic.exe),通过能访问程序和脚本语言(PowerShell)的API。Windows系统WMI数据存储在WMI的公共信息模型(common information model,CIM)仓库,它在路径System32wbemRepository下存放文件。
WMI类是WMI的主要框架。WMI类包含方法(代码)和属性(数据)。具有足够系统级别权限用户可以定义用户类或扩展默认类的功能。
VMI的永久事件订阅支持到达既定条件时触发相应行为。攻击者常常利用这个功在系统启动后执行后门。订阅模块包含3个核心WMI类:Filter(过滤器)、Consumer(消费者)和FilterToConsumerBinding。WMI消费者类用来指定具体行为,包括执行命令,运行脚本,增加日志记录,或者发送邮件。WMI Filter类定义触发Consumer条件,包括系统启动,程序执行,过滤指定时间等等。FilterToConsumerBinding类连接Consumer类和Filter类。WMI永久事件订阅需要系统的管理员权限才能建立。
我们已经证实APT29利用WMI作为永久后门(Persistent Backdoor,即使系统升级补丁也能持续访问系统),并存储PowerShell后门代码。为存储代码,APT29创建了一个新的WMI类,并为其添加了一个用来存储字符串的文本属性。APT29在文本中添加了加密的Base64编码的后门代码。
APT29随后建立一个WMI事件订阅用来执行后门代码。他们将这个“订阅”配置为运行PowerShell命令,可直接从WMI的文本属性中读取、解密和执行后门代码。这样就可以在WMI仓库之外,成功安装一个永久后门,而不会在系统硬件驱动留下任何人为操作痕迹。这种“无文件”后门方法论使得利用标准的主机分析技术识别后门更加困难。
POSHSPY WMI组件
POSHSPY后门的WMI组件使用过滤器来定期执行PowerShell组件。如图1所示,APT29在实例中建立一个名为BfeOnServiceStartTypeChange 的Filter。Filter配置为每个星期一、星期二、星期四、星期五和星期六,在当地时间11:30定期执行。
图1 :“BfeOnServiceStartTypeChange” WMI查询语言(WMI Query Language,WQL)过滤条件
BfeOnServiceStartTypeChange过滤器绑定到一个命令行事件消费者(CommandLineEventConsumer)WindowsParentalControlsMigration。WindowsParentalControlsMigration 消费者被配置为静默运行(不需要启动Window cmd运行命令)一条base64编码的PowerShell命令。这个命令执行过程中,抽取、解密和执行存储于RacTask类的文本属性HiveUploadTask 的PowerShell后门。PowerShell命令包含存储位置和加密主键。图2展示了“命令行模板(CommandLineTemplate)”命令,由WindowsParentalControlsMigration消费者执行。
图2:WindowsParentalControlsMigration命令行模板
图3展示了从上述模板解码的PowerShell命令
图3:从命令行模板解码后的PowerShell代码
POSHSPY PowerShell组件
完整的POSHSPY示例代码可在这里下载。
POSHSPY后门可下载并执行PowerShell代码和Windows二进制文件。后门包含以下显著的能力:
1. 下载PowerShell代码,将其作为编码后的命令执行。
2. 将可执行文件写到Program Files目录下任意路径,命名为选择目录的名字。如果写入失败,执行文件写入系统生成的临时文件,以exe为扩展名。
3. 修改每次下载的标准信息时间戳(建立,修改,访问),从system32目录中随机选择2013年之前建立的文件,修改时间戳与这个文件一致。
4. 用AES和RSA公钥密码进行通信加密。
5. 从域名生成算法(Domain Generation Algorithm,DGA),根据一组域名、子域名、顶级域名(top-level domains,TLDs)、统一资源标识符(Uniform Resource Identifiers,URIs)、文件名和文件扩展名列表,推导出C2的URL。
6. 使用自定义的用户代理字符或者从urlmon.dll中提取系统用户代理。
7. 每个网络连接使用自定义或自动生成cookie的键值对
8. 以2048比特为传输单位上传数据
9. 在上传下载之前,随机选择下面的文件类型,为所有的加密数据添加一个文件签名头。
· ICO · GIF · JPG · PNG · MP3 · BMP
本文示例用被入侵者附近的11个同一机构的合法域名为样本。结合DGA中的其他参数,生成了550个独立的C2 URL。POSHSPY 后门的一系列手段:使用不常见的信标,DGA算法和C2基础设施,添加文件头绕过内容检测,使得传统的网络检测技术很难发现他们。
总结
POSHSPY是APT29优秀技术水平和出色策略的代表。通过“living off the land”技术保证持久性访问,与传统后门和噪声后门家族一起部署保证持续性,APT29制造出了非常独立的后门。尽管POSHSPY很隐蔽,依据一定方法仍然能很快发现它们。监控增强的PowerShell日志可捕捉到正在执行的恶意代码。另外,WMI的合法持续访问非常稀少,所以只要枚举系统中持续访问,那么很快可以定位恶意持续访问。POSHSPY只是被发现的隐蔽后门家族的一员,其他的包括域名前移后门以及HAMMERTOSS后门。对于防范APT29的恶意代码,提高可见性,响应之前全面审视事件,彻底分析包含不知名恶意软件的可达系统,都是至关重要的。
延伸阅读
PowerShell logging blog post 介绍了提升PowerShell可见性的信息。
William Ballenthin、Matt Graeber和Claudiu Teodorescu发表的白皮书介绍了与WMI有关的攻击、防御和取证技巧。
Christopher Glyer和Devon Kerr的演讲介绍了在Mandiant之前调查工作中发现的与WMI技术有关的其他攻击活动信息。
FireEye公司的FLARE团队公布了一个WMI仓库解析工具,以便调查人员能够从WMI仓库中提取内嵌数据,和使用WMI持久访问。