疑似APT34的钓鱼邮件攻击

APT 2年前 (2022) admin
910 0 0

关键词

APT34、钓鱼邮件、恶意Excel

最近,FortiGuard的一位样本采集人员发现了一起这样的事件:它始于发给约旦外交官的鱼叉式钓鱼电子邮件,与许多类似的攻击一样,该电子邮件包含恶意附件,但该附件包含的并不是普通的恶意软件,该恶意软件具有与高级持续威胁(APT)相关的功能和技术。根据这次攻击中使用的技术,可以推断这是APT34发起的另一个攻击活动。文章的其余部分将分析与这封电子邮件相关的攻击链以及其与普通恶意软件不同的特征,例如DNS隧道和状态检查编程。

  • 受影响的平台:Microsoft Windows

  • 受影响的用户:目标Windows用户

  • 影响:从受感染的机器上收集敏感信息

  • 严重性级别:中

1. 鱼叉式网络钓鱼邮件


这次鱼叉式网络钓鱼攻击的目标是一名约旦外交官,发件人假装是同一政府机构IT部门的同事。

疑似APT34的钓鱼邮件攻击

图 1:鱼叉式网络钓鱼邮件
通过查看电子邮件的标题,我们可以确定该电子邮件来自机构外部。虽然它来自外部电子邮件地址,但它使用了IT部门员工的名字和姓氏。可能是为了验证原始电子邮件的真实性,或者是为了在IT部门内进行进一步分析,警惕的外交官最终决定将此邮件转发给真正的同事。正如电子邮件正文中所提到的那样,附件中的Excel文件确实包含一份需要目标外交官填写的确认表。
2. 恶意Excel文件


与其他恶意软件(如Emotet和QBot)通常使用的Excel MacroSheets不同,附件中的Excel文件包含一个恶意VBA(Visual Basic Application)宏。宏的攻击方法大致分为两种,第一种方法比较复杂,通常是恶意宏安装由Cobalt Strike或Metasploit等工具部署的stager实施攻击或者使用living-off-the-land技术来下载和执行第二阶段的二进制文件进而进行攻击。第二种方法则比较简单,宏只是简单地释放并运行恶意二进制文件。在本攻击中,宏使用就是第二种方法,这是本攻击与其他网络钓鱼攻击的相似之处。

疑似APT34的钓鱼邮件攻击

图 2:开始时的宏

此宏的独特技术之一是工作表可见性的切换。大多数涉及Excel的攻击不使用隐藏工作表,在使用隐藏工作表的情况下,隐藏表中通常包含恶意代码,在这种攻击中,一旦打开工作簿,两张工作表的可见性就会迅速切换。由于模拟器(例如免费的ViperMonkey)可能不支持所有Excel功能,所以隐藏工作表的一个可能原因是作为一种反仿真技术。
上图中的第16行和第17行被注释掉了,或许这些代码是用于测试,或者是其他诱饵文档所使用的功能,可以看到,其使用了TeamViewer(用于设备维护的远程访问和控制软件)。
细心的读者可能也注意到了上图中的第25行,第25行调用了一个与C2服务器进行通信的函数。

疑似APT34的钓鱼邮件攻击

图 3:连接C2服务器

如上图所示,与大多数恶意宏不同,此宏使用WMI(Windows Management Instrumentation)来ping C2服务器,而不是使用PowerShell或CMD等常用的工具。此外,该函数在宏执行期间被多次调用,它的基本功能是作为状态(State)监视器,跟踪攻击期间发生的情况。tMsg变量在攻击的不同阶段会发生变化,从而允许攻击者查看其网络日志以了解宏的状态。rds变量是一个随机的四位数字,在整个宏状态检查的过程中始终使用相同的四位数字。

表 1:宏状态

C2

Macro State

qwzbabz[four-digits].joexpediagroup[.]com

Macro start

qwzbbbz[four-digits].joexpediagroup[.]com

Connected successfully to task scheduler

qwzbaez[four-digits].joexpediagroup[.]com

Successfully created malicious PE file

qwzbbez[four-digits].joexpediagroup[.]com

Successfully created XML config file

qwzbcez[four-digits].joexpediagroup[.]com

Successfully created signed Microsoft PE  file

qwzbdez[four-digits].joexpediagroup[.]com

Double-check malicious PE file was  created

qwzbeez[four-digits].joexpediagroup[.]com

Successful manual execution of malicious  PE file

