首页
社区
课程
招聘
[翻译]使用Office 365实现从Microsoft.com发出有效的钓鱼邮件
发表于: 2016-11-23 17:15 9121

[翻译]使用Office 365实现从Microsoft.com发出有效的钓鱼邮件

2016-11-23 17:15
9121
原文:https://www.utkusen.com/blog/sending-valid-phishing-emails-from-microsoftcom.html


        使用Office 365实现从Microsoft.com发出有效的钓鱼邮件
        作者:Utku Sen

  这篇推文介绍了我在Microsoft Office 365 发现的一个神奇又简单的漏洞。说实话,我不能完全理解这个漏洞背后的逻辑。不管怎样,现在它已经被修复了。
  九月的时候,我在测试各种邮件应用的垃圾邮件过滤器,比如Gmail、Outlook 365和Yandex。我使用了Office 365上的大学邮箱以及Gmail和Yandex上的个人邮箱作为测试对象。我在亚马逊服务器上安装了sees工具(工具获取地址:https://github.com/galkan/sees)来发送钓鱼邮件。但是测试并不成功。一个用于测试我的Yandex邮箱的样例:



它被检测出并放进了垃圾过滤器。试了试Gmail和Outlook 365,情况还是一样。或许这个工具并不实用,或许我犯了什么错误,我并不确定。



  突然,一件奇怪的事发生了。我看到在我Yandex收件箱里的一封主题为“Verify Test 2”的邮件出现了绿色的有效标志。



  开始的时候,我以为是我无意中发送了另一封测试邮件给我的Yandex邮箱并通过了过滤。但后来我意识到,我是发送了主题为“Verify Test 1”的邮件给Yandex邮箱,并发送了主题为“Verify Test 2”的邮件给Outlook邮箱。应该还有别的东西。
  检查了几分钟后,我想起曾经给我的Outlook 365设置了邮件转发到Yandex邮箱,所以Outlook转发这封邮件给了Yandex。但是为什么那个有效标志会在这时候出现?
  我在Yandex网站上看到它是这么说的(顺便说一下,这个功能现在已经不支持了):
  “使用DKIM签名,收件人可以验证邮件是否真的来自可信的发件人。”
  这是一个简单的DKIM(DomainKeys Identified Mail,域名密钥识别邮件)验证器。所以基本上如果一封邮件被有效的证书签名,并忽略发送者的域名,我们就可以看到这个很酷的绿色标志了。所以,只要发送域名是microsoft.com,它就一定已经被Microsoft的证书签名了吗??
  为了了解到底发生了什么,我检查了这些垃圾邮件和有效邮件的邮件头。下图是被Yandex标记为垃圾邮件的邮件头:

Received: from mxfront15h.mail.yandex.net ([127.0.0.1])
 by mxfront15h.mail.yandex.net with LMTP id HG70cJmK
 for <utku.sen@yandex.com>; 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: qhDwA.reWXEDN@example.com
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) smtp.mail=qhDwA.reWXEDN@example.com
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 <utku.sen@yandex.com>; 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 <secure@microsoft.com>
Subject: Verify Test 1
MIME-Version: 1.0
To: utku.sen@yandex.com

  它的接受者是亚马逊服务器,它没有被有效的证书签名,毫无疑问它会被放进垃圾邮件过滤器里。接下来我们检查有效邮件的邮件头:
Received: from mxfront9h.mail.yandex.net ([127.0.0.1])
 by mxfront9h.mail.yandex.net with LMTP id anm2f8eB
 for <utku.sen@yandex.com>; 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: utku.sen@bilgiedu.net
X-Yandex-Front: mxfront9h.mail.yandex.net
X-Yandex-TimeMark: 1472929548
Authentication-Results: mxfront9h.mail.yandex.net; dkim=pass header.i=@bilgiedu.onmicrosoft.com
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: <utku.sen@bilgiedu.net>
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 <utku.sen@bilgiedu.net>; 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 <secure@microsoft.com>
Subject: Verify Test 2
MIME-Version: 1.0
To: <utku.sen@bilgiedu.net>

  实话说,我并没有完全懂发生了什么,因为我不是邮件身份认证方向的专家。邮件的接受者是outlook.com域名并持有DKIM签名。让我们一起检查这个邮件头(我移除了bh域和b域):
