冷硬缓存——利用缓存滥用绕过 RPC 接口安全

介绍

MS-RPC 是 Windows 操作系统的基石之一。早在 20 世纪 90 年代发布,它就已扎根于系统的大部分部分。服务管理器?RPC。Lsass?RPC。COM?RPC。甚至一些针对域控制器的域操作也使用 RPC。鉴于 MS-RPC 已经变得如此普遍,您可以预料到它已经受到严格的审查、记录和研究。

其实不然。尽管微软关于使用 RPC 的文档相当不错,但关于这个主题的文档并不多,研究人员研究 RPC 的文档就更少了——特别是关于其安全性的文档。这可能归因于 RPC(不仅仅是 MS-RPC,尽管微软肯定也参与其中)非常复杂,使得研究和理解成为一项艰巨的任务。

但我们始终乐于接受挑战,因此我们决定一头扎进 MS-RPC 的深海。这不仅是因为它是一个有趣的研究课题,还因为它具有安全隐患 — 即使是现在,常见的攻击技术也依赖于 RPC(T1021.003通过MS-COM发生,T1053.005是MS-TSCH,T1543.003是MS-SCMR,仅举几例)。MS-RPC 内置了安全机制,但如果存在漏洞,导致这些漏洞被绕过或滥用,或者导致暴露的 RPC 服务被滥用,从而以不良方式影响机器,该怎么办?

事实上,我们设法找到了一种通过缓存绕过安全机制的方法。通过它,我们发现了一些可以滥用的服务,可以在远程服务器上提升权限,而无需太多必要条件(我们将在后面的文章中深入探讨)。目前,我们可以分享两个实际潜在利用示例的信息,即WksSvc和SrvSvc。一旦披露过程完成,我们将发布有关我们发现的其他漏洞的更新。

在这篇博文中,我们将重点介绍 RPC 服务器的安全回调机制、如何通过缓存绕过它,以及我们如何自动化研究以将 Windows 服务标记为潜在易受攻击。我们的自动化工具及其原始输出也可以在我们的RPC 工具包中找到,该工具包在我们的 GitHub 存储库中共享。我们的存储库还包括我们依赖的其他有用参考资料和其他研究人员所做的工作的链接。

安全回调

在讨论漏洞本身之前,有必要先介绍一下 MS-RPC 实现的最基本的安全机制之一:安全回调。安全回调允许 RPC 服务器开发人员限制对 RPC 接口的访问。它允许他们应用自己的逻辑来允许特定用户的访问、强制执行身份验证或传输类型,或阻止对特定 opnums 的访问(服务器公开的函数使用 opnums 表示;即操作编号)。

每次客户端调用服务器上公开的函数时,RPC 运行时都会触发此回调。

在我们的研究中,我们专注于远程客户端-服务器交互。我们之所以提到这一点,是因为 ALPC 端点与远程端点(如命名管道)之间的 RPC 运行时服务器端代码实现有所不同。

缓存

RPC 运行时实现了安全回调结果的缓存,以提高性能和利用率。这基本上意味着运行时每次调用安全回调之前都会尝试使用缓存的条目。让我们深入了解一下实现。

在 RPC_INTERFACE::DoSyncSecurityCallback 调用安全回调之前࿰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】有序集合(Zset)详解及实际应用场景分析:从命令操作到内部编码

目录 Zset 有序集合普通命令集合间操作命令⼩结内部编码使⽤场景 Zset 有序集合 有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数&…

Qt 0821作业

一、思维导图 二、优化聊天室代码 服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QMessageBox> #include <QTcpSocket> #include <QList> #include <QNetworkInterface>QT_BEGIN_…

系统编程-lvgl

带界面的MP3播放器 -- lvgl 目录 带界面的MP3播放器 -- lvgl 一、什么是lvgl&#xff1f; 二、简单使用lvgl 在工程中编写代码 实现带界面的mp3播放器 main.c events_init.c events_init.h 补充1&#xff1a;glob函数 补充2&#xff1a;atexit函数 一、什么是lvgl&a…

Axios 中的相关参数

在 Axios 中&#xff0c;发起 HTTP 请求时你可以使用多种参数来配置请求的行为。以下是一些主要的参数&#xff1a; 1. url 描述&#xff1a;请求的 URL。示例&#xff1a;axios.get(/api/users) 2. method 描述&#xff1a;HTTP 请求的方法&#xff0c;可以是 GET, POST, …

通过C# 读取PDF页面大小、方向、旋转角度

在处理PDF文件时&#xff0c;了解页面的大小、方向和旋转角度等信息对于PDF的显示、打印和布局设计至关重要。本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性。 文章目录 C# 读取PDF页面大小&#xff08;宽度、高度&#xff09;C# 判断PDF页面方向C# 检测PDF页面…

31套科技风PPT模版免费下载

目录 资源名称&#xff1a;31套科技风PPT模板合集资源简介&#xff1a;部分展示&#xff1a;适用人群&#xff1a;资源内容&#xff1a;使用指南&#xff1a;资源下载链接&#xff08;免费&#xff0c;已设置0个积分下载&#xff09; 资源名称&#xff1a;31套科技风PPT模板合集…

Spring + Boot + Cloud + JDK8 + Elasticsearch 单节点 模式下实现全文检索高亮-分页显示 快速入门案例

