PowerPepper恶意软件分析

  • A+
所属分类:安全文章


概述

DeathStalker高级持续威胁(APT)小组至少从2012年开始活跃,由于其攻击方式的独特性,该组织在2018年引起了我们的注意。

 

多年来,DeathStalker利用了多种恶意软件和交付链,从基于Python和VisualBasic的Janicab到基于PowerShell的Powersing和基于JavaScript的Evilnum。该APT组织一直使用我们所谓的“Dead-Drop Resolvers”(DDR),它们是托管在主要公共网络服务(如YouTube、Twitter或Reddit)上的恶意内容,这些恶意内容一旦被解码就会显示命令和控制(C2)服务器地址。

 

DeathStalker始终采用逃避检测和病毒规避技术以及错综复杂的交付链,这些交付链会将大量文件传输到目标文件系统中。为实现感染,DeathStalker通常使用带有附件的鱼叉式网络钓鱼电子邮件,这些附件包含了指向公共文件共享服务的链接或能够实现基于Windows快捷方式的脚本执行。

我们已经确定了DeathStalker的恶意软件是如何针对集群或世界各地的实体进行攻击的。DeathStalker将攻击的重点放在法律和咨询办公室以及FINTECH(金融科技)公司上,但还没有发现该组织的明确目的,其似乎没有政治或战略上的攻击意图,也似乎不是出于经济动机的犯罪。因此,我们得出结论DeathStalker是一个雇佣组织。

 

在追踪2020年5月DeathStalker基于Powersing的活动时,我们检测到一个未知的植入程序,它利用HTTPS上的DNS作为C2通道及其交付链的一部分。我们将这个新的恶意软件命名为PowerPepper。我们在2020年7月中旬的野外攻击中首次发现了PowerPepper的变种,它是从一个提交给公共多扫描仪服务的Word文档中发现的。从那时起,PowerPepper植入程序和相关的交付链一直在不断地运作和发展。

 

 

PowerPepper植入程序

PowerPepper是基于Windows的 PowerShell后门,可以远程执行Shell命令。严格按照DeathStalker的传统,植入程序将尝试通过各种技巧来逃避检测或沙盒,如检测鼠标移动、过滤客户端的MAC地址以及根据检测到的防病毒产品调整其执行流程等。


 

PowerPepper恶意软件分析


植入程序的C2逻辑引人注目,其基于CloudFlare响应器通过HTTPS(DoH)上的DNS进行通信。PowerPepper首先尝试利用Microsoft Excel作为Web客户端将DoH请求发送到C2服务器,但消息如果无法通过,它将恢复使用PowerShell的标准Web客户端,并最终进行常规DNS通信。

植入程序和服务器之间的C2通信内容是加密的。我们注意到PowerPepper和前面描述的Powersing几乎使用了相同AES加密和PowerShell,仅改变了AES填充模式和函数输入格式。

 

PowerPepper DNS命令和控制

 

PowerPepper定期轮询C2服务器来获取要执行的命令。为此,植入程序向恶意C2域名关联的名称服务器(NS)发送TXT类型的DNS请求(如果请求失败,则发送DoH或常规DNS请求)。如果植入的目标是有效的(我们稍后会讨论),服务器将通过DNS响应进行回复,并嵌入加密的命令。请求和响应都包含了可以用网络入侵检测系统轻松检测到的模式,但这些模式已经在各种植入程序变体中发生了变化。


 

PowerPepper恶意软件分析


命令执行结果通过一批可变长度的A类型DNS请求返回服务器,其中查询的主机名包含标识符、数据长度和加密数据。

# Command resultfeedback initialization DNS request hostname:

<identifier>.be.0.0.1.0.0.0.0.<domain>

# Command resultfeedback data slices DNS requests hostnames:<identifier>.ef.1.0.1.3.BDA2ADBE3C79C9EF6630.DDD4B8D4504FEC348C9C.2F53BFB60C1890585CF7.<domain><identifier>.ef.2.0.1.3.72DE8DDB802C4829B2DE.40CB7163E83DE0B4A002.6B6C2E555A931721A525.<domain><identifier>.ef.3.0.1.2.1699380DBABAB113D32B.7869501E5FEDD524304B.0.<domain>

# Command resultfeedback termination DNS request hostname:

<identifier>.ca.4.0.1.00.0.0.0.<domain>

 

