写在前面的话
在这篇文章中,我将跟大家讨论一个我在Panda反病毒产品中发现的一个安全漏洞(CVE-2019-12042),这是一个本地提权漏洞,该漏洞将允许攻击者在目标设备上将非特权账户提权至SYSTEM。
受影响的产品包括Panda Dome(版本
目前,厂商已经在v18.07.03版本中修复了该漏洞。
漏洞分析
存在漏洞的系统服务为AgentSvc.exe这个服务可以创建一个全局Section对象和一个对应的全局事件,每当一个进程尝试向共享内存写入数据并需要服务进程去处理这些数据时,它们便会发出信 。由于这个过程中的权限验证机制存在缺陷,因此该漏洞将影响那些允许“Everyone”和非特权用户修改共享内存和事件的对象。
逆向工程与漏洞利用
这个服务会创建一个线程,该线程会无限期等待内存更改事件,并在收到事件信 时解析内存中的内容。当共享内存中的第二个“值”不为零时,它会使用一个指针来调用如下所示的函数,指针指向的地址为列表头部的值:
该函数会对这个base64字符串进行解码,然后使用RC2和密钥“3sa342ZvSfB68aEq”揭密出结果值。所以,我们向共享内存中写入的内容必须是经过RC2加密并且使用Base64编码的值。
我们回到线程的主函数,如下所示,代码会遍历列表,并将字符串传递给Dispatcher.dll中CDispatcher类的InsertEvent方法:
CDispatcher::Run方法会运行一个单独的线程来处理这个队列中的元素:
既然我们已经知道了这个服务需要我们传入哪种数据,但我们还需要知道数据的JSON属性。CDispatcher::Initialize方法会调用CRegisterPlugins::LoadAllPlugins方法来从注册表中读取Panda的安装路径,然后访问插件目录,然后加载其中所有的DLL文件。
其中一个DLL名叫Plugin_Commands.dll,它的功能貌似是执行命令行指令。
在这个函数中,我们从输入数据中找到了目标JSON属性:
至此,我想看看是否能够执行硬盘中的某些东西。通过对Run方法的反编译结果进行分析,我们发现了一个函数可以解析相关的属性值,并判断其是否指向的是URL或是磁盘中的文件。这里,我们就可以使用file://URI来执行硬盘中的文件了。
成功执行后的进程流:
当我们尝试提供自己的可执行程序时,Panda会将其检测为恶意软件并删除之,即使该文件不是恶意软件。此时,我们可以让cmd.exe来启动我们的进程,最终的JSON数据如下所示:
最后的漏洞利用代码会在目标磁盘中存放一个文件,并计算cmd.exe的MD5哈希,构建JSON数据,对其加密并编码,最终将其写入共享内存。
还需要注意的是,这个PoC漏洞利用代码可以在不需要任何重新编译操作的情况下在所有的Windows版本中正常工作。
精彩推荐

相关资源:软件破解全程大揭密软件破解全程大揭密-其它文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!