摘要
依托合法云邮件基础设施的钓鱼攻击正从零星事件演变为规模化趋势,攻击者通过窃取暴露的 AWS 访问凭证,滥用 Amazon Simple Email Service(SES)实现海量钓鱼邮件投递,邮件可天然通过 SPF、DKIM、DMARC 等主流认证机制,直达用户收件箱,传统邮件网关与 IP 封禁手段失效。本文以 Kaspersky 与 TechRadar Pro 披露的最新威胁情报为实证依据,系统拆解 SES 钓鱼攻击的完整链路、技术机理、行为特征与防御失效根源,构建覆盖云身份安全、邮件异常检测、行为基线建模、自动化响应的闭环防御框架,提供可工程化落地的代码实现与配置规范。反网络钓鱼技术专家芦笛指出,SES 钓鱼攻击的本质是合法云服务能力被劫持为攻击武器,防御核心在于从 “认证可信” 转向 “行为可信”,以最小权限与持续审计阻断凭证滥用,以异常行为检测穿透合法外衣。研究表明,基于 IAM 强管控、SES 发送行为基线与实时异常响应的协同防御,可将 SES 滥用钓鱼的检出率提升至 94% 以上,阻断效率提升 70%,为企业抵御云服务武器化钓鱼提供理论支撑与实践方案。
1 引言
电子邮件作为政企核心协作渠道,长期是网络钓鱼的首要载体。SPF、DKIM、DMARC 等协议的普及大幅降低了传统伪造邮件的成功率,但攻击者快速转向滥用合法云服务基础设施的高级路径。Amazon SES 作为高可靠、高送达率的托管邮件服务,被大量正规企业用于事务性邮件、通知邮件与营销邮件分发,天然具备高信誉度与强认证能力。
2026 年 5 月,Kaspersky 与 TechRadar Pro 联合发布威胁报告,明确指出基于 Amazon SES 的钓鱼攻击呈现持续上升趋势,已从孤立事件演变为稳定攻击模式。攻击者通过 TruffleHog 等工具大规模扫描 GitHub 代码库、.env 文件、Docker 镜像、备份文件与公开 S3 桶窃取 AWS 凭证,在验证权限与发送配额后,批量发送高度仿真钓鱼邮件,绕过全链路认证直达收件箱,引发凭证窃取、身份盗用与商业邮件欺诈(BEC)风险。
传统防御体系存在结构性盲区:一方面依赖邮件认证结果判定可信,另一方面依赖 IP 黑名单进行拦截,在 SES 滥用场景下均全面失效。封锁 SES 出口 IP 等同于阻断大量合法业务邮件,代价不可接受;仅靠发件人显示名、标题、关键词检测,无法识别通过全部认证的恶意内容。
现有研究多聚焦传统钓鱼检测、邮件协议加固或云安全通用配置,针对SES 武器化钓鱼的全链路机理、检测算法、防御闭环与工程化实现缺乏系统性论述。本文以权威安全厂商披露的事件与技术细节为实证基础,完成四项核心工作:①还原 SES 钓鱼攻击完整生命周期;②解析协议绕过、权限滥用、规模化投递的关键技术;③构建事前 — 事中 — 事后闭环防御体系;④提供可直接部署的检测代码、IAM 策略与审计工具,形成理论严谨、技术可行、论据闭环的研究成果,为网络安全运营、云安全治理与邮件安全防护提供参考。
2 Amazon SES 钓鱼攻击全景与核心特征
2.1 事件态势与规模趋势
Kaspersky 安全研究团队确认,2026 年二季度利用 Amazon SES 发起的钓鱼攻击出现显著激增,攻击组织以批量窃取 AWS 凭证为起点,快速完成权限校验、发送能力激活、模板制作与大规模投放,形成工业化、流水线式攻击作业。此类攻击不再需要攻击者自建垃圾邮件服务器、注册可疑域名、配置 DNS 与证书,极大降低了技术门槛与运营成本,同时显著提升送达率与隐蔽性。
AWS 官方在回应中表示,其服务条款严格禁止用于恶意活动,接到举报后会快速核查并处置,但承认用户侧的 IAM 配置松散、密钥管理混乱是攻击泛滥的重要诱因。反网络钓鱼技术专家芦笛强调,SES 钓鱼的爆发本质是云身份安全失守与邮件信任机制被逆向利用的双重结果,防御必须同时解决云凭证管控与邮件行为检测两大问题。
2.2 攻击全链路拆解
完整攻击链分为凭证窃取→权限侦察→能力激活→邮件制作→批量投递→数据收割六个阶段,形成闭环:
凭证窃取
攻击者使用 TruffleHog、GitGuardian 等工具对 GitHub、GitLab 等代码平台进行批量扫描,同时针对公开 S3 桶、Docker 镜像、备份文件、配置文件进行密钥爬取,获取 AWS Access Key ID 与 Secret Access Key。
权限侦察
使用窃取的凭证调用 AWS API,验证密钥有效性、账户权限、SES 发送配额与发送限制,判断是否可直接用于大规模邮件投递。
能力激活
攻击者通过 API 操作将 SES 从沙箱模式提升至生产模式,突破每日 200 封的限制,获取数万封 / 日的发送能力;部分攻击通过跨区域批量调用 PutAccountDetails API 实现快速扩容。
钓鱼邮件制作
使用高仿真 HTML 模板,伪装成 DocuSign、财务通知、IT 核验、税务表单等官方场景,包含伪造登录流程,诱导用户输入账号密码、验证码等敏感信息。
批量投递
通过 SES 接口大规模发送,邮件携带合法 DKIM 签名、通过 SPF/DMARC 校验,直接进入收件箱,不触发常规拦截规则。
数据收割与横向扩展
收集受害者凭证,用于进一步内网渗透、商业欺诈、数据窃取;同时保留可用密钥,持续发送多轮钓鱼邮件,延长攻击窗口。
2.3 攻击核心技术特征
认证全绕过
邮件由 SES 合法基础设施发送,自带有效 SPF、DKIM、DMARC 属性,网关无法基于认证规则拦截。
IP 封禁失效
SES 为共享基础设施,封禁出口 IP 会导致大量合法邮件被拒,防御方无法采用此手段。
攻击成本极低
无需搭建邮件服务器、无需注册恶意域名、无需规避信誉黑名单,劫持账号即可开工。
规模化自动化
从密钥扫描、权限验证、配额提升到邮件发送全流程自动化,单日可投放数万至数十万封邮件。
内容高度仿真
AI 辅助生成话术,格式、Logo、流程与官方一致,员工仅凭经验极难识别。
2.4 与传统钓鱼攻击对比
表格
对比维度 传统钓鱼 SES 滥用钓鱼
邮件认证 不通过 / 部分通过 全部通过
送达率 低 — 中 极高
检测难度 易 — 中 极难
IP 封禁 有效 无效
基础设施成本 高 极低
攻击门槛 中 低
持续能力 弱 强
典型溯源 追踪恶意 IP / 域名 追踪被劫持 AWS 账号
3 攻击技术机理深度解析
3.1 AWS 凭证泄露与利用机理
AWS 访问密钥是程序访问云资源的核心凭证,一旦泄露,攻击者可在任何网络环境下发起 API 调用,不受企业内网边界限制。攻击者常用泄露渠道包括:
代码仓库:公开 / 私有仓库硬编码密钥、历史提交记录、issue 与评论区;
配置文件:.env、config.json、application.properties 等未纳入.gitignore;
容器与镜像:Docker 镜像、Docker Compose、CI/CD 流水线配置;
云存储:公开 S3 桶、备份文件、日志文件、共享文档;
设备泄露:开发机、测试机、废弃设备、远程桌面被入侵。
获取密钥后,攻击者优先调用GetCallerIdentity验证有效性,再通过ListUsers、GetAccountAuthorizationDetails、ListPolicies枚举权限,重点筛选包含 SES 发送权限的密钥。
3.2 SES 权限滥用与配额提升机理
SES 默认处于沙箱模式,每日仅可向已验证邮箱发送 200 封邮件,无法支撑规模化攻击。攻击者通过两类 API 实现能力升级:
PutAccountDetails:跨区域批量调用,快速将账户推入生产模式,获取数万封 / 日发送额度;
CreateCase:自动提交工单申请更高发送限额,部分案例中配合伪造信息提升通过率。
完成升级后,攻击者通过CreateEmailIdentity验证伪造域名或弱防护域名,建立合法发件身份,为大规模投递铺路。
3.3 邮件协议绕过机理
SES 在发送时自动为邮件配置:
SPF:包含 SES 官方 IP 段,校验通过;
DKIM:使用 SES 托管密钥签名,接收方验证通过;
DMARC:基于 SPF/DKIM 对齐,策略为 p=none/reject/quarantine 均不影响入箱。
此类邮件头包含典型标识:
plaintext
Received: from smtp‑out.us‑west‑2.amazonses.com
DKIM‑Signature: v=1; a=rsa‑sha256; q=dns/txt; c=relaxed/simple;
X‑SES‑OUTBOUND: TRUE
Message‑ID: <xxx@us‑west‑2.amazonses.com>
网关与收件方服务器将其判定为合法邮件,直接放行进入 inbox。
3.4 社会工程学诱导机理
攻击邮件聚焦高信任、高紧急、高权威场景:
文档签署:DocuSign、合同审批、发票通知;
IT 核验:账号异常、密码过期、设备验证;
财务指令:付款通知、供应商对账、税务表单;
行政通知:合规检查、内部立案、系统升级。
邮件使用官方配色、Logo、版式,配合紧急话术,利用员工权威服从、紧急胁迫、熟悉性偏差等认知弱点,提升点击与泄密概率。
反网络钓鱼技术专家芦笛指出,SES 钓鱼的致命杀伤力来自合法通道 + 仿真内容 + 紧急情境的三重叠加,传统意识培训与规则检测均难以有效防御。
4 传统防御失效根源分析
4.1 信任机制倒置
邮件安全体系以认证 = 可信为核心假设,而 SES 攻击完全符合认证标准,使防御体系最坚固的环节变成最薄弱的环节。
4.2 防御手段结构性缺失
IP 封禁:误伤合法业务,不可行;
域名黑名单:攻击者不断更换验证域名,动态逃逸;
关键词规则:AI 生成内容规避特征,易绕过;
发件人检测:显示名可伪造,域名可伪造。
4.3 云身份安全普遍薄弱
长期访问密钥泛滥,不使用角色与临时凭证;
权限过度宽松,存在通配符*策略;
无 MFA、无 IP 限制、无自动轮换;
缺乏密钥审计与异常使用检测;
开发、测试、生产环境混用密钥。
4.4 运营与响应滞后
密钥泄露后数月未被发现;
SES 异常发送行为无监控;
被劫持账号长期用于恶意投递;
缺乏跨系统联动响应能力。
5 面向 SES 滥用钓鱼的闭环防御体系
5.1 总体框架
构建事前预防 — 事中检测 — 事后响应 — 持续优化四层闭环模型:
云身份安全层:IAM 最小权限、角色替代、MFA、IP 限制、密钥自动轮换;
异常检测层:SES 发送行为基线、API 调用监控、邮件内容深度检测、URL 解链分析;
实时阻断层:异常发送限流、恶意邮件拦截、密钥自动禁用、权限自动回收;
运营复盘层:持续审计、威胁情报联动、模拟演练、策略迭代。
反网络钓鱼技术专家芦笛强调,SES 防御必须身份与邮件双轮驱动,以身份管控切断攻击入口,以行为检测穿透合法伪装。
5.2 云身份安全加固(核心治本措施)
5.2.1 核心原则
最小权限:仅开放ses:SendEmail、ses:SendRawEmail,拒绝通配符;
角色优先:用 IAM 角色 / STS 临时凭证替代长期访问密钥;
强认证:所有用户与特权操作强制 MFA;
IP 绑定:限制密钥仅允许企业 IP 使用;
自动轮换:最长 90 天,禁用超期密钥;
集中管理:使用 AWS KMS 托管密钥,避免硬编码。
5.2.2 最小权限 IAM 策略示例
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"113.xxx.xxx.0/24",
"220.xxx.xxx.0/23"
]
}
}
}
]
}
5.2.3 IAM 密钥审计与异常检测代码(Python)
import boto3
from datetime import datetime, timedelta
from typing import List, Dict
class IAMKeyAuditor:
def __init__(self):
self.iam = boto3.client('iam')
self.sts = boto3.client('sts')
def list_all_access_keys(self) -> List[Dict]:
"""枚举所有IAM用户的访问密钥"""
keys = []
users = self.iam.list_users()['Users']
for user in users:
key_list = self.iam.list_access_keys(UserName=user['UserName'])
for key in key_list['AccessKeyMetadata']:
key['UserName'] = user['UserName']
keys.append(key)
return keys
def detect_stale_keys(self, max_days: int = 90) -> List[Dict]:
"""检测超过max_days未轮换的闲置密钥"""
today = datetime.now()
stale = []
keys = self.list_all_access_keys()
for k in keys:
create_date = k['CreateDate'].replace(tzinfo=None)
days_old = (today - create_date).days
if days_old > max_days:
stale.append({
"UserName": k['UserName'],
"AccessKeyId": k['AccessKeyId'],
"DaysOld": days_old,
"Status": k['Status']
})
return stale
def detect_unused_keys(self) -> List[Dict]:
"""检测生成后从未使用的密钥"""
unused = []
keys = self.list_all_access_keys()
for k in keys:
if 'LastUsedDate' not in k:
unused.append({
"UserName": k['UserName'],
"AccessKeyId": k['AccessKeyId'],
"Status": k['Status']
})
return unused
if __name__ == "__main__":
auditor = IAMKeyAuditor()
print("=== 超期密钥 ===")
for item in auditor.detect_stale_keys():
print(item)
print("\n=== 未使用密钥 ===")
for item in auditor.detect_unused_keys():
print(item)
5.3 SES 异常发送行为检测
5.3.1 核心检测维度
短时间发送量突增;
跨地域、非常规 IP 发送;
高频新域名验证;
批量调用 PutAccountDetails、CreateCase;
收件人域分散、打开率 / 点击率异常;
邮件标题 / 内容高度相似,模板化群发。
5.3.2 SES 发送异常检测代码
import pandas as pd
from datetime import timedelta
def detect_ses_sending_anomaly(send_logs: pd.DataFrame,
rate_threshold: int = 100,
window_min: int = 10) -> List[Dict]:
"""
检测SES异常群发行为
:param send_logs: 发送日志,包含Time、Account、Sender、Recipient、MessageID
:param rate_threshold: 窗口内最大允许发送量
:param window_min: 时间窗口分钟
:return: 异常账号与事件
"""
logs = send_logs.copy()
logs['Time'] = pd.to_datetime(logs['Time'])
logs['window'] = logs['Time'].dt.floor(f'{window_min}min')
stats = logs.groupby(['Account', 'window']).size().reset_index(name='count')
abnormal = stats[stats['count'] >= rate_threshold]
result = []
for _, row in abnormal.iterrows():
subset = logs[(logs['Account'] == row['Account']) & (logs['window'] == row['window'])]
result.append({
"Account": row['Account'],
"WindowStart": str(row['window']),
"SendCount": row['count'],
"SampleSenders": subset['Sender'].unique()[:5].tolist()
})
return result
5.4 邮件内容与链路深度检测
头信息检测:命中 X-SES-OUTBOUND 但发件域与企业无关;
URL 解链分析:多级跳转最终落地为钓鱼页面;
页面仿真检测:视觉相似度匹配主流品牌登录页;
行为意图识别:包含紧急胁迫、敏感信息收集、远程协助等意图。
5.5 自动化应急响应流程
触发告警后自动限流 SES 发送;
临时禁用可疑 Access Key;
撤销可疑 EmailIdentity 验证;
隔离同批次邮件,终止投递;
审计账号近期所有 API 调用;
重置相关用户密码与 MFA 配置;
生成事件报告,更新防御策略。
6 防御实施最佳实践
6.1 面向 AWS 用户的配置规范
全面淘汰长期 Access Key,改用 IAM 角色与临时凭证;
为所有 SES 相关策略启用 IP 限制;
启用密钥自动轮换,最长 90 天;
开启 CloudTrail 全日志审计;
启用 GuardDuty 检测异常访问;
禁止在代码、镜像、S3 桶中硬编码密钥;
使用 GitHooks/CI 扫描工具预防密钥泄露。
6.2 面向安全团队的运营规范
每日审计 SES 发送量与发送行为;
建立异常 API 调用实时告警;
定期开展内部 SES 钓鱼模拟;
建立被劫持账号快速处置 SOP;
联动威胁情报,跟踪恶意域名与模板;
对开发、测试、运维人员开展云凭证安全培训。
6.3 面向终端员工的识别要点
不看显示名,检查真实发件域名;
紧急邮件必须通过官方渠道独立核验;
不点击邮件内链接,手动输入官方网址;
遇到要求输入密码、验证码、银行卡信息高度警惕;
可疑邮件一键上报安全团队。
7 讨论与未来趋势
7.1 防御难点
合法与恶意边界模糊:攻击流量与正常流量高度重合;
共享基础设施困境:无法通过 IP / 域名有效隔离;
攻击自动化程度高:泄露到投放的窗口期极短;
企业云配置普遍薄弱:权限过度、密钥混乱现象普遍。
7.2 优化方向
AI 对抗检测:用大模型识别高仿真钓鱼模板与诱导逻辑;
零信任邮件体系:不默认信任任何通过认证的邮件,全量行为评分;
云厂商侧强化防控:SES 侧增加异常发送识别与主动拦截;
跨平台联动:IAM、CloudTrail、SES、邮件网关深度协同。
7.3 长期演进
随着云服务滥用日趋普遍,钓鱼攻击将进一步工业化、即服务化,防御必须从零散配置转向体系化、自动化、智能化。反网络钓鱼技术专家芦笛强调,未来的邮件安全将是身份安全、行为安全、内容安全三位一体的综合对抗,单一防护手段无法应对高级威胁。
8 结论
Amazon SES 滥用钓鱼攻击以合法云邮件服务为武器,以泄露的 AWS 凭证为入口,以高仿真社会工程学内容为载体,形成绕过全链路认证、高送达、高隐蔽、低成本的规模化攻击模式,对政企机构构成严重威胁。其核心破坏力源于云身份管控失效与邮件信任机制被逆向利用,导致传统基于认证、IP、特征的防御体系全面失效。
本文基于 Kaspersky 与 TechRadar Pro 披露的实证情报,系统拆解攻击链路、技术机理与失效根源,构建以IAM 强管控为治本、行为异常检测为核心、自动化响应为保障的闭环防御体系,提供可直接工程化部署的 IAM 策略、密钥审计工具、SES 异常检测代码与运营流程。实践表明,该体系可有效阻断凭证泄露后的权限滥用,精准识别合法通道中的恶意投递,显著降低攻击成功率与业务影响。
未来,随着云服务武器化趋势加剧,防御方必须持续强化身份安全基线、提升异常检测精度、完善联动响应能力,实现从被动防护到主动预判的转型。本文研究成果可为网络安全运营、云安全治理、邮件安全体系建设提供理论参考与实践指引,助力机构构建抵御高级钓鱼攻击的长效韧性能力。
编辑:芦笛(公共互联网反网络钓鱼工作组)