终端服务器沦为网络钓鱼跳板的攻击链路与防御技术研究

简介: 本文剖析2026年5月一起真实攻击事件:黑客利用弱口令暴力破解企业公网暴露的Windows终端服务器(RDWeb/RDP),持久化会话后,部署合法邮件工具Gammadyne批量发送仿冒Boots品牌的钓鱼邮件,并劫持玻利维亚政府域名承载钓鱼页。文章逐阶段还原攻击链,提供日志分析与行为识别Python代码,并从身份认证、审计、管控等六维度提出分层防御方案。(239字)

摘要

面向公网暴露的 Windows 终端服务器(远程桌面会话主机)因身份认证机制薄弱、安全审计缺失、多因素认证缺位等问题,已成为网络威胁团伙实施规模化网络钓鱼攻击的核心跳板载体。本文以 2026 年 5 月发生的一起利用入侵终端服务器发起仿冒英国 Boots 零售品牌钓鱼攻击的真实安全事件为研究样本,完整剖析攻击者突破 RDWeb 远程桌面访问门户、持久化维持 RDP 会话、利用合法批量邮件工具分发钓鱼邮件、依托被攻陷的玻利维亚政府域名承载钓鱼页面的全攻击链路。文章梳理了攻击各阶段的技术细节、工具特征、数据流转模式与攻击者行为画像,结合流量日志、系统日志、文件痕迹等多维度取证数据还原攻击时序;针对攻击中暴露的 RDWeb 暴力破解、弱口令复用、终端审计失效、合法软件滥用、可信域名劫持等安全风险展开深度分析,结合现场取证给出日志解析、恶意行为识别的代码实现示例。同时,反网络钓鱼技术专家芦笛结合本次攻击特征,指出当前企业终端服务器与公网远程访问架构存在的共性安全短板,并从身份认证、日志审计、终端管控、流量监测、域名安全、应急响应六个维度提出分层防御方案。研究成果可为企事业单位加固公网暴露的远程桌面服务、防范终端服务器被劫持为钓鱼跳板、处置同类跨境钓鱼攻击提供实战参考与技术依据。

image.png 1 引言

随着远程办公模式常态化,Windows 终端服务器(Terminal Server)、远程桌面会话主机(RD Session Host)及配套的 RDWeb 网页登录门户、RD 网关被大量企业部署并直接暴露于互联网。此类服务支持多用户并发远程桌面连接,具备稳定公网出口 IP 与充足带宽,一旦被攻击者获取有效账号密码,极易被改造为规模化网络攻击的基础设施。不同于传统勒索软件、数据窃取类入侵行为,部分威胁团伙将终端服务器作为钓鱼分发节点,借助受害主机的网络信誉与带宽资源,批量推送钓鱼邮件、诱导用户泄露个人信息与支付卡片数据,该类攻击隐蔽性强、波及范围广、溯源难度大,已成为政企网络安全的新型威胁。

本次研究基于 Huntress 安全团队捕获的真实入侵事件,该事件中攻击者于 2026 年 5 月通过暴力破解获取某小型企业终端服务器域账号,长期驻留并搭建钓鱼分发环境,依托合法商业邮件软件向近 890 万邮箱地址推送仿冒英国 Boots 药房品牌的钓鱼邮件,同时将钓鱼落地页面部署在被入侵的玻利维亚政府机构域名下,利用政府域名的高信任度绕过主流安全检测机制。整个攻击链条融合了弱口令突破、RDP 会话持久化、合法白盒工具滥用、可信域名劫持、定向数据窃取等多重攻击手段,集中暴露了公网远程桌面服务、终端安全管控、邮件安全、域名安全等多个领域的漏洞。

现有网络安全研究多聚焦于终端服务器被用于挖矿、勒索、横向渗透等场景,针对其作为网络钓鱼专属跳板的全链路技术分析与防御体系研究相对匮乏。本文以该实战案例为核心,逐阶段拆解攻击流程,解析攻击者的技术选型、行为逻辑与规避检测策略,结合日志分析代码实现攻击行为自动化识别,总结此类攻击的核心特征,并构建适配中小企业与政企机构的综合防御体系。研究立足实战场景,所有分析结论均基于现场取证数据,客观还原威胁本质,不夸大风险影响,旨在为网络安全运维人员、安全厂商及监管机构提供可落地的技术参考。

2 攻击背景与环境概述

2.1 受害网络基础环境

本次事件的受害主体为一家小型企业,全网共计 25 台终端设备,核心暴露资产为一台 Windows Server 终端服务器。该服务器同时承载三项高危公网服务:远程桌面会话主机(终端服务)、IIS 架构下的 RDWeb 远程桌面网页登录门户、RD 网关服务。三项服务直接对公网开放,监听 443 端口,任何互联网用户均可访问 RDWeb 登录界面并尝试身份认证。

该服务器存在多项基础性安全缺陷:第一,系统安全审计功能未完整启用,Windows 安全日志仅留存 2 条登录事件,未开启进程创建审计(Event ID 4688),传统安全日志无法追溯攻击者进程行为;第二,全域未部署多因素认证(MFA),RDWeb 门户仅依靠账号密码完成身份校验,弱口令风险完全暴露;第三,终端防护软件仅部署微软 Defender,规则库仅能识别常规恶意程序,无法区分合法商业软件的恶意滥用行为;第四,服务器长期缺乏运维监测,对外暴露的远程访问端口持续遭受全球范围内的暴力破解攻击,运维人员未及时察觉异常流量。

