摘要
近年来,网络钓鱼攻击呈现出显著的“合法服务滥用”趋势。本文聚焦于2025年8月曝光的一起大规模钓鱼活动,该活动利用Google Classroom这一广泛部署的教育协作平台作为攻击跳板,向全球13,500个组织发送超过115,000封伪装为课程邀请的钓鱼邮件。研究表明,攻击者通过创建虚假课程、嵌入恶意内容并借助Google官方域名及合规邮件认证机制(SPF/DKIM/DMARC),成功绕过传统邮件安全网关。本文系统分析了该攻击的技术路径、社会工程策略及逃避检测手段,并提出一套涵盖终端隔离、云访问安全代理(CASB)、身份认证强化、邮件内容深度检测及用户意识提升的多层防御框架。同时,结合实际代码示例展示了对Classroom特定URL结构的异常识别方法。本研究不仅揭示了SaaS平台被武器化的新型威胁范式,也为企业构建面向协作工具的安全防护体系提供了可落地的技术路径。
关键词:Google Classroom;钓鱼攻击;SaaS滥用;邮件安全;CASB;零信任;FIDO2

1 引言
随着远程办公与混合学习模式的普及,以Google Workspace为代表的协作套件已成为组织日常运营的核心基础设施。其中,Google Classroom作为专为教育场景设计的课程管理平台,因其简洁的界面、无缝的Google账号集成以及高度可信的域名来源(@google.com),在师生群体中拥有极高接受度。然而,这种“天然信任”正被攻击者系统性地转化为攻击优势。
2025年8月,Check Point Research披露了一起针对Google Classroom的大规模钓鱼活动。攻击者在一周内发起五轮攻击波次,利用平台自动发送的课程邀请邮件作为载体,将商业欺诈内容(如SEO服务、产品代理等)伪装成教育通知,诱导收件人通过WhatsApp联系诈骗者。值得注意的是,此类邮件完全由Google服务器生成,具备完整的SPF、DKIM与DMARC认证记录,使得传统基于发件人信誉或黑名单的邮件过滤机制失效。
此类攻击的本质并非技术漏洞利用,而是对平台功能与用户心理的双重操纵。它标志着钓鱼攻击已从早期的伪造发件人地址、拼写错误链接等低级手法,演进为依托合法云服务、具备高仿真度与强规避能力的高级持续性威胁(APT-like Phishing)。现有研究多集中于Office 365或Slack等企业协作工具的滥用[1][2],但对教育专用平台如Google Classroom的安全风险缺乏系统性探讨。
本文旨在填补这一空白。通过逆向分析真实攻击样本,我们还原了攻击链的完整技术细节,并在此基础上构建一个覆盖“检测—阻断—响应—预防”全周期的防御模型。特别地,本文强调:合法域名不等于安全内容,必须将安全边界从邮件网关前移至应用行为与用户交互层面。

2 攻击机制剖析
2.1 攻击流程重建
根据Check Point披露的数据,本次攻击可分解为以下六个阶段:
账户准备:攻击者使用自动化脚本批量注册Gmail账户(可能通过接码平台或盗用凭证),并启用Google Classroom服务。
课程创建:每个账户创建多个课程,课程名称刻意模仿真实教育机构(如“Harvard Business Review - Q3 Training”、“ISO 27001 Compliance Workshop”),以增强可信度。
内容植入:在课程公告或作业描述中嵌入诱导性文本,例如:“您的发票已生成,请点击下载”或“您已被邀请加入采购审核小组”,并附带指向外部WhatsApp号码的链接(通常为短链接或二维码图片)。
目标邀请:通过Classroom的“邀请学生”功能,输入目标企业邮箱地址。Google系统自动生成格式统一的邀请邮件,发件人为noreply-classroom@google.com,主题为“You’re invited to join [Course Name] on Google Classroom”。
邮件投递:由于邮件源自Google官方域名且通过全部邮件认证协议,绝大多数邮件成功绕过企业邮件网关,进入收件箱。
交互诱导:受害者点击链接后,被引导至WhatsApp聊天界面。攻击者随即实施商业欺诈、凭据钓鱼或后续BEC(Business Email Compromise)攻击。

2.2 技术规避手段
攻击者采用了多项反检测策略:
域名合法性:所有邮件均来自google.com子域,SPF记录验证通过(v=spf1 include:_spf.google.com ~all),DKIM签名有效,DMARC策略为p=none或p=quarantine但因高信誉未触发动作。
内容无恶意载荷:邮件正文不含可执行文件、JavaScript或典型钓鱼关键词(如“urgent”、“verify now”),仅包含看似无害的课程邀请与外部联系方式。
延迟投递:针对安全团队常用邮箱(如security@、soc@)设置延迟发送,避免因批量举报导致整个Gmail账户被封禁。
课程快速轮换:单个课程仅用于数百次邀请后即弃用,降低被平台风控系统识别的概率。

2.3 社会工程设计
攻击成功的关键在于对用户心理的精准把握:
权威暗示:课程名称包含知名机构或合规术语,激发用户“不敢忽视”的心理。
低感知风险:Google Classroom被视为“教育专用”工具,用户对其警惕性远低于商业邮件。
行动便捷性:提供WhatsApp联系方式,符合移动端即时沟通习惯,降低用户思考成本。

3 防御体系构建
针对上述攻击特征,单一防御措施难以奏效。本文提出“纵深防御+行为分析”的综合框架,包含以下五个维度。
3.1 终端隔离:强制外链沙箱化
最直接的缓解措施是阻止用户直接访问邮件中的外部链接。可通过企业浏览器策略或专用插件实现:
# 示例:Chrome企业策略配置(通过Intune或GPO)
{
"URLBlocklist": ["*"],
"URLAllowlist": [
"https://classroom.google.com/*",
"https://docs.google.com/*",
"https://mail.google.com/*"
],
"RemoteAccessHosts": ["*.google.com"]
}
更优方案是部署远程浏览器隔离(RBI),将所有来自非白名单域名的链接在云端渲染,仅返回像素流至终端。即使用户点击WhatsApp链接,实际连接发生在隔离环境,无法窃取本地会话。
3.2 CASB监控:检测异常SaaS分享行为
云访问安全代理(CASB)应监控Google Workspace API调用日志,识别以下异常模式:
单账户在短时间内创建大量课程(>10/小时)
课程邀请对象90%以上为企业域名(非.edu)
课程内容包含高频外部联系方式(如wa.me、api.whatsapp.com)
以下Python脚本演示如何通过Google Admin SDK分析课程创建日志:
from googleapiclient.discovery import build
import re
def detect_suspicious_classroom_activity(user_email):
service = build('admin', 'reports_v1')
results = service.activities().list(
userKey=user_email,
applicationName='classroom'
).execute()
course_creations = 0
external_invites = 0
for activity in results.get('items', []):
if activity['events'][0]['type'] == 'create_course':
course_creations += 1
elif activity['events'][0]['type'] == 'invite_user':
invitee = activity['events'][0]['parameters'][0]['value']
if not re.search(r'\.edu$', invitee):
external_invites += 1
if course_creations > 5 and external_invites / max(course_creations, 1) > 0.8:
return True # 标记为可疑
return False
3.3 身份层加固:部署FIDO2防止会话劫持
即使攻击者获取用户名密码,若企业启用了FIDO2安全密钥(如YubiKey),可有效阻断凭据重放。FIDO2基于公钥加密,私钥永不离开设备,且绑定特定RP ID(Relying Party Identifier),使得跨站点会话无效。
在Google Workspace中启用FIDO2的策略如下:
# Google Admin Console > Security > Authentication > 2-step verification
enforce_fido2: true
allowed_security_keys:
- yubico
- titan
phishing_resistant: true
此措施虽不能阻止初始钓鱼,但能切断攻击链的后续环节——即使用户在伪登录页输入凭证,攻击者也无法在真实Google服务中使用。
3.4 邮件内容深度检测:Classroom URL特征提取
传统邮件网关需增强对Classroom特有URL结构的解析能力。合法Classroom邀请链接格式为:
https://classroom.google.com/c/[COURSE_ID]/join?token=[TOKEN]
而攻击者常修改参数或嵌入跳转。以下正则表达式可识别异常模式:
import re
def is_suspicious_classroom_url(url):
# 合法模式
legit_pattern = r'^https://classroom\.google\.com/c/[a-zA-Z0-9]+/join\?token=[a-zA-Z0-9]+$'
# 异常模式:含重定向、短链接、非join路径
suspicious_patterns = [
r'redirect=',
r'bit\.ly|tinyurl',
r'/c/[a-zA-Z0-9]+/(?!join)',
r'token=[^&]*[^a-zA-Z0-9]'
]
if not re.match(legit_pattern, url):
for pat in suspicious_patterns:
if re.search(pat, url, re.IGNORECASE):
return True
return False
# 测试
print(is_suspicious_classroom_url("https://classroom.google.com/c/abc123/join?token=xyz789")) # False
print(is_suspicious_classroom_url("https://bit.ly/3xYz/classroom")) # True
邮件安全引擎应将此类检测模块化,并与课程命名规则(如包含“invoice”、“payment”等词)联动评分。
3.5 安全意识培训:重构“信任”认知
技术措施需辅以用户教育。培训内容应强调:
“来自google.com的邮件≠安全”
“课程邀请不应包含商业服务推广”
“任何要求转向WhatsApp/Telegram的请求均为高风险”
可通过模拟钓鱼演练验证效果,例如发送伪造Classroom邀请,统计点击率与报告率。
4 平台侧改进建议
除企业防御外,Google亦可优化Classroom设计以抑制滥用:
外部邀请配额限制:免费账户每日最多邀请50个非教育域名邮箱。
异常行为速率控制:单账户每小时创建课程数≤3,否则触发人工审核。
内容安全扫描:对课程公告/作业文本进行NLP分析,识别商业推广、联系方式等模式。
恶意课程自动下架:结合用户举报与AI模型,72小时内下架高风险课程。
5 讨论
本研究揭示了一个重要趋势:攻击面正从传统邮件向协作平台迁移。Google Classroom案例表明,即使无代码漏洞,平台功能本身即可被武器化。这要求安全架构从“边界防御”转向“零信任”——默认不信任任何来源,无论其表面合法性。
此外,防御不能仅依赖邮件层。CASB、身份认证、终端隔离必须协同工作。例如,即使邮件通过检测,CASB仍可阻断异常API调用;即使用户点击链接,RBI可隔离风险;即使凭据泄露,FIDO2可阻止账户接管。
值得指出的是,此类攻击成本极低:注册Gmail免费,创建课程无需审核,发送邀请无额度限制。因此,未来类似滥用可能扩展至Meet、Drive甚至Google Forms。安全社区需建立针对SaaS平台的通用滥用检测框架。
6 结语
本文系统分析了利用Google Classroom实施的大规模钓鱼攻击,阐明其技术机制与社会工程策略,并提出一套多层次、可实施的防御体系。研究表明,面对合法服务滥用型威胁,传统边界安全模型已显不足,必须构建覆盖身份、应用、数据与终端的纵深防御架构。未来工作将聚焦于自动化检测模型的优化与跨SaaS平台威胁情报共享机制的建立。唯有技术与策略协同演进,方能在日益复杂的云协作环境中保障组织安全。
编辑:芦笛(公共互联网反网络钓鱼工作组)

被折叠的 条评论
为什么被折叠?



