news 2026/3/21 0:03:54

⓫⁄₉ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 动态链接库(dll)文件劫持(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
⓫⁄₉ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 动态链接库(dll)文件劫持(上)

郑重声明:本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋点赞| 能量注入 ❤️关注| 信号锁定 🔔收藏| 数据归档 ⭐️评论| 保持连接💬

🌌立即前往👉晖度丨安全视界🚀​

​​​​

▶ 信息收集
▶ 漏洞检测
初始立足点
权限提升 ➢ Windows权限提升 ➢ 动态链接库(dll)文件劫持(上) 🔥🔥🔥
横向移动
▶ 报告/分析
▶ 教训/修复

目录

1.Windows权限提升

1.1 Windows服务DLL劫持攻击

1.1.1 DLL基础概念

1.1.2 DLL劫持攻击方式

1.1.2.1 DLL搜索顺序

1.1.2.2 利用"缺失DLL"场景攻击

1.1.2.3 防御建议

1.1.3 利用缺失DLL的服务劫持攻击实践

1.1.3.1 枚举运行中的服务并检查服务二进制文件的权限(无写入权限)

1.1.3.2 使用进程监视器查看服务的进程调用dll情况

1.攻击发现流程

2.Process Monitor分析DLL加载

3.查看BetaService服务的进程的dll搜索顺序

4.攻击机会

欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论


1.Windows权限提升

在渗透测试中,我们通常以非特权用户身份获得初始立足点。但为了深入探测(如搜索敏感信息、提取密码哈希等),往往需要提升至管理员权限(比如:使用Mimikatz提取密码哈希),这个过程就是特权提升

📊 权限提升三大路径:本文开始介绍:动态链接库(dll)文件劫持

阶段目标关键方法
1. 枚举Windows获取系统情报手动搜索 + 自动化工具
2. 滥用Windows服务攻击服务漏洞服务配置缺陷、权限滥用
3. 利用其他组件扩大攻击面计划任务、系统漏洞利用

1.1 Windows服务DLL劫持攻击

替换服务的二进制文件”是尝试在Windows系统上提升权限的一种非常有效的方法。然而,由于普通用户通常没有权限替换这些二进制文件时,需要采用更高级的方式来利用Windows服务。

1.1.1 DLL基础概念

动态链接库(DLL)是Windows系统中的共享功能库,允许多个程序复用同一代码资源,避免重复开发。

特性描述
功能提供可复用的代码和资源(如图标、函数)
类比Unix/Linux中的共享对象(.so文件)
优势节省资源,提高开发效率

1.1.2 DLL劫持攻击方式

两种DLL劫持攻击方式:

攻击类型原理潜在影响
🔧 直接覆盖DLL替换服务使用的合法DLL文件服务功能可能异常,但恶意代码已执行
🗺️ 劫持搜索顺序利用DLL加载优先级放置恶意DLL更隐蔽,可保持原功能

1.1.2.1 DLL搜索顺序

⚠️ 关键安全发现

  • 上图中:在安全模式下,当前目录仅排搜索顺序的第5位,降低了劫持风险

  • 但禁用安全模式时,当前目录升至第2位,风险显著增加

  • 应用程序目录始终是第一搜索位置,这是攻击重点


1.1.2.2 利用"缺失DLL"场景攻击

🚨 攻击前提

当服务尝试加载系统中不存在的DLL时,攻击者放置同名恶意DLL在搜索路径中,然后:

🔄 攻击流程

服务启动 → 查找缺失DLL → 按搜索顺序扫描 → 加载恶意DLL → 执行恶意代码

💡 攻击优势

  • 无需替换原DLL:不会破坏服务原有功能

  • 利用安装缺陷:不完整的安装或更新常导致DLL缺失

  • 隐蔽性较高:服务可能正常运作,仅部分功能受限

【思路】为了利用这种情况,尝试将一个恶意DLL(与缺少的DLL同名)放置在DLL搜索顺序的路径中,以便在启动二进制文件时执行。


1.1.2.3 防御建议
防御措施实施方法
启用安全DLL搜索确保注册表项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode设置为1
签名验证对关键DLL实施数字签名验证
权限控制严格限制对应用程序目录的写入权限
完整性检查定期校验系统DLL的完整性
最小权限原则服务账户仅授予必要目录的读取权限

💎 根本教训:任何以高权限加载外部代码的机制,都必须严格控制加载源和完整性验证。


1.1.3 利用缺失DLL的服务劫持攻击实践

1.1.3.1 枚举运行中的服务并检查服务二进制文件的权限(无写入权限)

通过RDP连接到CLIENTWK220,并使用用户名steve和密码securityIsNotAnOption++++++登录。启动PowerShell,然后枚举服务。我们跳过服务发现步骤,发现BetaService服务

检查服务的二进制文件的权限:显示用户steve没有替换二进制文件的权限,因为权限是RX。因此,需要进一步调查枚举。


1.1.3.2 使用进程监视器查看服务的进程调用dll情况
1.攻击发现流程

我们使用进程监视器(Process Monitor)来显示任何进程、线程、文件系统注册表相关活动的实时信息。

注意:需要管理员权限才能启动Process Monitor并收集这些数据。

🎯 核心分析目标与策略:

分析方向具体目标攻击策略
🔍 现有DLL分析识别服务加载的所有DLL检查权限,寻找可替换的合法DLL
⚠️ 缺失DLL检测发现NAME NOT FOUND状态的DLL调用搜索顺序在优先路径放置恶意DLL

💡 攻击决策矩阵:

发现情况攻击可行性所需条件风险级别
可写现有DLL🟢 高对DLL文件有写入权限🟡 中等
缺失DLL+优先路径可写🟢 高对搜索顺序靠前目录有写入权🟢 较低
缺失DLL+路径不可写🔴 低需要其他权限提升方法🔴 高

不幸的是,用户steve没有管理员权限。然而在渗透测试中,将服务二进制文件BetaServ.exe复制到本地自己的windows机器。在这个系统上,我们可以在本地安装服务(BetaServ.exe),并使用具有管理员权限的Process Monitor列出所有DLL活动。


2.Process Monitor分析DLL加载

我们把BetaServ.exe文件移植到具有管理员权限的Process Monitor的主机上进行检查。

📋 操作步骤:

步骤具体操作目的
1. 权限启动以backupadmin管理员身份运行Procmon64.exe获取必要的监控权限
2. 精准过滤创建进程名=BetaServ的过滤器聚焦目标服务,排除无关干扰
3. 触发监控重启BetaService服务激活服务的DLL加载行为
4. 关键发现观察CreateFile调用,发现myDLL.dll的NAME NOT FOUND状态确认存在缺失DLL漏洞

①以backupadmin身份启动Process Monitor

②创建服务进程BetaServ的过滤器

创建一个过滤器,只包括目标服务的进程BetaServ相关的事件。为此,我们将点击Filter菜单 > Filter…进入过滤器配置。

我们的目标是:Process Monitor只显示与BetaServ进程相关的事件。过滤器由四个条件组成。按照下图红框进行配置,输入后将点击添加:

应用过滤器后,列表为空。为了分析服务二进制文件,我们尝试重新启动服务,因为二进制文件将尝试加载DLL。

③重新启动BetaService服务

在PowerShell中,重新启动BetaService服务,同时在后台运行Process Monitor。

3.查看BetaService服务的进程的dll搜索顺序

检查Process Monitor,注意到出现了许多事件。在列表中向下滚动,可找到各种CreateFile调用在操作列中。

CreateFile函数用于创建或打开文件。注意到,CreateFile调用试图在几个路径中打开名为myDLL.dll的文件。详细列中显示这些调用的状态为NAME NOT FOUND

这意味着:在这些路径中找不到具有该名称的DLL。

🔍 DLL搜索路径顺序:

上图显示,连续的函数调用按照“DLL搜索顺序”进行,从应用程序所在的目录开始,以PATH环境变量中的目录结束。我们可通过在PowerShell中显示此环境变量的内容来确认这一点,使用$env:path命令。

1️⃣ c:\Users\steve\Documents\ ← 应用程序目录(当前) 2️⃣ C:\Windows\System32\ 3️⃣ C:\Windows\System\ 4️⃣ C:\Windows\ 5️⃣ 当前工作目录 6️⃣ PATH环境变量目录

⚠️ 安全漏洞确认:

  • 目标DLLmyDLL.dll在系统中不存在

  • 加载尝试:服务按标准搜索顺序连续查找该文件

  • 全部失败:所有路径均返回NAME NOT FOUND

4.攻击机会

为了利用这一点,尝试将恶意DLL命名为myDLL.dll,并写入DLL搜索顺序使用的第一个路径:应用程序加载路径。这里是c:\Users\steve\Documents。恰好它是steve的主目录,因此我们有权限把恶意dll文件写入这个文件夹,然后重新启动服务来加载它。

服务加载缺失DLL + 用户对优先搜索路径有写入权限 = DLL劫持攻击可行


欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 9:52:04

数据中台建设中的主数据管理(MDM)实践

友情提示:全文约 1.1 万字,阅读时间 35–45 min。建议先收藏,再跟着代码边做边读。 从零到一:数据中台主数据管理(MDM)落地实践 副标题:用一套可落地的开源技术栈,带你走完“主数据识…

作者头像 李华
网站建设 2026/3/15 10:37:10

Java打造旅行攻略及搭子匹配系统源码

Java旅行攻略及搭子匹配系统源码深度解析(架构功能代码) 一、技术架构:高并发与实时交互的基石 微服务架构设计 Spring Boot 3.0 Spring Cloud Alibaba:构建用户服务、攻略服务、匹配服务、支付服务等独立微服务,通…

作者头像 李华
网站建设 2026/3/20 0:59:37

赋能数据决策!10款好用的BI工具核心能力速览,适配多行业场景

在数据被普遍视为核心资产的时代,企业决策的范式正从“经验驱动”全面转向“数据驱动”。面对市场上琳琅满目的商业智能(BI)工具,决策者往往陷入选择困境:是追求极致的数据可视化效果,还是拥抱强大的AI智能…

作者头像 李华
网站建设 2026/3/20 4:44:40

LLM教程 | 第1讲:RAG原理解读:让检索增强生成不再是黑盒

本文将首先介绍大模型的基础,包括定义、工作原理与挑战,逐步探讨其应用场景与局限性。接着将介绍RAG技术的崛起,分析其如何通过结合外部知识库来增强大模型的能力,并详细阐述RAG的工作流程、核心组件、功能以及主要类型与变体。最…

作者头像 李华
网站建设 2026/3/15 8:31:02

PingApi接口开发平台4.0发布

PingApi 是一款 API 接口开发平台,企业级接口管理、SQL2API 平台。支持动态数据源、动态 SQL 和标签, 支持接入(mysql、oracle、达梦、TiDB、hive、es 和hbase)等 SQL 或 NoSQL 数据源,在线可视化编写 SQL 快速发布接口…

作者头像 李华
网站建设 2026/3/15 10:37:34

玩手机看手机打电话检测数据集VOC+YOLO格式2332张2类别

注意数据集中存在少量增强,且图片里面人脸都经过遮挡处理数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):2332标注数量(xml文件个…

作者头像 李华