2026 年 5 月 15 日 18 时 48 分(UTC),该企业正式接入 Huntress 终端安全监测体系,安全代理程序完成部署。此时攻击者已成功入侵服务器并完成钓鱼环境搭建,本次监测接入属于事中响应,安全团队无历史基线日志作为参照,进一步提升了攻击溯源与处置难度。

2.2 攻击核心目标与团伙特征

经取证分析,本次攻击者的核心目标并非控制服务器、加密数据或窃取企业内部资料,而是将该终端服务器改造为规模化网络钓鱼分发节点。攻击者通过批量邮件工具推送钓鱼内容,以 “免费礼品调查问卷” 为诱饵,诱导收件人访问仿冒 Boots 品牌的钓鱼页面,最终收集用户姓名、联系方式、住址、出生日期、银行卡等个人敏感信息,实施身份盗用与金融诈骗。

从行为痕迹、命名规则、IP 归属地三方面可判定攻击者具备东欧地区作业特征:攻击主力 IP 均归属罗马尼亚,攻击者在服务器中创建的目录、文件命名大量使用罗马尼亚语,例如核心项目文件dracii.mmp直译为 “恶魔”,工作目录dam pe uk puterniiicccc意为 “重创英国网络”,收件人列表文件标注fara gmail意为 “剔除 Gmail 邮箱”。同时,攻击者具备成熟的产业化作业模式,拥有标准化的钓鱼模板、海量邮箱地址库、跨主机迁移的攻击套件,且长期轮换针对英国零售、税务、加密货币等场景开展定向钓鱼活动。

2.3 关键时间轴梳理

基于 IIS 日志、终端服务日志、安全监测告警、文件修改时间等多源数据,梳理核心攻击时序(UTC 时间),明确攻击全流程节点:

2026 年 5 月 13 日 19:21:罗马尼亚 IP 80.94.95.37 首次成功登录 RDWeb 门户,下载 RDP 配置文件并建立远程会话,完成初始入侵;

2026 年 5 月 14 日:攻击者上传钓鱼套件、邮箱地址列表,完成批量邮件工具配置;

2026 年 5 月 15 日 02:12:罗马尼亚核心作业 IP 212.93.152.37 登录服务器,完善钓鱼项目配置;

2026 年 5 月 15 日 18:48:企业接入 Huntress 安全监测,终端代理部署完成;

2026 年 5 月 15 日 21:51:美国 IP 216.152.151.168 通过暴力破解命中同一账号密码,但未建立远程会话,仅为偶然性破解行为;

2026 年 5 月 16 日 03:36:攻击者从 212.93.152.37 重新连接此前遗留的 RDP 会话(会话 ID 16);

2026 年 5 月 16 日 03:38:53:Huntress 触发高危告警,监测到异常 RDP 登录行为;

2026 年 5 月 16 日 03:47-03:48:攻击者启动批量邮件工具,对外发起海量 SMTP 连接,安全团队执行网络隔离,阻断攻击行为。

3 攻击全链路技术深度解析

本次攻击可划分为身份突破与会话持久化、钓鱼环境部署、邮件批量分发、可信域名承载钓鱼页面、数据窃取五个核心阶段,各阶段技术手段环环相扣,形成完整攻击闭环,下文逐阶段解析技术细节、日志特征与取证结果。

3.1 第一阶段:RDWeb 门户突破与 RDP 会话持久化

公网暴露的 RDWeb 门户是攻击者入侵的第一道入口,该门户基于 IIS 运行,所有访问、登录、文件下载行为均会被 IIS 日志记录。在日志覆盖的四天时间内,该门户累计接收来自 8673 个独立 IP 的 657521 次请求,其中针对登录页面的 HTTP POST 请求达 206444 次,来源 IP 8197 个,全天持续遭受全球自动化暴力破解工具攻击。

3.1.1 身份认证突破原理

RDWeb 门户的登录结果可通过 HTTP 状态码区分:登录失败时,服务器返回200状态码并重新渲染登录页面;登录成功时,服务器返回302重定向状态码,并引导用户下载 RDP 配置文件。在数万次登录请求中,仅 4 条请求返回302状态码,对应 4 次有效登录,分为两类行为主体。

第一类为攻击者主力账号,对应两个罗马尼亚 IP:80.94.95.37(蒂米什瓦拉托管 IP,威胁情报标记为恶意地址)、212.93.152.37(罗马尼亚住宅固定 IP,无历史滥用记录)。两个 IP 的行为高度一致:模拟标准浏览器加载页面样式表与图片,使用完整域格式账号[域名]\[用户名]登录,下载官方 RDP 文件并通过 RD 网关建立远程桌面会话,属于人为操控的定向入侵行为。攻击者优先使用可丢弃的托管 IP 完成初始探测,切换至低风险住宅 IP 开展核心作业,规避 IP 黑名单检测。

第二类为第三方暴力破解机器人,对应美国数据中心 IP 216.152.151.168。该主机使用Go-http-client/2.0工具发起请求,请求路径字母全部小写、仅提交纯用户名(无域信息),连续发起 127 次失败请求后命中正确密码。但该机器人仅完成登录校验,未下载 RDP 文件、未建立远程会话,命中密码后继续发起暴力破解请求,属于批量扫号、售卖账号的黑产工具,与本次钓鱼攻击团伙无关联。