1. 安装elasticsearchik分词器插件 sudo wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.13.4.zip sudo mkdir -p ./es_plugins/analysis-ik sudo mkdir ./es_data sudo unzip elasticsearch-analysis-ik-8.13.4.zip -d ./es_plugins/a…

7-zip常见问题

7-Zip作为一款广受欢迎的免费压缩工具&#xff0c;以其高效、稳定的特点赢得了众多用户的青睐。然而&#xff0c;在使用过程中&#xff0c;用户也可能会遇到一些常见问题。以下是一些常见问题及其解决方法&#xff1a; 一、无法打开压缩文件 问题描述&#xff1a; 用户尝试打…

WIFI 频段及信道简介

一、WiFi 三频AP规划信道时&#xff0c;建议分别采用2.4G、5.2G、5.8G频段可用信道。 2.4G频段&#xff1b;5.2G频段&#xff1b;5.8G频段。 1、中国5G WiFi频段 5.8GHz频段&#xff0c;中国开放只有149、153、157、161、165这5个信道&#xff1b; 其中可支持一组80MHz信道…

【ACM出版,高录用EI快检索】第七届计算机信息科学与人工智能国际学术会议(CISAI 2024,9月6-8)

第七届计算机信息科学与人工智能国际学术会议(CISAI 2024) 将于2024年09月6-8日在中国浙江-绍兴举行。 计算机信息科学与人工智能国际学术会议的主题主要围绕“信息科学”与“人工智能”的最新研究展开&#xff0c;旨在荟聚世界各地该领域的专家、学者、研究人员及相关从业人员…

C++—八股文总结(25秋招期间一直更新)

1、const 1.1 指针常量和常量指针 说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么&#xff0c;有什么特点。 const int *aint const *a; //可以通过 a 访问整数值&#xff0c;但不能通过 a 修改该整数的值&#xff0c;指针本身是…

前端工作常用知识

1. JS为什么单线程 一个简单的原因就是&#xff0c;js在设计之初只是进行一些简单的表单校验&#xff0c;这完全不需要多线程&#xff0c;单线程完全可以胜任这项工作。即便后来前端发展迅速&#xff0c;承载的能力越来越多&#xff0c;也没有发展到非多线程不可的程度。 而且…

Rustrover、IDEA 的 Rust 类型不显示(已解决)

关键词&#xff1a;rustrover 类型不显示&#xff0c;rustrover 不显示类型&#xff0c;IntelliJ IDEA Rust 类型不显示&#xff0c;IntelliJ IDEA Rust 不显示类型 若移动端访问不佳&#xff0c;请使用 –> Github版 背景 博主手欠&#xff0c;使用 IntelliJ IDEA 时&am…

教程:如何搜索社交媒体

文章目录 一、使用 Python 搜索 Telegram1.1. 第 1 步 - 设置代理1.2. 第 2 步 - 安装 Telethon 库1.3. 第 3 步 - 创建数据库文件并登录1.4. 第 4 步 - 创建结果列表1.5. 第 5 步 - 选择要搜索成员的组1.6. 第 6 步 - 导出所有成员的详细信息1.7. 第 7 步 - 将导出的数据存储到…

mysql中出现错误1138-Invalid use of NULL value

问题&#xff1a;1138-Invalid use of NULL value 解决&#xff1a; 问题是当前字段中&#xff0c;有null的值&#xff0c;简单来说就是&#xff0c;你表里有空值&#xff0c;不能设置不为空&#xff01;&#xff01;&#xff01; 把空的值删掉重新设计就好了

LaTex插入图片

LaTeX 提供了许多定制化图片的功能。这篇文章将会介绍如何用最常见的格式插入图片、缩放图片以及如何在文档中引用这些图片。 1.基本使用 效果图如图所示。 \documentclass{article} \usepackage{graphicx} \graphicspath{ {./figure/} }\begin{document}\begin{figure}[!t]…

大数据环境下的数据提取挑战

在大数据环境下&#xff0c;数据提取面临着多方面的挑战。这些挑战不仅源于数据本身的特性和复杂性&#xff0c;还涉及到技术、资源、法律等多个层面。以下是对这些挑战的具体分析&#xff1a; 1. 数据质量与准确性 数据质量问题&#xff1a;大数据环境下&#xff0c;数据来源…

JUC-Synchronized原理进阶

轻量级锁 轻量级锁的使用场景&#xff1a;如果一个对象虽然有多线程要加锁&#xff0c;但加锁的时间是错开的&#xff08;也就是没有竞争&#xff09;&#xff0c;那么可以使用轻量级锁来优化。轻量级锁对使用者是透明的&#xff0c;即语法仍然是 synchronized 假设有两个方法同…

opencv处理图片(实战指南)

一、OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它拥有众多的图像处理和计算机视觉功能&#xff0c;包括各种常用的图像处理技术&#xff0c;如滤波、边缘检测、特征提取等。OpenCV支持多种编程语…

UDP 和TCP的应用

一、网络模型 &#xff08;一&#xff09;C/S 模型 客户端 / 服务器&#xff08;Client/Server&#xff0c;C/S&#xff09;模型是一种常见的网络架构。在这种模型中&#xff0c;客户端是主动的角色&#xff0c;向服务器发起请求&#xff1b;服务器端是被动的角色&#xff0c;…