居然可以从Microsoft发钓鱼邮件?!
这篇推文介绍了我在 发现的一个神奇又简单的漏洞。说实话microsoft outlook收件箱,我不能完全理解这个漏洞背后的逻辑。不管怎样,现在它已经被修复了。
九月的时候,我在测试各种邮件应用的垃圾邮件过滤器,比如 Gmail、 和 Yandex。我使用了 上的大学邮箱以及 Gmail 和 Yandex 上的个人邮箱作为测试对象。我在亚马逊服务器上安装了 sees 工具(工具获取地址:)来发送钓鱼邮件。但是测试并不成功。一个用于测试我的Yandex邮箱的样例:
它被检测出并放进了垃圾过滤器。试了试 Gmail 和microsoft outlook收件箱,情况还是一样。或许这个工具并不实用,或许我犯了什么错误,我并不确定。
突然,一件奇怪的事发生了。我看到在我 Yandex 收件箱里的一封主题为 “” 的邮件出现了绿色的有效标志。
开始的时候,我以为是我无意中发送了另一封测试邮件给我的 Yandex 邮箱并通过了过滤。但后来我意识到,我是发送了主题为 “” 的邮件给 Yandex 邮箱,并发送了主题为 “” 的邮件给 Outlook 邮箱。应该还有别的东西。
检查了几分钟后,我想起曾经给我的 设置了邮件转发到 Yandex 邮箱,所以 Outlook 转发这封邮件给了 Yandex。但是为什么那个有效标志会在这时候出现?
我在 Yandex 网站上看到它是这么说的(顺便说一下,这个功能现在已经不支持了):“使用 DKIM 签名,收件人可以验证邮件是否真的来自可信的发件人。”
这是一个简单的 DKIM(Mail,域名密钥识别邮件)验证器。所以基本上如果一封邮件被有效的证书签名,并忽略发送者的域名,我们就可以看到这个很酷的绿色标志了。所以,只要发送域名是 ,它就一定已经被 的证书签名了吗??
为了了解到底发生了什么,我检查了这些垃圾邮件和有效邮件的邮件头。下图是被 Yandex 标记为垃圾邮件的邮件头:
代码:
Received: from mxfront15h.mail.yandex.net ([127.0.0.1]) by mxfront15h.mail.yandex.net with LMTP id HG70cJmK for; Sat, 3 Sep 2016 22:02:37 +0300 Received: from ec2-52-51-33-8.eu-west-1.compute.amazonaws.com (ec2-52-51-33-8.eu-west-1.compute.amazonaws.com [52.51.33.8]) by mxfront15h.mail.yandex.net (nwsmtp/Yandex) with ESMTP id K8106KgL1a-2aGmWbm2; Sat, 03 Sep 2016 22:02:36 +0300 Return-Path: [email protected] X-Yandex-Front: mxfront15h.mail.yandex.net X-Yandex-TimeMark: 1472929356 Authentication-Results: mxfront15h.mail.yandex.net; spf=fail (mxfront15h.mail.yandex.net: domain of example.com does not designate 52.51.33.8 as permitted sender) [email protected] X-Yandex-Spam: 1 Received: from [127.0.0.1] (localhost [127.0.0.1]) by ip-10-0-0-12.eu-west-1.compute.internal (Postfix) with ESMTP id 2749C42DA5 for ; Sat, 3 Sep 2016 19:02:36 +0000 (UTC) Content-Type: multipart/alternative; boundary="127.0.0.1.0.4022.1472929356.122.1" From: Johannes Brahms Subject: Verify Test 1 MIME-Version: 1.0 To: [email protected]
它的接受者是亚马逊服务器,它没有被有效的证书签名,毫无疑问它会被放进垃圾邮件过滤器里。接下来我们检查有效邮件的邮件头:
代码:
Received: from mxfront9h.mail.yandex.net ([127.0.0.1]) by mxfront9h.mail.yandex.net with LMTP id anm2f8eB for; Sat, 3 Sep 2016 22:05:49 +0300 Received: from mail-he1eur01lp0215.outbound.protection.outlook.com (mail-he1eur01lp0215.outbound.protection.outlook.com [213.199.154.215]) by mxfront9h.mail.yandex.net (nwsmtp/Yandex) with ESMTPS id **REMOVED**; Sat, 03 Sep 2016 22:05:48 +0300 (using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (Client certificate not present) Return-Path: [email protected] X-Yandex-Front: mxfront9h.mail.yandex.net X-Yandex-TimeMark: 1472929548 Authentication-Results: mxfront9h.mail.yandex.net; dkim=pass [email protected] X-Yandex-Spam: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bilgiedu.onmicrosoft.com; s=selector1-bilgiedu-net; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=**REMOVED** b=**REMOVED** Resent-From: Received: from HE1PR0401CA0023.eurprd04.prod.outlook.com (10.166.116.161) by AM5PR0401MB2563.eurprd04.prod.outlook.com (10.169.245.14) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.609.3; Sat, 3 Sep 2016 19:05:44 +0000 Received: from AM5EUR02FT060.eop-EUR02.prod.protection.outlook.com (2a01:111:f400:7e1e::203) by HE1PR0401CA0023.outlook.office365.com (2a01:111:e400:c512::33) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.609.3 via Frontend Transport; Sat, 3 Sep 2016 19:05:44 +0000 Received-SPF: Fail (protection.outlook.com: domain of example.com does not designate 52.51.33.8 as permitted sender) receiver=protection.outlook.com; client-ip=52.51.33.8; helo=ip-10-0-0-12.eu-west-1.compute.internal; Received: from ip-10-0-0-12.eu-west-1.compute.internal (52.51.33.8) by AM5EUR02FT060.mail.protection.outlook.com (10.152.9.179) with Microsoft SMTP Server id 15.1.587.6 via Frontend Transport; Sat, 3 Sep 2016 19:05:43 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) by ip-10-0-0-12.eu-west-1.compute.internal (Postfix) with ESMTP id E7BF642DA5 for ; Sat, 3 Sep 2016 19:05:42 +0000 (UTC) Content-Type: multipart/alternative; boundary="127.0.0.1.0.4033.1472929542.917.1" From: Johannes Brahms Subject: Verify Test 2 MIME-Version: 1.0 To:
实话说,我并没有完全懂发生了什么,因为我不是邮件身份认证方向的专家。邮件的接受者是 域名并持有 DKIM 签名。让我们一起检查这个邮件头(我移除了bh域和b域):
a=签名算法
c=规范化算法
d=签名的域名
h=被签名的邮件头列表
bh=正文哈希
b=内容的数字签名
所以我的邮箱地址是 但签名的域名却是 。我不确定是否所有的 用户都会出现这种情况,可能是的。
但是邮件显示发送者是。这让我感到很困惑。难道 的签名和 的签名是一样的吗?如果是的话,这就是微软方面的问题了。或者,情况不是这样,而是 Yandex 的问题即可以识别有效的 DKIM 签名。或者,我完全不知道关于这个 DKIM 的精髓。
更新(2016年11月20日):Reddit 用户 ptmb 很好的解释了到底发生了什么。
“对 /u/indrora 关于 DKIM 的解释做进一步的补充,针对这个问题,和为什么它会和 DKIM 有关,就是因为 Outlook 在转发邮件时会用自己的 DKIM 密钥对邮件签名,而不会继续保留邮件原来的签名(没有签名时也一样)。”
这就意味着,你收到的邮件具有“转发者”的身份证明,而没有原始发送者的身份证明。而且因为Outlook 对这些转发的邮件是盲签名的,如果邮件把发送域伪装成 ,经过 Outlook 的盲转发之后,邮件就碰巧有了真正的 DKIM 签名,即使原始邮件根本不是从 发出的。
我决定做一些其他的测试。我把转发地址换成了我的 Gmail 邮箱地址并用 域名把钓鱼邮件发送给了我的 Outlook 邮箱。它被Outlook过滤到了垃圾过滤器居然可以从Microsoft发钓鱼邮件?!,却被 Gmail 放进了收件箱。
我把转发地址又换回了 Yandex。这次我把钓鱼地址的域名伪装成其他的名字而不是 。它被 Outlook 和 Yandex 都放进了垃圾箱。也没有“绿色的有效标志”出现(很明显)。
即使我并不完全明白发生了什么,我仍然可以从 发送有效的邮件给任何人。
不管怎样,我决定通知 Yandex 和 。我告诉 Yandex 你可能在“绿色的有效标志”上出现了问题,它可能会导致用户误以为是安全的。同时我也给 发送了一个漏洞报告。
我还没有从 Yandex 收到回复B2B电子商务平台,但是之后 安全团队说他们再现了这个漏洞。过了一段时间,漏洞被修复了。奇怪的是,Yandex 在过了一段时间之后取消了“绿色标志”(我不知道取消的确切时间),我不确定这是不是和这个异常有关。
下面是漏洞修补的时间线。
★
2016年9月3日
我将问题报告给了
2016年9月3日
把报告发送给了分析员
2016年9月29日
说他们重现了这个问题
2016年10月27日
宣布漏洞已经修复
2016年11月
在其安全中心()上给出了我的名字。
文章由Green奇编译
原文链接:
欢迎大家拿稿子砸我呦!
投稿请发至
如有企业合作,
请发邮件至
微博:看雪安全
看雪安全 · 看雪众测
持续关注安全16年,专业为您服务!
【本文来源于互联网转载,如侵犯您的权益或不适传播,请邮件通知我们删除】