在调查过程中,我们注意到PowerPepper C2名称服务器实际上是开放的DNS解析器,其始终解析具有相同IP地址的任意主机名:128.49.4.4(美国海军拥有的服务器)、91.214.6.100和91.214.6.101(汇丰UK-owned服务器)。利用这一特点并反向DNS解析数据,我们能够抢先识别PowerPepper  C2域。

 

 

PowerPepper信令和目标验证

在DNS C2通信逻辑上,PowerPepper还通过HTTPS向Python后端发送成功的植入启动和执行错误信令。这样的信令支持目标验证和植入执行日志记录,同时防止研究人员与PowerPepper C2名称服务器进一步交互。此外,还可以通过Office文档中的“文件链接”功能实现传递,一些与PowerPepper有关的恶意文档也使用了该功能。


 

PowerPepper恶意软件分析


Python信令后端托管在一个名为PythonAnywhere的公共合法内容托管web服务上,该服务允许用户构建网站。PythonAnywhere与我们协作关闭了发现的Python后端端点。结果,Deathstacker试图通过将其从大多数包含PowerPepper的文档中删除(但保留在植入程序中),并通过添加一个合法但受到损害的WordPress网站作为植入程序和后端之间的反向代理来调整信令传递功能。

 

 

PowerPepper交付链

基于宏的交付链

早在2020年7月,我们遇到的第一种PowerPepper交付链是基于Word文档的。虽然我们无法确定该文档是如何被分发到目标主机的,但通过我们对文档和感染痕迹的分析,该文档要么是嵌入到鱼叉式网络钓鱼邮件正文中,要么是从鱼叉式网络钓鱼邮件中的恶意链接下载的。这种感染链在2020年7月至2020年11月之间略有不同:一些删除的文件名、集成代码或远程链接发生了变化,但逻辑保持不变。


 

PowerPepper恶意软件分析


我们不会深入探讨传递的细节,我们将在后面介绍主要技巧。需注意的是,所有的恶意传递都需要基于一个整体链,恶意文档中通常包含诱饵内容,恶意逻辑由Visual Basic for Application(VBA)宏处理,这些宏最终运行PowerPepper并设置其持久性。

 

 

基于LNK的交付链

此交付链基于Windows快捷方式文件,该文件具有误导性的.docx.lnk双重扩展名,并构成了一种更模块化的PowerPepper传递方法。


 

PowerPepper恶意软件分析


基于LNK的交付链与基于宏的交付链非常相似,主要更改如下:

  • 宏逻辑改为PowerShell脚本,并直接嵌入快捷方式文件中,因此不再使用VBA宏;

  • 基于LNK的交付链中的Word文档只是一个诱饵和恶意文件存储包,并且是从远程位置(公共文件共享服务)下载的,而不是直接嵌入某个位置。

 

恶意的LNK文件很可能是在网络钓鱼电子邮件中以ZIP附件的形式分发的,当然,从这个交付链中删除的文件在不同的变体中也有所不同。

 

 

快速浏览诱饵内容

我们检索到一些恶意文档使用了社会工程学,要求用户启用宏执行。这体现了在大多数Office设置默认禁用宏的情况下,攻击者如何触发基于宏的交付链中的恶意逻辑。

 

PowerPepper恶意软件分析

  

我们检索到的诱饵内容各不相同。我们在野外发现的第一个诱饵内容与碳排放法规有关,但我们也发现了一个假的旅行预订表,该表计划明年在土耳其举行的一个非常具体的活动,当然还有一些是关于冠状病毒的。

 

PowerPepper恶意软件分析

PowerPepper恶意软件分析

PowerPepper恶意软件分析

PowerPepper恶意软件分析


我们能够将大多数诱饵内容链接到其作者在互联网上发布的原始内容,这意味着DeathStalker并没有伪造它们,而是选择了从互联网上获得现成的材料。有的诱饵还冒充合法的旅行社,但其联系方式有所更改。

 

PowerPepper技巧总结

PowerPepper交付链利用多种混淆、执行和伪装技巧来阻碍检测或欺骗对计算机以及对PowerPepper感到好奇的目标,以下是我们收集的一些技巧。


技巧1:在Word内嵌形状属性中隐藏内容

DeathStalker将字符串嵌入在Word的形状和对象(OLE包)属性中,例如“hyperlink”属性,以隐藏、重建和执行命令或脚本。

bell= "JohnSnow123"

Documents.OpenFileName:=best & FName, PasswordDocument:=CStr(bell), Visible:=False

Documents.Item(FName).Activate

