概述
从过往的PDF漏洞来看,在PDF漏洞中最受关注和欢迎的漏洞是任意代码执行漏洞,这类漏洞的危害也最大,通常可以在用户机器上执行任意的恶意代码。但是这类漏洞因为PDF沙箱的原因也有很大的局限,往往需要配合系统的提权漏洞一起使用才能进行完整的攻击过程,所以攻击成本较高在近几年来出现的完整攻击样本很少。
除了上述的漏洞外还有一类信息泄露的漏洞也被评为Critical 级别。该类漏洞可以在不需要任何用户交互的情况下,使用漏洞PDF文件窃取Windows的凭证。当用户打开恶意PDF文档时,它会自动联系攻击者控制的远程SMB服务器,导致SMB请求中NTLM详细信息通过SMB协议发送到攻击者的服务器,造成信息泄露。而攻击者可利用泄露的信息进行SMB中继攻击。
漏洞
该类泄露NTLM等信息的漏洞中近两年来主要有三个漏洞CVE-2018-4993、CVE-2019-7089和CVE-2019-7815。这三个漏洞基本思路都一样,都是利用PDF文件中允许嵌入远程文档和文件的功能,只是嵌入的方式不一样。
CVE-2018-4993
- PDF基本格式
PDF文件是一种编程形式的文档格式,它所有显示的内容,都是通过相应的操作符进行绘制。PDF基本显示单元包括文字、图片、矢量图和图片。PDF扩展单元包括水印、电子署名、注释、表单、多媒体和3D。PDF文件是由对象集合组成的,包括:boolean(布尔型),numberic(数值型),string(字符串型),name(名字型),array(数组型),dictionary(字典型),stream(数据流型),null(空类型)和indirect(间接型)。
其中字典对象是键值对的集合,和java中的map类似。key是唯一的,key的类型是name对象,value的类型是任意PDF支持的对象类型,当value为“null”,则表示该键值对不存在。字典对象以“<<”和“>>”作为对象的开始和结束。 字典对象是构建PDF文档的主要结构,通常它们都是一些有特定意义的属性组成的复杂对象集合,一般每个字典中都包含“Type”名字对象,该对象的值表示字典对象描述的具体对象,如“Page”,表示该字典是页对象,“Outline”,表示该字典对象是书签对象。
CVE-2018-4993漏洞就是利用PDF文件中允许嵌入远程文档的功能来实现信息泄漏,该漏洞利用关键字进行构造访问外部链接。主要的恶意代码如下。
在这里面的/F代表了加载文件的路径。在无补丁的环境下当用户打开恶意的PDF时会触发从远程共享自动加载另一个PDF文件,加载文件时不会有任何的提示和警告,用户很难发现异常。运行时恶意PDF会通过SMB协议将用户的NTLM,用户名,计算机名和域信息等传给攻击者。
虽然在运行时没有任何异常,但可以通过抓包来查看通过SMB回传的的数据。
CVE-2019-7089
CVE-2019-7089漏洞和CVE-2018-4993漏洞的思路很相似都是利用远程加载文件的过程来泄漏信息,只是加载的方式不一样,CVE-2018-4993是利用了PDF中的关键字,而CVE-2019-7089利用了PDF中的XFA结构。
XFA(也称为XFA表单)代表XML Forms Architecture,这是由JetForm建议和开发的一系列专有 XML规范,用于增强Web表单的处理。它也可以用于以PDF 1.5规范开头的PDF文件。XFA规范被引用作为ISO 32000-1规范(PDF 1.7)应用必不可少的外部规范。XML Forms Architecture未标准化为ISO标准。
CVE-2019-7089漏洞就是利用了XFA结构中的xml-stylesheet来实现远程加载文件,在实际的过程中PDF会检测xml-stylesheet 元素中指定的任何http和https链接,并要求用户确认是否进行访问。但在这里可以使用UNC路径来绕过这个访问提示。
CVE-2019-7089漏洞的关键代码如下。
当运行恶意PDF的时候就会通过SMB协议把信息传回给攻击者,可以通过抓包来查看。
该漏洞在未打补丁的机器上直接运行就会传回信息,在打补丁的机器上会有提示,提示用户是否访问链接,如果用户未仔细看点允许访问那么计算机信息任然会被传回给攻击者,所以在打开未知的PDF时要引起注意。
SMB中继攻击
当攻击者获取到用户的NTLM信息后,可进一步进行中继攻击。SMB中继攻击过程如下,B是一个SMB服务器,A来进行认证,B将A的认证信息转发到C上,如果A的凭证在C上认证成功就能进行下一步操作,如创建服务执行命令。如果在域中控制了某些常用服务,如:WEB OA系统、文件共享等服务则可以尝试使用SMB中继攻击来引诱域管理员访问达到获取其他机器权限的目的。
最后
该类信息泄露漏洞虽然没有任意代码执行漏洞危害大,在考虑到任意代码执行漏洞利用成本的情况下,该类信息泄露漏洞在攻击中任然具有一定的利用价值。从漏洞挖掘的角度看该类由加载远程文件引起的信息泄露漏洞任然还有存在。而漏洞CVE-2019-7089和CVE-2019-7815是最新版本才修复的漏洞,在将来的一段时间内任然具有很高的攻击价值。
没有评论