qwzafzz[four-digits].joexpediagroup[.]com

Begin task scheduler configuration for  persistence

qwzbbfz[four-digits].joexpediagroup[.]com

Successfully created scheduled task

如上表所述,该恶意Excel宏具有创建三个文件的能力,文件信息具体如下:
  • 恶意PE文件为:%LocalAppData%MicrosoftUpdateupdate.exe。

  • 配置文件为:%LocalAppData%MicrosoftUpdateupdate.exe.config。

  • 签名的PE文件为:%LocalAppData%MicrosoftUpdateMicrosoft.Exchange.WebServices.dll。

恶意软件作者再次选择以一种不常见的方式将这三个文件存储在Excel文件中。

疑似APT34的钓鱼邮件攻击

图 4:表单标题

Excel文件中存储的VBA宏包含了三个用户表单,每个用户表单都有一个标签,每个标签都有一个标题。如上图所示,标题中包含base64编码数据,Form1包含恶意update.exe文件,Form2包含配置文件,Form3包含正常的Microsoft PE文件。
恶意软件作者还通过使用Excel宏设置计划任务保持update.exe文件的持久性。

疑似APT34的钓鱼邮件攻击

图 5:计划任务

如上图所示,该任务名为MicrosoftUpdate,每4小时重复一次。该宏还使用已弃用的IdleSettings属性的功能,例如Duration(仅当计算机空闲十分钟时才启动任务)和WaitTimeout(确定等待空闲条件的时间)。此任务设置为允许20天完成,考虑到此电子邮件的日期并假设任务立即运行,那么该任务将至少运行到2022年5月16日。
除了前面提到的可见性切换技术之外,在这个宏还通过检查鼠标是否存在以逃避自动化分析,如果系统未连接鼠标,则宏不会创建三个文件中的任何一个。在某些情况下,鼠标确实不会连接到计算机上。第一种情况是如果计算机是远程控制的,则不一定需要鼠标,鼠标会安装在控制计算机上。第二种情况是如果分析系统只是处理和模拟Office文件,则不需要鼠标,它可以创建一个脚本来自动执行所有必要的操作。
本攻击中的恶意宏包含了在大多数攻击中不常用的几种技术,这表明恶意软件作者花费了大量的时间和精力来开发这部分攻击代码。在下一节中,我们将分析由该宏创建的文件的详细信息。

3. 释放的文件


正如前面提到的,此恶意Excel宏具有创建三个文件的能力。在本节中,我们将分别对这三个文件进行讨论,首先从两个良性文件开始。
第一个良性的签名文件被嵌入到Excel文件中,并释放到以下位置:%LocalAppData%MicrosoftUpdateMicrosoft.Exchange.WebServices.dll。另一个良性的文件被释放到 %LocalAppData%MicrosoftUpdateupdate.exe.config,其内容将用作配置数据,以下是其解码后的内容:

疑似APT34的钓鱼邮件攻击

图 6:配置数据

第三个文件是一个.NET二进制恶意软件,它与两个良性文件的存储位置相同,即%LocalAppData%MicrosoftUpdate,文件名为update.exe,包含着主要的有效载荷。
此恶意软件二进制文件和Excel宏都使用了状态的概念以及对执行流程中任何时间点发生的事情的跟踪,因此可以断定此恶意软件二进制文件与Excel宏都是由同一组织开发的。由于.NET是一种比VBA更强大的编程语言,因此恶意软件二进制文件可以使用更简单的方法保持状态更新。

疑似APT34的钓鱼邮件攻击

图 7:状态字典

上图显示了恶意软件定义的部分状态字典,根据执行流程和恶意软件所处的状态,恶意软件会引入一些延迟操作。

疑似APT34的钓鱼邮件攻击

图 8:延迟时间(以毫秒为单位)

这些延迟通过调用Sleep()函数实现,在.NET中,Sleep()接受以毫秒为单位的值。在某些情况下,恶意软件可以休眠6(DelayMinAlive) 到8(DelayMaxAlive)小时!
此恶意软件在某些状态下休眠,某些状态下与C2服务器通信,与Excel宏一样,它连接看似随机的子域名,实际上,它使用域名生成算法(DGA) 来计算子域名。

疑似APT34的钓鱼邮件攻击

图 9:DGA