a = 签名算法
c = 规范化算法
d = 签名的域名
h = 被签名的邮件头列表
bh = 正文哈希
b = 内容的数字签名
  所以我的邮箱地址是utku.sen@bilgiedu.net但签名的域名却是bilgiedu.onmicrosoft.com。我不确定是否所有的Outlook 365用户都会出现这种情况,可能是的。
  但是邮件显示发送者是secure@microsoft.com。这让我感到很困惑。难道onmicrosoft.com的签名和microsoft.com的签名是一样的吗?如果是的话,这就是微软方面的问题了。或者,情况不是这样,而是Yandex的问题即可以识别有效的DKIM签名。或者,我完全不知道关于这个DKIM的精髓。

更新:(2016年11月20日):Reddit用户ptmb很好的解释了到底发生了什么。
  “对/u/indrora关于DKIM的解释做进一步的补充,针对这个问题,和为什么它会和DKIM有关,就是因为Outlook在转发邮件时会用自己的DKIM密钥对邮件签名,而不会继续保留邮件原来的签名(没有签名时也一样)。”
  这就意味着,你收到的邮件具有“转发者”的身份证明,而没有原始发送者的身份证明。而且因为 Outlook对这些转发的邮件是盲签名的,如果邮件把发送域伪装成something@microsoft.com,经过Outlook的盲转发之后,邮件就碰巧有了真正的DKIM签名,即使原始邮件根本不是从Microsoft发出的。




  我决定做一些其他的测试。我把转发地址换成了我的Gmail邮箱地址并用microsoft.com域名把钓鱼邮件发送给了我的Outlook邮箱。它被Outlook过滤到了垃圾过滤器,却被Gmail放进了收件箱。
  我把转发地址又换回了Yandex。这次我把钓鱼地址的域名伪装成其他的名字而不是microsoft.com。它被Outlook和Yandex都放进了垃圾箱。也没有“绿色的有效标志”出现(很明显)。
  即使我并不完全明白发生了什么,我仍然可以从microsoft.com发送有效的邮件给任何人。
  不管怎样,我决定通知Yandex和Microsoft。我告诉Yandex你可能在“绿色的有效标志”上出现了问题,它可能会导致用户误以为是安全的。同时我也给Microsoft发送了一个漏洞报告。
  我还没有从Yandex收到回复,但是之后Microsoft安全团队说他们再现了这个漏洞。过了一段时间,漏洞被修复了。奇怪的是,Yandex在过了一段时间之后取消了“绿色标志”(我不知道取消的确切时间),我不确定这是不是和这个异常有关。下面是漏洞修补的时间线。

时间线:
2016年9月3日:我将问题报告给了Microsoft
2016年9月3日:Microsoft 把报告发送给了分析员
2016年9月29日:Microsoft说他们重现了这个问题
2016年10月27日:Microsoft宣布漏洞已经修复
2016年11月:Microsoft在其安全中心(https://technet.microsoft.com/en-us/security/cc308589)上给出了我的名字。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (5)
雪    币: 281
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可以啊,大兄弟很强势
2016-11-23 18:45
0
雪    币: 6103
活跃值: (1207)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
3
整体很好!
以下为个人建议:
1.        我使用了…我在亚马逊… “我”字重复,可以合为一句话,简洁。
2.        但是测试并不成功。一个用于攻击我的Yandex邮箱的简单设置:
前后两句话的逻辑是?不连贯
3.        它被检测出并放进了垃圾过滤器。
尽量使用主动
4.        几分钟的检查后,我想起…
保持前后主语一致
可改为,检查了几分钟后,我想起
5.        不管怎样,你可以看到下面的漏洞修补的时间线。
尽量简洁
可改为:下面为漏洞修补时间
2016-11-24 12:00
0
雪    币: 1475
活跃值: (442)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
4
谢谢建议!
第3点,因为是跟上文连在一起的,即“一个用于测试我的Yandex邮箱的简单设置,被检测出并放进了垃圾过滤器”,所以个人认为这里还是用被动更连贯些。
其他地方已经根据建议进行了修改。
2016-11-24 19:08
0
雪    币: 1217
活跃值: (606)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
嘻嘻,楼主翻译的不错,但是我提一个小细节:
A sample setting for targeting my Yandex e-mail    //sample是样例、样本的意思,注意不是simple
2016-11-25 10:52
0
雪    币: 1475
活跃值: (442)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
6
我太粗心了,确实是把sample看成了simple,谢谢您的提醒!已修改~
2016-11-30 14:40
0
游客
登录 | 注册 方可回帖
返回
//