导语:来自CSE Cybsec Z-Lab的研究人员分析了一系列新的恶意软件,这些恶意软件是APT28组织开展的一项新的间谍活动的一部分。

一、简介

最近,一系列新的恶意软件样本被提交到主要的在线沙箱。我们注意到一些提交给Virus Total的样本被一些专家归因溯源到俄罗斯APT28组织。

APT28组织(又名Fancy Bear,Pawn Storm,Sednit,Sofacy,和Strontium)至少从2007年以来一直活跃,针对全球的政府、军事和安全组织。该组织还参与了针对2016年美国总统选举的一系列攻击。

在研究人员DrunkBinary(Twitter ,@DrunkBinary)的帮助下,我们获得了一组样本,与我们拥有的样本进行比较,以发现是否存在臭名昭着的APT28后门的新变种X-Agent。

我们所分析的攻击是多阶段的,用Delphi编程语言(APT28在其他行动中使用的语言)编写的初始dropper恶意软件从Internet下载第二阶段有效载荷并执行它。有效载荷使用HTTPS协议与服务器通信,因此无法窃听其生成的恶意流量。

我们还分析了另一个恶意DLL,它显然与以前的样本无关,但与俄罗斯APT组织的其他有效载荷有许多相似之处。这个恶意软件对我们来说特别有意思,因为它与名为“marina-info.net”的命令和控制服务器通联,明确提到意大利军事公司Marina Militare。这导致我们猜测恶意代码是针对意大利Marina Militare或与之相关的其他实体而开发的。

最后一个DLL似乎与之前的样本完全没有关联,但进一步的调查使我们相信它是APT28在此行动中用来攻陷目标系统的附加组件。

APT28拥有丰富的武器库,由大量模块组成,包括我们分析的X-Agent的dll组件。X-Agent是注入受害计算机的持久有效载荷,几乎适用所有计算机操作系统,也可以通过添加开发的新ad-hoc组件来增强特定网络攻击。在我们的案例中,当新的攻击行动正在进行时,该组件已提交到在线沙箱。我们不能排除APT组织开发后门以针对特定组织,包括意大利Marina Militare或任何其他承包商。在分析中,我们无法将恶意dll文件直接连接到X-Agent样本,但相信它们都是APT28支持的协调良好的攻击的一部分。

连接到marina-info.net的DLL可能是仅在特定条件发生时触发的最后阶段的恶意软件,例如当恶意软件感染具有属于特定范围的IP地址的系统时。

二、发现的样本

在本节中,我们将报告调查中分析的所有样本。

“87bffb0370c9e14ed5d01d6cc0747cb30a544a71345ea68ef235320378f582ef.exe”

2.png

“15486216ab9c8b474fe8a773fc46bb37a19c6af47d5bd50f5670cd9950a7207c.exe”

3.png

“e7dd9678b0a1c4881e80230ac716b21a41757648d71c538417755521438576f6.exe”

4.png

“e53bd956c4ef79d54b4860e74c68e6d93a49008034afb42b092ea19344309914.exe”

5.png

“sdbn.dll”

6.png

“upnphost.exe”

7.png

三、四个可执行文件背后隐藏着相同的恶意软件

在我们调查的新攻击行动中,上一节中列出的前四个可执行文件被用作感染媒介。样本显示为不同的有效载荷,但进一步的基本静态分析使我们发现它们是相同的恶意软件样本:

· 前两个样本是相同的,唯一的区别是第二个样本使用UPX工具打包。解压缩后,我们发现了相同的有效载荷以及与第一个样本相同的散列

· 第三个和第四个也是相同的,不同之处在于第四个是使用UPX工具打包的。

· 我们有两个不同的样本,然后能够从第二个系列中提取2个文件:经典的“.lnk”文件和“jpg”文件。

图1 – 提取的文件

这些文件似乎是经典的img和链接,但实际上jpg文件是第二个示例的可执行文件,并且在链接文件中隐藏了以下命令:

%systemroot%\System32\cmd.exe    /c    copy    12-033-1589(1).rar    
C:\Users\Public\12-033-1589(1).exe    ||    copy    12-033-1589(2).jpg    
C:\Users\Public\12-033-1589(1).exe & start C:\Users\Public\12-033-1589(1).exe

1. upnphost.exe

执行该文件后,它会联系IP 45.124.132.127,定期发送在操作系统上使用命令行“cmd.exe / c tasklist&systeminfo”收集的一些信息。

根据WHOIS记录,该服务器位于香港:

使用POST方法通过HTTPS通信将信息发送到命令和控制服务器。

图2 – 嗅探的POST流量

一旦恶意软件将有关主机配置的信息发送到C2,它将下载另一个文件upnphost.exe,该文件是最终的有效载荷,存储路径为“%APPDATA%\Local\Temp”。

此外,可执行文件通过设置注册表项来实现持久性机制:

图3 – 持久性机制的注册表项

另一个文件与位于拉脱维亚的另一个命令和控制服务器46.183.218.37通联:

图4 – 关于46.183.218.37的Whois信息

2.我们提交给VirusTotal

我们还发现upnphost.exe文件是由我们提交给Virus Total的,可能是因为dropper实现了evasion技术。

为了分析dropper,我们修补了它。应用修补程序后,我们就能够分析恶意软件的完整恶意行为。

