当所有标头都被伪装成 GMail 时,为什么 DKIM 验证通过 Yahoo 的签名成功?

信息安全 电子邮件 网络钓鱼 邮箱 dkim 雅虎
2021-08-30 10:55:29

今天我收到一封诈骗电子邮件,我决定剖析它。我很快发现它是从 GMail 地址 ( From, Reply-To, Return-Path) 发送的,但邮件本身来自 Yahoo。

  • 来自雅虎的 HELO
  • 从正向和反向的 IP 映射接收
  • 邮件具有 yahoo.com 的有效 DKIM 签名
  • Mail 软失败 GMail SPF,因为 Yahoo 拥有的 IP 不是其中的一部分

我已经通过 opendkim-testmsg 传送了邮件,它告诉我邮件很好。

我真的对这一切感到困惑。当然,从技术上讲,任何人都可以使用 DKIM 为自己的域签署任何电子邮件,即使它与邮件中使用的任何域都不匹配。但是雅虎为什么要这样做呢?为什么即使 Return-Path 域和 DKIM 域不匹配,OpenDKIM 也没有表明这封邮件存在钓鱼邮件?

应普遍要求,一些电子邮件标题。请注意,这封电子邮件已通过公司邮件清洗服务 Exchange 和我剥离了很多识别数据。但是,标头部分的 DKIM 签名仍然匹配。我省略了正文,但它也验证了。

Received-SPF: softfail (MYMX: transitioning domain of gmail.com does not designate 87.248.110.97 as permitted sender) client-ip=87.248.110.97; envelope-from=helenslomonn@gmail.com; helo=sonic302-34.consmr.mail.ir2.yahoo.com;
Received: from sonic302-34.consmr.mail.ir2.yahoo.com ([87.248.110.97])
    by MYMX with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128)
    (envelope-from <helenslomonn@gmail.com>)
    for MYNAME@MYDOMAIN; Wed, 28 Feb 2018 05:03:02 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1519822976; bh=35/Syp7oOntp7GfGR2tdK316KBE4uAxZC5lOM//DYjg=; h=Date:From:Reply-To:Subject:References:From:Subject; b=KvnuAmNY1sujXiLsVnNqOJzF3MFxu/jY93zu5QKtbWRy9nMOhomUrZ+398oRwLC0P0RAkCbOj5a2x5JZtrZG4/71RKmHD/ftzOJI2goX2A4KaWrsczH4RsR/kfvpmz0jNRF4nxZONN4a5NKLavt6WPG7yWokVrGh2n/zUZPiFFv8kZL0uNPdIyCC94OiBh0c6GlSRpmTe0GbTQmbDgXZ+8nf7O5kiWpALbpSBHJ22QmdFhLLQWS18xZhl/AwprHFV+txsWtat02ldjYUmoGKhXNmTcWHDLPw7n5uyKXwsaOuX1uXSLzaWUgpnrD/v/FonebJoo1qkcnZoziov6TJmw==
X-YMail-OSG: dOZOfQ0VM1lyzg2OUT1yoveGRURYm6FHV_CU8qWTCRbr8jkKD_gBSwprVT5nSNr
 oxL32bI8ge8m_n_BDyDXFKnfZTDdFMGUPxFQt8bl2TLbWIC72.HGgEg6S8trxoSkeYLsPM8tUIhL
 XPCdlp3sNlz4quLJyyJznVo55S3vYeLt5fYSOqw2kJtOvf3l.puohOlVCc5WBZO1lp82MLbBi0rq
 0tCsbA3xDFW8_3JsxoJGinZ8fn0BBoqUfkfFdGv7UyoM94wlv4_GWYAQwIzicSQsC5od.fBm1lM_
 zSZlsV9hfeDUkwDyQiAmFq5rCUJ.3N7Lu9IKZTwnKjWvRFNudXOkEEJwW7Dg0eRNCBx.N2c.52Bi
 dfwYepO_0jqL.vF19srHCbj6PrUQjFYiIzaauD.m9IdfE692oG6o9B.w20VkMLmTcxjBKg7NC1pk
 6mWavSA7yHndoNrMfcB.liBw3XSLggRvPH60M
Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ir2.yahoo.com with HTTP; Wed, 28 Feb 2018 13:02:56 +0000
Date: Wed, 28 Feb 2018 13:02:52 +0000 (UTC)
From: hs <helenslomonn@gmail.com>
Reply-To: hs <helensslomonn@gmail.com>
Message-ID: <909434698.11100734.1519822972957@mail.yahoo.com>
Subject: MRS.HELEN SOLOMON FUNDS TRANSFER ASSISTANCE.
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
References: <909434698.11100734.1519822972957.ref@mail.yahoo.com>
To: Undisclosed recipients:;
Return-Path: helenslomonn@gmail.com
MIME-Version: 1.0
3个回答

