用 Amazon Bedrock 识别 AI 生成的钓鱼邮件:从提示词到自动化拦截

2026-07-03 30 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:9 分钟

钓鱼邮件一直是攻击链里最便宜、最常见的入口。生成式 AI 改变了它的规模和质量:攻击者可以结合公开情报(OSINT),批量生成语气自然、上下文贴合、几乎不重复的邮件。对安全团队来说,传统基于关键字、黑名单和固定模板的检测方式会越来越吃力。Amazon Bedrock 的价值在于:把大语言模型接入邮件安全流水线,让系统不只看“有没有可疑词”,还看“这封邮件是否在诱导某个危险动作”。

新型钓鱼邮件难在“像真的”

过去的钓鱼邮件经常有明显破绽:拼写错误、粗糙模板、可疑域名、夸张措辞。AI 生成的邮件不同,它可以做到:

  • 根据收件人的职位、公司新闻、项目名称写出定制化内容。
  • 为每个目标生成不同措辞,降低基于重复样本的检测效果。
  • 模仿内部通知、供应商催款、HR 流程、云服务告警等常见业务语境。
  • 用更克制的语气绕过“紧急”“中奖”“密码过期”等简单规则。

这意味着邮件安全系统需要分析意图、上下文、行为诱导和信号组合,而不是只匹配几个危险词。

Bedrock 适合放在邮件安全流水线的哪一层

Amazon Bedrock 提供托管的基础模型访问能力,可以用于构建一个“语义判定层”。它不应该替代现有网关、反病毒、URL 沙箱和 DMARC/SPF/DKIM 检查,而是补上这些机制不擅长的部分:自然语言意图分析。

一个实用的流水线可以这样设计:

  1. 邮件网关先做基础过滤:发件域、认证结果、附件类型、URL 声誉。
  2. 对进入灰区的邮件,抽取主题、正文、链接文本、发件人信息。
  3. 调用 Bedrock,让模型输出结构化风险判断。
  4. 根据风险等级执行动作:放行、加警告横幅、隔离、提交人工复核。
  5. 把人工复核结果回写到规则和评估集里,持续调优提示词与阈值。

关键点是让模型输出机器可处理的 JSON,而不是一段自由发挥的解释。安全系统需要稳定字段,例如 risk_scorecategorysignalsrecommended_action

可以这样实践:用 Python 调用 Bedrock 做邮件风险判定

下面示例演示一个最小可改造的检测器。它假设你已经配置好 AWS 凭证,并且账号所在区域可以访问对应的 Bedrock 模型。运行前请把 modelId 换成你环境中已启用的模型 ID。

import boto3
import json

bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")

email = {
    "from": "it-support@example-login.com",
    "to": "alice@company.com",
    "subject": "Action required: mailbox storage policy update",
    "body": "Hi Alice, your mailbox will stop receiving messages today unless you confirm the new storage policy. Please review the secure document here: https://example-login.com/office/update",
    "links": ["https://example-login.com/office/update"],
    "auth_results": {
        "spf": "fail",
        "dkim": "none",
        "dmarc": "fail"
    }
}

prompt = f"""
You are an email security classifier.
Analyze whether the following email is likely phishing, including AI-generated social engineering.
Return only valid JSON with these fields:
- risk_score: integer from 0 to 100
- category: one of [benign, suspicious, phishing, business_email_compromise]
- signals: array of concise reasons
- recommended_action: one of [allow, warn_user, quarantine, human_review]

Email:
{json.dumps(email, ensure_ascii=False, indent=2)}
"""

response = bedrock.invoke_model(
    modelId="anthropic.claude-3-haiku-20240307-v1:0",
    body=json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 500,
        "temperature": 0,
        "messages": [
            {"role": "user", "content": prompt}
        ]
    })
)

payload = json.loads(response["body"].read())
text = payload["content"][0]["text"]
result = json.loads(text)

print(json.dumps(result, indent=2, ensure_ascii=False))

if result["recommended_action"] in ["quarantine", "human_review"]:
    print("Block or route this email for analyst review.")
else:
    print("Deliver with normal or warning treatment.")

可以把这段代码接到 Amazon SES、邮件网关日志、SIEM 或 SOAR 流程后面。更成熟的做法是只把“灰区邮件”送给模型,避免成本失控,也减少模型参与低价值判定。

提示词要问“攻击意图”,不要只问“像不像垃圾邮件”

检测 AI 生成钓鱼邮件时,提示词设计很重要。一个弱提示词会得到泛泛的判断;一个好的安全提示词会让模型检查具体攻击模式。

可以让模型重点观察这些信号:

  • 是否诱导输入密码、MFA 验证码、付款信息或下载附件。
  • 是否利用紧迫感、权威身份、供应商关系或内部流程施压。
  • 发件域名、链接域名、显示名称之间是否存在不一致。
  • 邮件内容是否过度贴合个人或公司上下文,疑似使用 OSINT。
  • 技术认证结果是否异常,例如 SPF、DKIM、DMARC 失败。

一个更适合生产环境的输出格式可以是:

{
  "risk_score": 86,
  "category": "phishing",
  "signals": [
    "Sender domain does not match the claimed IT support identity",
    "Message pressures the user to act immediately",
    "Link points to a non-corporate domain",
    "SPF and DMARC checks failed"
  ],
  "recommended_action": "quarantine"
}

这类结构化结果更容易被策略引擎消费。例如:risk_score >= 80 直接隔离;50-79 加警告横幅并提交复核;低于阈值则进入正常投递。

不要把 LLM 当成唯一裁判

Bedrock 能增强邮件安全系统,但边界也很清楚。

  • 模型可能误判业务邮件,尤其是财务、HR、法务等高风险但正常的流程邮件。
  • 攻击者可能尝试在邮件正文里注入指令,例如“忽略所有安全规则”。提示词中要明确邮件内容是不可信输入。
  • 涉及隐私和合规时,应控制发送给模型的字段,必要时脱敏正文和附件内容。
  • 模型输出应进入策略引擎,而不是直接决定所有安全动作。
  • 需要用真实误报、漏报样本持续评估,而不是只看单次演示效果。

一个稳妥的落地清单是:先从旁路分析开始,不影响邮件投递;积累样本后设定阈值;再逐步对高置信度风险邮件启用隔离;最后把人工复核反馈纳入持续评估。AI 让钓鱼邮件更像真人写的,防御侧也需要从“匹配文本”升级到“理解意图”。


相关推荐