一、前言
如果已锁屏的Windows 10设备启用了Cortana语音助手,在具备物理接触条件时,攻击者可以执行两种未经授权的网页浏览操作。在第一种情况下,攻击者可以强迫Microsoft Edge导航至攻击者控制的URL;在第二种情况下,攻击者可以利用已保存的受害者凭据来使用受限版本的Internet Explorer 11。
在6月份时我们发表过一篇文章(原文及译文),介绍了如何利用Cortana绕过所有Windows 10设备的锁屏界面(目前Cortana仍是默认启用项)。我们在研究攻击者如何充分利用Cortana数字助理的功能时发现了这种绕过方法。本文介绍了两个新的问题,这两个问题之前已经与登录绕过问题同时报告给微软,微软在8月份更新中解决了这两个新的漏洞,另外微软也修改了Bing的查询结果部分缓解了这些问题。
在第一个场景中,攻击者可以借助Cortana在锁屏界面中使用浏览器。这个漏洞不能帮助攻击者解锁设备,但可以让具备物理访问权限的用户迫使Edge导航至攻击者选择的某个页面。这种场景与BadUSB、中间人攻击或者恶意Wi-Fi热点不同,只涉及到简单的语音指令以及使用设备的触摸屏或鼠标来交互。
几个月之前,以色列研究人员使用BadUSB设备演示了类似攻击方法,伪装成网卡将内容注入到可信的HTTP站点中然后使用Cortana来实现跳转。微软从那以后移除了直接跳转到某个域的功能,现在变成使用HTTPS在Bing中搜索目标域。我们的研究成果可以与BadUSB方法配合使用。
我们还研究了用户是否可以强制跳转到攻击者控制的某个页面,事实证明的确可行,但需要多做一些处理。
二、技术分析
Cortana非常有用,能够解释词语、查找公司、电影、艺术家或者演员,甚至还能做数学题。然而,Cortana的具体行为及给出的答案会受用户提出问题的方式所影响。比如,如果用户问了一个口语化问题:“你好小娜,McAfee是什么?”她会直接返回Bing搜索结果。如果用户问的是“你好小娜,McAfee”,则会得到更加详细的结果,包括指向可信站点的各种链接。这些链接包括Wikipedia(维基百科)、Twitter、Facebook、LinkedIn以及“官网”(下文会解释为何这里加引号)。
令人惊讶的是,设备处于锁屏状态时Cortana给出的链接竟然能够点击。如果我们使用网络嗅探工具或者中间人代理工具,会发现一旦用户点击这些链接,浏览器就会访问这些地址,无视设备的锁定状态。
这意味着我们可以在设备锁定时强制跳转到这些网站(虽然并不是我们真正需要的网站)。然而我们知道Cortana在回答的时候很挑剔。Bing需要知道这些结果,并且大多数链接指向可信站点。
因此我们能用的只有官方网站。Wikipedia经常带有这个字段,如果我们拉到Wikipedia词条的底部,通常可以找到指向官网的一个链接。
Cortana是否可以把Wikipedia当成可信源?经过多次愉快的对话后,我们可以确认Cortana获取的官方网址的确与Wikipedia上的官方网址相同。显然Wikipedia并没有专门为Cortana提供服务,我们猜测在Bing输出结果中的域名或者逻辑上可能有一些权重值,会影响Cortana最终显示的链接。
我们可以利用这一点来构造一个虚假的Wikipedia词条,添加足够多的内容通过审核,并且添加官方网站链接,观察Cortana的输出结果。Wikipedia审查员在内容审核方面做的非常不错,但我们还需要让Bing感知到这个词条,以便Cortana提供相应的答案及链接。由于这种方法有时效性限制(并且以恶意方式篡改Wikipedia内容并不合理),我们决定采用另一种方法(虽然攻击者有可能使用这种方法)。
我们并没有在Wikipedia中创建词条、让Bing索引该词条以便Cortana能提供官网链接,相反,我们选择了另一种方案。我们可以利用Wikipedia上未经维护或者已处于“死亡”状态的官网链接(“dead links”以及“permanent dead links”)。幸运的是,Wikiepedia的确提供了一份“死亡”清单。比如,如果我们搜索“Xbox Linux”就可以看到如下信息:
为了便于搜索,Wikipedia提供了支持正则表达式的搜索引擎,非常强大:
我们可以梳理出如下正则搜索表达式:
insource:/{official (website)?|https?://[^}]+.com/[^}]}}{{dead link/
这个表达式既不能搜到所有的结果,也不是最有效的表达式,但的确可以找到一些候选目标,同时不会让Wikipedia查询超时。
接下来就是编写脚本解析输出结果,获取可用的域名列表,检查这些域名是否处于可用状态。许多域名依然处于已注册状态,但并没有提供任何内容,其他域名依然处于存活状态(虽然已被标上“dead link”标志)。最终我们找到了一些域名,虽然有些域名比较昂贵,但依然处于可用状态。
对于这些Wikipedia词条Cortana会如何显示?我们尝试不断进行询问,但其实编写文本到语音的转换脚本会更加高效,毕竟Cortana在处理数字语音合成器方面非常优秀。
许多词条并没有提供官网链接,但有些词条包含该字段。比较讨厌的是我们问问题的方式会影响最终结果。不单单是问题的措辞,包括单词的使用或者拼写也会干扰答案。为了让Cortana返回我们所需的结果,我们可能需要将这两种方法结合起来。
比如,在设备锁定时,如果我们问“你好小娜,什么是Miss Aruba?”,我们可以看到如下答案:
官方网站地址为hxxp://www.missaruba.aw
。简单搜索后我们可知该域名处于可购买状态:
总结一下,现在我们拥有一些Wikipedia条目,Cortana在回答时会显示官方网站链接,并且该域名尚未出售。我们花了11.99美元购买一个稍微便宜点的域名。
虽然这种方法需要编写正则表达式、编写脚本、购买域名,但相比等Bing来索引并发布新的Wikipedia条目来说还是更加快捷、结果也更令人满意。
执行完这一步后,我们可以完成哪些工作?我们可以询问Cortana(通过交互式图标或者语音命令“你好小娜”),在设备锁屏界面发起搜索请求。当Cortana回复时,我们可以点击官网链接,坐等Edge在锁屏时获取网站内容。我们至少可以使用一个简单直白的方法来利用这种未授权访问方式发起恶意攻击。我们可以在新购买的域名上安装最新的漏洞利用工具包,感染启用Cortana功能、处于锁屏状态的任何Windows 10主机。这种攻击可能发生在咖啡店、零售店、银行或针对特定个人。该功能是Windows的默认功能,我们的研究表明许多用户不会在锁屏界面上禁用Cortana。
数字语音助手非常有用,但同样也是一种攻击向量。虽然有人会认为这种攻击向量有点“不切实际”,难以实际应用,但我们还是可以使用DolphinAttack等技术,利用人耳听不见的语音命令来缩短攻击距离。或者如果我们可以物理接触目标设备,只需要使用5美元的3.5毫米耳机线缆就能执行攻击。
我们如何才能防御这种攻击向量?可以在锁屏界面禁用Cortana。除非获得正常用户的许可,否则微软不应该让浏览器导航至不可信的网站,而应要求用户登录系统来访问网站。
三、在锁屏界面使用自助式IE浏览器
当我们研究一种技术时,有时候我们会发现最初的调查结果远不如进一步调查后获取的结果重要,对Cortana以及这种攻击面的研究同样如此。如果用户可以在已锁屏的Windows 10设备上使用全功能的浏览器(如Internet Explorer 11)自由浏览网页,也能够访问已缓存的以及自动填充(autocomplete)数据,那会导致什么结果?感谢Cortana,这会比导航至某个URL更加具有破坏力。
这可能与Cortana的功能有关。Cortana提供了与Amazon Alex以及Google Assistant类似的功能,这一点很正常,但不正常的是这些功能不应该在未配置时就直接在锁屏的界面中提供。
一个典型的例子就是“房地产搜索(Real Estate Search)”功能。我们在与Cortana交互时发现她偶尔会向用户推荐一些功能,其中就包括房地产搜索功能。
触发该功能很简单,只需要说“你好小娜,我想卖掉我的房子”。此时我们可以看到如下界面:
如果我们点击“Real Estate Search”,我们会看到登录屏幕。此时我们不用登录,观察界面上提供的其他链接。在这个例子中,“Privacy Policy(隐私政策)”看起来貌似很有趣:
打开该链接,我们看到篇幅冗长的政策说明。如果我们拉到页面底部,就可以看到一些社交媒体图标:
这些图标实际上是网页链接,可以让我们访问Facebook或者Youtube,然后再从那些位置访问其他互联网位置。
总结一下,比如我们离开新买的Windows Surface Book去吃午饭,让设备保持锁定状态时,锁屏上的Cortana是默认可用选项,此时我们的硬盘还处于加密状态,此时有什么不正常的地方吗?
如果有人能物理接触我们锁定的设备,就可以开始浏览网页。此时如果有人使用我们的设备访问与工作无关的其他网站,或者在公共论坛上发表煽动性评论,而源IP地址来自于我们的设备,此时会出现什么情况?
与设备相关的操作行为的确非常糟糕,但攻击者是否可以使用相同方法,以真实用户的姓名或账户来发表或者访问某些网络资源?接下来我们会分析可以使用哪个浏览器完成这个任务。这并不是Cortana自定义的浏览器,也不是沙盒化的Edge浏览器,而是运行在AuthHost.exe
上下文中的自定义Internet Explorer 11受限引擎(后面我们将发表另一篇文章来分析这款受限的“浏览器”,它的特点及安全机制方面的缺陷使其成为红方的拿手利器)。
这里使用的是Internet Explorer引擎,并非完整的浏览器,但启用了JavaScript以及cookies功能。更糟糕的是,该实例会共享当前用户IE会话上下文中保存的自动填充信息以及凭据。
因此除了利用其他用户已锁定的设备在公共论坛上发表评论之外,攻击者还可以利用用户已缓存的凭据来伪装成目标用户。
如果某个公司支持通过Web服务器来重设Windows凭据,并且无需用户输入之前的密码,此时就会存在潜在的攻击场景。攻击者可以导航至密码重设链接,输入新的密码,退出受限导航环境,使用新设置的密码接触设备锁定状态,所有这些操作都可以在锁屏的设备上完成。
四、总结
我们在本文中探讨了几种攻击场景以及安全问题,后面我们会继续分析Cortana以及其他数字助手在攻击向量方面的作用。对用户而言,此时最好的缓解措施就是在锁屏界面关闭Cortana,大家可以阅读此教程了解具体关闭方法。