识别ABBYY FineReader中的特权升级

我如何在Windows应用程序中发现特权提升漏洞的周期继续。在先前的系列中:Steam(CVE-2019-14743CVE-2019-15316CVE-2019-17180)和Origin(CVE-2019-19247,CVE-2019-19248)。但是,今天我们不再谈论游戏启动器,而是谈论ABBYY FinerReader应用程序软件包。



摘要-我将告诉您,借助检查许可证的组件,您如何在10分钟内将权限从用户级别提升到NT AUTHORITY \ SYSTEM。该漏洞被分配了标识符CVE-2019-20383,该链接指向ABBYY网站

情报服务


我从ABBYY网站下载了FineReader的试用版,并迅速进行了检查,以了解选择该产品以增加特权是否有意义。是的,该产品包含一项服务,该服务由名称“ ABBYY网络许可证服务器”判断,与许可证相关联,并且默认情况下从用户NT AUTHORITY \ SYSTEM启动。我启动ProcMon开始观察服务的行为。

我的注意力吸引到了位于路径“ C:\ ProgramData \ ABBYY \ FineReader \ 15 \ Licenses \ Licensing.cnt”下的文件。该服务从中读取某些内容,然后向其中写入内容,通常该文件看起来像是一个有趣的实验对象。考虑文件夹“ C:\ ProgramData \ ABBYY \ FineReader \ 15 \ Licenses”。从父文件夹(“ C:\ ProgramData \ ABBYY \ FineReader \ 15”)继承的“全访问ACL”对此文件夹有效,这意味着您可以删除其所有内容,包括文件“ Licensing.cnt”。

发现文件不存在的服务试图以一种有点奇怪的方式创建它。他创建了一个格式为“ tmpXXXX-YYYYYYYYYYY.tmp”的文件,向其中写入了一些数据,然后将其重命名为“ Licensing.cnt”。

这是ProcMon日志,其中两次执行此操作。



首先,它发生在20:36,然后发生在20:46。在这些时间戳之间,该文件被再次删除以再次创建。

矩形1表示服务已检测到缺少文件的情况。矩形2-创建一个临时文件。矩形3-重命名临时文件。矩形4-10分钟后重复操作。

考虑名称“ tmpXXXX_YYYYYYYYYYY.tmp”的格式。作为一个正在运行的进程的一部分,XXXX将始终保持不变,而且实际上,这是执行此工作的线程的标识符。 YYYYYYYYY不会保持恒定,但是如果我们查看两个相邻的起始点(值:430210515和430810515),那么看来这只是一个时间标记-数字600000之间的差异-令人惊讶地与10分钟的差异重合。还有更多测试证实了我们的假设。
总结这一部分。任何用户都可以删除文件“ C:\ ProgramData \ ABBYY \ FineReader \ 15 \ Licenses \ Licensing.cnt”,然后他可以经常请求文件夹“ C:\ ProgramData \ ABBYY \ FineReader \ 15 \ Licenses”中的内容在某个时候,找到一个名为“ tmpXXXX_YYYYYYYYY.tmp”的文件。现在,用户将在删除文件后做好准备,他将确切地知道下次将在何时创建文件。

现在我们将使用符号链接


如何在没有管理员权限的情况下创建符号链接
, . . , , «C:\abc\1» «C:\def\2».

NTFS reparse point ( NTFS mount point) «C:\abc» «\RPC Control\". «\RPC Control\» – , , , . , , , , . NTFS reparse point , , . - , - .

. "\RPC Control\1" <-> «C:\def\2». , «C:\abc\1», «C:\def\2».

最初,创建许可证文件的过程如下所示:



当我们知道下一次此类操作的确切时间时,我们可以创建以下符号链接(我们将跳过源文件夹名称“ C:\ ProgramData \ ABBYY \ FineReader \ 15 \ Licenses \”): 其中YYYYYYYYA,YYYYYYYYB, YYYYYYYYC,... YYYYYYYYYZ-这些是YYYYYYYYYY + 10分钟中的不同时间戳(以防时间戳略晚)。 接下来,创建一个链接: 请注意,这些文件都不存在。这是必要的,以便在引用例如tmpXXXX_YYYYYYYYB.tmp时,发生两次重定向,因此该服务使用文件“ C:\ test \ l2 \ nope”。 一旦发现文件“ C:\ test \ l2 \ nope”的创建,我们应该立即创建两个新的符号链接:

tmpXXXX_YYYYYYYYA.tmp <-> C:\test\l1\proxy
tmpXXXX_YYYYYYYYB.tmp <-> C:\test\l1\proxy
tmpXXXX_YYYYYYYYC.tmp <-> C:\test\l1\proxy

tmpXXXX_YYYYYYYYZ.tmp <-> C:\test\l1\proxy






C:\test\l1\proxy <-> C:\test\l2\nope




C:\test\l1\proxy <-> C:\test\l2\payload
Licensing.cnt <-> C:\target\path


该服务将继续将文件的内容写入“ C:\ test \ l2 \ nope”,但是在它已经通过新的符号链接之后将对其重命名。因此,不是将“ tmpXXXX_YYYYYYYYC.tmp”重命名为“ Licensing.cnt”,而是将“ C:\ test \ l2 \ payload”实际重命名(移动)为“ C:\ target \ path”。实际上,我们可以代表用户NT AUTHORITY \ SYSTEM将具有任何内容的文件放置在任何路径中

从示意图上看,它将如下所示:



颜色表示由于符号链接的影响而实际执行的操作。

使用生成的原语提高特权已经很容易-您可以将dll附加到系统进程和其他类似的东西。在此阶段,我联系了ABBYY代表,并向他们传递了有关该漏洞的信息。

目前,据ABBYY称,该漏洞已关闭。

时间线


2019年11月25日 -漏洞检测
2019年11月26日 -从制造商请求的安全接触
2019年11月26日制造商发送漏洞报告-
2019年12月9日 -漏洞被证实由制造商
2020年10月1日 -漏洞被固定
在2020年1月22日 -漏洞被分配了CVE-2019-20383
2019年2月19日.2020-本文的发布

现在有许多项目,并且我们正在扩展“预期监视”团队。我们正在寻找源代码研究方面的专家,以及移动应用程序分析方面的专家。想要加入我的团队-写给我,阿纳斯塔西娅(Ana2121)或通过电子邮件info@amonitoring.ru

本文为英文。

All Articles