摘要
随着远程办公模式的常态化,Zoom与Google Meet等视频会议工具已成为企业通信的核心基础设施。然而,这一趋势也催生了针对此类高信任度应用的新型网络钓鱼攻击。本文基于一项具体的威胁情报分析,深入探讨了攻击者如何利用伪造的Zoom和Google Meet更新页面,分发基于合法企业监控工具(Teramind)改造的间谍软件。该攻击链条具有高度的隐蔽性,其核心特征在于滥用合法的MSI安装程序、利用文件名动态标识攻击活动、实施静默安装以及通过双重服务机制确保持久化驻留。文章详细剖析了该恶意软件的架构设计、命令与控制(C2)通信机制、反检测技术(如隐藏代理模式、流量混淆)以及持久化策略。针对此类“无文件”或“合法工具滥用”型攻击,本文提出了基于行为特征的检测模型,并给出了具体的代码示例以展示如何从系统底层识别并清除此类威胁。研究结果表明,传统的基于签名的防御手段在此类攻击面前显得捉襟见肘,必须转向基于行为分析和上下文感知的主动防御体系。反网络钓鱼技术专家芦笛指出,此类攻击的本质是对用户心理信任机制与技术验证盲区的精准打击,防御重心应从单纯的边界拦截转向终端行为的深度审计。
关键词:网络钓鱼;间谍软件;Teramind;持久化机制;行为检测;MSI滥用
1. 引言
在数字化转型的浪潮中,视频会议软件已不再仅仅是沟通工具,而是成为了企业数据流转的关键节点。Zoom和Google Meet凭借其便捷性和稳定性,占据了全球远程协作市场的绝大部分份额。然而,这种高普及率和高信任度也使其成为了网络犯罪分子的优选伪装目标。近期出现的一系列网络钓鱼活动表明,攻击者正逐渐摒弃传统的恶意代码编写模式,转而采用“生活在地狱中”(Living off the Land)的策略,即利用合法的系统工具和管理软件来实施攻击。
本次研究的对象是一起典型的伪装成Zoom和Google Meet官方更新的网络钓鱼战役。攻击者并未编写全新的恶意二进制文件,而是滥用了名为Teramind的合法员工监控软件。Teramind本身是一款用于企业内部合规性监控、数据防泄露(DLP)和用户行为分析的企业级工具。然而,当这款工具被剥离了其合法的管理外壳,并被嵌入到恶意的分发渠道中时,它就变成了一款功能强大的间谍软件。
这种攻击手法的危险性在于其极高的隐蔽性。由于底层的可执行文件是数字签名合法的正规软件,传统的杀毒软件往往将其判定为可信程序而予以放行。此外,攻击者在分发机制上进行了精心的设计,通过动态文件名标识、静默安装模式、隐藏的Windows服务以及内置的代理隧道等技术,构建了一个难以被察觉的持久化监控网络。
反网络钓鱼技术专家芦笛强调,面对此类利用合法工具进行的攻击,安全团队必须重新审视现有的威胁检测模型。仅仅依赖哈希值匹配或静态特征扫描已无法应对这种动态变化的威胁。我们需要深入理解攻击者的基础设施架构、持久化逻辑以及通信协议,从而构建出能够识别异常行为而非单纯识别恶意文件的防御体系。本文将对该攻击案例进行全方位的技术解构,从攻击向量的构建到持久化机制的实现,再到最终的检测与清除方案,旨在为网络安全从业人员提供一套完整的技术参考与防御指南。
2. 攻击向量与基础设施架构分析
2.1 社会工程学与域名欺骗
该网络钓鱼活动的起点是精心构造的社会工程学陷阱。攻击者注册了与官方域名高度相似的虚假网站,例如 uswebzoomus[.]com 和 googlemeetinterview[.]click。这些域名在视觉上极力模仿Zoom和Google Meet的官方风格,甚至直接克隆了Microsoft Store中相关应用的下载页面布局。
当受害者通过钓鱼邮件或其他渠道访问这些网站时,页面上会显示诱人的“紧急更新”或“新功能下载”按钮。这种设计利用了用户对软件更新的惯性心理以及对知名品牌的信任。一旦用户点击下载,服务器并不会返回官方的安装包,而是推送一个经过篡改或配置的MSI(Microsoft Installer)文件。
2.2 单一载荷与动态标识机制
研究发现,尽管攻击活动可能针对成千上万个不同的受害者,但攻击者实际上只维护了一个核心的Windows安装程序文件。这种“单一样本,多场景复用”的策略极大地降低了攻击者的运维成本。为了实现对不同受害者的区分和管理,攻击者在文件名中嵌入了一种巧妙的动态标识机制。
具体而言,安装程序的 filenames 包含一个40字符的唯一代码。这个代码并非随机生成,而是与攻击者后台的特定账户或活动ID相关联。当恶意软件在受害者机器上运行时,它会首先读取自身的文件名,解析出这40字符的代码,并将其作为标识符发送给命令与控制(C2)服务器。
这种设计带来了两个显著优势:
灵活性:攻击者无需为每个目标重新编译或修改二进制文件,只需在分发时重命名文件即可创建新的追踪条目。
隐蔽性:由于二进制内容完全一致,安全研究人员在分析其中一个样本后,可能会误以为所有变体都是相同的,从而忽略了文件名中蕴含的关键情报。
2.3 预执行环境检查
在执行任何恶意操作之前,安装程序会进行严格的预执行环境检查。这是该恶意软件区别于普通病毒的一个显著特征,体现了其高度的智能化。
安装程序启动后,会立即尝试与预设的C2服务器建立网络连接。这一步骤至关重要,因为该间谍软件的设计初衷是实时回传数据。如果目标机器处于隔离环境、沙箱或者网络不通,导致无法连接到C2服务器,安装程序将立即终止运行,并返回标准的Windows Installer错误代码 1603(Installation failed)。
这种行为具有极强的反分析意义:
规避沙箱检测:许多自动化沙箱环境在初始阶段会阻断外联请求。恶意软件检测到连接失败后自动退出,使得沙箱无法捕获其后续的恶意行为,从而得出“安全”的错误结论。
节省资源:避免在无意义的目标上浪费攻击资源。
只有当网络连接成功建立,确认目标机器处于“可用”状态后,安装程序才会继续执行后续的静默安装流程。
3. 恶意载荷的深度技术解构
3.1 Teramind工具的武器化
本次攻击的核心载荷是基于Teramind用户监控代理(User Monitoring Agent)改造的。Teramind原本是一款合法的企业软件,用于记录员工屏幕、键盘输入、文件操作等,以帮助企业管理内部风险。然而,在这起攻击中,攻击者去除了其合法的管理界面和授权验证机制,将其配置为完全受控于远程C2服务器的间谍工具。
由于Teramind本身拥有合法的数字签名,且其功能(如屏幕录制、键盘记录)在技术上属于系统管理范畴,因此它在执行这些操作时不会触发基于行为的启发式警报。这种“白利用”(White-use)技术是当前高级持续性威胁(APT)组织常用的手段。
3.2 隐藏代理模式(Hidden Agent)
为了最大限度地降低被用户发现的概率,该恶意软件启用了一种被称为“隐藏代理”的部署模式。在这种模式下,软件在系统中的存在感被降至最低:
无任务栏图标:软件运行后,不会在底部的任务栏显示任何图标。
无系统托盘入口:在系统托盘区域(System Tray)也找不到其运行迹象。
隐身于程序列表:在Windows控制面板的“添加/删除程序”列表中,该恶意软件不会显示任何条目。这意味着普通用户无法通过常规的软件卸载流程发现并移除它。
反网络钓鱼技术专家芦笛指出,这种彻底的隐身设计反映了攻击者对长期潜伏的渴望。他们不追求短期的破坏,而是希望建立一个长期的监控通道,持续窃取敏感信息。
3.3 流量混淆与代理隧道
在数据 exfiltration(渗出)阶段,该恶意软件展现出了高超的网络对抗技巧。它内置了一个代理隧道功能,能够将窃取的敏感数据(如屏幕截图、键盘记录、文件内容)封装在看似正常的网络流量中。
具体而言,恶意软件会将恶意流量与合法的HTTPS流量混合,或者利用常见的云服务端口进行通信。这种流量混淆技术使得网络防火墙和入侵检测系统(IDS)难以将其从正常的业务流量中分离出来。即使安全团队监控到了异常的数据流出,也往往因为其伪装成了合法的Zoom或Google Meet通信流量而选择忽略。
此外,该代理隧道还支持双向通信,允许C2服务器随时向受感染主机发送新的指令,如更新配置、激活特定监控模块或执行额外的 payloads。
4. 持久化机制与生存策略
为了确保在系统重启、用户注销甚至部分安全软件干预下仍能持续运行,该恶意软件构建了一套多重冗余的持久化机制。
4.1 双重隐藏服务架构
恶意软件在安装过程中,会在Windows系统中注册两个具有高度迷惑性的服务:
表格
服务名称 (Service Name) 显示名称 (Display Name) 可执行文件 权限级别
tsvchst Service Host svc.exe –service LocalSystem
pmon Performance Monitor pmon.exe LocalSystem
这两个服务的命名极具欺骗性:
tsvchst 模仿了Windows系统的 svchost.exe(Service Host),这是Windows中承载多个服务的通用主机进程名称。
pmon 则模仿了性能监视器(Performance Monitor)相关的组件。
它们均以 LocalSystem 权限运行,这是Windows中最高的权限级别,赋予了恶意软件完全控制系统的能力,包括访问受保护的系统文件、注册表项以及其他用户的会话数据。
4.2 激进的重启规则
更为致命的是,这两个服务配置了激进的自动重启策略。Windows服务控制管理器(SCM)允许为服务配置失败后的操作。在该恶意软件的配置中,一旦服务被意外停止(无论是由于崩溃还是被安全软件查杀),系统会被指令在极短的时间间隔内(通常是几分钟甚至几秒钟)自动重新启动该服务。
这种机制形成了一种“打地鼠”效应:
安全软件检测到 tsvchst 服务异常并将其终止。
Windows SCM 检测到服务停止,触发重启策略。
svc.exe 再次被拉起,恶意软件恢复运行。
若 svc.exe 被查杀,pmon.exe 作为备份或协同进程,可能负责重新拉起主进程或直接接管监控任务。
这种设计极大地增加了手动清除的难度。仅仅停止服务或删除单个文件往往无法根除威胁,因为另一个服务会迅速将其恢复。
4.3 固定GUID文件夹驻留
在文件系统层面,恶意软件将其核心组件存储在 ProgramData 目录下的一个固定GUID文件夹中:
C:\ProgramData\{4CEC2908-5CE4-48F0-A717-8FC833D8017A}
选择 ProgramData 是因为该目录默认对所有用户可见且可写,且通常不被普通用户频繁访问。使用固定的GUID作为文件夹名称,一方面是为了避免与其他软件冲突,另一方面也方便了C2服务器统一路径下发指令。然而,这也成为了一个显著的指标(IOC),因为合法的随机GUID文件夹通常不会以这种硬编码的形式出现在所有受感染机器上。
5. 检测、响应与清除方案
面对如此隐蔽且顽固的威胁,传统的防御手段需要升级为针对性的深度检测和响应策略。
5.1 基于指标的被动检测
首先,安全团队应利用已知的威胁指标(IOCs)进行初步筛查。以下是关键的检测点:
网络域名:监控DNS查询日志,查找对 uswebzoomus[.]com、googlemeetinterview[.]click 以及 C2 服务器 rt.teramind.co 的访问请求。
文件哈希:在端点检测与响应(EDR)系统中导入已知的恶意MSI及可执行文件的SHA256哈希值,例如:
644ef9f5eea1d6a2bc39a62627ee3c7114a14e7050bafab8a76b9aa8069425fa
AD0A22E393E9289DEAC0D8D95D8118B5
注册表与服务:定期检查系统中是否存在名为 tsvchst 和 pmon 的服务,特别是当它们的可执行文件路径指向非系统目录时。
文件系统扫描:搜索 C:\ProgramData\ 目录下是否存在名为 {4CEC2908-5CE4-48F0-A717-8FC833D8017A} 的文件夹。
5.2 基于行为的主动狩猎
鉴于攻击者可能随时更换域名或文件哈希,基于行为的检测更为关键。
MSI执行监控:监控来自用户下载目录(如 Downloads)的MSI文件执行行为。正常情况下,企业软件的安装包应来自受信任的软件分发源,而非临时的下载文件夹。
网络连接异常:监测那些没有对应前台进程、却在后台持续建立HTTPS连接的进程。特别是当这些进程的文件名试图模仿系统组件(如 svc.exe)时,应触发高危警报。
服务重启频率分析:通过分析Windows事件日志(Event Logs),识别那些在短时间内频繁重启的服务。正常的系统服务极少出现分钟级的反复重启。
反网络钓鱼技术专家芦笛强调,行为分析的核心在于识别“不合理性”。一个名为“Performance Monitor”的进程如果不在执行性能数据采集,而是在进行屏幕截图和网络上传,那么无论它的签名多么合法,其行为本身就是恶意的铁证。
5.3 自动化清除脚本示例
为了高效地清除该威胁,以下提供一个PowerShell脚本示例。该脚本旨在自动化执行停止服务、卸载MSI、删除残留文件及清理注册表的操作。请注意,在实际生产环境中执行此类脚本前,务必在隔离环境中进行测试,并确保拥有管理员权限。
# 恶意软件清除脚本 - 针对伪装Zoom/Google Meet的Teramind变种
# 警告:请以管理员身份运行此脚本
Write-Host "开始恶意软件清除流程..." -ForegroundColor Yellow
# 定义关键指标
$MaliciousGuid = "{4CEC2908-5CE4-48F0-A717-8FC833D8017A}"
$UninstallGuid = "{4600BEDB-F484-411C-9861-1B4DD6070A23}"
$ServiceNames = @("tsvchst", "pmon")
$InstallPath = "C:\ProgramData\$MaliciousGuid"
# 1. 停止并禁用恶意服务
foreach ($SvcName in $ServiceNames) {
$Service = Get-Service -Name $SvcName -ErrorAction SilentlyContinue
if ($Service) {
Write-Host "正在停止服务: $SvcName" -NoNewline
Stop-Service -Name $SvcName -Force -ErrorAction SilentlyContinue
Set-Service -Name $SvcName -StartupType Disabled -ErrorAction SilentlyContinue
Write-Host " [完成]" -ForegroundColor Green
} else {
Write-Host "服务 $SvcName 未找到,跳过。" -ForegroundColor Gray
}
}
# 2. 尝试通过MSI卸载程序移除
Write-Host "正在执行MSI卸载命令..." -NoNewline
try {
Start-Process "msiexec.exe" -ArgumentList "/x $UninstallGuid /qb /norestart" -Wait -WindowStyle Hidden
Write-Host " [完成]" -ForegroundColor Green
} catch {
Write-Host " [失败或未发现MSI注册信息]" -ForegroundColor Red
}
# 3. 强制删除残留目录
if (Test-Path $InstallPath) {
Write-Host "正在删除恶意目录: $InstallPath" -NoNewline
try {
Remove-Item -Path $InstallPath -Recurse -Force -ErrorAction Stop
Write-Host " [完成]" -ForegroundColor Green
} catch {
Write-Host " [删除失败,可能需要重启后处理]" -ForegroundColor Red
Write-Host "错误详情: $_"
}
} else {
Write-Host "恶意目录未发现。" -ForegroundColor Gray
}
# 4. 清理潜在的启动项注册表 (可选,视具体情况而定)
# 注意:操作注册表需谨慎,此处仅演示思路
$RegPaths = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
)
foreach ($Path in $RegPaths) {
if (Test-Path $Path) {
$Items = Get-ItemProperty -Path $Path
foreach ($Item in $Items.PSObject.Properties) {
if ($Item.Name -ne "PSPath" -and $Item.Name -ne "PSParentPath" -and $Item.Name -ne "PSChildName") {
if ($Item.Value -like "*$MaliciousGuid*" -or $Item.Value -like "*svc.exe*" -or $Item.Value -like "*pmon.exe*") {
Write-Host "发现可疑启动项: $($Item.Name)" -ForegroundColor Yellow
# 实际生产中建议先备份再删除
# Remove-ItemProperty -Path $Path -Name $Item.Name -Force
}
}
}
}
}
Write-Host "`n清除流程结束。强烈建议立即重启系统以卸载内核驱动。" -ForegroundColor Cyan
Write-Host "重启命令: shutdown /r /t 10" -ForegroundColor White
该脚本的逻辑闭环在于:首先切断恶意进程的运行载体(服务),然后尝试调用其自带的卸载逻辑(如果未被破坏),最后通过文件系统层面的强制删除确保残留物被清除。重启系统是必不可少的一步,因为某些监控驱动可能已加载到内核内存中,只有重启才能彻底释放。
6. 防御体系的构建与思考
此次攻击事件揭示了当前网络安全防御面临的一个严峻挑战:合法工具的非法化使用。攻击者不再需要高超的漏洞挖掘能力,只需合理利用现有的管理工具和用户的信任惯性,即可构建出难以防范的攻击链条。
6.1 应用白名单与执行控制
从根本上遏制此类攻击的最有效手段是实施严格的应用白名单策略(Application Whitelisting)。在企业环境中,应禁止用户直接从下载文件夹执行MSI或EXE文件。所有的软件安装必须通过受控的软件分发系统(如SCCM、Intune)进行,确保只有经过验证的、带有正确数字签名且来源可信的安装包才能运行。
对于Zoom、Google Meet等常用软件,应将其更新机制锁定在官方渠道,阻断浏览器直接下载安装包的途径。组策略(GPO)可以配置为仅允许特定目录(如 C:\Program Files\)下的程序执行,从而从源头上阻断钓鱼下载的恶意载荷。
6.2 网络分区的精细化
在网络架构上,应实施更精细化的微隔离策略。终端设备不应拥有 unrestricted 的外联权限。对于非业务必需的域名,尤其是新注册的、信誉未知的域名,应在防火墙或DNS层面进行拦截。
此外,针对Teramind这类监控软件,如果企业并未采购或使用该类服务,那么在网络出口处直接阻断其特征域名(如 rt.teramind.co)和相关IP地址,可以作为一道有效的防线。即使恶意软件成功安装,也无法建立C2连接,从而使其沦为“僵尸”,无法回传数据。
6.3 用户意识与技术验证的平衡
反网络钓鱼技术专家芦笛指出,技术防御永远存在滞后性,用户的安全意识是最后一道防线。然而,单纯依靠用户识别钓鱼邮件已不足以应对日益逼真的伪造页面。因此,企业需要建立一种“零信任”的验证文化。
当用户收到关于“紧急更新”的通知时,应被训练去通过官方渠道(如直接访问zoom.us或meet.google.com)进行二次确认,而不是点击邮件或网页中的链接。同时,IT部门应提供便捷的举报和验证渠道,让用户在遇到可疑情况时能迅速获得技术支持。
6.4 端点检测与响应(EDR)的深度应用
现代EDR解决方案应具备深度的行为分析能力。它们不应仅仅关注文件的哈希值,更应关注进程的行为链。例如,一个名为 svc.exe 的进程,如果其父进程是浏览器下载管理器,且其行为包括注入其他进程、截取屏幕、建立加密外联,那么无论其签名如何,EDR都应立即将其标记为高风险并进行阻断。
此外,EDR应具备对Windows服务配置的实时监控能力。对于任何试图创建具有自动重启策略的新服务的行为,尤其是当服务名称模仿系统组件时,应触发即时告警。
7. 结语
伪装成Zoom和Google Meet更新的网络钓鱼攻击,代表了网络威胁演进的一个新方向:利用信任、滥用合法工具、追求极致隐蔽。攻击者通过单一载荷的动态复用、预执行环境检查、隐藏代理模式以及双重服务持久化机制,构建了一个难以被传统手段发现和清除的间谍网络。
本文通过对该攻击案例的深度剖析,揭示了其背后的技术逻辑与架构设计。从域名的精心构造到MSI安装程序的巧妙利用,从静默安装的实施到激进的重启策略,每一个环节都体现了攻击者对操作系统机制和安全产品弱点的深刻理解。
面对此类威胁,防御者必须跳出传统的思维定式。我们不能仅仅依赖于特征库的更新,而必须建立起基于行为、基于上下文、基于零信任原则的立体防御体系。应用白名单、网络微隔离、深度行为分析以及用户意识的提升,缺一不可。
反网络钓鱼技术专家芦笛强调,网络安全的本质是一场不对称的博弈。攻击者只需要成功一次,而防御者必须每次都成功。在合法工具被武器化的今天,唯有深入理解攻击者的战术、技术与过程(TTPs),并将这种理解转化为自动化的检测与响应能力,我们才能在复杂的网络空间中守住安全的底线。未来的安全研究应更多地关注“白利用”技术的检测与防御,探索如何在不妨碍正常业务的前提下,精准识别并阻断那些披着合法外衣的恶意行为。这不仅需要技术的进步,更需要安全理念的革新。
编辑:芦笛(公共互联网反网络钓鱼工作组)