Evilnum最早是pwncode于2018年5月披露JavaScript恶意软件。2020年,ESET将恶意软件Evilnum背后的运营团伙跟踪为针对欧洲和亚洲地区金融科技公司的APT组织。除金融领域外,Evilnum还针对游戏、电信等其他行业。该组织的攻击手法多样,包括利用各种漏洞、使用恶意软件和钓鱼等手段进行攻击。
Evilnum组织在攻击活动中部署的恶意软件主要为MaaS恶意软件提供商Golden Chickens的TerraLoader系列:More_eggs、TerraPreter等,相关代码被另一个出于经济动机的威胁组织Cobalt使用。这些恶意软件具有模块化和灵活的特性,可用于执行各种攻击任务,例如窃取凭据、拦截网络流量、窃取敏感数据等。
近日,安恒猎影实验室捕获了Evilnum组织针对以色列地区的攻击样本,原始文件为包含有JPG文件与伪装成PNG图片的LNK文件的ZIP文件,其中JPG文件如下图,为英国居民Emily Rose的护照信息,LNK则伪装成PNG图像引导用户点击执行。Evilnum此前常利用居民身份证件信息用作诱饵文件。
相关攻击流程如下图
1、LNK文件
LNK文件包含一段经混淆的CMD指令,指令执行后将复制%windir%\System32\ie4uinit.exe文件到%tmp%目录,在%tmp%\ieuinit.inf文件中写入相关配置信息,最后启动%tmp%\ie4uinit.exe。
安恒云沙箱对LNK文件的进程信息分析如下,LNK文件运行后将启动ie4uinit.exe连接C2获取后续恶意负载。
2、Javascript脚本
LNK文件执行后将加载后续Javascript指令。
远程Javascript指令运行后,将解密以下3个文件到本地:
1白文件:%appdata%\Microsoft\msxsl.exe
2PersPays:%appdata%\Microsoft\{随机字符}.txt (1758 bytes)
3Pays:%appdata%\Microsoft\{随机字符}.txt (27098 bytes)
其中PersPays文件用于启动白文件msxsl.exe并加载Pays有效负载
除了释放文件外,远程Javascript指令还通过修改注册表键值实现恶意代码的持久化驻留。
最后尝试通过WMI Win32_Process创建cmd进程,启动白文件msxsl.exe并加载Pays有效负载,若创建失败,则使用WScript.Shell启动相应进程。
释放在本地的Pays文件解密下一阶段有效负载的过程与上一阶段类似,均使用basE91算法[1]。
此外,代码还通过WMI监控进程死亡:
Javascript脚本运行后将通过注册表HKCU\Environment\UserInitMprLogonScript设置环境变量cscript /b /e:jscript "%APPDATA%\Microsoft\VQKWTAG5IKIFRAUK.txt",以实现恶意代码的持久化驻留。
1原始样本为伪装成PNG图片的LNK文件
2恶意文件中包含的cmd指令与Javascript指令等均经过混淆处理
3cmd指令通过INF-SCT技术执行后续有效负载
INF文件是一个纯文本文件,其中包含在Windows操作系统中安装设备驱动程序和软件应用程序的说明。攻击者通过加载INF文件,可以执行位于远程服务器上的远程脚本组件文件(SCT),并在目标计算机上执行任意代码。
本次捕获的Evilnum组织样本通过运行ie4uinit.exe -basesettings成功加载了名为ieuinit.inf的INF文件[2],从而远程执行了Javascript恶意代码。
4利用msxls.exe绕过AppLocker应用程序控制策略
msxls.exe可以在不启动MicrosoftExcel的情况下解析和执行多种类型的脚本文件,例如:VBScript、JavaScript、PowerShell、Python脚本、Perl脚本等。由于msxls.exe是Microsoft Excel自带的工具,而且在默认情况下被包含在Windows操作系统中,所以攻击者利用了其白文件属性绕过AppLocker的应用程序控制策略。
Javascript脚本检查本机是否存在注册文件,若存在,则请求telemistry[.]net/get.php?id={文件内容} 以获取后续执行。
若不存在注册文件,则获取主机计算机名、用户名、用户所在域以及本机反病毒软件信息,以"|"符连接,请求telemistry[.]net/reg.php?g={主机信息} 进行“注册”,并将返回内容写入注册文件。
猎影实验室观察到Evilnum组织域名资产上存在多个攻击样本,这些样本均用于同一攻击活动,活动疑似最早开始于2022年12月,持续至2023年3月。
FileName | Hash |
Axiance_FullReport_Volume.png.lnk | 76c84c02b044689e11c71fede9f0b61d |
screenshots-9201.jpg.zip | cf66be681fa44f6a2ed8dc51cc73d0ad |
Screenshot-9501.JPG.lnk | cf53baf5ec89b66224d208c64c39eeb3 |
Screenshot-9502.JPG.lnk | f0dc2c2e01e0a7d1425cab539679927e |
Screenshot-9501.JPG.lnk | ea896822cbc2f484be9d385c211322c1 |
Screenshot-9502.JPG.lnk | 772f58a2bbf689c5b6c8daf9e0445b43 |
Screenshot_0459159441.lnk | 88101c9a59741278879d3a4d59e96540 |
我们对同批攻击样本进行分析后发现,部分样本后续会下发Cobalt Strike Beacon继续加载后续负载(ukmedia[.]store/static-directory/html.mp3)执行。截至分析时间,后续文件已失活。
Evilnum组织在我们最新发现的活动中,使用了混淆cmd指令启动白文件的方式加载初始有效负载,该方式在VT平台上拥有较好的免杀率。同时,该组织还通过另一白文件msxsl.exe绕过AppLocker的应用程序控制策略后加载有效负载。
为了防止msxls.exe被滥用,安恒猎影实验室建议管理员在系统上实施适当的安全控制措施,例如禁用msxls.exe工具或限制其执行权限,以确保系统的安全性。针对WMI被滥用的情况同理,应限制WMI服务的访问权限。其他防范方式还包括正确配置AppLocker规则,及时更新应用程序等。
Tactic | ID | Name | Description |
执行 | T1059.003 | Windows Command Shell | 通过cmd.exe执行命令 |
T1059.007 | JavaScript | 初始阶段负载获取JavaScript后续脚本执行 | |
T1204 | 用户执行 | 受害者被引诱打开将安装恶意JS组件的LNK文件 | |
T1047 | Windows管理工具 | JS组件使用WMI获取杀软产品信息 | |
持久化 | T1037.001 | 登录脚本 | JS组件将脚本路径添加到HKCU\Environment\UserInitMprLogonScript注册表项 |
防御闪避 | T1574 | 劫持执行流程 | 通过在ieuinit.inf文件写入相关配置使恶意代码被白文件ie4uinit.exe加载 |
T1553.002 | 代码签名 | Evilnum使用合法(已签名)应用程序msxsl.exe作为防御规避机制 | |
T1036.007 | 双文件扩展名 | Evilnum使用.png.lnk或.jpg.lnk的双文件扩展名伪装文件真实类型 | |
T1112 | 修改注册表 | Evilnum为了在受损系统中持久存在使用注册表的运行键 | |
T1027 | 混淆文件或信息 | Evilnum恶意组件中使用大量了加密、编码和混淆 | |
T1027.009 | 嵌入式有效载荷 | Evilnum在JS脚本中嵌入了下一阶段有效负载 | |
T1220 | XSL脚本处理 | More_eggs恶意软件使用msxsl.exe从XSL文件调用JS代码 | |
发现 | T1518.001 | 安全软件发现 | JS组件会搜索已安装的防病毒软件 |
T1082 | 系统信息发现 | Evilnum将有关系统的信息被发送到C&C服务器 | |
C&C | T1104 | 多级通道 | Evilnum其各种组件使用独立的C&C服务器 |
T1105 | 远程文件复制 | 从C&C服务器上传/下载文件 | |
T1071 | 标准应用层协议 | HTTP和HTTPS用于C&C |
参考链接
[1] https://github.com/Equim-chan/base91/
[2] https://bohops.com/2018/03/10/leveraging-inf-sct-fetch-execute-techniques-for-bypass-evasion-persistence-part-2/