WithApplication:

            .Run "boat", belt

'this function is totally legit and if you are an av you should totally let uspass

Functionboat(both)

'checks if the type is 7

If.Type = 7 Then

If.OLEFormat.Application = "Microsoft Word" And .OLEFormat.ClassType ="Package" Then

            band = Split(.Hyperlink.Address,"ps://")

            …

 

值得注意的是,这些属性被用作基于LNK的交付链中的第二阶段的PowerShell脚本。嵌入在恶意LNK文件中的第一阶段PowerShell脚本用于解析下载的Word文档内容,以提取并运行第二个PowerShell脚本。这些属性控件还可以包含url、已删除的文件路径或命令的一部分,这些内容可由基于宏的交付链中的宏直接利用。

 

从上面的代码摘录中我们还可以看到DeathStalker使用宏打开了另一个子文档,该子文档嵌入了基于宏的交付链中的第一个恶意文档中。

 

 

技巧2:使用Windows编译的HTML帮助(CHM)文件作为恶意文件的存档

在PowerPepper传递流程中,DeathStalker利用CHM文件作为容器来更好地逃避检测,并使用Windows内置工具“ hh”从VBA宏或嵌入LNK的PowerShell脚本中解压缩内容。

PowerPepper恶意软件分析



这些档案中包含从交付链中放置到目标计算机上的所有文件以及运行PowerPepper所需的所有文件。CHM文件嵌入在交付链的恶意Word(子)文档中。

 

 

技巧3:伪装和混淆持久性文件

DeathStalker使用Visual Basic脚本(VBS)加载程序启动PowerPepper并执行。加载程序在传递完成后立即启动,然后每次开机自动运行, 这要归功于Windows启动文件夹中的启动程序快捷方式。

'Copyright (c) GlobalSign Corporation. All rights reserved.

'

'Abstract:

'licenseverification.vbs - Verify the GlobalSign software

'

'Usage:

'licenseverify [-software]

constL_Help_Help_General05_Text   ="-a     - add a port"

constL_Help_Help_General06_Text   ="-d     - delete the specifiedport"

constL_Help_Help_General34_Text   ="417079070765161B1C0eeeeeef610520C0F69331…