恶意软件首先通过分配一个随机值给_AgentID来构建DGA,然后将该值作为种子输入到上图红框中的RandomMersenneTwister函数中,然后,它使用haruto字符串以及CharsDomain和CharsCounter变量中的字符串执行进一步的计算。生成子域名字符串后,恶意软件会随机选择三个域名中的一个进行连接(joexpediagroup[.]com、asiaworldremit[.]com 或 uber-asia[.]com)。
生成URL后,恶意软件的下一步是检查C2服务器的DNS数据。

疑似APT34的钓鱼邮件攻击

图 10:DNS

当向DNS服务器查询域名时,DNS服务器会返回一个指向所请求域名的IP地址。然后,恶意软件会检查IP地址的第一个八位字节,只有该值不小于128时才被视为有效,这个操作可能是为了过滤内网IP地址,例如本地环回地址127[.]0[.]0[.]1或内部子网10[.]0[.]0[.]0。上图中的第260-261 行用于定义字节数组DnsClass._ReceiveData,其大小为IP地址中其余的八位字节,例如,一个DNS测试服务器的配置为向任何DNS请求返回IP地址192[.]5[.]4[.]3,在这种情况下字节数组的大小为0x050403。在之后的恶意软件的执行流程中,来自DNS请求的数据用于定义TaskClass属性。

疑似APT34的钓鱼邮件攻击

图 11:DNS隧道

在上图中的第245行,TaskClass.ListData被设置为从DNS请求中接收到的数据,这表明该恶意软件正在DNS响应中接收任务,显然,该恶意软件使用DNS隧道与其C2服务器进行通信,而APT34历史上也曾使用DNS进行通信。
为此恶意软件定义了几种类型的任务。

疑似APT34的钓鱼邮件攻击

图 12:任务类型

该恶意软件能够获取DNS响应并在受感染的机器上创建任意文件,File和CompressedFile是用于创建文件的任务类型,其余任务类型用于向恶意软件发送后门命令,这些后门命令可以通过PowerShell或Windows CMD解释器执行。下表列出了其支持的后门命令:

表 2:后门命令

Command

Interpreter

Payload

1

PS

Get-NetIPAddress -AddressFamily IPv4 |  Select-Object IPAddress

2

PS

Get-NetNeighbor -AddressFamily IPv4 |  Select-Object “IPADDress”

3

CMD

whoami

4

PS

[System.Environment]::OSVersion.VersionString

5

CMD

net user

7

PS

Get-ChildItem -Path “C:Program  Files” | Select-Object Name

8

PS

Get-ChildItem -Path ‘C:Program Files  (x86)’ | Select-Object Name

9

PS

Get-ChildItem -Path ‘C:’ | Select-Object  Name

10

CMD

hostname

11

PS

Get-NetTCPConnection | Where-Object  {$_.State -eq “Established”} | Select-Object  “LocalAddress”, “LocalPort”, “RemoteAddress”,  “RemotePort”

12

PS

$(ping -n 1 10.65.4.50 | findstr /i ttl)  -eq $null;$(ping -n 1 10.65.4.51 | findstr /i ttl) -eq $null;$(ping -n 1  10.65.65.65 | findstr /i ttl) -eq $null;$(ping -n 1 10.65.53.53 | findstr /i  ttl) -eq $null;$(ping -n 1 10.65.21.200 | findstr /i ttl) -eq $null

13

PS

nslookup ise-posture.mofagov.gover.local  | findstr /i Address;nslookup webmail.gov.jo | findstr /i Address

14

PS

$(ping -n 1 10.10.21.201 | findstr /i  ttl) -eq $null;$(ping -n 1 10.10.19.201 | findstr /i ttl) -eq $null;$(ping -n  1 10.10.19.202 | findstr /i ttl) -eq $null;$(ping -n 1 10.10.24.200 | findstr  /i ttl) -eq $null

15

PS

$(ping -n 1 10.10.10.4 | findstr /i ttl)  -eq $null;$(ping -n 1 10.10.50.10 | findstr /i ttl) -eq $null;$(ping -n 1  10.10.22.50 | findstr /i ttl) -eq $null;$(ping -n 1 10.10.45.19 | findstr /i  ttl) -eq $null

16

PS

$(ping -n 1 10.65.51.11 | findstr /i ttl)  -eq $null;$(ping -n 1 10.65.6.1 | findstr /i ttl) -eq $null;$(ping -n 1  10.65.52.200 | findstr /i ttl) -eq $null;$(ping -n 1 10.65.6.3 | findstr /i  ttl) -eq $null

17

PS

