针对美国智库、非盈利组织及公共部门的攻击事件

 

一、前言

路透社最近报道了针对全球各类目标的一次黑客攻击活动。在路透社相关报道发表之前,微软研究人员已经在密切跟踪这个攻击组织。

根据我们传感器收集到的数据,此次攻击活动主要针对的是公共部门机构和非政府组织,如智库和研究中心等,但也包括教育机构以及石油、天然气、化学、酒店领域的私营企业。

使用Microsoft Threat Protection解决方案的客户能免受此次攻击影响。Microsoft Threat Protection采用了基于行为的防护机制,能够在早期阶段阻止恶意活动。Office 365 Advanced Threat Protection能够拦截邮件中的恶意URL,阻止基于邮件的攻击活动(也能处理首次发现的样本)。与此同时,Windows Defender Advanced Threat Protection也能通过大量告警机制揭露攻击者在攻击环节中使用的各种技术。

第三方安全研究人员认为此次攻击活动由APT29(即CozyBear)所主导,该组织与我们标记的YTTRIUM攻击组织有较大重叠。虽然分析人员非常严谨,但我们尚未找到足够的证据将此活动与YTTRIUM联系在一起。

无论如何,由于受害者身份特殊,并且我们能看到国家级攻击活动的影子,因此微软将此次威胁事件通知了数百个组织中上千个潜在的受害者。作为Defending Democracy Program的一部分,微软鼓励满足条件的组织参与Microsoft AccountGuard,这项服务能帮助容易成为攻击目标的客户免受网络安全威胁影响。

 

二、攻击概览

此次攻击活动于11月14日早晨开始,攻击目标似乎集中在与政策制定、政治事务或者在该领域有一定影响力的组织。

图1. 钓鱼攻击目标分布图

虽然攻击目标遍布全球,但主要集中在美国,特别是华盛顿特区及周边区域。其他目标还位于欧洲、香港、印度以及加拿大。

图2. 钓鱼攻击区域分布图

钓鱼邮件内容伪装成来自OneDrive的共享通知,如路透社报道中提到的,攻击者伪装成在美国国务院工作的人员身份。如果受害人点击了钓鱼邮件中的链接,就会触发攻击链,最终下载并被植入DLL后门,使攻击者能够远程访问收件人的计算机。

图3. 攻击链

 

三、技术分析

投递方式

攻击活动中使用了钓鱼邮件,伪装成来自OneDrive的文件共享通知:

图4. 钓鱼邮件内容

邮件中包含指向合法网站的某个链接,但该网站已经被攻击者成功入侵:

hxxps://www.jmj.com/personal/nauerthn_state_gov/TUJE7QJl[random string]

链接中使用的随机字符串很可能用于识别点击该链接的不同用户。然而,我们观察到的所有样本使用的都是同一个链接,指向同一个网站:

hxxps://www.jmj.com/personal/nauerthn_state_gov/VFVKRTdRSm

当用户点击该链接时,就会收到包含恶意LNK文件的一个ZIP压缩文档。一次攻击中使用的所有文件都采用相同的文件名,如ds7002.pdfds7002.zip以及ds7002.lnk

后门安装

LNK文件为攻击的第一阶段,该文件会执行经过混淆的一个PowerShell命令,从LNK文件中释放出经过base64编码的payload,payload数据从文件0x5e2be偏移地址开始,大小为16,632个字节。

图5. LNK文件中的内容

这个payload也是经过高度混淆的一个PowerShell脚本,也会被解码运行:

图6. 解码后的第二个脚本

第二个脚本会从.LNK文件中提取处另外2个资源:

  • ds7002.PDF(PDF诱饵文件)
  • cyzfc.dat(第一阶段植入后门)

命令控制

PowerShell脚本会将第一阶段DLL释放到%AppData%\Local\cyzfc.dat,这是一个64位DLL程序,具有一个导出函数:PointFunctionCall

随后,PowerShell脚本调用rundll32.exe来执行cyzfc.dat。第一阶段的命令及控制(C2)服务器地址为pandorasong[.]com(IP为95.216.59.92),连接成功后,cyzfc.dat会执行如下操作,开始安装最终payload:

1、为第二阶段payload分配一个ReadWrite页面;

2、以资源形式提取第二阶段payload;

3、从第一个payload的0xEF偏移处提取头部信息;

4、将头部数据与从0x12A地址开始的资源数据拼接起来;

5、使用循环异或(ROR1)方式,解密第二阶段payload,初始秘钥为0xC5

第二阶段payload实际上是Cobalt Strike(一个商用渗透测试工具)的一个实例,会执行如下操作:

1、定义一个本地命名管道,格式为\\.\pipe\MSSE-<number>-server,其中<number>为0到9897之间的一个随机数;