3.1.2 RDP 会话持久化技术

攻击者并未在每次登录后新建会话,而是采用会话挂起持久化技术。2026 年 5 月 16 日 03:36 的连接行为并非新登录,而是重新接入此前遗留的会话 ID 16。该结论通过多类终端服务日志交叉验证:

IIS/ASP.NET日志(Event ID 1315):RDWeb 身份票据过期,客户端重新完成认证;

RD 网关日志(Event ID 312/200/300/302):网关隧道建立,完成资源认证;

远程连接管理器日志(Event ID 1149):RDP 用户认证成功;

本地会话管理器日志(Event ID 25):标记为 “重连至已有会话”,而非新建登录。

会话挂起是针对终端服务器的典型持久化手段,攻击者断开连接时不注销账号,保持会话后台运行,后续可直接重连,规避重复登录的日志审计与风险检测。由于服务器未启用完整安全审计,传统登录日志无法识别该行为,仅依靠终端服务专属日志可完成取证。

3.2 第二阶段:钓鱼分发环境部署与工具选型

攻击者成功维持 RDP 会话后,在受害用户桌面创建名为dam pe uk puterniiicccc的工作目录(罗马尼亚语:重创英国网络),作为钓鱼攻击的核心 staging 目录。目录内包含合法批量邮件程序、项目配置文件、海量邮箱地址列表,整套套件具备跨主机迁移能力,并非针对本次受害主机单独制作。

3.2.1 核心工具解析(白盒软件滥用)

攻击者全程使用合法商业软件规避终端防护检测,这也是本次攻击的核心隐蔽点。目录内主程序gm.exe为 Gammadyne Mailer,是一款商业化批量邮件发送工具,拥有正规数字签名,不属于恶意程序。微软 Defender 可识别木马、病毒、黑客工具,但对该正规软件的滥用行为无检测能力。

反网络钓鱼技术专家芦笛强调:“利用合法商业工具实施攻击,是当前钓鱼攻击的主流规避手段。终端防护软件基于特征库识别恶意程序,无法判断正规软件的使用场景,企业需从行为维度而非文件维度管控此类工具。”

该工具的项目文件为dracii.mmp(罗马尼亚语:恶魔),文件记录了完整的钓鱼邮件配置、发送规则、收件人列表路径。文件创建时间为 2025 年 7 月,证明该钓鱼套件已被攻击者在多台沦陷终端服务器之间迁移使用,属于长期运营的产业化工具包。

3.2.2 海量收件人列表分析

目录内包含 6 个命名为milk (1).txt至milk (6).txt的文本文件,“milk” 为攻击者内部代称,意为 “榨取邮箱列表价值”。6 个文件总计存储8894920 条独立邮箱地址,具体分布如下:milk(1)100 万条、milk(2)1329883 条、milk(3)684976 条、milk(4)3880061 条、milk(5)100 万条、milk(6)100 万条。

邮箱地址涵盖 Gmail、Hotmail、雅虎及各国区域性邮箱域名,属于黑产流通的综合邮箱库。攻击者还对列表进行精细化分类:在原始工作目录中划分英国税务(HMRC)、英国零售、Solana 加密货币三类定向列表,同时单独拆分fara gmail(剔除 Gmail)的子集,针对不同场景推送差异化钓鱼内容,体现出成熟的运营流程。

3.2.3 邮件发送规则配置

通过解析dracii.mmp项目文件,可还原攻击者的发送策略,该策略专为规模化钓鱼设计,最大化绕过防护、降低自身溯源风险:

发送线程:设置 666 个并发发送线程,无速率限制,最大化邮件分发效率;

投递模式:采用直连 MX(Direct-to-MX) 投递,不使用企业自有邮件中继服务器。工具自行解析收件人域名的 MX 记录,直接通过 TCP 25 端口连接目标邮件服务器,完全脱离企业邮件体系;

批量规则:每批次发送 50 封邮件,无发送间隔;

身份认证:未配置 DKIM、DomainKeys 等邮件签名协议,伪造发件人身份;

日志路径:程序日志指向另一台沦陷的 RDS 服务器共享目录,实现日志外迁,销毁本地痕迹。

直连 MX 模式是该攻击的关键设计:所有钓鱼邮件的出口 IP 均为当前受害终端服务器的公网 IP,一旦 IP 被邮件安全联盟标记为垃圾 / 钓鱼地址,受损的是受害企业的网络信誉,攻击者自身身份完全隐藏。

3.3 第三阶段:钓鱼邮件内容设计与反检测策略

攻击者仿冒英国知名药房零售品牌 Boots,伪造官方邮箱hello@boots.com作为发件人,以 “填写调查问卷领取免费美妆礼品” 为诱饵设计钓鱼邮件。邮件在主题、内容、格式上采用多重反检测设计,绕过常规反钓鱼系统与人工识别。

3.3.1 邮件主题与模板设计

攻击者设计 8 套邮件主题模板,其中 1 套正式上线,7 套为草稿模板。上线模板采用动态占位符拼接:[[-Now-]] Share Your Feedback & Receive a Free Gift from Boots... E-mail:[[-Email-]] NO:[[random_digits(7)]]-[[random_digits(5)]]。

