网络犯罪分子针对特定国家或地区的情况并不少见。他们经常采用这种策略
2020年4月,ThreatLabZ观察到几次针对印度政府机构和银行业的针对性攻击事件。电子邮件已发送至印度储备银行(RBI),IDBI银行,印度国家农业和农村发展银行(NABARD)内的再融资部(DOR)等组织,并带有包含JavaScript和Java-后门。
对基于JavaScript的后门的进一步分析使我们将其与JsOutProx RAT相关联,正如Yoroi 所提到的那样, 威胁参与者 于2019年12月首次使用它 。
基于Java的RAT在此攻击中提供的功能类似于基于JavaScript的后门。
在此博客中,我们详细描述了此目标活动的电子邮件攻击媒介,对发现的后门的技术分析以及我们对该攻击的结论。
邮件分析
以下是发送给NABARD政府官员的电子邮件,其中包含恶意存档文件附件。
图1:带有恶意附件发送到NABARD的电子邮件。
电子邮件附件的文件名是:KCC_Saturation_letter_to_all_StCBs_RRBs_pdf.zip
该存档文件中包含一个执行恶意活动的HTA文件。
HTA文件的MD5哈希为 :23b32dce9e3a7c1af4534fe9cf7f461e
该电子邮件的主题与KCC饱和度有关,后者与Kisan信用卡计划有关,并在NABARD 的官方网站上进行了详细介绍。
攻击者利用了此主题,因为它与财务部相关,从而使此电子邮件看起来更合法。
我们使用电子邮件标题将源追溯到hosteam.pl,hosteam.pl是波兰的托管服务提供商,如下所示:
X-Auth-ID:syeds@rockwellinternationalschool.com
接收方:smtp10.relay.iad3b.emailsrvr.com(授权发送者:syeds-AT-rockwellinternationalschool.com),其ESMTPSA ID为0928BE00BD;
2020年4月20日星期一21:33:53 -0400(EDT)
X-Sender-Id:syeds@rockwellinternationalschool.com
收到:来自WINDEB0UPGVCUK(未使用的31-133-6-113.hosteam.pl [31.133.6.113])
(将TLSv1.2与密码DHE-RSA-AES256-GCM-SHA384结合使用)
通过0.0.0.0:465(trex / 5.7.12);
2020年4月20日星期一21:34:40 -0400
相同的HTML Application(HTA)文件也以存档附件的形式发送到IDBI bank,如图2所示。
图2:发送带有恶意附件的电子邮件到IDBI银行。
根据电子邮件标题和用于发送先前电子邮件的基础结构,我们能够识别出这些攻击的更多实例,并将其归因于同一威胁执行者。
图3显示了发送给RBI的电子邮件,其中包含一个包含基于Java的后门的存档文件。
图3:带有恶意附件的电子邮件发送到RBI。
图4显示了一封电子邮件,该电子邮件用于将带有Java后门的存档文件发送给印度农业保险公司(AIC)。
图4:发送带有恶意附件的电子邮件到AIC印度。
电子邮件的内容为印地语。
在上述两种情况下,基于Java的后门都具有相同的哈希,并且仅使用的文件名不同。
JAR文件的哈希为:0ac306c29fde5e710ae5d022d78769f6
JsOutProx的技术分析
HTA文件的MD5哈希为:23b32dce9e3a7c1af4534fe9cf7f461e
执行后,HTA文件会在一个窗口中显示垃圾数据,该窗口在自动关闭之前会在屏幕上快速闪烁。
这个HTA文件包含一个由mshta执行的JavaScript,如图5的文件头所示。
图5:文件中的HTA标头。
JavaScript的开头有一长串编码字符串,如图6所示。
图6:一长串编码字符串。
整个JavaScript将引用此字符串数组。它们在执行时会在运行时进行base64解码和RC4解密。
这个HTA文件中的JavaScript代码被大量混淆,如图7所示。
图7:高度混淆的JavaScript代码。
字符串解码和解密例程如图8所示。
图8:字符串解码和解密例程。
通过分析字符串解密例程,我们可以看到使用了RC4算法。
字符串解密的过程可以概括为以下步骤:
字符串解密例程通过以下调用来调用:b('0x4','qP52')。第一个参数是JavaScript开头声明的long数组中编码字符串的索引。第二个参数是RC4解密密钥。
使用atob()JavaScript函数对字符串进行base64解码。
使用for循环生成S-box,以生成序列:0x0至0x100。
使用解密密钥对S-box进行排列。
排列好的S盒用于对加密的字符串执行XOR解密。
在解密了此JavaScript中的所有字符串之后,我们可以看到主要配置,如图9所示。
图9:JsOutProx后门的主要配置文件。
上面的配置文件中的一些关键参数是:
BaseURL :这是C2通信URL。在这种情况下,它将使用动态DNS(* .ddns.net)和非标准端口。
分隔符 :这是在散发有关系统信息时将使用的分隔符。
SleepTime :需要延迟执行的持续时间。
延迟 :类似于SleepTime参数。
标签 :这是一个唯一的指标,在渗透过程中会附加到数据中。在这种情况下,标签为:Vaster。该基于JavaScript的后门于2019年12月首次被发现,此标记的值为:JsOutProx。
IDPrefix :此参数对应于Cookie的名称,该名称将在初始化时由后门发送到C2服务器的HTTP POST请求中设置。
RunSubKey :这是Windows注册表项,将用于在计算机上保持持久性。
该脚本检查它是由mshta,wscript还是由ASP Server执行,如图10所示。
图10:检查执行源。
这也表明该脚本具有在不同的环境(包括Web服务器)中执行的能力。2019年12月发现的JsOutProx的第一个实例是一个JavaScript文件。我们在2020年4月发现的实例是一个HTA文件,其中JavaScript代码被混淆并嵌入其中。因此,我们观察到该威胁参与者在野外使用不同的方法来部署后门。
该脚本还具有延迟执行的功能,如图11所示。
图11:延迟执行。
init()例程是初始化例程,该例程从系统收集不同类型的信息,并将其以HTTP POST请求的形式发送到C2服务器,如图12所示。
图12:主要的初始化例程。
在init()例程中收集的各个字段是:
卷序列号 :使用WMI查询:通过检查volumeSerialNumber字段,从“ win32_logicaldisk中选择*”获取卷序列号。
UUID :这是使用脚本中的getUUID函数随机生成的。使用的UUID格式为:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
ComputerName :计算机的 主机名。
UserName :正在执行此脚本的计算机的用户名。
操作系统标题 :通过检查标题字段,使用WMI查询:“从win32_operatingsystem中选择*”来获取此值。
操作系统版本 :此信息也使用类似于操作系统标题的WMI查询来收集。
标签 :这是在后门配置中定义的标签。在我们的例子中,标签是Vaster。
最后一个关键字是“ ping”,它是用receive()方法添加的。
所有这些值都由定界符“ _ | _”分隔并连接起来,然后进行十六进制编码并在发送到C2服务器的HTTP POST请求的Cookie头中称为“ _giks”,如图13所示。
图13:第一个HTTP POST请求发送到C2服务器。
使用HTTP请求和响应中的Cookie同步后门和C2服务器之间的命令和控制通信。
Cookie中的最后一个字段指示客户端命令的类型。
例如,如果cookie是:
Cookie:_giks = 46464646464646465f7c5f65363261396233322d323434352d346166612d393233622d3836653530306530363665655655f7c5f486f73746e616d655f7c5f41646d696e6973747261746f725f7c5f4f535f4e616d655f7c5f6e67f6e43c5f6e43e6e3df3e4e3df3dfdfdfdfdfdfde
然后,客户端命令可以标识为:
十六进制解码cookie以获取:FFFFFFFF_ | _e62a9b32-2445-4afa-923b-86e500e066ee_ | _Hostname_ | _Administrator_ | _OS_Name_ | _Version_ | _Vaster_ | _ping
使用定界符“ _ | _”分割解码的内容,以得到:['FFFFFFFF','e62a9b32-2445-4afa-923b-86e500e066ee','主机名','管理员','OS_Name','版本',' Vaster”,“ ping”]
从上面的列表中提取最后一个字段。在这种情况下,命令为:ping。
图14显示了处理所有命令的代码中的主要子例程。
图14:JsOutProx中的C2命令处理程序子例程。
下表中包含命令的说明。
命令
描述
更新
下载并执行脚本。
第一次
重新启动脚本。
l32
类似于rst命令。
dcn
退出执行。
rbt
重新启动系统。
shd
关闭系统。
lgf
关闭系统。
ejs
使用eval()执行服务器发送的JavaScript。
evb
使用ActiveXObject执行服务器发送的VBScript。
uis
卸载后门。
ins
安装后门。
科幻
调用文件插件。
做
调用下载插件。
SP
调用ScreenPShellPlugin。
cn
调用ShellPlugin。
基于Java的后门的技术分析
JAR文件的MD5哈希为 :0ac306c29fde5e710ae5d022d78769f6
在这种情况下,JAR文件被严重混淆。JAR文件的结构如图15所示。
图15:JAR文件结构。
此JAR文件中存在一个AES加密的资源,名称为:“ jkgdlfhggf.bvl”。
该资源将在运行时加载和解密,如图16所示。
图16:第1阶段的资源解密例程。
该资源被解密为另一个JAR文件,该文件将被放置在名称为jhkgdldsgf.jar的计算机上的%appdata%目录中
删除的JAR文件包含此基于Java的后门的所有功能。图17显示了JAR文件的主要结构。
图17:基于Java的后门的JAR文件结构。
这个JAR文件中的所有字符串都被名为Allatori的混淆器所混淆。字符串解密例程如图18所示。
图18:字符串解密例程。
我们在以前的博客 中更详细地描述了此字符串解密例程,该博客 还包括解密例程的Python实现。
JAR文件在端口9050上连接到C&C服务器:scndppe.ddns.net。
这个基于Java的后门在结构上是模块化的,并包含多个插件。图19显示了处理C&C通信并将命令分派到相应插件进行进一步处理的主要网络控制器代码。
图19:网络控制器命令处理程序。
控制器接收命令以及代表相应命令参数的字符串数组。
每个C&C命令都用于调用一个插件,该插件执行服务器发送的命令。
命令
调用插件
SC
屏幕插件。
ut
日志插件。
厘米
命令插件。
dn
下载器插件。
调频
Filemanager插件。
圣
启动插件。
信息量
基本插件退出执行。
第一次
基本插件重新开始执行。
现在,我们将描述这个基于Java的后门程序中的两个主要插件以及它们所处理的命令。
Filemanager插件 :该插件负责管理攻击者可以远程执行的所有与文件系统相关的操作。该插件支持多个命令,摘要在下表中。
插件命令
目的
调频电视
获取系统驱动器(包括CD驱动器)的列表。
Fm.get
获取目录中文件和文件夹的列表。
m
创建一个新目录。
m
使用Runtime.getRuntime()。exec()执行命令
女士
根据操作系统类型启动新的系统外壳。
调频
将一个文件的内容复制到另一个文件。
频道
使用chmod命令更改文件的权限(仅适用于Linux和Mac)。
调频电视
将文件从一个位置移动到另一位置。
菲德尔
删除文件
伦
重命名文件。
chmod
类似于chm命令。
调低
从系统下载文件。下载之前,文件内容经过Gzip压缩和Base64编码。
调频
将文件上传到系统。在放到文件系统上之前,将文件Gzip的内容解压缩并对Base64进行解码。
屏幕插件 :此插件使用java.Awt.Robot类在计算机上执行所有鼠标和键盘模拟并进行屏幕捕获。下表中详细介绍了此插件的命令。
插件命令
目的
监视
获取屏幕尺寸的宽度和高度信息。
sc.ck
模拟鼠标动作,例如双击,向上滚动和向下滚动。
电视
将鼠标光标移动到指定的坐标。
顶盖
进行屏幕截图。
斯基
将击键发送到机器。
持久性 :为确保在系统重新引导时自动执行此JAR文件,将创建一个窗口运行注册表项,如下所示:
HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run / v jhkgdldsgf / d'\'C:\ Program Files \ Java \ jre1.8.0_131 \ bin \ javaw.exe \'-jar \'C:\ Users \ user \ AppData \ Roaming \ jhkgdldsgf.jar \''/ f
云沙箱检测
图20显示Zscaler Cloud Sandbox 成功检测到基于Java的后门。
图20:此基于Java的后门程序的Zscaler Cloud Sandbox检测。
图21显示了Zscaler Cloud Sandbox 成功检测到包含JsOutProx RAT的基于HTA的后门。
图21:基于HTA的后门程序的Zscaler Cloud Sandbox检测。
结论
该威胁参与者对位于印度的组织特别感兴趣,电子邮件的内容表明他们对与每个目标组织相关的主题都有很好的了解。这种攻击中使用的后门并不常见,例如JsOutProx,它仅在2019年12月之前在野外被观察到。
Zscaler ThreatLabZ团队将继续监视此活动以及其他活动,以帮助确保客户安全。
MITRE ATT&CK TTP映射
战术
技术
混淆
混淆的文件或信息-T1027
软件包装
T1045
坚持不懈
注册表运行键/启动文件夹-T1060
屏幕截图
T1113
系统关机/重启
T1529
姆斯塔
T1170
文件和目录发现
T1083
常用端口
T1065
Windows管理规范
T1047
妥协指标(IOC)
散列
23b32dce9e3a7c1af4534fe9cf7f461e – HTA文件(JSOutProx)
0ac306c29fde5e710ae5d022d78769f6 –基于Java的后门
网络指标
scndppe [。] ddns [。] net:9050
backjaadra [。] ddns [。] net:8999
未经允许不得转载:x-sec » 黑客组织使用JsOutProx RAT对印度政府和金融机构的针对性攻击