分析背景
自俄乌战争爆发以来,无论是前期的所谓“军事特别行动”还是中后期的拉锯战和消耗战,网络间谍活动始终都未曾间断过。通过网络攻击获取军事情报成为战争过程最为频繁的一项行动,这种行动任务在远早于战争开始之前就已经开始布局,并始终贯穿整个战争过程,直到现在从未停止。启明星辰ADLab长期以来密切关注战争过程中双方之间所发生的网络攻击战况,也曾进行过多次的追踪、分析和披露,这种网络攻击随着战争变化而变化,从战前为试探军事部署而对边防局和国防部的攻击,到战争爆发时为闪击战而准备的网络瘫痪行动,再到战争僵持期间为获得实时军情而针对国安部和军队目标的网络间谍行动,最后发展到近期的以战略产业、医疗卫生和粮食部为目标的阶段性攻击活动。
从去年上半年开始,我们观察到一些网络攻击常常与战争中的具体事件存在着紧密的关联。比如:5月中旬俄罗斯向乌克兰西部赫梅利尼茨基州发动大规模无人机攻击造成了大量人员受伤后,5月29日左右就出现了伪装成医药公司账单的攻击,攻击的主要目标为该州的国家安全局;同样是5月中旬,乌克兰切尔尼戈夫州遭到俄罗斯导弹打击,5月29日左右就出现了伪装成乌克兰矿石加工和采矿设备修理厂的发票攻击,攻击的主要目标是乌克兰切尔尼戈夫州政府。这些说明,网络攻击某种程度上在和一些战争行动打配合,而这种配合又会反过来给予攻击方更加实时的情报。详细分析见我们披露的《针对乌克兰边防局和国防部攻击活动深度分析》《乌克兰战争背后的网络攻击和情报活动》和《俄乌战争下最新网络情报活动分析》等分析报告。
而在近期,我们又观察到了一系列针对乌克兰国家卫生服务局、农业政策和粮食部、战略产业部、州议会等实体的网络攻击,攻击者企图向这些攻击目标投放remcosRAT木马来窃取情报,这和此前的一系列攻击采用的是同一款木马。此外,我们还观察到一系列传播乌克兰安全局官网仿冒站点的攻击活动,并试图投放窃密木马Poverty Stealer。本次观察到网络攻击的目标涉及战时资源调配和后勤补给等有重要影响的机构,覆盖医疗、粮食、包装运输和财务结算等多个环节。我们由此可以看出,网络战的范围正在逐步扩大,可能已经蔓延到战争过程中的整个决策和调度链条,其中涉及到实时的军事政治情报以及医疗、粮食、武器弹药等情报信息。
同样,新发现的网络攻击依然试图与战争行动打配合,比如2023年11月28日,俄罗斯对乌克兰扎波罗热州发动导弹袭击,这些导弹袭击引发该州议会对被袭事件的议题进行讨论并做出相关决策,随后我们便发现黑客两天后对扎波罗热市议会进行隐秘的网络窃密攻击,同时针对医疗机构的攻击也频繁出现;同样情况发生在乌克兰第聂伯罗彼得罗夫斯克州,2023年12月8日,该州受到多架无人机袭击后卡米安市议会遭受到了网络窃密攻击。这种通过网络攻击打配合战的手法在战争中会持续存在。
本文将详细阐述和分析我们所观察到的这些网络攻击,我们首先以这些攻击事件为线索关联出尽可能多的基础设施、诱饵文件以及投放的恶意可执行程序等信息并做深入的分析。这一系列攻击主要是投递远控木马remcosRAT和Poverty Stealer以实现对目标的完全控制,remcosRAT和Poverty Stealer木马有着非常强的窃密能力和灵活的插件扩展能力。本文将选取一起典型的攻击进行详细而深入的分析。
02 攻击事件分析
2.1 诱饵投递
在过去几个多月时间里,不管是乌方的微弱反攻还是俄方的缓慢进攻,俄乌双方均未在战线上取得突破性进展,战事已经陷入拉锯战。我们也在这段时间观察到了一系列为获得战时情报而实施的网络窃密活动。在这些攻击活动中,黑客伪装成乌克兰敖德萨州商事法院(地区)和乌克兰电信公司Kyivstar相关工作人员将精心构造的恶意payload通过邮件投递给乌克兰国家卫生服务局、农业政策和粮食部、战略产业部、韦尔霍维纳区国家管理局、扎波罗热市议会、卡米安市议会和乌克兰塑料包装解决方案供应商“RETAL”以及乌克兰银行“Agroprosperis Bank”等实体机构。黑客试图通过这些恶意payload将remcosRAT木马植入到目标设备上,以获取乌方的军事情报如:作战计划、物资调配计划等机密信息。我们下面列举几个攻击事件对该黑客组织的攻击行动进行详细说明。
图1是一封2023年11月30日发送的攻击邮件:发件人伪装成了乌克兰敖德萨州商事法院(地区)相关工作人员,收件人是乌克兰国家卫生服务局的工作人员。邮件主题为 “Повістка в суд-вихідний : 2844288114 від 30.11.2023”,中文意思是“传票日:2023年11月30日起2844288114”,邮件附件为“Господарський суд Одеської області Повістка до суду.rar(敖德萨州商事法院传票.rar)”,正文大意是 “这封信是由系统自动创建的,您需要在敖德萨地区的经济法院出庭考虑索赔,所有信息都包含在文档中。为了维护附件的机密性,设置了密码:8161,此电子邮件及其附带的任何文件都包含机密信息”。
附件文档解压后包含名称为" Повістка до суду.doc (传票.doc)"的恶意文档,如果受害者轻信邮件打开该文档,并启用宏选项,恶意宏代码便会执行。宏代码执行后会从恶意服务器SMB共享地址“\\\\89.23.98.22\\LN\\scandoc.exe”下载名称为scandoc.exe 的恶意Loader,并最终向受害者设备投放商业木马remcosRAT,然后利用该木马对攻击目标实施进一步的攻击行动。
图1 针对乌克兰国家卫生服务局的攻击邮件
图2是一封2023年12月21日发送的攻击邮件:该邮件的攻击目标是乌克兰韦尔霍维纳区国家管理局的工作人员。邮件主题为 “Заборгованість за договором Київстар”,中文意思是“Kyivstar合同下的债务”,邮件附件为“Заборгованість абонента.zip(认购人的债务.zip)”,正文大意是 “您好,您在合同编号下有逾期债务:通信服务038208716。如果在 2023 年 12 月 29 日之前未偿还债务,Kyivstar 将不得不起诉您以在法庭上追讨债务。有关您帐户的详细信息,请参阅附件。由于 Kyivstar 隐私政策的变化和个人数据的保存,为附件设置了以下访问代码:558732”。从邮件主题和邮件正文的内容,我们可以看出攻击者试图伪装成乌克兰电信公司“Kyivstar”来欺骗攻击目标,但邮件的发送人邮箱却冒用了乌克兰独立法医鉴定研究所“NISE”的邮箱,这应该是来自攻击者的“失误”。
附件文档解压后包含名称为" Заборгованість абонента.doc (认购人的债务.doc)"的恶意文档,同上面一样,该恶意文档同样试图利用恶意宏代码从恶意服务器SMB共享地址“\\\\89.23.98.22\\LN\\GB.exe ”下载恶意文件,并最终向受害者设备投放商业木马remcosRAT。
图2 针对乌克兰韦尔霍维纳区国家管理局的攻击邮件
我们还发现,同样在2023年11月30日和2023年12月21日,该黑客组织除了攻击乌克兰国家卫生服务局和乌克兰韦尔霍维纳区国家管理局,其同时又对乌克兰的多个政府机构和实体公司发起了网络攻击。图3是部分相关攻击使用的网络攻击邮件截图。
图3 监测到的其他攻击邮件
我们将该黑客组织这段时间使用的部分定向攻击邮件的相关信息列到表1。从表1中,我们可以看到,黑客构造了迷惑性的邮件向目标实施网络攻击。该黑客组织分别伪装成乌克兰敖德萨州商事法院(地区)、乌克兰敖德萨地区行政法院和乌克兰电信公司Kyivstar的工作人员向目标实施网络攻击。其使用了 “传票日:2023年11月30日起2844288114”、“[警告:消息已加密] 传票日:2023年11月30日起3667588807125”以及“Kyivstar合同下的债务”这样的内容作为邮件主题来诱使目标相信邮件内容。如果受害者相信邮件内容并执行了邮件附件中的恶意程序,恶意商业木马remcosRAT就被植入到了受害者的计算机上。
时间 | 邮件主题 | 发件人 | 收件人 |
2023/11/30 10:12 | Повістка в суд-вихідний : 2844288114 від 30.11.2023 | Господарський суд Одеської області | Info Mailbox |
2023/11/30 14:08 | Повістка в суд-вихідний : 89802139144 від 30.11.2023 | Господарський суд Одеської області | Info Mailbox |
2023/11/30 13:50 | Повістка в суд-вихідний : 0981999364 від 30.11.2023 | Господарський суд Одеської області | support |
2023/11/30 13:25 | Повістка в суд-вихідний : 438685484505 від 30.11.2023 | Господарський суд Одеської області | Приймальня КП «Наше місто» |
2023/11/30 9:41 | [WARNING: MESSAGE ENCRYPTED] Повісткавсуд-вихідний : 3667588807125 від 30.11.2023 | ГосподарськийсудОдеськоїобласті | evgeniya.averiyanova |
2023/12/21 12:28 | Заборгованість за договором Київстар – Передсудове | Чередниченко Шерлок Давидович | citizen |
2023/12/21 2:50 | Заборгованість за договором Київстар – Передсудове | Гісем Жито Вікторович | s-email |
2023/12/21 4:19 | Заборгованість за договором Київстар | Пантелюк Еміль Валентинович | cufra |
2023/12/26 10:40 | Запит на отримання публічної інформації | Олег Яковлев | miskrada@kam.gov.ua |
表1部分定向攻击邮件相关信息
从攻击邮件的收件人我们可以看出,这些网络攻击是针对乌克兰国家卫生服务局、乌克兰农业政策和粮食部、乌克兰扎波罗热市议会、乌克兰塑料包装解决方案供应商“RETAL”、乌克兰韦尔霍维纳区国家管理局、乌克兰战略产业部、乌克兰卡米安市议会以及乌克兰银行“Agroprosperis Bank”的工作人员发起的。部分受害部门相关信息见图4至图9。
图4 目标为乌克兰国家卫生服务局相关信息
图5 目标为乌克兰农业政策和粮食部相关信息
图6 目标为乌克兰战略产业部相关信息
图7 目标为乌克兰卡米安市议会相关信息
图8 目标为乌克兰扎波罗热市议会相关信息
图9 目标为乌克兰韦尔霍维纳区国家管理局相关信息
2.2 仿冒网站
另外,我们发现该黑客组织除了使用恶意邮件对目标进行网络攻击外,还通过仿冒乌克兰安全局官网传播恶意文档。图10是攻击者仿冒的乌克兰安全局的官网页面,恶意文档的存放地址为https://npddocs.com/ssu.gov.ua/docs/file/util/0/d12934-0202334.doc(目前已失效),该恶意文档包含有恶意宏代码,宏代码执行后会从恶意服务器SMB共享地址“\\\\89.23.98.22\\LN\\Konstantin.exe”下载名称为Konstantin.exe的恶意Loader,并最终向受害者设备投放窃密木马Poverty Stealer。Poverty Stealer是一款信息窃取木马,其执行后,可以收集受害者计算机上存储的个人文档、图片、cookie、telegram会话数据等敏感信息,此外,Poverty Stealer还能够截取屏幕截图。收集到这些敏感信息后,其会将窃取的数据传输给攻击者。
图10 攻击者仿冒的乌克兰安全局的官网页面
03 黑客攻击分析
3.1 基础设施
我们将监测到的攻击邮件的恶意附件和其投放的恶意文件以及黑客组织利用仿冒站点传播的恶意文件信息整理到表2,从表2中我们可以看到,这些恶意文件类型包含rar、zip、 doc和exe文件。它们在VirusTotal上的首次上传时间最早为2023年11月7日,最新为2023年12月21日。
文件名称 | 文件类型 | 首次上传时间 | MD5 |
Господарський суд Одеської області Повістка до суду.rar | rar | 2023-11-30 04:22:43 UTC | cfcf6395c7cf7c879c8a697a6e2cd4fa |
Повістка до суду.doc вірусяка_повістка_до_суду.doc 123.doc | doc | 2023-11-30 06:05:46 UTC | 4cd0efe60c932a3ff25a976386cf9bc9 |
7zipInstall.exe 8161.exe scandoc.exe | exe | 2023-11-30 06:15:07 UTC | 3f38596cc3a4d9d6020d3cebff1a8f6c |
13018627804.zip | zip | 2023-11-18 11:42:01 UTC | c0f73c98bcbf311f2ca4030d325abe1f |
d12934-0202334.doc | doc | 2023-11-07 15:17:09 UTC | eac138b49c6f90896c9af5cbc8fe38b8 |
novapdf.exe Konstantin.exe | exe | 2023-11-07 16:06:59 UTC | b8e53ea5efc220fe80f217a0fe9ba89c |
Заборгованість абонента.zip | Zip | 2023-12-21 05:56:16 UTC | 4754f0ede14f1bae26b69bd43c7b6705 |
Заборгованість абонента.doc | doc | 2023-12-21 06:29:28 UTC | de2e053acae98adbecc23ab3c0e9cf5d |
GB.exe | exe | 2023-12-21 08:56:59 UTC | c3e7cfa2e076c3ca421ddc00496c71b5 |
wsuscr.exe | exe | 2023-12-21 07:43:02 UTC | fc99e0883a1fa153693547953a83674e |
表2 恶意文件列表
虽然黑客组织使用了恶意邮件和仿冒站点这两种网络攻击方式,但最后它们企图在攻击目标设备上投放的恶意程序都来自同一服务器地址“89.23.98.22”,我们尝试访问SMB共享地址\\\\89.23.98.22\\LN\\,发现该地址已失效,不过从公开沙箱中,我们找到了该地址早前的共享文件信息,如图11所示:该地址上早前存放的可执行程序中,除了“putty.exe”为正常的管理工具外,其余9个可执行程序均为恶意程序。其中的“scandoc.exe”和“Konstantin.exe”被用于此次攻击乌克兰的相关机构和公司实体。从这些恶意程序的修改时间上看,最早修改时间是2023年10月11日,最近的修改时间是2023年11月29日。由此可以推断,这波针对乌克兰相关机构和公司实体的攻击时间最早至少为2023年10月11日。
图11 恶意文件服务器上存放的文件
我们再以恶意文件服务器地址“89.23.98.22”为线索进行关联分析,发现了该黑客组织所使用的更多的恶意文件(见表3)。这些恶意文件有的是作为邮件附件发送给攻击目标,用于投放remcosRAT远控木马,有的是附带有恶意宏的doc文档,用于投放Poverty Stealer窃密木马,有的则是携带这些木马的恶意Loader。这些恶意文件在VirusTotal的首次上传时间最早为2023年10月14日,最新为2023年11月30日。结合我们最初监测到的那几次网络攻击,可以看出此次针对乌克兰军事和政府等机构的攻击分别发生在2023年10月前后和2023年12月前后。
文件名称 | 文件类型 | 首次上传时间 | MD5 |
d12934-0202334.doc | doc | 2023-11-15 06:49:13 UTC | 22ec6c0a1b5690a63c28f20b552ba7c6 |
chrome_exe Konst.exe | exe | 2023-11-30 14:24:05 UTC | cb031980eb0030f7096b5e097e841a87 |
CV Ali Frost.doc | doc | 2023-11-30 18:03:18 UTC | 87b7b11c7e69e02d195f587695541040 |
GenericSetup.exe officetrackernmp116.exe crome.exe IEUpdater116.exe (PrivateLoader) | dxe | 2023-11-30 14:20:04 UTC | 3afed19a3ec0d96e4db93b7d6a34d154 |
doc | 2023-11-30 08:14:41 UTC | 32e6fd665e35cfcabb9b519db619a66e | |
doc | 2023-12-01 02:02:28 UTC | d3c1df6b9dad19c91deb8548743c73fe | |
doc | 2023-12-02 01:34:24 UTC | dad8cf0dc54e94df5a0d9c209d924b8f | |
information.exe | exe | 2023-11-30 14:21:16 UTC | 98a0bf4af1e1e9a69bddee4421e1772d |
kent.exe | exe | 2023-11-07 16:46:17 UTC | 31ddb76cee6b27419e729bdc4b60428e |
vpnsetup.exe PDF.exe | exe | 2023-10-22 09:49:55 UTC | 59788e9764eb60d5f0ff277b646bddcd |
putty.exe | exe | 2020-06-27 09:30:35 UTC | dcf21ca46349ce36f7866c24f1f60f0f |
9060.exe Exiland Backup Standard ExilandBackup.exe claim_video_Hotel291023 .mp4.exe claim_video_Hotel291023 .mp4 -복사본.exe complaint_hotel_291023 .mp4.exe claim_Hotel291023 .mp4.exe | exe | 2023-10-29 08:43:25 UTC | 15a8cc209cc9bd77f5bf901d07d3d0a9 |
chrome.exe Baldr.exe 1.exe | exe | 2023-10-23 14:36:06 UTC | e47d4a3c6c18349547847ab18211f323 |
表3 关联到的其他恶意文件
3.2 攻击目标
从攻击目标上看,该定向攻击是针对乌克兰国家卫生服务局、农业政策和粮食部、战略产业部、韦尔霍维纳区国家管理局、扎波罗热市议会、卡米安市议会和乌克兰塑料包装解决方案供应商“RETAL”以及乌克兰银行“Agroprosperis Bank”等多个实体发起的(见图12)。攻击者主要通过向这些机构的工作人员发送带有恶意附件的攻击邮件,向攻击目标投放remcosRAT木马。这些攻击目标覆盖乌方在战争中对资源调配和后勤补给等方面有重要影响的机构,涉及医疗、粮食、包装运输和财务结算等多个环节。除此之外,黑客组织还以经常访问乌克兰安全局的人员为攻击目标,攻击者通过仿冒乌克兰安全局官网来投放窃密木马Poverty Stealer。攻击者选择这些机构和人员作为攻击目标,一方面是想掌握乌方的医疗、粮食等战略物资的调配情况和乌方的作战情报信息,另一方面可以将其作为跳板,渗透进乌方的军方和政府机构,以进一步获取更有价值的机密信息。
图12 攻击目标
3.3 组织归属
从前文攻击目标上看,该黑客组织目前的攻击活动带有明显的军事意图,该定向攻击是针对目前阶段俄乌冲突乌方战时资源调配强相关的机构发起的。而且,根据我们的基础设施分析,黑客使用的核心恶意文件服务器来自俄罗斯。因此,不管从该组织的攻击目标、还是其使用的恶意服务器等基础设施来看,该黑客组织都很符合俄罗斯黑客组织的习惯。再结合俄乌战争的大背景,尤其是2023年10月、11月和12月份前后,俄乌双方在战场上的新动向,我们认为此次攻击活动是由俄罗斯黑客组织发起的。我们将会持续关注该黑客组织的相关基础设施变化以对其动向进行持续追踪。
04 攻击案例分析
我们以该黑客组织的其中一次邮件攻击为例进行说明。如图13所示,在此次攻击中,攻击者先在自己的恶意服务器“89.23.98.22”上配置和部署好恶意文件GB.exe,同时,攻击者将恶意Loader “wsuscr.exe”部署在了合法的托管服务提供商“Bitbucket”上,准备工作做好后,攻击者向乌克兰韦尔霍维纳区国家管理局的工作人员投递带有恶意附件“Заборгованість абонента.zip”的邮件,“Заборгованість абонента.zip”文件解压后包含名称为“Заборгованість абонента.doc”的恶意doc文档,该恶意doc文档包含有恶意宏代码,受害者打开该恶意文档并启用宏后,恶意宏代码便会执行。恶意宏代码会从恶意服务器SMB共享文件夹地址“\\\\89.23.98.22\\LN\\GB.exe”请求事先部署在其上的恶意程序GB.exe执行,GB.exe执行后会从托管服务提供商“Bitbucket”下载恶意Loader“wsuscr.exe”执行,wsuscr.exe执行后,会解密其中的商业远控木马remcosRAT 到受害者的设备执行。通过上述过程,攻击者最终成功向攻击目标投放了remcosRAT远控木马。
图13 攻击流程图
4.1 诱饵邮件投递
此次攻击始于一封试图伪装成乌克兰电信公司“Kyivstar”的债务催收邮件(见图14),此邮件是发送给乌克兰韦尔霍维纳区国家管理局的工作人员的。邮件标题是“Заборгованість за договором Київстар(Kyivstar合同下的债务)”,附件诱饵文档名称为“Заборгованість абонента.zip(认购人的债务.zip)”,正文大意是 “您好,您在合同编号下有逾期债务:通信服务038208716。如果在 2023 年 12 月 29 日之前未偿还债务,Kyivstar 将不得不起诉您以在法庭上追讨债务。有关您帐户的详细信息,请参阅附件。由于 Kyivstar 隐私政策的变化和个人数据的保存,为附件设置了以下访问代码:558732”,很显然,正文这样写是为了增加这份邮件的可信度。不过,我们注意到了一个乌龙:该恶意邮件的发送人邮箱冒用了乌克兰独立法医鉴定研究所“NISE”的邮箱,而从邮件的主题和正文内容来看,攻击者是想伪装成乌克兰电信公司“Kyivstar”实施邮件攻击。这个乌龙应该是来自攻击者的疏忽大意。
图14 攻击者投放的攻击邮件
附件“Заборгованість абонента.zip”解压后包含一个名称为" Заборгованість абонента.doc (认购人的债务.doc)"的恶意文档,见图15。该恶意文档提示用户,要查看具体内容,需要启用宏,当用户启用宏后,恶意宏代码就执行了。
图15 诱饵doc文档
如图16所示,这是该恶意文档包含的恶意VBA宏代码,该宏代码并不复杂:该段代码在文档被打开时执行,其作用是打开指定的SMB共享文件夹路径““\\\\89.23.98.22\\LN\\”,并执行指定的可执行文件“\\\\89.23.98.22\\LN\\GB.exe”,同时在执行完成后使用VBScript通过PowerShell停止explorer.exe进程并隐藏命令行窗口。
图16 恶意宏代码
GB.exe是一个自解压程序,其包含两个文件,分别为res .bat和test2.exe(见图17)。我们接下来分析res.bat和test2.exe这两个文件。
图17 GB.exe自解压程序包含的文件
res.bat文件内容如图18,其首先使用xcopy命令将test2.exe文件复制到%temp%\\persistent2\\test2.exe路径下,然后使用PowerShell将一个Base64字符串解码并执行,为了方便说明,我们将这段Base64字符串命名为str1_ Base64。str1_ Base64解码后如图19所示,其主要做了两件事,第一件事是解码一个Base64字符串并执行(该Base64字符串是由内嵌的byte数组内存解压获得,我们将该Base64字符串命名为str2_ Base64),第二件事是从地址https://bitbucket.org/olegovich-007/777/downloads/wsuscr.exe下载恶意程序wsuscr.exe,保存为%appdata%wsuscr.exe并执行。
图18 res.bat内容
图19 str1_ Base64解码后的内容
第一件事究竟做了什么呢?str2_ Base64解码后的内容见图20,可以看到,其目的是以UAC-bypass的方式执行前面释放的恶意程序%temp%\\persistent2\\test2.exe 。
图20 str2_ Base64解码后的内容
如图21,test2.exe也是一个自解压程序,其包含“test2.bat”文件,test2.bat文件内容如图22,其中绿底字符串Base64解码后为“$pwd = "Add-MpPreference -ExclusionPath C:\\" $pwd | Invoke-Expression”,test2.bat整个文件的执行逻辑是:检查用户的权限,并在具备足够权限的情况下,将路径 C:\\ 添加到 Windows Defender 的排除路径列表中,以避免对该路径下的文件进行扫描和处理。结合后面分析可知,该脚本的目的是避免Windows Defender查杀攻击者下载执行的恶意文件“%appdata%wsuscr.exe”。
图21 test2.exe自解压程序包含的文件
图22 test2.bat文件内容
整个GB.exe文件我们就分析完了,总结起来其实很简单,其作用就是从地址https://bitbucket.org/olegovich-007/777/downloads/wsuscr.exe下载恶意程序wsuscr.exe,保存为%appdata%wsuscr.exe并执行,同时避免Windows Defender对”C:\\”路径的查杀。
wsuscr.exe执行后,会解密其中的商业远控木马remcosRAT 到受害者的设备执行。通过上述过程,攻击者最终成功向攻击目标投放了remcosRAT远控木马。
4.2 恶意程序分析
通过前面下载并执行的恶意程序wsuscr.exe是一个C#编写的恶意Loader,该Loader经过了严重的混淆,仅通过静态分析我们很难知道它的执行逻辑。结合动态分析,我们发现,为了对抗静态分析,该Loader将运行中要用到的大量API名称加密存储在了资源文件中,Loader执行后,会从其资源文件中解密出这些API名称备用。之后,该Loader会在内存中解密出商业木马remcosRAT,然后新起一个Loader自身进程,并使用进程挖空技术将remcosRAT木马注入到新起的Loader进程中执行。进程挖空技术常被恶意软件用于注入恶意代码,以逃避杀毒软件的监测和防御机制,并在目标系统上执行恶意活动。
相较于2023年11月30那次攻击使用的Loader,2023年12月21日使用Loader的混淆强度明显增加了,图23是前一次Loader中,创建API委托的相关代码,图24是这次Loader相同功能代码片段的截图,通过对比我们可以看出,相较于前一次Loader,这次Loader的混淆称得上面目全非。虽然混淆强度增加了,但Loader本身的功能和逻辑没有变化,为了方便解释,我们后文用前一次Loader进行说明。
图23 前一次攻击使用的Loader截图
图24 这次攻击使用的Loader截图
4.2.1 解密字符串
Loader执行后会从名称为"{f6e9f20a-731f-4616-a745-55d319eb064a}"的资源中读取数据存储到一个byte数组里(见图25)
图25 从资源中读取数据
解密后的数据见图26所示,这些数据是由多个base64编码的字符串组成,最前面一个字节是该编码字符串的长度。这些base64编码后的数据在Loader后续执行中会用到,如字符串“QXNzZW1ibHkgaGFzIGJlZW4gdGFtcGVyZWQ=”base64解码之后是用于提示的字符串“Assembly has been tampered”,字符串“UkhsdVlXMXBZMFJzYkVsdWRtOXJaUT09”两次base64解码之后为API调用字符串“DynamicDllInvoke”。
图26 解密后的数据
4.2.2 解密存放的remcosRAT木马
接着Loader从其资源中读取名称为“nkkghrF”的加密数据并使用异或操作和一系列加、减和取模运算进行解密,最终解密出一恶意PE文件(见图27)。
图27 解密出恶意PE文件
我们将解密后的恶意PE文件使用IDA静态分析,可以看到,该恶意PE文件实际上是商业远控木马remcosRAT(见图28),从图中我们可以看到,其版本号为“4.9.3 Pro”。后面Loader会使用进程挖空技术将该remcosRAT木马注入到新起的Loader进程中去执行。
图28解密的恶意PE为商业远控木马remcosRAT
4.2.3 创建进程挖空技术相关API的委托
在实施进程挖空操作之前,恶意Loader会先创建进程挖空操作相关的API的委托,以备后面使用进程挖空操作将remcosRAT远控木马写入新起的Loader进程中执行。首先,Loader会从前面解密的数据中查找进程挖空操作相关的一系列API的Base64值,然后Base64解码,接着调用DynamicDllInvoke动态加载函数和Invoke调用等函数,最后使用“Delegate.CreateDelegate”函数创建进程挖空操作相关的一系列API的委托(见图29)。
图29创建进程挖空操作相关API的委托
这里一共涉及11个API,我们将它们列到表4中,创建的这些API委托用于后面进程挖空操作,将remcosRAT远控木马写入新起的Loader进程中执行。
API名称 | 所在库 |
Wow64GetThreadContext | kernel32.dll |
GetThreadContext | kernel32.dll |
ReadProcessMemory | kernel32.dll |
VirtualAllocEx | kernel32.dll |
WriteProcessMemory | kernel32.dll |
Wow64SetThreadContext | kernel32.dll |
SetThreadContext | kernel32.dll |
ResumeThread | kernel32.dll |
CreateProcessAsUser | advapi32.dll |
表4 进程挖空操作用到的相关API
4.2.4 使用进程挖空技术执行remcosRAT
完成了创建如上进程挖空操作相关的API的委托后,恶意Loader便会利用这一系列API将前面解密后的remcosRAT远控木马写入目标进程并执行。
首先,恶意Loader会调用CreateProcessAsUser函数启动新进程(见图30),通过调用CreateProcessAsUser函数,恶意Loader以当前用户的身份创建新进程,并使用恶意Loader自身路径“C:\\Users\\[username]\\Desktop\\loader.exe”来执行新进程。这样做后就在当前用户的上下文中启动一个新的恶意Loader进程。
图30启动新进程
然后恶意Loader会通过检查IntPtr.Size是否等于4来判断当前系统是32位还是64位。如果IntPtr.Size不等于4,说明当前系统是64位,则使用Wow64GetThreadContext函数来保存目标进程的线程上下文信息;如果IntPtr.Size等于4,说明当前系统是32位,则使用GetThreadContext函数来保存目标进程的线程上下文信息(见图31)。保存的目标进程的线程上下文信息用于后面的恢复目标进程的线程上下文操作。
图31保存线程上下文信息
如图32,恶意Loader使用VirtualAllocEx函数在新起的进程空间中申请内存,申请内存的起始地址为0x400000,申请的内存大小为0x00082000,第四个参数为12288(0x3000),代表内存分配的类型为“MEM_COMMIT | MEM_RESERVE”,最后一个参数为64(0x40),代表内存保护属性为“RWE”。
图32 申请内存
接下来,恶意Loader会解析前面解密出的商业远控木马remcosRAT的PE结构,并使用WriteProcessMemory函数将其PE结构的各个section依次写入刚才申请的内存空间中(见图33)。
图33 将remcosRAT的各个section依次写入内存空间中
将remcosRAT远控木马写入目标进程后,恶意Loader会恢复目标进程的线程上下文信息(见图34),恢复之前同样会通过检查IntPtr.Size是否等于4来判断当前系统是32位还是64位,从而选择使用Wow64SetThreadContext或SetThreadContext函数来恢复。
恢复完目标进程的线程上下文信息后,恶意Loader最后调用ResumeThread函数来恢复目标进程的线程执行。这样一系列操作后,写入到目标进程中的remcosRAT远控木马就会执行。
图34 设置线程上下文信息并恢复线程执行
4.3 remcosRAT木马
通过前面的分析,我们知道,恶意Loader通过内存解密和进程挖空技术,最终在感染设备上执行了商业远控木马Remcos RAT,其版本号为“4.9.3 Pro”(如图35所示)。自2016年在暗网上的地下黑客社区开始出售以来,Remcos RAT非常活跃,基本上每个月都会发布两个左右的新版本。该工具由一家名为Breaking Security的公司发行出售,其具有键盘记录、屏幕记录、调用摄像头和麦克风进行录像录音、远程执行Shell命令、远程执行脚本、上传文件以及下载文件等功能。我们此前在报告 《【深度】ADLab针对新型黑客组织“海毒蛇”深度追踪与分析》中曾对其进行过详细的技术分析,在此不做过多赘述,下面仅对其配置文件部分和C2命令部分进行简要说明。
图35 最终执行的商业远控木马remcosRAT
如图36所示,Remcos RAT运行后会从自身资源中解密出配置信息,里面包括C&C服务器地址“45.87.155.41:8080,45.87.155.41:465,45.87.155.41:54550,45.87.155.41:80,45.87.154.153:80,45.87.154.153:8080,101.99.75.16:8080,101.99.75.16:80,101.99.75.16:465,101.99.75.145:465,101.99.75.145:80,94.131.102.115:80,94.131.102.117:80,94.131.102.119:80,94.131.102.122:80,94.131.102.124:80”、互斥对象名“dvwsus-SFNWWW”、键盘记录文件名“logs.dat”、Licence ID“5639D40461DCDD07011A2B87AD3C9EDD”以及和截图、录音等操作相关的其他信息。
图36解密出来的配置信息
Remcos RAT在感染主机执行并成功上线后,会等待C&C服务器下发控制指令以执行恶意功能,其解析C&C服务器控制指令的代码片段见图37。这些控制指令的功能包括执行文件管理、进程管理、键盘记录、屏幕记录、调用摄像头和麦克风进行录像录音、远程执行Shell命令、远程执行脚本、上传下载文件,注册表操作、安装卸载远控等,我们将主要的控制命令和功能描述列在表5中。
图37 Remcos RAT解析控制指令的代码片段
控制命令 | 功能描述 |
0x01 | 获取受感染主机最顶端程序标题 |
0x03 | 收集受感染主机所有已安装软件的相关信息,包括其软件供应商信息、版本信息、安装的路径信息、安装的日期等 |
0x06 | 收集受感染主机所有正在运行的进程信息 |
0x07 | 结束指定的进程 |
0x08 | 枚举所有的窗口并获取窗口标题 |
0x09 | 关闭指定的窗口 |
0x0A, 0x0B, 0xAD | 显示/隐藏指定的窗口 |
0x0C | 获取指定窗口的PID |
0x0D | 执行指定的命令行命令 |
0x12 | 收集键盘信息 |
0x13 | 启动在线键盘记录器 |
0x14 | 停止在线键盘记录器 |
0x15,0x16 | 读取指定的文件并将其发送到C&C服务器 |
0x17 | 删除指定的文件或路径 |
0x18 | 清除Firefox、Chrome等浏览器的登陆信息和cookie信息 |
0x1B | 控制受感染设备摄像头 |
0x1D | 记录受感染主机周围的声音信息并发送到C&C服务器 |
0x1E | 停止记录受感染主机周围声音信息 |
0x20 | 删除指定文件 |
0x21 | 结束木马自身进程 |
0x22 | 卸载自身,同时会移除木马产生的相关文件 |
0x23 | 执行vbs脚本来重启自身 |
0x24 | 更新木马,该命令会从指定的URL下载文件并执行 |
0x26 | 在受感染主机显示信息 |
0x27 | 注销用户,关闭系统或重启感染主机 |
0x28 | 获取受感染主机剪切板数据 |
0x29,0x2A | 清空受感染主机剪切板 |
0x2B | 创建一个共享内存来共享数据 |
0x2C | 从指定的URL下载数据并将数据共享到创建的共享内存中 |
0x30 | 连接给定的服务器并与之通信 |
0x31 | 在注册表中保存用户名 |
0x32 | 设置代理 |
0x34 | 执行服务控制,包括更改指定服务配置,启动、暂停、终止指定服务,将指定的服务状态返回给C&C服务器 |
0x8F | 枚举指定路径的文件,并将文件列表发送给C&C服务器 |
0x92 | 设置受感染主机桌面图片风格 |
0x94 | 修改指定窗口标题 |
0x95 | 获取实时物理内存状态并报告给C&C服务器 |
0x9E | 在感染主机播放警告声音 |
0xA3 | 控制受感染主机播放或者停止音频文件 |
0xAB | 在受感染主机上提权,并将结果返回到C&C服务器 |
0xAC | 在受感染主机显示弹出菜单 |
表5 C&C服务器的主要控制命令和功能描述
可见,只要Remcos RAT被成功植入到目标设备,其背后的黑客便可完全控制这台设备,对其进行监控、数据窃取甚至是破坏活动。
05 总 结
在过去的将近两年时间里,俄乌战争从最开始的俄方声称的“军事特别行动”,到后来的乌克兰全面反攻,再到如今的拉锯战和消耗战,俄乌双方都在这场战争中投入了巨大的人力、物力和财力。前线战场之外,网络空间的对抗也一直在持续,我们对近期俄乌网络战下来自俄罗斯的黑客组织的最新攻击活动进行了分析,通过以上分析我们可以看到,该黑客组织此次对乌克兰国家卫生服务局、农业政策和粮食部、战略产业部、韦尔霍维纳区国家管理局、扎波罗热市议会、卡米安市议会和乌克兰塑料包装解决方案供应商“RETAL”以及乌克兰银行“Agroprosperis Bank”等实体进行网络攻击很可能是为了窃取乌方的医疗和粮食等战略物资的调配情况和乌方的作战情报信息,以辅助俄方在前线战场上进行攻击或防御方面做决策。我们对此次攻击中俄方黑客组织使用的基础设施、攻击目标等方面进行了全面的分析,并对最近出现的一次攻击活动进行了详细的分析。从我们分析的结果来看,俄方黑客组织使用的核心恶意文件服务器来自俄罗斯,结合我们2023年6月底的分析,再次说明,在针对乌方的网络攻击中,俄方黑客不再遮遮掩掩。
俄乌战争持续将近两年,双方都损失惨重,同时伴随着西方国家的普遍参与,俄乌战争已经发展成俄罗斯与北约之间的战争。2023年10月,以哈冲突爆发,美国不得不分出精力应对以色列和巴勒斯坦的战局,这使得俄乌战争的走向愈加不确定。我们将会持续关注俄乌战争和俄乌网络战下该黑客组织的相关基础设施变化以对该组织的动向进行持续追踪。
06 IOC
6.1 域名
https://npddocs.com/
6.2 URL
https://npddocs.com/ssu.gov.ua/docs/file/util/0/d12934-0202334.doc
https://bitbucket.org/olegovich-007/777/downloads/wsuscr.exe
6.3 IP
89.23.98.22
95.214.26.199:80
95.214.26.199:465
95.214.26.199:21
95.214.26.199:8080
95.214.26.190:80
95.214.26.18:80
95.214.26.25:80
95.214.26.60:80
95.214.26.79:80
95.214.26.90:80
95.214.26.99:80
101.99.92.102:80
101.99.92.102:8080
101.99.92.102:465
101.99.92.101:465
101.99.92.103:465
101.99.92.19:465
101.99.92.19:80
101.99.92.19:8080
101.99.92.212:8080
101.99.92.218:8080
101.99.92.218:80
185.65.105.190:80
185.65.105.191:80
185.65.105.192:80
185.65.105.193:80
185.65.105.193:8080
185.65.105.194:8080
185.65.105.195:8080
185.65.105.196:8080
185.65.105.196:80
185.65.105.197:80
185.65.105.197:465
185.65.105.198:465
185.65.105.199:465
185.65.105.15:465
69.46.15.167:2220
45.87.155.41:8080
45.87.155.41:465
45.87.155.41:54550
45.87.155.41:80
45.87.154.153:80
45.87.154.153:8080
101.99.75.16:8080
101.99.75.16:80
101.99.75.16:465
101.99.75.145:465
101.99.75.145:80
94.131.102.115:80
94.131.102.117:80
94.131.102.119:80
94.131.102.122:80
94.131.102.124:80
参考链接:
[1] https://cert.gov.ua/article/6276567
[2] https://cert.gov.ua/article/6276824
声明:本文来自ADLab,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。