今年的《Almanaq》有什么新内容?
Almaq 是一种高度特定的恶意软体
Almaq 是一种专为 NET 平台编写的高度特定的恶意软体,目标是两个特定的伺服器:一个文件系统伺服器,IP 为 15020011101,和一个 SQL 数据库伺服器,IP 为 150200121MSSQLSERVER。不幸的是,我们无法解析这两个 IP 地址,因此无法对受攻击的伺服器做出更进一步的推测,不过,我们相信它们可能是私人网路的一部分或使用某种白名单访问控制机制。这些推测来自于对 Almaq 二进制档的分析,并在分析结尾进一步描述。
我们的假设是,Almaq 的作者在网路上散播恶意二进制档,希望能感染其他计算机并用它们攻击上述伺服器,进而修改、窃取和销毁其上的数据。到目前为止,可能已经有超过 100 台计算机受到感染。Almaq 本身包含多个不同的文件和几个指挥控管CampC伺服器,这些组件通力合作,从已被感染的计算机对上述伺服器发起攻击。指挥控管伺服器主要负责将 Almaq 文件和命令分发给受感染的计算机,Almaq 二进制档则利用内部目录结构和 15020011101 的凭证、150200121 的数据表结构及其连接字串来攻击这两个伺服器。Almaq 二进制档可以从 15020011101 窃取资讯并加密某些文件,还可以修改和查询 150200121 的数据,并可能导致长时间的服务拒绝攻击DoS。
Almaq 的指挥控管伺服器托管在公共云计算平台上,具体而言,是 azurewebsitesnet 和 gearhostcom。除了向受感染机器分发 Almaq 文件和命令,指挥控管伺服器还用于存储来自受感染计算机和目标伺服器的被窃信息,并接受来自受感染机器的各种消息。
Almaq 由多个可执行文件和库文件组成,这些文件具有不同的功能,旨在实现在受害者计算机上的持久性,并从中攻击 15020011101 和 150200121 伺服器。通常,执行的 Almaq 文件会从指挥控管伺服器下载其他 Almaq 二进制档并在受害者的机器上执行。执行文件然后持续从受害者的机器攻击上述伺服器。Almaq 使用误导性的文件名,如 adobereader、printer 和 svchost 来藏匿其恶意行为。
将 Almaq 分割为模组
根据主要行为特征,大多数 Almaq 文件可以分为三个模组,标签为投放器、上传器和清除器。第一模组的二进制档通常会从其指挥控管伺服器下载所有其他 Almaq 文件并在受害者的计算机上设置执行。该模组的二进制档也可以攻击运行在 150200121 的伺服器,设置其他 Almaq 文件在受害者计算机上定期执行,甚至删除受感染计算机上的数据。
第二模组由具有上传器特征的文件组成。该模组中的二进制档在 15020011101 的硬编码路径中查找一个特定文件,名为 ALMASHREQexe,或者在受害者的 C 磁碟中。如果找到了这个文件,则或仅是该文件的路径会被上传到指挥控管伺服器。不幸的是,我们无法追踪到此文件或在 Almaq 的任何指挥控管伺服器上找到它。这个文件可能能为我们解释 Almaq 的目的提供更多线索。
最后一个模组的文件特征类似于清除器恶意软体,会在未通知的情况下不可逆转地销毁文件。该模组中的二进制档使用 AES256 加密算法对存储在 15020011101 的硬编码目录中的所有文件进行加密。
Almaq 是一种高度特定的恶意软体,它利用对两套系统配置和结构的深入了解来修改、窃取和销毁其上存储的数据。然而,因为我们无法追踪到 ALMASHREQexe 文件,且 Almaq 的某些功能似乎有些不寻常和不合情景,我们怀疑 Almaq 是否是以成为一种严重的恶意软体为目的而开发的。
指挥控管与通信
如前所述,Almaq 拥有托管在公共云计算平台上的指挥控管伺服器。Almaq 的指挥控管伺服器可以分为两个类别:允许文件、命令和数据库命令下载的伺服器为符合 Almaq 命名惯例,我们将数据库命令称为 scripts和允许脚本操作的伺服器。伺服器透过简单物件存取协议SOAP进行沟通,其支持的操作由 Web 服务描述语言WSDL描述。
第一类别的指挥控管
我们追踪到三个允许文件、命令和脚本下载的伺服器,其中一个仍然在运作,其余两个已经失效:
Url 状态http//servicesxgearhostpreview[]com/dataasmx 活跃http//systemservicexazurewebsites[]net/dataasmx 不活跃http//adobereaderazurewebsites[]net/dataasmx 不活跃
小熊加速器官方连接到这些伺服器后,将下载一整套支援的操作清单,供 Almaq 文件利用。这些操作提供了例如命令行命令、连接字串、选择命令、SQL 数据库脚本和要下载的文件。
考虑到 http//servicesxgearhostpreview[]com/dataasmx,Almaq 文件可以利用以下操作:命令 ConfermScriptConnectionStringConnectionStringWellExecutedSelect文件LockListModelResponse脚本SelectlistSendMailSet设置WellFilesSaveimage
操作 命令 返回所有受感染计算机应执行的命令行命令。每条命令都有一个特定的 ID 编号。
http//servicesxgearhostpreview[]com/dataasmx 的完整命令清单:
ID 命令5 getmac7 CProgramDataCommssvchostexe22 ping 15020012123 IF EXIST CALMASHREQbinALMASHREQexe ECHO CALMASHREQbinALMASHREQexe exists24 IF EXIST 15020011101BackupNew folderUpdatebinALMASHREQexe ECHO 15020011101BackupNew folderUpdatebinALMASHREQexe exists25 IF EXIST CALMASHREQALMASHREQexe ECHO CALMASHREQbinALMASHREQexe exists26 IF EXIST CALMASHREQALMASHREQexe ECHO CALMASHREQbinALMASHREQexe exists44 del /AH CProgramDataCommsSearchexe45 del /AH CProgramDataCommsSearchFileexe
可以看出,命令 23 到 26 寻找 ALMASHREQexe 文件,后续会详细讨论此文件。
操作 文件 包含要下载到受害者计算机的特定 Almaq 文件的 URL,然后再执行。从指挥控管伺服器获得的 Almaq 文件清单因伺服器而异。
来自 http//servicesxgearhostpreview[]com/dataasmx 的完整清单:servicesx[]gearhostpreviewcom/Files/Dllexeservicesx[]gearhostpreviewcom/Files/MicrosoftWin32TaskSchedulerdllservicesx[]gearhostpreviewcom/Files/New Dllexeservicesx[]gearhostpreviewcom/Files/NewtonsoftJsondllservicesx[]gearhostpreviewcom/Files/prenterexeservicesx[]gearhostpreviewcom/Files/Printerexeservicesx[]gearhostpreviewcom/Files/Printrexeservicesx[]gearhostpreviewcom/Files/Read mebatservicesx[]gearhostpreviewcom/Files/securityexeservicesx[]gearhostpreviewcom/Files/Serviceexe
然而,例如从已不活跃的 CampC 获得的文件systemservicex[]azurewebsitesnet/Files/SearchFileexeadobereader[]azurewebsitesnet/Files/acrobat readerexe 不在其中。
操作 脚本 返回 Almaq 文件在 SQL 数据库 150200121MSSQLSERVER 中运行的两个数据库脚本。这些脚本会修改和查询数据库。通过操作 ConnectionString 可以获得此数据库的连接字串。
受感染机器的数量我们相信可以通过操作 Settings 获得受感染机器的数量。操作 Settings 返回受感染机器的信息记录,并赋予其名称。该记录包含受感染机器的名称及其 ID 等信息。Almaq 使用 NET 的 EnvironmentMachineName 属性为受感染的机器命名,然而,如果提供一个新的名称,但该名称并无记录,操作 Settings 会为该名称创建一条新记录,并分配一个新的连续 ID 编号。因此,我们能够创建一台机器并将其命名为 machinename,并收到一个新的连续 ID 为 190。然而,因为这样的 machinename 与 machinename1、machinename2 等记录可以轻易生成,几乎任何人都能做到,因此数字 190 并未能提供关于真正受感染机器数的相关信息。
第二类别的指挥控管
我们追踪到一个允许脚本数据库命令操作的伺服器
Url 状态http//gcmedserviceazurewebsites[]net/Scriptsasmx 活跃
支持的操作为Addscript AddscriptForpayer Confirm EditScript GetScripts ReadScript ScriptDelete ScriptReset ScriptUpdateState
脚本使用 AES256 加密存储。
伺服器通信这两类伺服器之间的通信由 AlMashreqServicedll 文件介导。这是一个 NET 文件,包含第一类别伺服器支持的所有操作的规范,并负责解密第二类伺服器的脚本。如前所述,脚本是加密存储的,然而,对所有脚本来说使用了相同的硬编码 AES256 加密密钥和 IV。
不同的 Almaq 模组类型
大多数 Almaq 文件可以分为三个模组,标签为投放器、上传器和清除器。这些文件可以通过操作 Files 从指挥控管伺服器获得,每个指挥控管伺服器返回的 Almaq 文件清单略有不同。
上述所有二进制档的清单为:
DllexeMicrosoftWin32TaskSchedulerdllNew DllexeNewtonsoftJsondllprenterexePrinterexePrintrexeRead mebatsecurityexeServiceexeSearchFileexeacrobat readerexe。
将该清单分割为主要模组后,我们得到了:
投放器 prenterexe、Printerexe、Printrexe、acrobat readerexe上传器 Dllexe、New Dllexe、SearchFileexe清除器 securityexe二进制档 MicrosoftWin32TaskSchedulerdll 和 NewtonsoftJsondll 是有效的微软库,Almaq 在其过程中使用。文件 Serviceexe 会使位于 15020011101 的 SQL 数据库服务中断,后续会进一步描述。
投放器
来自该模组的文件通常以常见计算机程序的名称命名有时拼写错误,如 adobe reader、adobe、Printer、Prenter、Printr 或 spoolsv 来掩饰其恶意行为。它们的主要目的在于从指挥控管伺服器下载并执行 Almaq 二进制档,但它们也能设置某些 Almaq 文件定期执行,修改和查询 150200121 的 SQL 数据库,执行上述命令行命令,以及删除受害者计算机上的文件。每项功能由不同的执行绪处理。
以下的代码片段显示了 spoolsvexe 文件中 Main() 函数中的多个执行绪。
6fef864850bf8a603305370dc5f522366af6392946a8049647d1423a9a62461c
第一个执行绪 @objectDownloadFiles 负责下载其他 Almaq 二进制档。根据对 Almaq 二进制档的分析,我们观察到,大多数样本下载的文件会保存到当前文件夹以及受害者计算机上的 CProgramDataComms 文件夹中。然而,对于某些样本,它们也可以保存到以下文件夹:
CProgramDataMicrosoft Visual studioCUsersltuserNamegtAppDataRoamingMicrosoftWindowsStart MenuProgramsStartupCProgram FilesMicrosoft Visual studioCProgramDataMicrosoftCProgram FilesAdobe
所有下载的 Almaq 文件都通过修改 HKEYCURRENTUSERSOFTWAREMicrosoftWindowsCurrentVersionRun 键添加到计算机的启动项目中。
执行绪 DatabaseRun 和 SelectClassRunSelect 在 15020011101 的 SQL 数据库上执行从指挥控管伺服器接收的脚本和命令。我们能够从指挥控管伺服器获得一些脚本,但在没有对 Almaq 攻击上下文更深入的了解下,很难对其目的做出推测。
最后一个执行绪 ProgramRunApp 寻找 CProgramDataComms 文件夹中与执行的二进制档同名的文件,如果找到,则最多执行两到四次。
最后的两个函数 SchedulerClassRun() 和 SchedulerClassRunService() 设置某些 Almaq 二进制档,以便定期执行。SchedulerClassRun() 设置与执行的二进制档名称相同的二进制档,而 SchedulerClassRunService() 则设置名为 Serviceexe 的二进制档。
执行被设置在 CProgramDataComms 文件夹中,并以 15 分钟的间隔每天触发。
以下的代码片段显示了 RunService() 函数,负责定期执行二进制档 Serviceexe。
6fef864850bf8a603305370dc5f522366af6392946a8049647d1423a9a62461c
一些 Almaq 二进制档还包括 @objectStart 执行绪,会试图通过解析 alhussienwebddns[]net URL 来连接指挥控管伺服器。我们得到两个解析的 IP 地址这可能是攻击者的 IP 地址,由埃及的一家电信公司 telecomegypt 提供。
IP 解析日期 IP 位置15619622540 20190430 埃及,阿尔吉札,Te 数据4144220146 20190427 埃及,阿尔吉札,Te 数据
执行绪 FormatingClassFormat 也可能是某些 Almaq 二进制档的一部分。它的唯一功能是删除受害者计算机上所有目录中的所有文件,这让我们感到困惑,因为这不符合 Almaq 的整体工作流程。
由于来自该模组的 Almaq 文件设置为执行许多其他 Almaq 二进制档,因此显而易见的问题是受害者在使用计算机时是否会注意到异常情况。Almaq 并不试图隐藏其行动,且例如可以通过 Process Explorer 轻易检测到其存在。
以下屏幕截图是在执行名为 Printrexe 的 Almaq 文件后拍摄的。所有显示的过程都是恶意的 Almaq 过程。
Printrexe 的执行d61b743aa7e5b50f2ebe3f5a4cd31ee97d51282ba083b7dc5265888f5797ab88
当 Almaq 二进制档遇到执行问题时,使用者可能会也会引起怀疑。例如,名为 securityexe 的过程的描述包含一个拼写错误 SheardFolder,因此如果它遇到执行问题,则会出现如下弹出提醒,表明发生了异常情况。
ServiceexeServiceexe 文件对 150200121 的 SQL 数据库执行服务拒绝攻击DoS,通过在隔离的事务中执行多个 SQL 命令,包括 15 分钟的睡眠。可以通过 LockList 操作从 CampC 伺服器获取 SQL 命令。
来自 http//servicesxgearhostpreview[]com/dataasmx 的完整命令列表包括:update webpayers set state=0update top(10) sacustomer set stopped=isnull(Nullstopped)update top(10) stvendorcontracts set lastupdateby=isnull(Nulllastupdateby)update top(10) stvendor set vlatitude=isnull(Nullvlatitude)update top(10) companyplanitems set stclass=isnull(Nullstclass)update top(10) planmembers set stclass=isnull(Nullstclass)update top(10) stemployee set mobpushflag=0
尽管这些命令不会摧毁数据库中的数据,但它们的重复执行造成的隔离事务会导致数据库无法服务。
每条命令都在 IsolationLevelSerializable 的事务中执行,该隔离级别禁止其他用户在事务完成之前更新或插入该数据集的行。在此事务中,有一个 15 分钟的 Sleep()。当 Sleep() 结束后,整个执行绪又会再休眠 15 分钟,然后再次执行,这使得数据库反复无法提供服务。
以下代码片段显示了 Serviceexe 文件的主要功能。
39f696883838d5ddc91f76fb8f1b547c20a9ef08e1f5e836bf64b7956e7644c3
上传器
适合此模组的文件通常以 Dllexe、New Dllexe、DllLiberaryexe、svchostexe 和 SearchFileexe 命名。它们的主要功能是查找 ALMASHREQexe 文件,无论是在受害者的计算机上还是在 15020011101 上。如果找到了这个文件,Dll 和 svchost 的行为会有所不同,而 SearchFile 则仅上传其路径到 CampC 伺服器。尽管这两种类型的 Almaq 文件之间的合作看似合乎逻辑,但我们并未发现任何迹象表明 SearchFile 所存储的路径会被 Dll 和 svchost 文件以任何方式利用。
具体而言,Dll 文件和 svchost 寻找 ALMASHREQexe 文件的路径有以下几个:
CALMASHREQbinALMASHREQexe15020011101BackupNew folderUpdatebinALMASHREQexe或15020011101BackupNew folderUpdateALMASHREQexe
如果找到了这个文件,则会将其上传到 CampC 伺服器,并使用受害者的 GUID由 NET API GuidNewGuid() 生成。
下面的代码片段示例展示了 Dllexe 文件的 Main() 函数。
04e363bd90dea1b18d6f3f4f3f92b00ce55ee1289c05eb575a0f7cd0ab138902
SearchFile 寻找受害者计算机上匹配 MASHREQexe 模式的所有文件,并如果找到,则将包含该文件路径的消息发送到 CampC 伺服器。
清除器
该模组的二进制档名为 securityexe,其主要功能是加密 15020011101 上的某些文件。根据我们的分析,Almaq 的作者对 15020011101 伺服器拥有深厚的私密知识,因为他们使用硬编码的凭证连接 15020011101,并在特定目录中搜索文件进行加密。
以下代码片段显示了 securityexe Almaq 文件中的 Main() 函数。
081ea05b7476425189575ce5d30b941a61e252448cc8f8e5bc2a6c290d25d670
Almaq 对来自以下目录并在三年内创建的所有文件进行加密:15020011101shareHMISClaimsDocuments15020011101shareHMISMembersDocuments15020011101shareHMISvendorDocuments15020011101shareHMISCustomerDocuments15020011101shareCISpatientsDocuments使用 AES256 进行加密。该加密密钥是从 NET API GuidNewGuid() 派生的,对每个文件都是唯一的,并未被存储或发送到其他地方。
下面的代码片段显示了 securityexe 文件的主要功能。
081ea05b7476425189575ce5d30b941a61e252448cc8f8e5bc2a6c290d25d670
讨论
正如之前提到的,Almaq 包含多个具有不同功能的二进制档,这些档案通力合作,以实现在 15020011101 上运行的文件系统伺服器和在 150200121MSSQLSERVER 上的 SQL 数据库伺服器的攻击。尽管 Almaq 文件的行为相当直接,但其攻击上下文并不完全清晰。攻击者拥有访问这两个伺服器所需的凭证,这引发了一个问题:为什么要分发 Almaq 二进制文件,既然攻击者可以直接攻击这两个伺服器。这引起了我们关于这两个伺服器可能拥有排除攻击者的白名单访问控制机制的想法,因此攻击者希望感染一台被列入白名单的计算机。
另一种情况考虑到公共 IP 范围 15020000150200255255,该范围包括两个伺服器的 IP 地址,并且由密苏里西部州立大学拥有。考虑到这一点,Almaq 可能是针对密苏里西部州立大学的攻击。然而,这看起来不太可能,因为可能攻击者的 IP 地址位于埃及并注册在 telecomegypt。
又一种情况可能是,这两个受攻击的 IP 地址并不是公共的,而是某个内部网络的一部分,攻击者无法访问该内部网络。由于这两个 IP 地址 15020011101 和 150200121 看起来过于美观,像是经人为编码而成用非专业术语来说,许多数字都是 10 的倍数,我们推测这两个地址是硬编码的。这解释了为什么在私有网路中使用来自公共 IP 范围的地址,因为预期的解决方案是使用来自私有范围的 IP 地址。这种私有网络的一个例子可能是某个公司的内部网络,而攻击者可能是何时拥有凭证的前员工,但却无法再访问该网络。
受侵入的指标 (IoC)
样本
文件 SHA256AlMashreqServicedll 4098d92ead72b1b2749e2d58102327f670a1db2d46c6e74eefbbed7f68167265AlMashreqServicedll 9cbc09dd569942582a6ec3d94fb5c9fc70c1e43282dc36dcc8cdf8d0a5131235acrobat readerexe 8b4baa073900f9602845694f6d1f9358a196ea0b7dfc06ad320f9c162bff0141adobeexe 945426553022101b7a75c6b5cad3d780363193b5412ea077257873b1971dfed3Printerexe 497c2e9aa686f12031df590c124e7a9d0f0b1df7bf52e5fbd9ffa1501e383e93Printrexe d61b743aa7e5b50f2ebe3f5a4cd31ee97d51282ba083b7dc5265888f5797ab88spoolsvexe 6fef864850bf8a603305370dc5f522366af6392946a8049647d1423a9a62461cServiceexe 39f696883838d5ddc91f76fb8f1b547c20a9ef08e1f5e836bf64b7956e7644c3Serviceexe 32f59e810ab96690c848097686a94c57de6221af6d299ac153f617b7c504bb55Dllexe 04e363bd90dea1b18d6f3f4f3f92b00ce55ee1289c05eb575a0f7cd0ab138902DllLiberaryexe 2139f4084795ec07ec0ba78292154879c3bb1c495661471017a83355bf5f8af0svchostexe 07884b08b394f1cedec09e8e0bf46a7ef29d904e10cb0079893d294c7ab286a2SearchFileexe 036760d3a1b4760e9bf5527f0fed0e0a8bb98b6dbec3d5de7d8aba6afbeaf82bsecurityexe 081ea05b7476425189575ce5d30b941a61e252448cc8f8e5bc2a6c290d25d670securityexe 078cf6f436eb73112bf4dc00f601e4a82bd4476b55df660a1b19186c8b646fc1
https//githubcom/avast/ioc/blob/master/Almaq/samplessha256https//githubcom/avast/ioc/blob/master/Almaq/samplessha1https//githubcom/avast/ioc/blob/master/Almaq/samplesmd5指挥控管
Url
http//servicesxgearhostpreview[]com/dataasmxhttp//systemservicexazurewebsites[]net/dataasmxhttp//adobereaderazurewebsites[]net/dataasmxhttp//gcmedserviceazurewebsites[]net/Scriptsasmxalhussienwebddns[]net关联 FTP 伺服器
ftp//wawsprodam2253ftpazurewebsiteswindows[]net/site/wwwrootftp//wawsprodsn1071ftpazurewebsiteswindows[]net/site/wwwroot/ftp//ftpgear[]host/site/wwwroot/
https//githubcom/avast/ioc/blob/master/Almaq/networktxt
标签: NET 投放器 恶意软体