part1
点击上方蓝字关注我们
往期推荐
将二进制空间安全设为"星标⭐️"
第一时间收到文章更新
摘要
被用来进行持久化控制的开源软件是一款具有丰富功能的开源远程设备管理软件, 攻击者利用其MeshAgent组件, 可以通过代理隐蔽的与C2服务器进行通讯, 被利用的开源软件官网为:https://meshcentral.com/; Github地址:https://github.com/Ylianst/MeshCentral。
存档解压分析
该APT组织的植入程序利用7-Zip创建了一个自解压存档, 并利用upx进行了打包。打包基本信息如下图:
该存档包含五个文件, 其中有四个伪装成合法的系统服务和命令文件,如图:
在进行解压时,可选择以"#"模式打开它, 这是7-Zip中的一种特殊解析器模式, 用于分析文件以收集存档相关的附加信息, 包括安装脚本,如图:
以"#"模式打开的存档内容如下:
为了确定植入程序怎样在系统中保持持久性, 先从名为"2"的安装脚本开始分析,如图:
脚本的代码比较明显, 其将存档中所有组件提取到临时目录中并运行MicrosoftStores.exe
,且不带参数。
自动化脚本分析
从上面的分析可知, 攻击的下一步是执行MicrosoftStores.exe
文件, 该文件也是使用UPX压缩打包的,如图:
解压该文件后, 可以看到它包含一个带有解释器的编译后的Autolt脚本, 该脚本的存在解释了为什么提取后可以不带参数执行文件。
该脚本内容如下:
脚本最终会带参数的启动NetworkDrivers.exe
和nKka9a82kjn8KJHA9.cmd
, 以确保能在系统中长期保持持久性。
经过整理后的完整命令如下:
Payload分析
首先看一下NetworkDirvers.exe, 其文件属性如下:
该文件被安全产品检测出的名字为:HEUR:RemoteAdmin.Win32.MeshAgent.gen, 实际上该程序正是MeshCentral平台的合法代理程序MeshAgent。
接下来看一下nKka9a82kjn8KJHA9.cmd, 该脚本的文件大小居然超过了1MB, 其内容如下:
很明显文件内容被混淆了, 虽然包含了大量代码, 但混淆逻辑还算简单, 攻击者使用了大量文本块进行内容填充, 在脚本执行时, 解释器会利用GOTO命令标签跳过无意义的文本, 对其反混淆后整理的代码如下:
以上批处理脚本完成了以下操作:
(1).环境设置:
-
@echo off
:关闭命令显示,使得执行命令时不会在命令行中显示每一步操作。 -
setlocal enabledelayedexpansion
:启用延迟环境变量扩展,允许在代码运行时动态地修改变量值。
(2).变量定义:
-
set PWS=powershell -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile
:定义了一个变量PWS
,内容为 PowerShell 的启动参数,用于绕过执行策略、禁用配置文件、无交互式运行。 -
set Aur3volr=%~f0
:将当前批处理文件的完整路径赋值给变量Aur3volr
。 -
set WsE5T=EdgeBrowser.cmd
:定义了变量WsE5T
,指向一个文件名EdgeBrowser.cmd
。 -
set AWDksnh=%1 %2 %3 %4 %5 %6=%7']] %
:此行复杂且不常见,它将命令行参数%1
到%6
拼接在一起,并添加了一些符号,创建一个看似混淆的字符串。
(3).创建计划任务:
-
schtasks /create /f /tn "MicrosoftEdgeUpdateTaskMachineMS" /tr "%TEMP%%WsE5T%" %AWDksnh% 0001:00
:使用schtasks
命令创建一个名为"MicrosoftEdgeUpdateTaskMachineMS"
的计划任务,设置其执行文件路径为"%TEMP%%WsE5T%"
(即在临时目录中的EdgeBrowser.cmd
文件)。AWDksnh
的内容似乎是附加的参数,时间设定为每天凌晨 1:00 执行。 -
timeout /t 5
:在计划任务创建之后,等待 5 秒。
(4).删除文件:
-
del /f "%TEMP%MicrosoftStores.exe"
:强制删除%TEMP%
目录下的MicrosoftStores.exe
文件。 -
del /f "%Aur3volr%"
:强制删除当前批处理文件本身(由Aur3volr
变量指向的路径)。 -
该命令的主要作用是创建名为
MicrosoftEdgeUpdateTaskMachineMS
的计划任务。该任务运行EdgeBrowser
,并删除与恶意活动相关的一些文件。可以看到, 该脚本启动了一个名为:EdgeBrowser.cmd
的脚本, 该脚本内容如下:
这段脚本实现过程如下:
(1).变量定义:
-
set processPath="%temp%/NetworkDrivers.exe"
:定义了processPath
变量,指向%temp%
目录下的NetworkDrivers.exe
文件。 -
set processArgs="run"
:定义了processArgs
变量,用于给NetworkDrivers.exe
程序传递参数run
。 -
set processName="NetworkDrivers"
:定义了processName
变量,表示进程的名称NetworkDrivers
。
(2).PowerShell 循环:
-
powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -Command "while ($true) { ... }"
:该命令使用 PowerShell 启动一个无限循环(while ($true)
),并隐藏窗口执行。 -
if (-not (Get-Process -Name '%processName%' -ErrorAction SilentlyContinue)) { ... }
:在循环中,检查是否存在名称为NetworkDrivers
的进程。如果没有找到该进程,则执行{...}
中的代码。 -
Start-Process -FilePath %processPath% -ArgumentList '%processArgs%' -WindowStyle Hidden
:如果NetworkDrivers
进程不存在,则启动指定路径的NetworkDrivers.exe
程序,并传递参数run
,同时以隐藏窗口的方式运行。 -
Start-Sleep -Seconds 10
:循环每次执行完后等待 10 秒。
通过以上功能分析, 该脚本的核心功能包含3点:
-
监控
%temp%/NetworkDrivers.exe
是否正在运行。 -
如果该程序未运行,则启动它,并将其窗口隐藏。
-
每 10 秒检查一次程序状态,确保该进程持续运行。
上面分析出NetworkDrivers.exe实际上是MeshAgent代理, 这里植入程序利用PowerShell启动MeshAgent代理与C2服务器进行隐蔽交互。
这些操作可以让APT植入程序在系统中一直保持存活状态: 攻击者创建一个运行命令文件的计划任务, 该任务反过来启动MeshAgent与MeshCentral服务器建立连接。
在存档文件中还有一个名为NetworkDrivers.msh
的文件, 该文件实际上是MeshAgent的配置文件,内容如下:
该文件指定与 MeshCentral 服务器建立连接的代理参数:MeshName、MeshID、ServerID 和 C2 地址,通过 WebSocket 协议连接。通过 HTTPS 打开此地址时,会出现以下窗口 – MeshCentral 平台的登录表单。如图:
这进一步证实了攻击者使用合法的MeshCentral系统与C2服务器进行交互。
参考链接:
https://securelist.com/awaken-likho-apt-new-implant-campaign/114101/
往期推荐
点个在看你最好看
原文始发于微信公众号(二进制空间安全):一种利用开源远程设备管理软件持久化控制的APT技术
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论