CreateObject(DelPort(L_Text_Msg_Port01_Text)).Run…+DelPort(L_Help_Help_General34_Text & "7260D3…

 

该VBS加载程序伪装成具有注释以及欺骗性变量或帮助字符串的GlobalSign验证工具。此外,脚本的恶意内容被自定义加密功能所掩盖。

 

 

技巧4:将植入程序藏在图像之间(隐写术)

先前描述的VBS加载程序基本上都将做一件事:对先前从交付链中删除的图片文件进行模糊处理并运行PowerShell脚本。


 

PowerPepper恶意软件分析


此种方法运用了隐写术,它将被VBS加载程序内嵌的脚本解码,其中包含PowerPepper植入程序。在发现的第一个交付链中,隐写术图像实际上显示的是辣椒,因此命名为“ PowerPepper”。


 

PowerPepper恶意软件分析


 

技巧5Windows Shell命令转换混淆

基于LNK的交付链中的Windows快捷方式(LNK)文件实际上是使用混淆的命令参数启动Windows Shell的。该命令是“FOR”,Windows Shell循环的一种特定形式,该循环从“assoc” shell内置结果生成“PowerShell”字符串。

PowerPepper恶意软件分析



结果,恶意LNK文件将触发PowerShell脚本,进而将从下载的Word文档中重新构成第二阶段脚本(技巧1所示)。

 

 

技巧6:通过签名的二进制代理执行来启动一切

无论是在基于宏的交付链中宏执行的末尾,还是基于LNK的交付链中在快捷方式嵌入式脚本的最后一步,DeathStalker都是利用签名的二进制代理执行来第一次启动PowerPepper。

$ttss=Join-Path-path $src -ChildPath ('Startup'+[char]92+'StartPrinter.url');

start-process-filepath 'rundll32.exe' -argumentlist

('ieframe.dll,openurl'.replace('openurl',('o').toupper()+'pen'+('url').toupper())+$ttss)

 

虽然我们检索到的第一个(基于宏)交付链使用“rundll32.exe ieadvpack.dll, RegisterOCX wscript.exe <scriptfile> <script argument> pexe”触发了恶意VBS加载程序,但在最近的版本使用了“rundll32.exe ieframe.dll, OpenURL <Internet shortcut>”组合来替带。最新版本依赖于已删除的internet快捷方式文件(.url),该文件只需打开一个带有file://URL的LNK启动器。LNK启动程序会依次运行VBS加载程序(见技巧3)。

 

 

PowerPepper目标的地理位置

我们无法了解PowerPepper的所有目标,但是我们自2020年5月以来一直跟踪此恶意软件,我们设法在2020年8月之前和2020年11月之前了解部分目标国家。


 

PowerPepper恶意软件分析


由于我们在研究中获得的信息非常少,尽管我们已经尽可能的过滤,但我们不能排除某些确定的目标实际上可能是研究威胁的研究员或DeathStalker自己的测试基础结构。

因此,我们无法精确确定PowerPepper的目标,但可以确定的是法律和咨询公司一直是该组织的目标。

 

 

 

预防和保护

为了防止PowerPepper成功执行、传递以及受到相关感染链的侵害,我们不得不强调以下标准防御措施:

  • 内容托管者可以在法规允许的情况下定期扫描托管文件中的恶意内容。他们可以使用端点保护软件和流量监视来保护其托管基础结构。他们还可以通过客户端网络地址过滤、多因素身份验证(MFA)和身份验证日志审核,对权限和远程访问提供堆栈保护。

  • 网站所有者和编辑者需要经常更新其CMS后端以及相关的插件。他们还可以通过客户端网络地址过滤、MFA和检查所有后端端点上的访问日志记录,对权限和远程访问提供堆栈保护。

  • 企业IT服务需要使用强制执行策略来限制脚本引擎(即PowerShell)在用户计算机上的使用。他们需要在用户计算机和内容服务器上设置端点保护软件。它们应只允许向公司管理的解析器和中继发送DNS请求,同时在外围过滤HTTP和DNS流量。最后一点,他们需要培训员工不要打开来自未知发件人的电子邮件中的附件和链接。

  • 个人切勿打开从远程位置下载或附加到电子邮件的Windows快捷方式,打开附件或单击来自未知发件人的电子邮件中的链接,或启用未经验证来源的文档中的宏。

 

结论

DeathStalker开发了PowerPepper恶意软件并构建了相关的交付链,同时不断改进其工具以逃避检测。其使用的技术和技巧并没有特别复杂,但是事实证明,整合工具是非常关键的,该组织在这点上表现得很好。

 

这与我们之前对DeathStalker的了解是一致的,DeathStalker自2012年以来一直展示出持续攻击目标的能力,并且快速开发新的植入程序和工具。我们在2020年5月发现了PowerPepper植入程序,此后该恶意软件被不断的改进和调整。同时,自2020年8月我们发布上一篇有关DeathStalker的文章以来,我们还没有发现任何与Powersing相关的活动,但我们坚信发现了来自该组织的另一个未知的恶意软件。

 

DeathStalker是个值得关注的问题,我们分析了其各种恶意软件的受害者,并确定任何公司或个人都可以成为其恶意活动的目标,只要有人将目标传递给该组织并且他们感兴趣。幸运的是,对安全管理人员而言,DeathStalker迄今为止仅依靠一套相当有限的技术来设计其交付链,而实施应对策略对大多数组织来说是一个可以实现的目标。

 

 

IOC

文件哈希

IOC                  描述

A4DD981606EA0497BF9995F3BC672951   恶意Word文档(基于宏的交付链)

871D64D8330D956593545DFFF069194E   恶意Word文档(基于宏的交付链)

81147EDFFAF63AE4068008C8235B34AF   恶意Windows快捷方式(基于LNK的交付链)

DFC2486DE9E0339A1B38BB4B9144EA83   恶意Word文档(由基于LNK的交付链下载)

74D7DF2505471EADEB1CCFC48A238AEC   恶意CHM容器

5019E29619469C74F2B826535C5A8BD8   恶意CHM容器

B4790E70B1297215E0875CFC2A56648E   恶意CHM容器

3A6099214F474C1501C110CE66033F3C   恶意VBS加载程序

07308FBC3D10FD476F1898ECF6762437   恶意VBS加载程序

1F77FBE4702F787A713D394B62D27B42   恶意VBS加载程序

6E99F6DA77B0620E89F6E88D91198C32   恶意VBS加载程序

5D04D246F3E5DA6A9347EC72494D5610   恶意启动器LNK

BA7AE1C73A78D8DC4B3779BD6A151791   恶意启动器LNK

1DC2B849A858BC479B1EF428491E0353   恶意启动器LNK

9D4066C57C6E1602CE33F15DC7F3841B   PowerPepper隐写术图像(peppers)

6FF8A3D18A6EA930E87AC364379ECEC2   PowerPepper隐写术图像(peppers)

871D64D8330D956593545DFFF069194E   PowerPepper隐写术图像(peppers)

9CE299BBDD7FDBF9F30F8935C89D2877   PowerPepper隐写术图像(ferns)

34F086AE78C5319FB64BF1CAE8204D1B   PowerPepper隐写术图像(ferns)

 

文件路径

IOC                              描述

%PROGRAMDATA%Supportlicenseverification.vbs   恶意VBS加载程序

%PROGRAMDATA%Supportlicenseverify.vbs      恶意VBS加载程序

%PROGRAMDATA%MyPrinterNewFile.vbs        恶意VBS加载程序

%PROGRAMDATA%PrintersNewFile.vbs          恶意VBS加载程序

%APPDATA%MicrosoftWindowsStart MenuProgramsStartupSystem.lnk  

恶意启动器LNK

%PROGRAMDATA%MyPrinterWeb.lnk              恶意启动器LNK

%PROGRAMDATA%PrintersWeb.lnk             恶意启动器LNK

%APPDATA%RoamingMicrosoftWindowsStartMenuProgramsStartUpStartPrinter.url      恶意启动器URL

 


 

域和IP

IOC                    描述

allmedicalpro[.]com           PowerPepper C2 域

mediqhealthcare[.]com             PowerPepper C2域

gofinancesolutions[.]com         PowerPepper C2域

mailsigning.pythonanywhere[.]com     PowerPepper信令主机名(合法主机和根域)

mailsignature.pythonanywhere[.]com   PowerPepper信令主机名(合法主机和根域)

mailservice.pythonanywhere[.]com    PowerPepper信令主机名(合法主机和根域)

mailservices.pythonanywhere[.]com   PowerPepper信令主机名(合法主机和根域)

footersig.pythonanywhere[.]com     PowerPepper信令主机名(合法主机和根域)

globalsignature.pythonanywhere[.]com PowerPepper信令主机名(合法主机和根域)

  

 

URL

 

IOC

描述

hxxps://www.gsn-nettoyage[.]com/wp-snapshots/btoken.php

PowerPepper  Signaling主机名(合法但已泄露的网站)

hxxps://www.gsn-nettoyage[.]com/wp-snapshots/etoken.php

hxxps://www.gsn-nettoyage[.]com/wp-snapshots/1.docx

hxxps://www.gsn-nettoyage[.]com/wp-snapshots/Quote  16 db room.docx

恶意文件的下载位置(合法但遭到破坏的网站)

hxxps://outlookusers.page[.]link/

恶意文档下载位置(合法主机和根域)

hxxps://1drv[.]ws/w/s!AvXRHBXCKmvYdifkocKujNavvjY?e=hhuBV8

恶意文档的远程位置(合法的主机和根域)

hxxps://1drv[.]ws/w/s!AvXRHBXCKmvYdcbz1YwTJRkOxP4?e=u5wtbX

恶意文档的远程位置(合法的主机和根域)

hxxps://1drv[.]ws/w/s!AvXRHBXCKmvYd1921tVEMKWaCUs?e=MyoVNF

恶意文档的远程位置(合法的主机和根域)

hxxps://1drv[.]ws  /w/s!AvXRHBXCKmvYeFdjVtZN0Quljs4?e=dnA6GG

恶意文档的远程位置(合法的主机和根域)

hxxps://1drv[.]ws/w/s!AvXRHBXCKmvYeePNerfsAWK0qVY?e=e4SsYM

恶意文档的远程位置(合法的主机和根域)

hxxps://1drv[.]ws/w/s!AvXRHBXCKmvYejBpdekg1WUCM9M?e=UkhU10

恶意文档的远程位置(合法的主机和根域)

hxxps://1drv[.]ws/w/s!AvXRHBXCKmvYe1ulhtazjNVvCqY?e=WptVTC

恶意文档的远程位置(合法的主机和根域)

 

 

邮件地址

IOC                   描述 

[email protected][.]com  恶意鱼叉式网络钓鱼电子邮件发件人(合法的根域)

 

 

原文链接:

https://securelist.com/what-did-deathstalker-hide-between-two-ferns/99616/

 


本文始发于微信公众号(维他命安全):PowerPepper恶意软件分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: