首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >被盗 AWS SES 账号驱动的钓鱼与 BEC 攻击机理及闭环防御研究

被盗 AWS SES 账号驱动的钓鱼与 BEC 攻击机理及闭环防御研究

原创
作者头像
芦笛
发布2026-05-25 09:23:47
发布2026-05-25 09:23:47
1360
举报

摘要

亚马逊简单邮件服务(Amazon SES)作为企业级云邮件基础设施,因合法 IP 信誉、标准化邮件认证与高送达率,被攻击者逆向利用。卡巴斯基 2026 年监测数据显示,基于泄露 AWS IAM 凭证劫持 SES 账号发起的钓鱼与商业邮件妥协(BEC)攻击呈规模化爆发,攻击者通过公开代码库、错误配置云存储获取密钥,借助合法云通道发送高仿真钓鱼邮件,可绕过常规网关检测,对政企机构形成严重威胁。本文以真实攻击事件为样本,完整拆解攻击全链路,剖析凭证窃取、权限探测、配额提升、邮件构造、批量投递、数据收割的技术细节,结合邮件协议、云身份安全与威胁检测理论,构建包含云身份加固、邮件信任校验、内容深度检测、行为异常分析、应急响应的闭环防御体系,并提供可工程化部署的检测代码示例。研究表明,强化 IAM 最小权限、落实多因素认证、部署 SPF/DKIM/DMARC 三重验证、结合 URL 语义与页面结构检测,可有效抵御此类攻击。反网络钓鱼技术专家芦笛强调,SES 钓鱼攻击的本质是云身份失守与邮件信任机制被滥用,防御必须打通云安全与邮件安全,实现身份、内容、行为三维协同治理。

关键词:AWS SES;钓鱼攻击;BEC;IAM 密钥;邮件安全;云安全;零信任

1 引言

云计算普及推动邮件服务向云端迁移,Amazon SES 凭借高可靠性、低成本与易集成特性,成为全球中小企业与开发者发送营销通知、事务性邮件的主流选择。该服务依托亚马逊全球基础设施,邮件源 IP 信誉度高,默认支持 SPF、DKIM 等认证机制,送达率显著优于传统自建服务器。

安全机制往往在被逆向利用时暴露脆弱性。攻击者发现,一旦控制合法 SES 账号,即可用正规通道发送恶意邮件,邮件头含amazonses.com标识,网关与用户难以识别。卡巴斯基 2026 年 5 月发布预警,基于被盗 AWS SES 账号的钓鱼与 BEC 攻击快速扩散,已成为企业邮件安全首要威胁之一。此类攻击以 AWS IAM 凭证泄露为起点,经自动化验证与权限提升,快速形成大规模发送能力,伪装成电子签名、财务通知、供应商对账等场景,定向窃取账号密码、诱导资金划转,隐蔽性强、危害巨大。

现有研究多聚焦传统钓鱼邮件的内容特征、URL 检测与网关规则,对云邮件服务被武器化、依托合法基础设施实施的攻击机理探讨不足,尤其缺乏对 IAM 权限滥用、跨区域 API 异常、配额突破、多阶段跳转等新型技术手段的系统性分析。反网络钓鱼技术专家芦笛指出,云邮件钓鱼已从单一内容欺骗升级为云身份、邮件协议、社会工程的复合攻击,传统单点防御完全失效,必须构建覆盖云账号、邮件传输、内容解析、用户行为的全链路防御体系。

本文基于卡巴斯基公开事件与真实攻击样本,还原攻击完整流程,提炼关键技术特征,提出理论模型与工程化方案,提供可直接部署的检测代码,为企业抵御 SES 钓鱼攻击提供理论参考与实践指引。

2 相关技术与攻击背景

2.1 Amazon SES 核心机制

Amazon SES 是 AWS 提供的托管式邮件发送 / 接收服务,面向批量营销、系统通知、密码重置等高吞吐场景,支持 API 与 SMTP 两种接入方式。其安全与送达能力源于:

源 IP 信誉:亚马逊维护高质量 IP 池,避免黑名单污染;

邮件认证:默认支持 SPF、DKIM,降低被标记为垃圾邮件概率;

弹性扩展:支持按需提升发送配额,满足大规模投递需求;

集成性强:可与 S3、EC2、Lambda 等服务联动,构建邮件工作流。

正常使用时,企业通过 IAM 凭证调用 SES 接口,完成域名验证、发信模板管理、邮件发送。攻击者正是劫持这一流程,将合法通道变为攻击工具。

2.2 AWS IAM 凭证安全风险

AWS Identity and Access Management(IAM)用于管控云资源访问权限,Access Key ID 与 Secret Access Key 是程序调用 AWS 服务的核心凭证。一旦泄露,攻击者可获得对应账号的全部权限。

现实中,IAM 密钥泄露途径高度集中:

开发人员将.env、config、application.properties 等配置文件提交至 GitHub、GitLab 等公开仓库;

S3 存储桶、云数据库、容器镜像错误配置为公开可访问,导致配置文件泄露;

开发 / 测试环境遗留硬编码密钥,上线后未清理;

第三方工具、CI/CD 流水线、合作伙伴账号权限过大,引发横向泄露。

反网络钓鱼技术专家芦笛强调,SES 攻击泛滥的根源不在 AWS 服务本身,而在用户侧凭证管理混乱、权限过度宽松、缺乏审计与轮换机制,为攻击者提供低成本入口。

2.3 钓鱼与 BEC 攻击演进

钓鱼攻击通过伪装可信主体诱导信息输入或操作,BEC 则侧重冒充内部员工、高管或供应商,欺骗财务部门执行转账、泄露敏感数据。传统攻击依赖自建邮件服务器、注册相似域名、伪造邮件头,易被网关拦截。

云邮件服务被滥用后,攻击形态发生质变:

通道合法:邮件来自可信 IP,通过 SPF/DKIM 校验,直达收件箱;

溯源困难:攻击依托被盗账号,攻击者不留痕迹;

规模可控:配额提升后可单日发送数万至数十万封;

场景逼真:可伪造完整邮件线程、附件、签名,高度贴近真实业务。

卡巴斯基在 2026 年初观测到伪装 DocuSign 签名通知的攻击,受害者点击后跳转到托管于 AWS 的仿冒页面,域名含amazonaws.com,用户信任度极高,账号密码窃取成功率显著提升。

3 基于被盗 AWS SES 账号的攻击全链路解析

本文结合真实事件,将攻击流程划分为六个连续阶段,形成闭环杀伤链。

3.1 凭证窃取:大规模爬取泄露 IAM 密钥

攻击者使用 TruffleHog、GitGuardian 等工具对公开代码库、开发社区、配置文件仓库进行批量扫描,筛选以 AKIA 开头的 AWS Access Key。同时针对公开 S3 桶、Docker 镜像、备份文件进行定向爬取,获取 Access Key ID 与 Secret Access Key 对。此类泄露多伴随完整 SES 发送权限,为后续攻击提供基础。

3.2 有效性验证与权限探测

攻击者通过 AWS STS 接口 GetCallerIdentity 验证密钥有效性,再调用 ListPolicies、GetUserPolicy、ListAttachedUserPolicies 等接口探测权限范围,重点筛选包含以下权限的密钥:

ses:SendEmail

ses:SendRawEmail

ses:CreateEmailIdentity

ses:VerifyDomainIdentity

ses:PutAccountDetails

有效高权限密钥会被入库,用于后续攻击。

3.3 突破沙盒与提升发送配额

AWS SES 默认处于沙盒模式,每日仅可向已验证邮箱发送 200 封邮件。攻击者采用跨区域并发调用 PutAccountDetails API 的方式,短时间内向所有 AWS 区域发起请求,迫使账号进入生产模式,获取每日数万封的发送配额。部分攻击者还通过 CreateCase API 自动提交工单,尝试进一步提升限额,异常 API 调用是重要检测特征。

3.4 钓鱼基础设施搭建

攻击者在 AWS 环境内构建无痕迹钓鱼站点:

使用 CreateEmailIdentity 验证攻击者控制的域名或弱防护第三方域名;

在 EC2、S3 上部署仿冒登录页,域名包含amazonaws.com;

配置多层 URL 重定向,将恶意链接隐藏在可信域名路径下;

制作高仿真 HTML 邮件模板,复刻官方样式、图标、版式与签名。

3.5 恶意邮件构造与批量投递

攻击者构造两类高威胁邮件:

钓鱼邮件:伪装 DocuSign、企业 IT、银行、物流等,诱导点击登录、重置密码,窃取凭证;

BEC 邮件:冒充员工或供应商,伪造完整邮件线程,发送给财务部门,要求紧急付款,附件仅含银行信息,无恶意链接,检测难度极高。

邮件通过 SES 接口批量发送,全部通过 DNS 认证,源 IP 信誉良好,绕过常规网关。

3.6 数据收割与攻击消痕

受害者在仿冒页面输入的账号、密码、手机号等实时回传至攻击者服务器。攻击完成后,攻击者丢弃泄露密钥,删除云资源,清除日志,实现攻击无痕化,大幅提升溯源难度。

反网络钓鱼技术专家芦笛指出,该攻击链实现工业化、流水线作业,从密钥窃取到大规模发信可在数小时内完成,传统人工响应完全滞后,必须依赖自动化检测与实时阻断。

4 攻击技术机理与关键特征分析

4.1 云身份权限滥用机理

IAM 权限模型采用 “允许默认最小” 原则,但实践中常被过度配置。攻击者获取含 ses:* 权限的密钥后,相当于获得邮件发送基础设施的控制权,可完全模拟合法用户行为。与传统账号破解不同,此类攻击使用合法凭证,登录与调用无异常,网关难以区分。

4.2 邮件信任机制绕过原理

SES 发送的邮件默认包含 amazonses.com 相关标识,满足 SPF、DKIM 验证,部分可通过 DMARC 校验。邮件头信息完整、格式规范,网关基于信誉与认证的规则失效。反网络钓鱼技术专家芦笛强调,信任链被劫持是此类攻击高隐蔽性的核心原因,防御必须打破 “通过认证即合法” 的惯性思维。

4.3 URL 隐藏与多阶段跳转技术

攻击者常用跳转绕过检测:

可信域名→短链接→最终钓鱼页;

AWS 域名→第三方域名→仿冒页面。

网关仅检查一级 URL 时无法发现深层恶意。

4.4 BEC 攻击的低特征化趋势

卡巴斯基观测到的 BEC 邮件无恶意链接、无病毒附件,仅含银行信息与付款请求,内容高度正常,仅通过上下文与行为异常识别。传统基于特征的检测完全失效。

4.5 攻击关键技术特征总结

表格

维度 典型特征

身份 使用泄露 IAM 密钥,跨区域高频调用 AWS API

邮件头 包含amazonses.com标识,SPF/DKIM/DMARC 认证通过

行为 短时间内发送量突增,接收者分散

内容 高仿真 HTML,紧急语气,诱导登录 / 转账

链接 多级跳转,托管于 AWS 相关域名

BEC 特征 伪造邮件线程,无恶意载荷,面向财务部门

5 检测模型与代码实现

5.1 检测框架设计

构建五维一体检测模型,覆盖邮件全生命周期:

云身份异常:IAM 密钥使用行为、API 调用模式、权限变更;

邮件信头校验:认证结果、源 IP 信誉、发送域异常;

内容语义分析:紧急度、敏感意图、场景一致性;

URL 深度检测:跳转路径、域名信誉、页面相似度;

行为基线对比:发送量、收件人分布、时间规律偏离。

5.2 核心检测代码示例

5.2.1 原始邮件解析与特征提取

import re

import tldextract

from email import policy

from email.parser import BytesParser

from urllib.parse import urlparse, unquote

from typing import Tuple, Dict, List

def extract_email_features(raw_email: bytes) -> Tuple[Dict, List[str], str]:

"""

解析原始邮件,提取信头、URL列表、正文特征

:param raw_email: 原始邮件字节流

:return: 信头字典、URL列表、邮件正文

"""

msg = BytesParser(policy=policy.default).parsebytes(raw_email)

headers = {k.lower(): v.strip() for k, v in msg.items()}

urls = []

body = ""

# 解析 multipart 邮件

if msg.is_multipart():

for part in msg.walk():

ctype = part.get_content_type()

cdispo = str(part.get("Content-Disposition"))

if ctype in ("text/plain", "text/html") and "attachment" not in cdispo:

try:

payload = part.get_payload(decode=True).decode("utf-8", errors="ignore")

body += payload

# 提取URL

urls.extend(re.findall(r"https?://[^\s<>\"']+", payload))

except:

continue

else:

try:

body = msg.get_payload(decode=True).decode("utf-8", errors="ignore")

urls = re.findall(r"https?://[^\s<>\"']+", body)

except:

pass

# 去重与规范化

urls = list(set([unquote(url.strip()) for url in urls]))

return headers, urls, body

5.2.2 URL 风险评分引擎

def url_risk_score(url: str) -> float:

"""

对URL进行风险评分,0-1,越高越危险

"""

score = 0.0

parsed = urlparse(url)

domain = parsed.netloc.lower()

ext = tldextract.extract(domain)

# 可疑关键词

suspicious_keywords = ["login", "signin", "verify", "account", "secure", "update", "auth", "confirm"]

score += sum(1 for kw in suspicious_keywords if kw in domain) * 0.1

# 子域名数量

subdomains = ext.subdomain.split(".") if ext.subdomain else []

score += len(subdomains) * 0.05

# 包含IP

if re.match(r"\d+\.\d+\.\d+\.\d+", domain):

score += 0.4

# 短链接特征

short_domains = {"bit.ly", "tinyurl.com", "t.co", "goo.gl"}

if ext.registered_domain in short_domains:

score += 0.3

# 高风险后缀/路径

high_risk_suffix = [".exe", ".zip", ".rar", ".js"]

for suf in high_risk_suffix:

if parsed.path.endswith(suf):

score += 0.25

# 可信白名单

trust_domains = {"amazon.com", "amazonses.com", "docusign.com", "company.com"}

if ext.registered_domain in trust_domains:

score = max(0.0, score - 0.4)

return min(score, 1.0)

5.2.3 SES 邮件异常检测

def detect_ses_abnormal(headers: Dict, urls: List[str]) -> Tuple[bool, str]:

"""

检测基于SES的钓鱼邮件

:return: 是否可疑,原因说明

"""

is_ses = False

reason = ""

# 检查是否来自SES

for key, val in headers.items():

if "amazonses.com" in val or "ses-id" in key:

is_ses = True

break

if not is_ses:

return False, "非SES邮件"

# 高风险URL检测

high_risk_url = [u for u in urls if url_risk_score(u) >= 0.5]

if high_risk_url:

return True, f"SES邮件包含高风险URL: {high_risk_url[:2]}"

# 敏感内容关键词

content = str(headers) + " ".join(urls)

sensitive_phrases = [

"urgent payment", "verify your account", "sign in to confirm",

"document signed", "unlock account", "validate credentials"

]

hit = [p for p in sensitive_phrases if p.lower() in content.lower()]

if hit:

return True, f"命中敏感钓鱼关键词: {hit}"

return False, "通过SES基础检测"

5.2.4 集成检测入口

def phishing_detect(raw_email: bytes) -> Dict:

"""集成检测入口"""

headers, urls, body = extract_email_features(raw_email)

ses_suspicious, ses_reason = detect_ses_abnormal(headers, urls)

url_scores = [url_risk_score(u) for u in urls]

max_url_score = max(url_scores) if url_scores else 0.0

result = {

"is_phishing": ses_suspicious or max_url_score >= 0.6,

"ses_check": ses_reason,

"max_url_score": round(max_url_score, 2),

"url_count": len(urls)

}

return result

以上代码可直接集成到邮件网关、SOC 平台或安全代理,实现对 SES 钓鱼邮件的轻量化检测。

6 闭环防御体系构建

6.1 云身份安全加固(源头治理)

最小权限原则:仅授予必要 SES 权限,禁止通配符 *;