图5 – dropper的补丁点

恶意代码开始联系前面提到的命令和控制服务器并下载“upnphost.exe”文件。

下面是我们获取的在VirusTotal上提交的修补版本的结果:

图6  –  VirusTotal得分

3.AutoIt 脚本

使用AutoIt语言编写的脚本管理与命令和控制服务器的通信。此脚本作为资源嵌入upnphost.exe文件中,并在启动时与HTTPS中的其他服务器通信,发送有关受害者计算机的一些信息。

图7 – 一段反编译代码

上图显示了一段AutoIt脚本的反编译代码,其中IP地址和路径以及用户代理使用十六进制编码伪装。

解码参数后,我们获取了用于通联C&C的IP地址,路径和用户代理,并发回有关目标系统的信息。

8.png

另一个特点是提供HTTPS通信代码的函数的名称。其名称为checkupdate(),似乎恶意软件被指示定期联系C&C等待新命令。

下图显示了多阶段攻击:

图8 – 多阶段攻击方案

4.sdbn.dll

此文件是从威胁情报平台获取的,并被标记为APT28样本,如同之前的文件。目前尚不清楚此样本是否与之前的样本相关联,但它可能属于同一个感染行动,因为它是在几个在线沙箱中的同一时间段上传的。

与之前文件的另一个共同特点是,它是用Delphi编程语言编写的,就像四个初始dropper文件一样。很难找到用Delphi语言编写的恶意软件,但其他安全公司之前进行的调查证实,APT28组已经在过去的攻击行动中使用过该语言编写的恶意软件。

从sdbn.dll的分析中得出的最重要的证据是,它联系了域名:marina-info.net,明确提到了意大利语Marina Militare。该域名已解析为位于荷兰的IP 191.101.31.250:

图9 – 关于“marina-info.net”的Whois

在本样本中,也通过使用HTTPS协议来执行与C2的通信。我们发现了至少有三条与自定义用户代理标头联系的路径:

9.png

表1 – 发现的URL和路径

与upnphost.exe恶意软件一样,此可执行文件会定期联系命令控制服务器等待新命令。但是,我们发现服务器始终响应403状态代码,对恶意软件本身发送的请求也是如此。

图10 – 来自C2C的响应

这种行为可能是服务器实施的服务器端控制的结果,只允许来自特定IP地址的请求,或者只是被攻击者故意禁用,可能是因为他们认为已经被受害者或安全人员发现。它可能是攻击者实施的安全机制,应对安全公司进行严格的调查。此外,我们决定进一步调查VirusTotal上这个新文件的检测率。当我们开始分析它时为零,这意味着威胁完全未被发现,目前恶意代码的检测率为35/65。

四、攻击地图

在本节中,我们展示威胁图,其中包含我们分析的样本所通联的各种IP地址。

图11 – 威胁地图

正如我们所看到的,黑客组织所覆盖的攻击面非常宽:欧洲有两个不同的C2C,另一个在中国,用于误导分析,这会在重建完整的网络攻击时造成混乱。

Yara rules

import "pe"
rule Dropper_APT28XAGENTJuly2018 {
 meta:
 description = "Yara Rule for dropper of APT28 XAGENT
July2018"
 author = "CSE CybSec Enterprise - Z-Lab"
 last_updated = "2018-07-13"
 tlp = "white"
 category = "informational"
 strings:
 $a = {8B 45 FC 8B 10 FF}
 $b = {33 2E 34 2D 31 39}
 condition:
 (pe.number_of_sections == 9
 and pe.sections[3].name == ".bss"
 and all of them)
 or (pe.number_of_sections == 3
 and pe.sections[0].name == "UPX0"
 and pe.sections[1].name == "UPX1"
 and pe.number_of_resources == 70
 and pe.resources[61].type == pe.RESOURCE_TYPE_RCDATA
 and pe.resources[60].type == pe.RESOURCE_TYPE_RCDATA
 and pe.resources[59].type == pe.RESOURCE_TYPE_RCDATA)
}
rule FirstPayload_upnphost_APT28XAGENTJuly2018 {
 meta:
 description = "Yara Rule for APT28 XAGENT July2018 First
Payload"
 author = "CSE CybSec Enterprise - Z-Lab"
 last_updated = "2018-07-13"
 tlp = "white"
 category = "informational"
 strings:
 $a = {56 AB 37 92 E8}
 $b = {41 75 74 6F 49 74}
 condition:
 pe.number_of_resources == 26
 and pe.resources[19].type == pe.RESOURCE_TYPE_RCDATA
 and pe.version_info["FileDescription"] contains
"Compatibility"
 and all of them
}
rule SecondPayload_sdbn_APT28XAGENTJuly2018 {
 meta:
 description = "Yara Rule for APT28 XAGENT July2018 Second
Payload sdbn.dll"
 author = "CSE CybSec Enterprise - Z-Lab"
 last_updated = "2018-07-13"
 tlp = "white"
 category = "informational"
 strings:
 $a = {0F BE C9 66 89}
 $b = {8B EC 83 EC 10}
 condition:
 pe.number_of_sections == 6
 and pe.number_of_resources == 1
 and pe.resources[0].type == pe.RESOURCE_TYPE_VERSION
 and pe.version_info["ProductName"] contains "Microsoft"
 and all of them
}
源链接

Hacking more

...