2、将payload通过XOR算法解密到一个新的RW内存区域,这次XOR秘钥非常简单:每4个字节使用0x7CC2885F来解密;

3、将这段区域设置为RX标志;

4、创建一个线程,开始运行paylaod。

将全局数据写入管道的过程实际上是写入了第三个payload,这个payload经过XOR加密处理,加密方式与数据读取方式相同。payload解密后会得到一个PE文件,文件头为Meterpreter头。恶意软件会解析PE头部中包含的指令,将控制权移交给反射加载器:

第3个payload加载成功后会连接C2服务器,C2服务器地址已硬编码到PE文件的配置信息区域中,而配置信息会在第3个payload运行时异或解密:

配置信息中主要包含的是C2信息:

CobaltStrike是一个功能丰富的渗透测试攻击,可以为远程攻击者提供各种功能,比如提升权限、获取用户输入信息、通过PowerShell或者WMI执行任意命令、侦察踩点、通过各种协议与C&C服务器通信以及下载并安装其他恶意软件等。

 

四、缓解措施

 

Windows Defender ATP可以检测与攻击相关的已知文件系统及网络特征。此外,也会根据行为来检测LNK文件相关操作。如果看到以下告警信息,则表明当前环境中存在攻击行为:

  • 检测到高级威胁特征
  • 检测到与高级威胁有关的网络活动
  • 经过签名的程序已执行低信誉度任意代码
  • 打开可疑的LNK文件

网络防护机制可疑阻止连接到可疑域名及IP地址的行为。大家也可以使用如下attack surface reduction(攻击面减少)规则来阻止与此次攻击活动关联的恶意行为:

Block executable files from running unless they meet a prevalence, age, or trusted list criteria

通过Windows Defender Security Center,安全运营团队可以调查这些告警信息,分析主机、用户及攻击事件视图,跟踪端到端攻击活动。在自动化调查及响应功能、威胁分析、高级搜索及自定义检测的帮助下,安全运营团队能够保护网络环境免受此类攻击影响。大家可以注册使用免费版Windows Defender ATP,体验针对高级攻击威胁的防护机制。

可以使用如下高级搜索查询语句,搜索网络环境中是否存在此类攻击活动:

//Query 1: Events involving the DLL container
let fileHash = "9858d5cb2a6614be3c48e33911bf9f7978b441bf";
find in (FileCreationEvents, ProcessCreationEvents, MiscEvents, 
RegistryEvents, NetworkCommunicationEvents, ImageLoadEvents)
where SHA1 == fileHash or InitiatingProcessSHA1 == fileHash
| where EventTime > ago(10d)

//Query 2: C&C connection
NetworkCommunicationEvents 
| where EventTime > ago(10d) 
| where RemoteUrl == "pandorasong.com" 

//Query 3: Malicious PowerShell
ProcessCreationEvents 
| where EventTime > ago(10d) 
| where ProcessCommandLine contains 
"-noni -ep bypass $zk=' JHB0Z3Q9MHgwMDA1ZTJiZTskdmNxPTB4MDAwNjIzYjY7JHRiPSJkczcwMDIubG5rIjtpZiAoLW5vdChUZXN0LVBhdGggJHRiKSl7JG9lPUdldC1DaGlsZEl0" 

//Query 4: Malicious domain in default browser commandline
ProcessCreationEvents 
| where EventTime > ago(10d) 
| where ProcessCommandLine contains 
"https://www.jmj.com/personal/nauerthn_state_gov" 

//Query 5: Events involving the ZIP
let fileHash = "cd92f19d3ad4ec50f6d19652af010fe07dca55e1";
find in (FileCreationEvents, ProcessCreationEvents, MiscEvents, 
RegistryEvents, NetworkCommunicationEvents, ImageLoadEvents)
where SHA1 == fileHash or InitiatingProcessSHA1 == fileHash
| where EventTime > ago(10d)

以上规则查询的是过去10天内的安全事件,大家可以根据实际情况,修改EventTime的值。

 

五、IOC

文件(SHA-1):

ds7002.ZIP: cd92f19d3ad4ec50f6d19652af010fe07dca55e1
ds7002.LNK: e431261c63f94a174a1308defccc674dabbe3609
ds7002.PDF (PDF诱饵文件): 8e928c550e5d44fb31ef8b6f3df2e914acd66873
cyzfc.dat (第一阶段): 9858d5cb2a6614be3c48e33911bf9f7978b441bf

URL:

hxxps://www.jmj[.]com/personal/nauerthn_state_gov/VFVKRTdRSm

C&C服务器:

pandorasong[.]com (95.216.59.92) (第一阶段C&C服务器)
(完)