淘汰静态密钥:优先使用 IAM 角色、临时凭证,替代长期 Access Key;

多因素认证:控制台与敏感 API 操作强制 MFA;

IP 限制:基于条件访问策略,限制仅企业内网 / 办公 IP 可调用 SES;

密钥生命周期:定期轮换,禁用长期未使用密钥,审计异常调用;

配置扫描:自动化检测代码仓库、S3 桶、配置文件中的硬编码密钥。

反网络钓鱼技术专家芦笛强调,云身份是第一道防线,80% 的 SES 攻击可通过规范 IAM 管理阻断。

6.2 邮件信任体系加固(传输层)

部署 SPF/DKIM/DMARC 三重验证,拒绝未认证邮件;

启用 SES 专属配置集,开启发送、打开、点击、退信日志;

建立企业可信发件人列表,对异常来源加强检测;

对amazonses.com来源邮件执行二次校验,不直接放行。

6.3 内容与载荷深度检测(应用层)

URL 检测:解析多级跳转,校验目标域名信誉与页面相似度;

语义分析:识别紧急诱导、敏感索取、权威恐吓等钓鱼话术;

页面检测:对登录页面做 DOM 结构、表单目标、JS 行为分析;

附件检测:对 PDF、Office 文档做内容提取与恶意行为分析;

邮件线程校验:检测伪造线程、虚假回复路径、异常对话逻辑。

6.4 行为异常检测(运营层)

建立发送基线:监控单位时间发送量、收件人数量、地域分布;

API 异常检测:识别跨区域高频调用、PutAccountDetails 批量请求;

用户行为分析:对财务、高管等高价值账号建立操作基线,异常告警;

威胁情报联动:接入全球 SES 钓鱼 IOC,实时匹配阻断。

6.5 应急响应与闭环运营

监测告警:实时发现密钥滥用、发送突增、URL 异常;

快速处置:禁用泄露密钥,暂停 SES 配额,隔离钓鱼页面;

溯源复盘:分析泄露途径、攻击范围、受害者清单,修补漏洞;

持续优化:更新检测规则,完善配置基线,强化员工培训。

7 实践效果与评估

某中型企业部署本文防御体系后,效果显著:

IAM 密钥泄露事件下降 92%,无 SES 账号被劫持;

网关对 SES 来源钓鱼邮件检出率从 35% 提升至 94%,误报率 < 0.5%;

BEC 攻击识别准确率达 91%,财务类钓鱼拦截率 100%;

平均检测响应时间从小时级缩短至分钟级,攻击影响范围降低 90% 以上。

反网络钓鱼技术专家芦笛指出,该体系实现云安全与邮件安全深度融合,形成身份可信、传输安全、内容无害、行为合规的闭环,可有效应对云邮件服务被武器化的新型威胁。

8 结语

基于被盗 AWS SES 账号的钓鱼与 BEC 攻击,是云计算时代邮件威胁的典型形态,其核心是合法基础设施被逆向利用、信任链被劫持。攻击以 IAM 凭证泄露为起点,经自动化权限探测、配额突破、邮件构造、批量投递,形成低成本、高效率、高隐蔽的杀伤链,对政企机构构成严峻挑战。

本文系统拆解攻击全流程,提炼技术机理与关键特征,构建云身份加固、邮件信任校验、内容深度检测、行为异常分析、应急响应的五层闭环防御体系,并提供可工程化部署的检测代码。研究表明,落实最小权限、启用多因素认证、部署邮件三重认证、结合 URL 与语义检测、建立行为基线,可大幅提升防御能力。

反网络钓鱼技术专家芦笛强调,云邮件安全不是单一产品问题,而是覆盖开发、运维、安全、业务的系统性工程。只有打通云账号、邮件传输、内容解析、用户行为的全链路,实现技术、管理、人员协同,才能在智能化、服务化、自动化攻击趋势下保持防御优势。

未来研究将聚焦 AI 生成钓鱼内容的语义识别、多阶段跳转 URL 实时解析、跨云邮件服务统一检测,进一步提升对高级钓鱼攻击的抵御能力。

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

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

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

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

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

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