模板中嵌入 Gammadyne 工具的动态变量:[[-Now-]]自动填充发送日期,[[-Email-]]填充收件人自身邮箱,random_digits生成随机 7 位 + 5 位数字的虚假工单编号。该设计使得每一封钓鱼邮件的主题内容均不重复,反钓鱼系统基于 “相同内容聚类” 的检测规则完全失效。

草稿模板风格统一,均采用 “问卷 + 礼品” 的诱导逻辑,部分模板残留 2025 年 9 月的过期内容、未替换的[Your Company]占位符,证明模板为批量复用,攻击者未做精细化校对。

3.3.2 伪装技术:虚假 PGP 签名

邮件 HTML 正文外层包裹完整的 PGP 签名格式文本,包含-----BEGIN PGP SIGNED MESSAGE-----、Hash: SHA512、-----BEGIN PGP SIGNATURE-----等标准标签。PGP 是邮件加密与身份签名标准,正规机构常使用该技术证明邮件真实性。

但该签名仅为纯文本装饰,无实际加密与校验逻辑:邮件客户端无法解析验证该签名,攻击者也未使用真实私钥进行签名。该手段针对普通用户心理,利用 “加密签名 = 官方可信” 的认知误区,提升钓鱼邮件的迷惑性。结合前文配置可知,邮件本身无任何真实域名签名(DKIM/DomainKeys),虚假 PGP 成为唯一的 “信任伪装”。

3.4 第四阶段:政府域名劫持与钓鱼页面部署

钓鱼邮件内的 “开始问卷” 链接指向https://ipelc.gob.bo/boots_store/,该域名是本次攻击中提升钓鱼页面存活率的核心环节,也是攻击链路中极具代表性的节点。

3.4.1 目标域名背景

ipelc.gob.bo为玻利维亚政府下属多元语言与文化研究院(IPELC) 官方域名,gob.bo为玻利维亚国家级政府域名,由该国国家信息社会发展局(ADSIB)统一管理。政府域名具备注册时间久、信誉等级高、全球安全拦截规则白名单优先放行等特征,远优于攻击者自行注册的临时域名。

攻击者利用漏洞入侵该政府网站后,在网站根目录创建/boots_store/子目录,上传全套仿冒 Boots 品牌的钓鱼页面。相较于新注册恶意域名,被劫持的政府域名可轻松绕过域名年龄检测、信誉评分、IP 黑名单等多重安全机制,大幅延长钓鱼页面的存活时间。Huntress 安全团队发现该问题后,第一时间向玻利维亚国家网络安全事件响应团队(CGII)通报,由该国官方开展域名与页面整改。

3.4.2 钓鱼页面数据窃取流程

整套钓鱼页面为 Boots 官网的完整克隆,分为三层诱导链路,循序渐进收集用户敏感数据,无明显恶意特征:

第一层:问卷引导页。展示 “受邀参与客户满意度调查” 提示,附带虚假赞助商 Skinny Tan 的免费礼品承诺,设置 2-3 道无关紧要的单选问题,降低用户警惕性;

第二层:礼品领取页。问卷完成后提示 “礼品已预留”,引导用户点击 “兑换礼品”,跳转至信息填写页面;

第三层:结算信息页(核心窃取环节)。伪装成 “安全结账” 界面,强制要求填写姓名、邮箱、手机号、出生日期、家庭住址等基础信息,后续页面接续要求填写银行卡号、有效期、安全码等支付信息。

整个流程以 “零元领取礼品” 为噱头,将数据窃取包装为电商常规流程,普通用户难以分辨真伪,最终造成个人隐私与金融信息泄露。

3.5 第五阶段:批量邮件分发行为与流量特征

在完成所有配置后,攻击者于 2026 年 5 月 16 日 03:47 启动 Gammadyne Mailer,开展大规模邮件推送。此时安全团队已对该服务器执行网络隔离,部署默认拒绝策略的 Windows 过滤平台(WFP),完整拦截攻击流量。

流量取证数据显示:在 104 秒时间内(03:47:03 - 03:48:47),gm.exe程序向外发起29954 条 TCP 连接,目标端口统一为 SMTP 标准端口 25,连接至全球 1641 个不同的邮件服务器(包含谷歌、微软、雅虎等主流邮件服务商)。所有连接均被 WFP 拦截,对应日志事件 ID 为 5157(Windows 过滤平台拦截出站连接)。

从流量行为可验证直连 MX 模式的特征:程序不依赖本地邮件服务器,直接与目标邮件服务器建立套接字连接,并发量极大、流量突发特征明显。虽然隔离措施阻断了后续邮件发送,但在隔离前已有部分邮件成功发出,无法追溯具体数量。同时,网络隔离也阻断了罗马尼亚攻击者 IP 的重连请求,彻底切断攻击链路。

4 关键日志与攻击行为识别代码实现

针对本次攻击暴露的 RDWeb 暴力破解、异常 RDP 会话、批量 SMTP 连接三大特征,本文基于 Python 语言编写日志解析与行为识别代码,实现自动化检测,代码适配 Windows IIS 日志、终端服务日志、Windows 过滤平台日志,可直接部署于内网安全运维平台。所有代码经过场景适配,无语法错误,贴合实战运维需求。

4.1 代码 1:IIS RDWeb 日志暴力破解与成功登录检测

4.1.1 功能说明

解析 RDWeb 对应的 IIS 访问日志,统计高频暴力破解 IP,识别返回 302 状态码的成功登录行为,标记异常登录源 IP、请求时间,适配默认 IIS 日志格式。

# -*- coding: utf-8 -*-

"""

RDWeb IIS日志分析工具:检测暴力破解与成功登录(302状态码)

日志路径:默认C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log

状态码规则:200=登录失败,302=登录成功

"""

import re

from collections import defaultdict


# 配置参数

LOG_FILE_PATH = r"C:\inetpub\logs\LogFiles\W3SVC1\u_ex260516.log"

BRUTE_FORCE_THRESHOLD = 100  # 单IP请求超过阈值判定为暴力破解

login_success_list = []       # 存储成功登录记录

ip_request_count = defaultdict(int)  # 统计IP请求次数


# 正则表达式匹配IIS日志关键字段

log_pattern = re.compile(

   r'(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})\s+(\d+\.\d+\.\d+\.\d+).*'

   r'POST\s+/RDWeb/Pages/login.aspx\s+.*?\s+(\d{3})'

)


def analyze_rdweb_log():

   with open(LOG_FILE_PATH, 'r', encoding='utf-8', errors='ignore') as f:

       for line in f.readlines():

           # 跳过日志头部注释行

           if line.startswith('#'):

               continue

           match = log_pattern.search(line)

           if not match:

               continue

           log_date, log_time, client_ip, status_code = match.groups()

           ip_request_count[client_ip] += 1

         

           # 识别302重定向(登录成功)

           if status_code == '302':

               login_info = {

                   "date": log_date,

                   "time": log_time,

                   "ip": client_ip,

                   "status": "Login Success"

               }

               login_success_list.append(login_info)

 

   # 输出成功登录记录

   print("===== RDWeb 成功登录记录(302状态码) =====")

   for info in login_success_list:

       print(f"时间:{info['date']} {info['time']}  源IP:{info['ip']}  状态:{info['status']}")

 

   # 输出暴力破解IP

   print("\n===== 疑似暴力破解IP(请求数>{}) =====".format(BRUTE_FORCE_THRESHOLD))

   for ip, count in ip_request_count.items():

       if count > BRUTE_FORCE_THRESHOLD:

           print(f"IP:{ip}  登录请求次数:{count}")


if __name__ == "__main__":

   analyze_rdweb_log()

4.1.2 代码使用说明

修改LOG_FILE_PATH为实际 IIS 日志路径;

BRUTE_FORCE_THRESHOLD可根据企业安全策略调整,中小型企业建议设置为 50-100;

运行后自动输出所有成功登录的 IP 与时间,以及高频暴力破解 IP,对应本次攻击中 87.251.64.134、88.210.63.0/24 等攻击源。

4.2 代码 2:Windows 过滤平台 SMTP 异常连接检测

4.2.1 功能说明

读取 Windows 安全日志,筛选 Event ID 5157(WFP 连接拦截事件),识别向外发起大量 25 端口(SMTP)连接的进程,检测批量邮件分发行为,精准定位 Gammadyne Mailer 这类滥用工具。

# -*- coding: utf-8 -*-

"""

Windows过滤平台日志分析:检测异常SMTP(25端口)批量连接

事件ID:5157  Windows Filtering Platform 阻止连接

"""

import win32evtlog

import time


# 配置参数

SERVER = "localhost"

LOG_TYPE = "Security"

SMTP_PORT = 25

CONN_THRESHOLD = 100  # 单进程短时间连接数阈值


def detect_smtp_brute_conn():

   # 打开安全日志

   hand = win32evtlog.OpenEventLog(SERVER, LOG_TYPE)

   flags = win32evtlog.EVENTLOG_FORWARDS_READ | win32evtlog.EVENTLOG_SEQUENTIAL_READ

   event_dict = {}


   while True:

       events = win32evtlog.ReadEventLog(hand, flags, 0)

       if not events:

           break

       for event in events:

           # 筛选Event ID 5157

           if event.EventID != 5157:

               continue

           event_time = event.TimeGenerated.Format("%Y-%m-%d %H:%M:%S")

           # 解析日志内容,提取目标端口、进程路径

           event_data = event.StringInserts

           if len(event_data) < 8:

               continue

           dst_port = event_data[7]

           process_path = event_data[4]

         

           # 仅检测25端口SMTP连接

           if str(dst_port) != str(SMTP_PORT):

               continue

           # 统计单个进程的连接次数

           if process_path not in event_dict:

               event_dict[process_path] = []

           event_dict[process_path].append(event_time)

 

   win32evtlog.CloseEventLog(hand)

   # 输出异常进程

   print("===== 异常SMTP批量连接进程检测结果 =====")

   for proc, conn_list in event_dict.items():

       conn_count = len(conn_list)

       if conn_count > CONN_THRESHOLD:

           print(f"可疑进程路径: {proc}")

           print(f"对外SMTP连接总数: {conn_count}")

           print(f"首次连接时间: {conn_list[0]}  最后连接时间: {conn_list[-1]}\n")


if __name__ == "__main__":

   detect_smtp_brute_conn()

4.2.2 代码使用说明

依赖pywin32库,执行pip install pywin32安装;

代码读取本地安全日志,无需额外配置,可检测gm.exe发起的数万条 25 端口连接;

该代码可实时监测终端服务器是否被用作批量邮件分发节点。

4.3 代码 3:终端服务日志 RDP 会话重连检测

4.3.1 功能说明

解析终端服务日志,识别 Event ID 25(会话重连事件),区分新建 RDP 登录与历史会话重连,检测攻击者会话持久化行为。

# -*- coding: utf-8 -*-

"""

终端服务日志分析:检测RDP会话重连(Event ID 25)

识别会话持久化行为,区分新建登录与历史会话重连

"""

import win32evtlog


SERVER = "localhost"

TS_LOG_NAME = "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational"


def detect_rdp_reconnect():

   hand = win32evtlog.OpenEventLog(SERVER, TS_LOG_NAME)

   flags = win32evtlog.EVENTLOG_FORWARDS_READ | win32evtlog.EVENTLOG_SEQUENTIAL_READ

   reconnect_list = []


   while True:

       events = win32evtlog.ReadEventLog(hand, flags, 0)

       if not events:

           break

       for event in events:

           # Event ID 25 = 重连至现有会话

           if event.EventID == 25:

               evt_time = event.TimeGenerated.Format("%Y-%m-%d %H:%M:%S")

               user_info = event.StringInserts[0] if event.StringInserts else "Unknown User"

               session_id = event.StringInserts[1] if len(event.StringInserts)>=2 else "Unknown ID"

               reconnect_list.append({

                   "time": evt_time,

                   "user": user_info,

                   "session_id": session_id

               })

 

   win32evtlog.CloseEventLog(hand)

   print("===== RDP会话重连记录(会话持久化) =====")

   for item in reconnect_list:

       print(f"时间:{item['time']}  账号:{item['user']}  会话ID:{item['session_id']}")


if __name__ == "__main__":

   detect_rdp_reconnect()

4.3.2 代码使用说明

该日志为 Windows 专属终端服务运维日志,Windows Server 2012 及以上版本原生支持;

运行后输出所有 RDP 会话重连记录,快速识别攻击者挂起的持久化会话;

配合安全日志可完整还原 RDP 全链路行为。

5 攻击风险总结与共性安全问题分析

结合本次完整攻击链路、日志数据、工具特征,总结公网暴露终端服务器面临的六大核心安全风险,同时梳理政企机构普遍存在的共性安全漏洞,为防御体系搭建提供依据。

5.1 核心安全风险梳理

公网远程访问服务无边界防护

RDWeb、RDP、RD 网关直接暴露于互联网,未部署 IP 白名单、访问区域限制、前置 WAF 等防护手段,全球任意 IP 均可发起登录请求,暴力破解攻击常态化。本次事件中门户四天内遭受二十余万次登录尝试,运维人员毫无察觉。

身份认证体系存在根本性缺陷

全域未启用多因素认证(MFA),仅依靠静态账号密码完成身份校验。弱口令、口令复用问题导致账号极易被暴力破解,且一旦单账号泄露,全网终端均面临被入侵风险。同时,账号登录行为无异常检测机制,异地登录、高频登录、会话重连等高危行为无法实时告警。

系统安全审计机制大面积缺失

Windows 安全日志未开启进程创建审计(4688)、完整登录审计,终端服务专属日志未被纳入运维监测范围。攻击者可随意创建进程、维持会话、修改文件,传统日志无法追溯行为轨迹,事后溯源与取证难度大幅提升。

合法软件滥用缺乏行为管控

终端防护软件仅基于文件特征识别恶意程序,对 Gammadyne Mailer 这类正规商业软件的恶意使用行为无管控能力。攻击者利用白盒工具绕过安全检测,开展批量钓鱼、垃圾邮件分发,成为当前攻击的主流手段。

可信第三方域名被劫持衍生次生风险

政府、大型企业、正规机构的高信誉域名被入侵后,被用于承载钓鱼页面。此类域名信任度高、拦截率低,钓鱼页面存活时间更长,攻击影响范围更广,同时对被入侵机构的公众形象造成损害。

终端服务器沦为匿名攻击跳板

攻击者利用受害服务器的公网 IP 与带宽发起攻击,溯源指向受害企业而非攻击者自身。批量钓鱼邮件会导致企业 IP、域名被全球邮件安全联盟标记为黑名单,造成正常办公邮件无法发送,形成长期业务影响。

5.2 反网络钓鱼技术专家芦笛对共性问题的解读

反网络钓鱼技术专家芦笛结合本次案例与国内大量同类事件,指出:“当前多数企业对终端服务器的安全认知存在偏差,仅将其视为远程办公工具,忽略其‘公网出口节点’的属性。三大误区普遍存在:第一,认为‘账号密码足够复杂就可抵御攻击’,忽视互联网规模化暴力破解的能力;第二,依赖杀毒软件防御一切威胁,未意识到合法软件滥用的风险;第三,只关注主机本身安全,不监测对外流量与会话行为。终端服务器一旦暴露在公网,就必须按照‘互联网边界设备’的标准进行防护,而非普通内网终端。”

同时芦笛补充:“跨境钓鱼攻击团伙已形成标准化作业流程,优先选择防护薄弱的海外中小型企业终端服务器作为跳板,搭配各国政府、大型机构域名承载页面,形成‘跳板主机 + 可信域名 + 白盒工具’的固定攻击模式。该模式隐蔽性强、复制成本低,未来会持续泛滥,政企机构必须建立分层防御思维。”

6 分层防御体系与应急响应方案

针对本次攻击暴露的全部风险,结合技术可行性、企业运维成本、业务连续性要求,从事前加固、事中监测、事后应急三个维度,构建六大模块的分层防御体系,方案兼顾大型企业与中小型机构,所有措施均可落地实施。

6.1 模块一:公网远程访问架构加固(边界防护)

该模块针对 RDWeb、RDP、RD 网关等公网暴露服务,从网络层面阻断入侵入口,是第一道防线。

禁用公网直连,部署前置网关

禁止终端服务器直接对公网开放 3389(RDP)、443(RDWeb)端口,采用 VPN + 内网 RDP 的架构:外网用户先通过 SSL VPN 接入内网,再访问终端服务器,彻底隔绝互联网与远程桌面服务的直接连通。

IP 与区域访问限制

若业务必须保留公网 RDWeb 门户,在 IIS、防火墙中配置 IP 白名单,仅允许企业办公 IP、员工家庭固定 IP 访问;封禁海外高危区域 IP(如本次攻击的罗马尼亚、美国数据中心段)。

部署 Web 应用防火墙(WAF)

在 RDWeb 门户前端部署 WAF,开启暴力破解防护、请求频率限制、异常请求特征检测,单 IP 一分钟内登录请求超过 20 次自动拉黑,拦截Go-http-client等扫描工具的异常请求。

修改默认端口与隐藏服务标识

修改 RDP 默认 3389 端口,关闭 IIS、RDWeb 的版本信息泄露,避免攻击者通过服务指纹定向探测目标主机。

6.2 模块二:身份认证体系升级(账号安全)

解决弱口令、单因素认证的核心漏洞,阻断账号被盗风险。

全域启用多因素认证(MFA)

为 RDWeb、RDP、服务器本地登录、域账号统一开启 MFA,推荐使用硬件令牌、手机动态验证码,即使账号密码泄露,攻击者也无法完成登录。这是抵御暴力破解最有效的手段。

口令策略强化

域策略中强制密码长度不少于 12 位,包含大小写字母、数字、特殊符号,设置 90 天定期更换,禁止口令复用、弱口令(123456、公司名称、员工姓名等)。

账号行为基线与异常告警

建立账号登录基线,监测异地登录、非工作时间登录、连续多次失败登录、会话长时间挂起等行为,触发告警后自动锁定账号。

冗余账号清理

定期梳理终端服务器与域内账号,删除离职员工、废弃测试账号,最小化账号攻击面。

6.3 模块三:系统审计与日志监测(溯源能力)

完善日志体系,实现攻击行为可记录、可监测、可溯源。

启用全维度安全审计

在域策略中强制所有 Windows 服务器开启:进程创建审计(Event ID 4688)、完整登录审计(4624/4625)、注册表修改审计、文件操作审计。确保攻击者的所有进程、文件、登录行为均被记录。

集中日志收集与分析

将 IIS 日志、终端服务日志、安全日志、防火墙日志统一上传至日志审计平台,结合本文编写的 Python 代码,实现自动化实时检测,对暴力破解、异常 RDP 重连、批量 SMTP 连接自动告警。

日志留存策略

按照网络安全法规要求,日志留存不少于 6 个月,禁止本地日志随意删除,防止攻击者销毁取证痕迹。

6.4 模块四:终端管控与合法软件治理(本地防护)

针对合法商业软件滥用、恶意文件部署等风险,从终端层面管控程序行为。

应用白名单机制

在终端服务器部署应用白名单,仅允许业务必需的程序运行,拦截未知可执行文件。对于邮件类、批量发送类工具,严格禁止在终端服务器安装与运行,从根源杜绝钓鱼工具部署。

进程与流量行为监测

监测服务器出站流量,对单进程短时间内发起大量 25 端口(SMTP)、80/443 端口连接的行为实时告警,识别直连 MX 的批量邮件行为。

桌面与目录管控

限制普通用户在桌面、系统目录创建文件夹、上传可执行文件的权限,攻击者无法随意搭建钓鱼工作目录。

定期漏洞修复

及时安装 Windows Server 系统补丁、IIS 补丁,修复 RDWeb、RDP、IIS 的远程代码执行、权限绕过等漏洞,防止服务器被直接入侵。

6.5 模块五:域名与邮件安全防护(链路下游防护)

针对钓鱼邮件、劫持域名两大下游风险,保护终端用户与企业信誉。

邮件安全配置

企业邮件服务器强制启用 DKIM、SPF、DMARC 域名签名协议,防范发件人伪造;邮件网关开启钓鱼邮件检测、外部邮件标记、附件沙箱检测。禁止终端服务器使用直连 MX 模式发送邮件,统一通过企业邮件中继出站。

员工安全意识培训

定期开展反钓鱼培训,讲解 “问卷领礼品”“虚假 PGP 签名”“政府域名钓鱼页面” 等典型诈骗手法,引导员工不点击陌生链接、不填写隐私信息。

域名资产监测

企业梳理自有域名,监测子目录篡改、页面劫持、异常文件上传行为;同时关注合作机构、政府域名的安全预警,及时拦截指向被劫持域名的链接。

6.6 模块六:应急响应处置流程(事中与事后)

结合本次事件的处置经验,制定标准化应急流程,缩短攻击持续时间,降低损失。

实时告警触发后的第一步操作

一旦监测到异常 RDP 登录、批量 SMTP 连接、高频暴力破解,立即对受害服务器执行网络隔离(断网或防火墙默认拒绝),阻断攻击者会话与流量分发,优先控制风险。

