Almaq 是一种高度特定的恶意软体
Almaq 是一种专为 .NET 平台编写的高度特定的恶意软体,目标是两个特定的伺服器:一个文件系统伺服器,IP 为
150.200.11.101
,和一个 SQL 数据库伺服器,IP 为 150.200.12.1\MSSQLSERVER
。不幸的是,我们无法解析这两个
IP 地址,因此无法对受攻击的伺服器做出更进一步的推测,不过,我们相信它们可能是私人网路的一部分或使用某种白名单访问控制机制。这些推测来自于对 Almaq二进制档的分析,并在分析结尾进一步描述。
我们的假设是,Almaq的作者在网路上散播恶意二进制档,希望能感染其他计算机并用它们攻击上述伺服器,进而修改、窃取和销毁其上的数据。到目前为止,可能已经有超过 100台计算机受到感染。Almaq本身包含多个不同的文件和几个指挥控管(C&C)伺服器,这些组件通力合作,从已被感染的计算机对上述伺服器发起攻击。指挥控管伺服器主要负责将 Almaq文件和命令分发给受感染的计算机,Almaq 二进制档则利用内部目录结构和 150.200.11.101
的凭证、150.200.12.1
的数据表结构及其连接字串来攻击这两个伺服器。Almaq 二进制档可以从 150.200.11.101
窃取资讯并加密某些文件,还可以修改和查询
150.200.12.1
的数据,并可能导致长时间的服务拒绝攻击(DoS)。
Almaq 的指挥控管伺服器托管在公共云计算平台上,具体而言,是 azurewebsites.net
和
gearhost.com
。除了向受感染机器分发 Almaq文件和命令,指挥控管伺服器还用于存储来自受感染计算机和目标伺服器的被窃信息,并接受来自受感染机器的各种消息。
Almaq 由多个可执行文件和库文件组成,这些文件具有不同的功能,旨在实现在受害者计算机上的持久性,并从中攻击 150.200.11.101
和
150.200.12.1
伺服器。通常,执行的 Almaq 文件会从指挥控管伺服器下载其他 Almaq二进制档并在受害者的机器上执行。执行文件然后持续从受害者的机器攻击上述伺服器。Almaq 使用误导性的文件名,如 adobereader
、
printer
和 svchost
来藏匿其恶意行为。
将 Almaq 分割为模组
根据主要行为特征,大多数 Almaq 文件可以分为三个模组,标签为投放器、上传器和清除器。第一模组的二进制档通常会从其指挥控管伺服器下载所有其他 Almaq文件并在受害者的计算机上设置执行。该模组的二进制档也可以攻击运行在 150.200.12.1
的伺服器,设置其他 Almaq文件在受害者计算机上定期执行,甚至删除受感染计算机上的数据。
第二模组由具有上传器特征的文件组成。该模组中的二进制档在 150.200.11.101
的硬编码路径中查找一个特定文件,名为
AL_MASHREQ.exe
,或者在受害者的 C:\
磁碟中。如果找到了这个文件,则(或仅是该文件的路径)会被上传到指挥控管伺服器。不幸的是,我们无法追踪到此文件或在 Almaq的任何指挥控管伺服器上找到它。这个文件可能能为我们解释 Almaq 的目的提供更多线索。
最后一个模组的文件特征类似于清除器(恶意软体,会在未通知的情况下不可逆转地销毁文件)。该模组中的二进制档使用 AES-256 加密算法对存储在
150.200.11.101
的硬编码目录中的所有文件进行加密。
Almaq 是一种高度特定的恶意软体,它利用对两套系统配置和结构的深入了解来修改、窃取和销毁其上存储的数据。然而,因为我们无法追踪到
AL_MASHREQ.exe
文件,且 Almaq 的某些功能似乎有些不寻常和不合情景,我们怀疑 Almaq是否是以成为一种严重的恶意软体为目的而开发的。
指挥控管与通信
如前所述,Almaq 拥有托管在公共云计算平台上的指挥控管伺服器。Almaq的指挥控管伺服器可以分为两个类别:允许文件、命令和数据库命令下载的伺服器(为符合 Almaq 命名惯例,我们将数据库命令称为 scripts
)和允许脚本操作的伺服器。伺服器透过简单物件存取协议(SOAP)进行沟通,其支持的操作由 Web 服务描述语言(WSDL)描述。
第一类别的指挥控管
我们追踪到三个允许文件、命令和脚本下载的伺服器,其中一个仍然在运作,其余两个已经失效:
Url| 状态
—|—
http://servicesx.gearhostpreview[.]com/data.asmx | 活跃
http://systemservicex.azurewebsites[.]net/data.asmx | 不活跃
http://adobereader.azurewebsites[.]net/data.asmx | 不活跃
连接到这些伺服器后,将下载一整套支援的操作清单,供 Almaq 文件利用。这些操作提供了例如命令行命令、连接字串、选择命令、SQL数据库脚本和要下载的文件。
考虑到 http://servicesx.gearhostpreview[.]com/data.asmx
,Almaq 文件可以利用以下操作:
命令
ConfermScript
ConnectionString
ConnectionStringWell
ExecutedSelect
文件
LockList
Model
Response
脚本
Selectlist
SendMail
Set
设置
WellFiles
Saveimage
操作 **命令**
返回所有受感染计算机应执行的命令行命令。每条命令都有一个特定的 ID 编号。
http://servicesx.gearhostpreview[.]com/data.asmx
的完整命令清单:
ID| 命令
—|—
5| getmac
7| C:\\ProgramData\\Comms\\svchost.exe
22| ping 150.200.12.1
23| IF EXIST C:\\AL_MASHREQ\\bin\\AL_MASHREQ.exe ECHOC:\\AL_MASHREQ\\bin\\AL_MASHREQ.exe exists.
24| IF EXIST \\\\150.200.11.101\\Backup\\Newfolder\\Update\\bin\\AL_MASHREQ.exe ECHO \\\\150.200.11.101\\Backup\\Newfolder\\Update\\bin\\AL_MASHREQ.exe exists.
25| IF EXIST C:\\AL_MASHREQ\\AL_MASHREQ.exe ECHOC:\\AL_MASHREQ\\bin\\AL_MASHREQ.exe exists.
26| IF EXIST C:\\AL_MASHREQ\\AL_MASHREQ.exe ECHOC:\\AL_MASHREQ\\bin\\AL_MASHREQ.exe exists.
44| del /A:H C:\\ProgramData\\Comms\\Search.exe
45| del /A:H C:\\ProgramData\\Comms\\SearchFile.exe
可以看出,命令 23 到 26 寻找 AL_MASHREQ.exe
文件,后续会详细讨论此文件。
操作 **文件**
包含要下载到受害者计算机的特定 Almaq 文件的 URL,然后再执行。从指挥控管伺服器获得的 Almaq 文件清单因伺服器而异。
来自 http://servicesx.gearhostpreview[.]com/data.asmx
的完整清单:
servicesx[.]gearhostpreview.com/Files/
Dll.exe
servicesx[.]gearhostpreview.com/Files/Microsoft.Win32.TaskScheduler.dll
servicesx[.]gearhostpreview.com/Files/
New Dll.exe
servicesx[.]gearhostpreview.com/Files/Newtonsoft.Json.dll
servicesx[.]gearhostpreview.com/Files/
prenter.exe
servicesx[.]gearhostpreview.com/Files/
Printer.exe
servicesx[.]gearhostpreview.com/Files/
Printr.exe
servicesx[.]gearhostpreview.com/Files/
Read me.bat
servicesx[.]gearhostpreview.com/Files/
security.exe
servicesx[.]gearhostpreview.com/Files/
Service.exe
然而,例如从已不活跃的 C&C 获得的文件
systemservicex[.]azurewebsites.net/Files/
SearchFile.exe
adobereader[.]azurewebsites.net/Files/
acrobat reader.exe
不在其中。
操作 **脚本**
返回 Almaq 文件在 SQL 数据库 150.200.12.1\\MSSQLSERVER
中运行的两个数据库脚本。这些脚本会修改和查询数据库。通过操作 **ConnectionString**
可以获得此数据库的连接字串。
受感染机器的数量
我们相信可以通过操作 **Settings**
获得受感染机器的数量。操作 **Settings**
返回受感染机器的信息记录,并赋予其名称。该记录包含受感染机器的名称及其 ID 等信息。Almaq 使用 .NET 的
Environment.MachineName
属性为受感染的机器命名,然而,如果提供一个新的名称,但该名称并无记录,操作 **Settings**
会为该名称创建一条新记录,并分配一个新的连续 ID 编号。因此,我们能够创建一台机器并将其命名为 machine_name ,并收到一个新的连续 ID为 190。然而,因为这样的 machine_name 与 machine_name_1 、 machine_name_2
等记录可以轻易生成,几乎任何人都能做到,因此数字 190 并未能提供关于真正受感染机器数的相关信息。
第二类别的指挥控管
我们追踪到一个允许脚本(数据库命令)操作的伺服器
Url| 状态
—|—
http://gcmedservice.azurewebsites[.]net/Scripts.asmx | 活跃
支持的操作为
Addscript AddscriptForpayer Confirm EditScript GetScripts ReadScriptScriptDelete ScriptReset ScriptUpdateState
脚本使用 AES-256 加密存储。
伺服器通信
这两类伺服器之间的通信由 AlMashreqService.dll
文件介导。这是一个 .NET文件,包含第一类别伺服器支持的所有操作的规范,并负责解密第二类伺服器的脚本。如前所述,脚本是加密存储的,然而,对所有脚本来说使用了相同的硬编码
AES-256 加密密钥和 IV。
不同的 Almaq 模组类型
大多数 Almaq 文件可以分为三个模组,标签为投放器、上传器和清除器。这些文件可以通过操作 Files
从指挥控管伺服器获得,每个指挥控管伺服器返回的 Almaq 文件清单略有不同。
上述所有二进制档的清单为:
Dll.exe
Microsoft.Win32.TaskScheduler.dll
New Dll.exe
Newtonsoft.Json.dll
prenter.exe
Printer.exe
Printr.exe
Read me.bat
security.exe
Service.exe
SearchFile.exe
acrobat reader.exe
。
将该清单分割为主要模组后,我们得到了:
投放器
: prenter.exe、Printer.exe、Printr.exe、acrobat reader.exe上传器
: Dll.exe、New Dll.exe、SearchFile.exe清除器
: security.exe
二进制档 Microsoft.Win32.TaskScheduler.dll 和 Newtonsoft.Json.dll 是有效的微软库,Almaq在其过程中使用。文件 Service.exe
会使位于 150.200.11.101
的 SQL 数据库服务中断,后续会进一步描述。
投放器
来自该模组的文件通常以常见计算机程序的名称命名(有时拼写错误),如 adobereader
、adobe
、Printer
、Prenter
、Printr
或 spoolsv
来掩饰其恶意行为。它们的主要目的在于从指挥控管伺服器下载并执行 Almaq 二进制档,但它们也能设置某些 Almaq 文件定期执行,修改和查询
150.200.12.1
的 SQL 数据库,执行上述命令行命令,以及删除受害者计算机上的文件。每项功能由不同的执行绪处理。
以下的代码片段显示了 spoolsv.exe
文件中 Main()
函数中的多个执行绪。
6fef864850bf8a603305370dc5f522366af6392946a8049647d1423a9a62461c
第一个执行绪 @object.DownloadFiles
负责下载其他 Almaq 二进制档。根据对 Almaq二进制档的分析,我们观察到,大多数样本下载的文件会保存到当前文件夹以及受害者计算机上的 C:\ProgramData\Comms
文件夹中。然而,对于某些样本,它们也可以保存到以下文件夹:
C:\ProgramData\Microsoft Visual studio
C:\Users\<userName>\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup
C:\Program Files\Microsoft Visual studio
C:\ProgramData\Microsoft
C:\Program Files\Adobe
所有下载的 Almaq 文件都通过修改
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
键添加到计算机的启动项目中。
执行绪 Database.Run
和 SelectClass.RunSelect
在 150.200.11.101
的 SQL数据库上执行从指挥控管伺服器接收的脚本和命令。我们能够从指挥控管伺服器获得一些脚本,但在没有对 Almaq 攻击上下文更深入的了解下,很难对其目的做出推测。
最后一个执行绪 Program.RunApp
寻找 C:\ProgramData\Comms\
文件夹中与执行的二进制档同名的文件,如果找到,则最多执行两到四次。
最后的两个函数 SchedulerClass.Run()
和 SchedulerClass.RunService()
设置某些 Almaq二进制档,以便定期执行。SchedulerClass.Run()
设置与执行的二进制档名称相同的二进制档,而
SchedulerClass.RunService()
则设置名为 Service.exe
的二进制档。
执行被设置在 C:\ProgramData\Comms\
文件夹中,并以 15 分钟的间隔每天触发。
以下的代码片段显示了 RunService()
函数,负责定期执行二进制档 Service.exe
。
6fef864850bf8a603305370dc5f522366af6392946a8049647d1423a9a62461c
一些 Almaq 二进制档还包括 @object.Start
执行绪,会试图通过解析 alhussienweb.ddns[.]net
URL来连接指挥控管伺服器。我们得到两个解析的 IP 地址——这可能是攻击者的 IP 地址,由埃及的一家电信公司 telecomegypt 提供。
IP| 解析日期| IP 位置
—|—|—
156.196.225.40
| 2019-04-30| 埃及,阿尔吉札,Te 数据
41.44.220.146
| 2019-04-27| 埃及,阿尔吉札,Te 数据
执行绪 FormatingClass.Format
也可能是某些 Almaq二进制档的一部分。它的唯一功能是删除受害者计算机上所有目录中的所有文件,这让我们感到困惑,因为这不符合 Almaq 的整体工作流程。
由于来自该模组的 Almaq 文件设置为执行许多其他 Almaq 二进制档,因此显而易见的问题是受害者在使用计算机时是否会注意到异常情况。Almaq并不试图隐藏其行动,且例如可以通过 Process Explorer 轻易检测到其存在。
以下屏幕截图是在执行名为 Printr.exe
的 Almaq 文件后拍摄的。所有显示的过程都是恶意的 Almaq 过程。
Printr.exe 的执行
d61b743aa7e5b50f2ebe3f5a4cd31ee97d51282ba083b7dc5265888f5797ab88
当 Almaq 二进制档遇到执行问题时,使用者可能会也会引起怀疑。例如,名为 security.exe
的过程的描述包含一个拼写错误
_SheardFolder_
,因此如果它遇到执行问题,则会出现如下弹出提醒,表明发生了异常情况。
Service.exe
Service.exe
文件对 150.200.12.1
的 SQL 数据库执行服务拒绝攻击(DoS),通过在隔离的事务中执行多个 SQL命令,包括 15 分钟的睡眠。可以通过 **LockList**
操作从 C&C 伺服器获取 SQL 命令。
来自 http://servicesx.gearhostpreview[.]com/data.asmx
的完整命令列表包括:
update web_payers set state=0
update top(10) sa_customer set stopped=isnull(Null,stopped)
update top(10) st_vendor_contracts setlast_update_by=isnull(Null,last_update_by)
update top(10) st_vendor set v_latitude=isnull(Null,v_latitude)
update top(10) company_plan_items set st_class=isnull(Null,st_class)
update top(10) plan_members set st_class=isnull(Null,st_class)
update top(10) st_employee set mob_push_flag=0
尽管这些命令不会摧毁数据库中的数据,但它们的重复执行造成的隔离事务会导致数据库无法服务。
每条命令都在 IsolationLevel.Serializable
的事务中执行,该隔离级别禁止其他用户在事务完成之前更新或插入该数据集的行。在此事务中,有一个 15 分钟的 Sleep()。当 Sleep()
结束后,整个执行绪又会再休眠 15 分钟,然后再次执行,这使得数据库反复无法提供服务。
以下代码片段显示了 Service.exe
文件的主要功能。
39f696883838d5ddc91f76fb8f1b547c20a9ef08e1f5e836bf64b7956e7644c3
上传器
适合此模组的文件通常以 Dll.exe
、New Dll.exe
、DllLiberary.exe
、svchost.exe
和
SearchFile.exe
命名。它们的主要功能是查找 AL_MASHREQ.exe
文件,无论是在受害者的计算机上还是在
150.200.11.101
上。如果找到了这个文件,Dll 和 svchost 的行为会有所不同,而 SearchFile
则仅上传其路径到 C&C 伺服器。尽管这两种类型的 Almaq 文件之间的合作看似合乎逻辑,但我们并未发现任何迹象表明 SearchFile
所存储的路径会被 Dll 和 svchost 文件以任何方式利用。
具体而言,Dll 文件和 svchost 寻找 AL_MASHREQ.exe
文件的路径有以下几个:
C:\AL_MASHREQ\bin\AL_MASHREQ.exe
150.200.11.101\Backup\New folder\Update\bin\AL_MASHREQ.exe
或
150.200.11.101\Backup\New folder\Update\AL_MASHREQ.exe
如果找到了这个文件,则会将其上传到 C&C 伺服器,并使用受害者的 GUID(由 .NET API Guid.NewGuid() 生成)。
下面的代码片段示例展示了 Dll.exe
文件的 Main()
函数。
04e363bd90dea1b18d6f3f4f3f92b00ce55ee1289c05eb575a0f7cd0ab138902
SearchFile
寻找受害者计算机上匹配 *MASHREQ.exe
模式的所有文件,并如果找到,则将包含该文件路径的消息发送到 C&C 伺服器。
清除器
该模组的二进制档名为 security.exe
,其主要功能是加密 150.200.11.101
上的某些文件。根据我们的分析,Almaq 的作者对
150.200.11.101
伺服器拥有深厚的私密知识,因为他们使用硬编码的凭证连接 150.200.11.101
,并在特定目录中搜索文件进行加密。
以下代码片段显示了 security.exe
Almaq 文件中的 Main()
函数。
081ea05b7476425189575ce5d30b941a61e252448cc8f8e5bc2a6c290d25d670
Almaq 对来自以下目录并在三年内创建的所有文件进行加密: 150.200.11.101\share\HMIS_Claims_Documents
150.200.11.101\share\HMIS_Members_Documents
150.200.11.101\share\HMIS_vendor_Documents
150.200.11.101\share\HMIS_Customer_Documents
150.200.11.101\share\CIS_patients_Documents
使用 AES-256 进行加密。该加密密钥是从 .NET API Guid.NewGuid() 派生的,对每个文件都是唯一的,并未被存储或发送到其他地方。
下面的代码片段显示了 security.exe
文件的主要功能。
081ea05b7476425189575ce5d30b941a61e252448cc8f8e5bc2a6c290d25d670
讨论
正如之前提到的,Almaq 包含多个具有不同功能的二进制档,这些档案通力合作,以实现在 150.200.11.101
上运行的文件系统伺服器和在
150.200.12.1\MSSQLSERVER
上的 SQL 数据库伺服器的攻击。尽管 Almaq文件的行为相当直接,但其攻击上下文并不完全清晰。攻击者拥有访问这两个伺服器所需的凭证,这引发了一个问题:为什么要分发 Almaq二进制文件,既然攻击者可以直接攻击这两个伺服器。这引起了我们关于这两个伺服器可能拥有排除攻击者的白名单访问控制机制的想法,因此攻击者希望感染一台被列入白名单的计算机。
另一种情况考虑到公共 IP 范围 150.200.0.0
–150.200.255.255
,该范围包括两个伺服器的 IP地址,并且由密苏里西部州立大学拥有。考虑到这一点,Almaq 可能是针对密苏里西部州立大学的攻击。然而,这看起来不太可能,因为可能攻击者的 IP地址位于埃及并注册在 telecomegypt 。
又一种情况可能是,这两个受攻击的 IP 地址并不是公共的,而是某个内部网络的一部分,攻击者无法访问该内部网络。由于这两个 IP 地址
150.200.11.101
和 150.200.12.1
看起来过于美观,像是经人为编码而成(用非专业术语来说,许多数字都是 10的倍数),我们推测这两个地址是硬编码的。这解释了为什么在私有网路中使用来自公共 IP 范围的地址,因为预期的解决方案是使用来自私有范围的 IP地址。这种私有网络的一个例子可能是某个公司的内部网络,而攻击者可能是何时拥有凭证的前员工,但却无法再访问该网络。
受侵入的指标 (IoC)
样本
文件| SHA-256
—|—
AlMashreqService.dll|
4098d92ead72b1b2749e2d58102327f670a1db2d46c6e74eefbbed7f68167265
AlMashreqService.dll|
9cbc09dd569942582a6ec3d94fb5c9fc70c1e43282dc36dcc8cdf8d0a5131235
acrobat reader.exe|
8b4baa073900f9602845694f6d1f9358a196ea0b7dfc06ad320f9c162bff0141
adobe.exe| 945426553022101b7a75c6b5cad3d780363193b5412ea077257873b1971dfed3
Printer.exe| 497c2e9aa686f12031df590c124e7a9d0f0b1df7bf52e5fbd9ffa1501e383e93
Printr.exe| d61b743aa7e5b50f2ebe3f5a4cd31ee97d51282ba083b7dc5265888f5797ab88
spoolsv.exe| 6fef864850bf8a603305370dc5f522366af6392946a8049647d1423a9a62461c
Service.exe| 39f696883838d5ddc91f76fb8f1b547c20a9ef08e1f5e836bf64b7956e7644c3
Service.exe| 32f59e810ab96690c848097686a94c57de6221af6d299ac153f617b7c504bb55
Dll.exe| 04e363bd90dea1b18d6f3f4f3f92b00ce55ee1289c05eb575a0f7cd0ab138902
DllLiberary.exe | 2139f4084795ec07ec0ba78292154879c3bb1c495661471017a83355bf5f8af0
svchost.exe | 07884b08b394f1cedec09e8e0bf46a7ef29d904e10cb0079893d294c7ab286a2
SearchFile.exe|
036760d3a1b4760e9bf5527f0fed0e0a8bb98b6dbec3d5de7d8aba6afbeaf82b
security.exe| 081ea05b7476425189575ce5d30b941a61e252448cc8f8e5bc2a6c290d25d670
security.exe| 078cf6f436eb73112bf4dc00f601e4a82bd4476b55df660a1b19186c8b646fc1
- https://github.com/avast/ioc/blob/master/Almaq/samples.sha256
- https://github.com/avast/ioc/blob/master/Almaq/samples.sha1
- https://github.com/avast/ioc/blob/master/Almaq/samples.md5
指挥控管
Url
http://servicesx.gearhostpreview[.]com/data.asmx
http://systemservicex.azurewebsites[.]net/data.asmx
http://adobereader.azurewebsites[.]net/data.asmx
http://gcmedservice.azurewebsites[.]net/Scripts.asmx
alhussienweb.ddns[.]net
关联 FTP 伺服器
ftp://waws-prod-am2-253.ftp.azurewebsites.windows[.]net/site/wwwroot
ftp://waws-prod-sn1-071.ftp.azurewebsites.windows[.]net/site/wwwroot/
ftp://ftp.gear[.]host/site/wwwroot/
标签: ,
,