如果没有看到标头就无法确定,但我的猜测是 from/reply-to/return-path 都是欺骗性的,只是作为 SMTP 事务的一部分由攻击者提交。正如你所说,HELO 来自雅虎,是雅虎签署的。雅虎没有证明交易中任何标头的值,只是将其注入雅虎服务器,然后代表雅虎尽职尽责地对其进行 DKIM 签名,然后就离开了。

至于为什么 OpenDKIM 在 Return-Path 和 DKIM 域不匹配时不指示网络钓鱼,这将是 OpenDKIM 人员需要回答的问题/错误报告。同样,我的猜测是它只是根据 DKIM 签名检查 MTA 发件人的域,这将匹配。

我同意这似乎是一个错误。

DKIM所做的只是说消息的某些部分在签名出站 SMTP 服务器和客户端之间没有更改(在这种情况下,DKIM 签署了正文和由标头中的bh键标识的多个标DKIM-Signature头)。

诚信≠权威≠安全

完整性:这些被签名的项目只是确保它们不会在发送中继和最终接收者(您)之间受到干扰。签名上经过验证的匹配只会证明服务器看到的内容与您看到的内容相同。

此带有有效 DKIM 的消息具有完整性,因此您将其视为发送者的意图。

授权: DMARC(和SPF)可以确定邮件是否被相关域(gmail.com)批准。SPF 列出了允许为给定域发送的邮件服务器,而 DMARC 描述了在邮件缺少对齐的 SPF 或 DKIM 时要遵循的策略。(对齐意味着 From 标头与来自(对于 SPF)或DKIM-Signature标头的d密钥 (DKIM) 的信封邮件匹配。对于精确的主机匹配,它可以是“严格的”,或者对于组织域匹配来说是“宽松的”。)

DKIM 的 d=yahoo.com 与 From 的 @gmail.com 不一致,因此无法通过 DMARC。SPF 失败(GMail 不允许雅虎的基础设施)……而且无论如何都没有对齐。

此消息缺少有效 + 对齐的 DKIM 或 SPF,因此未经授权。
      …虽然 DMARC 政策 (p=none) 没有规定采取行动,但它已交付给您。

安全是服务器几乎无法控制的事情。如果用户受到威胁(或一开始是恶意的),则该帐户可用于发送签名垃圾邮件。大多数出站邮件中继,尤其是像 Yahoo 和 GMail 这样的免费邮件中继,都具有出站垃圾邮件检测功能,但所有垃圾邮件检测系统都有命中和未命中,并且大多数(尤其是出站)在传递方面出错(允许恶意邮件通过为假而非将合法邮件视为误报)。

⚠️ DKIM、SPF 和 DMARC 不评判内容安全,只评判完整性和权威性。

我希望我能像现在表达的那样切入问题的核心。

DKIM 并不意味着验证信封内容是否与其域准确。DKIM对电子邮件进行授权,并且接收者使用 DKIM 协议来验证电子邮件是否被授权从记录在信封中的邮件发送。

来自 RFC

DKIM 允许组织以可以由收件人验证的方式负责传输消息。

这允许中介签署和授权发送电子邮件,并允许电子邮件发送者代表其他域发送。

所以,在你的例子中,有人制作了一个欺骗性的发件人,但使用雅虎电子邮件客户端和邮件程序发送出去。SPF 失败(应该如此),但 DKIM 协议完全按照它的预期行事:它在信封上签名,然后邮寄者将其作为从其系统发送的合法电子邮件发送出去。由于 DKIM,收件人可以看到邮件被授权由 Yahoo 邮件程序发送并且在传输过程中没有被修改。

所以,是的,根据 DKIM 协议,您在标题中看到的内容是可能的,但完全有效。发件人不验证;它授权。

那么,DKIM 的意义何在?DKIM 在许多方面都很有用,包括防止传输中的操纵,还可以防止配置为欺骗合法电子邮件发送者的自定义电子邮件服务器。例如,如果我制作了一个电子邮件服务器并配置所有信封以声明电子邮件发件人是 Yahoo。DKIM 确保当收件人收到电子邮件时,IP 和域以及签名不匹配。

DKIM 有一个非常狭窄和特定的用例。该用例非常有用,但有已知的限制,例如这个。这就是为什么建议结合使用 SPF、DKIM 和 DMARC。DMARC 是告诉接收器在 SPF 失败(就像它一样)但 DMARC 通过时要做什么的协议。DMARC 将协议联系在一起,并且可以制定策略来拒绝您系统上的此电子邮件。