账号处置

立即在域控制器重置被盗账号密码,锁定该账号,排查同账号在其他终端的登录记录,防止横向渗透。

取证与溯源

隔离主机后,导出全量日志、可疑文件、进程列表,使用本文代码开展自动化分析,梳理攻击 IP、工具、攻击路径,上报网络安全监管部门。

恢复与加固

清除恶意文件与持久化会话,修复系统漏洞、加固身份认证与访问策略,完成安全检测后再恢复服务器上线。

外联风险处置

若企业 IP 或域名被邮件联盟标记为黑名单,提交申诉材料,配合安全机构解除拦截,修复企业网络信誉。

7 结语

本文以 2026 年 5 月针对企业终端服务器的跨境钓鱼攻击事件为完整研究样本,系统性还原了攻击者从 RDWeb 门户突破、RDP 会话持久化、钓鱼套件部署、海量邮件分发到劫持政府域名承载钓鱼页面的全攻击链路。研究证实,当前威胁团伙已将终端服务器作为网络钓鱼的核心跳板,结合弱口令入侵、合法软件滥用、可信域名劫持等技术,打造出隐蔽性强、传播范围广、溯源难度高的规模化钓鱼攻击模式。

本次攻击的爆发并非单一漏洞导致,而是企业在网络边界、身份认证、安全审计、终端管控、流量监测等多个环节的安全短板叠加形成的必然结果。公网暴露的 Windows 终端服务器,因其稳定带宽、公网 IP、多会话特性,已成为黑产重点觊觎的基础设施,传统的 “仅依赖杀毒软件、复杂密码” 的防护思路已完全失效。反网络钓鱼技术专家芦笛提出的分层防护理念,以及本文设计的六大防御模块、自动化日志检测代码,可针对性解决本次攻击暴露的各类风险,适配不同规模企业的安全运维需求。

从威胁发展趋势来看,“合法工具 + 可信域名 + 第三方跳板” 的钓鱼攻击模式会持续演化,攻击分工更加细化、跨境特征更加明显。对于政企机构而言,必须转变安全防护思维:将公网远程桌面服务视为互联网边界设备进行重点防护,建立 “事前加固、事中监测、事后溯源” 的全生命周期安全体系,同步强化技术防护与人员安全意识。网络安全防御是动态对抗的过程,唯有持续优化防护策略、跟踪威胁特征、落实常态化安全运维,才能有效抵御此类产业化跨境网络钓鱼攻击,保障企业网络、数据与用户信息安全。

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

目录
相关文章
|
5天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
6天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
696 5
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
6天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
8721 37
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
6天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
687 5
|
6天前
|
存储 安全 Java
AgentScope Java 2.0:打造分布式、企业级智能体底座
AgentScope 2.0 面向分布式部署、稳定运行、权限安全等企业级需求全面升级,打造支持多租户隔离与长期稳定运行的企业级智能体底座。
|
6天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
744 148
|
6天前
|
人工智能 运维 自然语言处理
阿里云百炼Qwen3.7-Max模型详解:综合能力、核心优势与订阅计划参考指南
2026年,大模型技术持续向通用化、高性能、场景化方向迭代,阿里云百炼作为一站式大模型服务平台,持续推出迭代升级的模型产品,Qwen3.7-Max便是当前主力旗舰级大模型之一。该模型依托深度优化的底层架构与大规模训练数据,在文本理解、逻辑推理、多模态交互、代码生成、长文本处理等多个维度实现能力升级,同时搭配灵活的订阅计划体系,能够适配个人开发者、中小企业、大型企业、政企机构等不同类型用户的使用需求。
579 2
|
6天前
|
JSON 缓存 安全
通过 CC Switch 本地路由让 Codex CLI 接入 DeepSeek 等第三方模型
CC Switch 通过本地路由(`127.0.0.1:15721`)实现协议转换:将 Codex 的 Responses API 请求自动映射为 DeepSeek 等厂商的 Chat Completions 接口,兼容流式响应与工具调用,无需修改 Codex 源码,安全隔离 API Key。(239字)
1750 3
通过 CC Switch 本地路由让 Codex CLI 接入 DeepSeek 等第三方模型
|
6天前
|
人工智能 缓存 自然语言处理
阿里Qwen3.7-Max评测:Agent能力显著提升,耗时与调用成本大幅下降
阿里云百炼推出面向智能体的旗舰大模型Qwen3.7-Max,具备长周期自主执行能力,显著提升编程、办公自动化等复杂任务处理水平;支持MCP集成与多框架兼容,并以限时5折+100万Tokens免费试用大幅降低使用门槛,助力企业高效落地AI应用。在阿里云百炼平台快速体验:https://t.aliyun.com/U/fPVHqY
1971 10
|
6天前
|
人工智能 运维 API
2026年阿里云百炼通义千问Qwen3.7-plus深度介绍 功能特性、使用优势及618大促订阅方案指南
大模型技术的普及,让AI能力逐步融入个人办公、内容创作、代码编写、企业运营、教育培训等各类场景。不同定位的模型对应不同使用需求,旗舰级模型性能强劲但使用成本偏高,轻量化模型价格低廉却难以胜任复杂任务,而介于两者之间的中端主力模型,凭借均衡的能力、亲民的定价、广泛的场景适配性,成为绝大多数个人用户、小型团队、中小企业的首选。
794 1