$(ping -n 1 10.65.45.18 | findstr /i ttl)  -eq $null;$(ping -n 1 10.65.28.41 | findstr /i ttl) -eq $null;$(ping -n 1  10.65.36.13 | findstr /i ttl) -eq $null;$(ping -n 1 10.65.51.10 | findstr /i  ttl) -eq $null

18

PS

$(ping -n 1 10.10.22.42 | findstr /i ttl)  -eq $null;$(ping -n 1 10.10.23.200 | findstr /i ttl) -eq $null;$(ping -n 1  10.10.45.19 | findstr /i ttl) -eq $null;$(ping -n 1 10.10.19.50 | findstr /i  ttl) -eq $null

19

PS

$(ping -n 1 10.65.45.3 | findstr /i ttl)  -eq $null;$(ping -n 1 10.65.4.52 | findstr /i ttl) -eq $null;$(ping -n 1  10.65.31.155 | findstr /i ttl) -eq $null;$(ping -n 1  ise-posture.mofagov.gover.local | findstr /i ttl) -eq $null

20

PS

Get-NetIPConfiguration | Foreach  IPv4DefaultGateway | Select-Object NextHop

21

PS

Get-DnsClientServerAddress -AddressFamily  IPv4 | Select-Object SERVERAddresses

22

CMD

systeminfo | findstr /i  “Domain”

该恶意软件实际上缺少命令6,这些命令无论是执行上传文件还是后门命令,都会有某种输出,然后使用.NET的压缩模式对该输出进行格式化和压缩,在结果用base32编码后,这个新结果然后被合并到DGA中。其中Base32也是APT34曾经使用过的编码方案。

疑似APT34的钓鱼邮件攻击

图 13:DNS数据泄露

上图展示了恶意软件泄露数据的方式,它可能看起来像网络日志中的简单DNS请求,但泄露的数据实际上是内置在DNS请求中的。
随着此恶意软件的开发工作的增加,它似乎不像其他隐蔽的信息窃取者那样执行一次然后自行删除。也许是为了避免触发任何行为检测,该恶意软件没有增加任何维持持久性的方法,相反,它依靠Excel宏通过计划任务的方式创建持久性。由于Excel是带签名的二进制文件,因此某些行为检测引擎可能会漏报这种维护持久性的方式。然而,使用计划任务作为持久性机制的问题在于,它存在多个自身副本同时运行的风险,为了避免这个问题,恶意软件创建了一个互斥锁,互斥体(互斥对象)是创建的程序对象,因此多个程序线程可以轮流共享同一资源。在最基本的定义中,它只是一种锁机制,如果系统上已经存在一个值为726a06ad-475b-4bc6-8466-f08960595f1e的互斥锁,则意味着受感染的计算机上已经存在该恶意软件的实例,因此,如果计划任务启动了恶意软件的另一个副本,恶意软件会检测到互斥锁,并立即终止。
4. C2服务器


该恶意软件能够与三个域名进行通信:

  • uber-asia[.]com

  • joexpediagroup[.]com,Excel宏与此域名进行通信

  • asiaworldremit[.]com

(1)Uber-asia[.]com

该域名注册于2022年2月27日,它可能是在模仿亚洲优步拼车服务。根据被动DNS记录,该域名目前已经解析为127[.]0[.]0[.]1。但VirusTotal记录了该DNS的相关历史信息。

疑似APT34的钓鱼邮件攻击

图 14:Virustotal DNS结果

子域名似乎是DGA生成的,IP地址的第一个八位字节大于128,其余三个八位字节定义要执行的命令的大小,目前其他的DNS数据已经无法获取,这表明恶意软件运营人员正在密切监视此C2服务器,并且只有在必要时才会激活它。

(2)Joexpediagroup[.]com

该域名注册于2022年1月20日,它可能在模仿约旦的Expedia travel。2022年4月20日之后,该域名也开始解析为127[.]0[.]0[.]1。在此之前,此域名解析为45[.]11[.]19[.]47。此C2服务器还打开了SSH对应的22端口,我们的Fortinet遥测系统检测到有人从约旦连接到该IP地址。

(3)Asiaworldremit[.]com

与第一个C2服务器一样,该域名注册于2022年2月27日,它可能是模仿WorldRemit for Asia。2022年4月19日左右,该域名也开始解析为127[.]0[.]0[ .]1。在此之前,此域名解析为193[.]239[.]84[.]207。NSO组织也曾在Pegasus间谍软件中使用该IP地址,目前该IP地址也已被APT34、OilRig、Helix Kitten以及GoziIFSB组织使用过。此外,它也被用作VPN地址。被动DNS记录表明该IP地址当前托管了几个名称可疑的域名,其中一些如下表所示:

表 3:假域名

Registered Domain

Attempting to masquerade as

astrazeneeca[.]com

AstraZeneca

astrazencea[.]com

AstraZeneca

hsbcbkcn[.]com

HSBC Bank China

valtronics-ae[.]com

Valtronics AE

ntu-sg-edu[.]com

Nanyang Technological University  Singapore

theworldbank[.]uk

World Bank Group

coinbasedeutschland[.]com

Coinbase for Germany

cisco0[.]com

Cisco

该恶意软件使用的三个C2域名似乎与该IP地址上的其他域名具有相似的命名约定。
5. 结论


开发此攻击所付出的精力远高于普通的网络钓鱼邮件攻击活动,因此我们认为其属于APT攻击的水平。攻击者一开始就冒充有效用户,并保持电子邮件简短而没有任何语法错误。此后,他们继续使用具有高级技术的Excel宏,并使用鼠标检查和工作表可见性切换技术实现反分析功能。
虽然状态编程很少用于恶意软件,但在此攻击中,Excel宏和恶意软件都利用了状态检测编程。确认恶意软件成功运行后,其会休眠6-8小时,一个可能的原因是攻击者希望外交官在早上打开鱼叉式网络钓鱼邮件,然后在其下班后进行攻击操作。
虽然使用DNS隧道进行C2通信并不是什么新技术,但在实践中很少见。攻击者的后门还支持非常多的命令,从表面上看,攻击者做了相关调查,因为从他们的后门命令可以看出他们已经事先了解了目标的内部网络基础设施,这进一步表明攻击者很可能在进行鱼叉式钓鱼尝试之前,已经在其他地方获得了有限的访问权限。
攻击者三分之二的C2服务器似乎受到了严格的控制,他们只是在特定的时间开展攻击活动。第三个C2服务器的域名已经被一些攻击组织使用过,这使得难以将其归因到特定的APT组织,但从收集的证据来看,此次攻击活动是APT34发起的。通过以上的分析证明他们拥有渗透政府网络所需的资源,并且能够使用更先进的技术。

该恶意软件使用的三个C2域名似乎与该IP地址上的其他域名具有相似的命名约定。
5. 攻击指标


Files

Indicator

SHA256

Confirmation Receive Document.xls

82A0F2B93C5BCCF3EF920BAE425DD768371248CDA9948D5A8E70F3C34E9F7CCA

Microsoft.Exchange.WebServices.dll

7EBBEB2A25DA1B09A98E1A373C78486ED2C5A7F2A16EEC63E576C99EFE0C7A49

update.exe.config

C744DA99FE19917E09CD1ECC48B563F9525DAD3916E1902F61B79BDA35298D87

update.exe

E0872958B8D3824089E5E1CFAB03D9D98D22B9BCB294463818D721380075A52D

Other

Indicator Value
Mutex 726a06ad-475b-4bc6-8466-f08960595f1e
C2 domain joexpediagroup[.]com
C2 domain asiaworldremit[.]com
C2 domain uber-asia[.]com

Mitre TTPs

Initial Access
T1566.001 Spearphishing
Execution
T1059.001
PowerShell
T1059.003 Windows Command Shell
T1053.005 Scheduled Task
T1204.002 Malicious File
T1047 Windows Management Instrumentation
Persistence
T1053.005
Scheduled Task
Defense Evasion
T1480 Execution Guardrails
Discovery
T1087.001
Local Account
T1083
File and Directory Discovery
T1049 System Network Connections Discovery
Command and Control
T1071.004 DNS
T1132.002 Non-Standard Encoding
T1568.002 Domain Generation Algorithms
Exfiltration
T1041 Exfiltration Over C2 Channel


END

参考链接:https://www.fortinet.com/blog/threat-research/please-confirm-you-received-our-apt


编辑|韩高奎

审校|何双泽、金矢

本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。联系信息进入公众号后点击“关于我们”可见。

疑似APT34的钓鱼邮件攻击

原文始发于微信公众号(国家网络威胁情报共享开放平台):疑似APT34的钓鱼邮件攻击

版权声明:admin 发表于 2022年5月25日 下午7:44。
转载请注明:疑似APT34的钓鱼邮件攻击 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...