Windows_logo_horiz_blue_rgb

解读 Updating Microsoft Secure Boot keys

        微软官方最近发布了一篇文章 - “Updating Microsoft Secure Boot keys”引起了 gOxiA 的关注。内容主要涉及 UEFI 设备用于安全启动的密钥更新,对于那些在组织中执行桌面标准化和安全的 IT 人员需要特别关注。今天本文将与大家分享文中涉及到的一些技术知识!

        首先,我们需要对 UEFI 有个大致的认识,UEFI 即 统一可扩展固件接口,基于标准的 UEFI 规范的启动加载程序通用框架,参与 UEFI 规范的技术公司目前已经超过了140家,其中就包括大家熟知的多个硬件大厂。在过去我们的计算机加电开机时由 BIOS 启动进行初始化,但现在 UEFI 接管了这一切,它将控制 PC 的启动过程,然后将控制传递给 Windows 或其他操作系统。可以说 UEFI 环境是启动 Windows 设备并运行 OS 的最小启动 OS。对于现代64位计算机基本上都已经默认使用 UEFI,大众所了解的可能更多的是 UEFI 提供了更加友好的图形化配置界面,甚至还提供额外的一些功能,对于启动计算机速度更快,更适用于 SSD。但 UEFI 优点远不止这些,在 UEFI 2.3.1 规范的固件还具有以下优点:

  • 能够支持 Windows 10 安全功能,例如:Secure Boot、Defender Credential Guard 和 Defender Exploit Guard
  • 启动和恢复的速度更快
  • 能够更轻松地支持大硬盘驱动器(> 2TB)或超过4个分区的驱动器
  • 支持多播部署
  • 支持 UEFI 固件驱动程序、应用程序和选项 ROM

        从下图我们可以了解到适用于 Windows 的 UEFI 组件,涉及到 Windows 的 UEFI 协议还可以参考 https://learn.microsoft.com/zh-cn/windows-hardware/drivers/bringup/uefi-protocols-for-windows 进行学习和了解。

WidnowsUEFI

        此外,我们还需要了解一个名词 - SoC,即:系统级芯片,也称为片上系统。比较抽象化,它将集成电路的设计、系统集成、芯片设计、生产、封装、测试等等集成在了一起,现代电脑目前都已经采用 SoC 技术,而用于运行在 SoC 上的 Windows 则对 UEFI 也有着最低的要求,从 Windows 10 1703 开始,微软要求遵守 UEFI 2.3.1c 规范。

        现在我们再来了解 Secure Boot - 安全启动,它也是一个行业安全标准,旨在确保使用受设备制造商信任的软件进行设备启动。当电脑启动时,固件会检查每个启动软件的签名,也包括 UEFI 固件驱动程序、EFI应用程序和操作系统。如果签名有效,则电脑继续启动,并最终将控制权移交至操作系统,其保护过程可参考下图所示。

boot_process

        对于具有安全启动的电脑,其启动顺序如下:

  1. 打开电脑,将会根据平台密钥检查签名
  2. 如果固件不受信任,则 UEFI 必须启动 ROM 特定的恢复过程,以还原受信任的固件
  3. 如果 Windows 启动管理器出现问题,固件将尝试启动 Windows 启动管理器的备份副本,如果此措施仍然失败,则固件必须启动 OEM 特定的补救过程
  4. 在 Windows 启动管理器开始运行后,如果驱动程序或 NTOS 内核出现问题,则会加载 Windows RE(恢复环境)
  5. Windows 加载反恶意软件
  6. Windows 加载其他内核驱动程序并初始化用户态进程

        综上,安全启动这一过程将极大降低 Boot rootkit 带来的风险。此外,利用 Intune 的设备管理策略还可以设定阻止那些未启用安全启动的设备访问工作或学校资源。

        正如前面介绍的,安全启动是一个行业标准,所以不止 Windows 在使用,其他诸如 Linux 发行版也都有提供支持。在 Windows 平台上要支持安全启动需要满足以下各项要求:

  • UEFI 2.3.1 勘误表 C 变量,必须将变量设置为 SecureBoot=1,且 SetupMode=0,并使用所需的签名数据库(EFI_IMAGE_SECURITY_DATABASE),包括有效的 KEK 数据库中设置的 PK 来启动安全预配的电脑。
  • UEFI 2.3.1 第27部分,平台必须公开一个符合 UEFI 2.3.1 第 27 部分所述配置文件的接口。
  • UEFI 签名数据库,平台必须在 UEFI 签名数据库(db)中预配正确的密钥,使 Windows 能够启动。平台还必须支持在经过身份验证的情况下对数据库进行安全更新。安全变量的存储必须与正在运行的操作系统相互隔离,以防在不经受检测的情况下修改这些变量。
  • 固件签名,必须至少使用 RSA-2048 和 SHA-256 加密算法为所有固件组件签名。
  • 启动管理器,打开电源时,系统必须开始执行固件中的代码,并根据算法策略使用公钥加密法来验证启动顺序中所有映像的签名,直到验证了 Windows 启动管理器为止。
  • 回滚保护,系统必须防止固件回滚到旧版本。
  • EFI_HASH_PROTOCOL,平台提供 UEFI_HASH_PROTOCOL 用于卸载加密哈希运算负载,并提供 EFI_RNG_PROTOCOL(由 Microsoft 定义)用于访问平台熵。

        对于涉及到的签名证书相关的数据文件,如:签名数据库(db)、吊销的签名数据库(dbx)和密钥注册密钥数据库(KEK)会事先由设备 OEM 厂商写入到固件的非易失性RAM中(NV-RAM)。

        签名数据库 (db) 和吊销的签名数据库 (dbx) 将列出 UEFI 应用程序、操作系统加载程序(例如 Microsoft 操作系统加载程序或启动管理器)以及可在设备上加载的 UEFI 驱动程序的签名者或映像哈希。

        吊销的列表包含不再受信任且不可加载的项。 如果映像哈希位于这两个数据库中,则吊销的签名数据库 (dbx) 优先。

        密钥注册密钥数据库 (KEK) 是单独的签名密钥数据库,可用于更新签名数据库和吊销的签名数据库。 Microsoft 要求在 KEK 数据库中包含指定的密钥,以便 Microsoft 将来可向签名数据库添加新的操作系统,或者向吊销的签名数据库添加已知错误的映像。

        添加这些数据库并完成最终的固件验证和测试后,OEM 将锁定固件以避免对其进行编辑(但使用正确密钥进行签名的更新,或者由使用固件菜单的实际用户所做的更新除外),然后生成平台密钥 (PK)。 PK 可用于对 KEK 的更新进行签名或关闭安全启动。

        OK,现在回看微软官方文章就可以更清晰的了解其意图!微软与其生态系统合作伙伴将准备替换掉用于安全启动的旧证书,自2024年2月13日起,新数据库更新将作为所有启用安全启动的设备的可选服务更新提供,因为到2026年之前用于安全启动的相关证书将过期。微软也特别强调了为本次更新微软和OEM合作伙伴所作出的努力。

        如果准备着手计划更新,建议如下:

  1. 在大规模更新前,应在具有相同固件和规格的单个设备上测试验证。
  2. 从 OEM 获取最新版本的固件更新。
  3. 确保每台设备都执行 Bitlocker 密钥备份。

        手动更新的步骤很简单:

  • 系统已经安装了2024年2月的累计更新。
  • 修改注册表键值,将“HKLM\\SYSTEM\\CurrentControlSetControl\\SecureBoot”下“AvailableUpdates”的值改为“0x40
  • 重启系统两次已确保更新执行并使用更新的数据库启动。

        对于计划批量执行的企业环境,可以参考以下命令制作脚本或任务序列。

  • Set-ItemProperty -Path “HKLM:\\SYSTEM\\CurrentControlSetControl\\SecureBoot” -Name “AvailableUpdates” -Value 0x40
  • Start-ScheduledTask -TaskName “Microsoft\\Windows\\PI\\Secure-Boot-Update”

        验证安全启动数据库更新是否成功,可以执行以下 PowerShell 命令,如果结果为 False 则表示失败或未更新。

[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match ‘Windows UEFI CA 2023’

get-securebootuefi

        通过事件查看器可以关注相关的事件 ID 进行审计。

事件日志:系统

事件源:TPM-WMI

事件ID:1032、1033、1034、1035、1036、1795、1796

        要查看安全启动状态,非常简单,只需要打开运行对话框,输入 msinfo32 并运行,在打开的系统信息窗格中选择系统摘要,在右侧即可看到安全启动状态。

msinfo32

官方参考:

Secure Boot | Microsoft Learn

Windows_logo_horiz_blue_rgb

HOWTO: 在 Windows 10/11 上实现网卡聚合

        Windows 平台提供了强大的网络支持,如果我们在一台 Windows 设备上安装了多块网卡并且希望能够将其绑定在一起聚合使用,例如提升带宽!那么要实现它将会是非常容易的一件事情。今天 gOxiA 将快速分享这一功能的实现方法。本例是基于 Hyper-V VM 环境,为 VM 配置了两块网卡,其桥接在一块物理无线网卡上。所以我们暂不考虑网卡对于聚合的兼容性问题。

        首先,以管理员权限启动 PowerShell,我们可以先使用 Get-NetAdapter 命令获取当前网卡信息。

NIC-Info

        然后使用 New-NetSwitchTeam 命令创建网卡聚合,如:new-switchteam -name nicteam -teammembers "以太网","以太网 2"

new-netswitchteam

         之后,重启计算机我们可以通过 Get-NetAdapter, Get-NetSwitchTeam, IPConfig 来确认相关信息。

nicteam-info

参考链接:

New-NetSwitchTeam | Microsoft Learn

        此外,还有一个 PowerShell 指令也可以实现,但默认会提示不适用当前 Windows SKU,但不妨大家可以了解。它是 New-NetLbfoTeam,该命令用于创建基于“负载平衡/故障转移”的网卡聚合,这种聚合模式除了提高网络带宽,也增强了容错能力,因为支持多种负载平衡算法,以及故障转移和容错功能。

Windows_logo_horiz_blue_rgb

Windows 11 Insider Preview 26040 发布全新 Windows Setup 体验

        近日微软向 Windows Insider Canary Channel 发布了最新的 Preview 版本 - 26040,在众多增强和改进中 gOxiA 特别感兴趣的就是全新的 Windows Setup 体验,因为这关乎在企业环境下批量自动化部署的各项流程和配置。

UpdatedWindowsSetupExperience

        利用周末时间 gOxiA 做了快速的测试,并收集了 Windows Setup 新体验的过程截图,供有需要的 ITPro 参考,也为日后实现自动化部署奠定实践基础。从以下截图可以看到,首先 Windows Setup 启动后仍是直接从语言设置开始,只是“键盘和输入方法”从语言设置剥离成为单独的一页。(PS:不太清楚这样设计的意义!!!)

1

2

添加了安装选项,分别三个:安装 Windows 11修复个人电脑启动旧体验。在使用“安装 Windows 11”时需要复选“我同意将删除所有内容,包括文件、应用和设置”才能下一步继续安装。“启动旧体验”则是我们熟悉的 Windows Setup 界面。(PS:不知道最终版的 Windows Setup 新体验会什么样,起码目前看起来感觉只是在做一种尝试,因为一些界面感觉是比较多余的。同时也没有看到从云端安装源文件的选项。)

3

        如果选择“修复个人电脑”,则会转到如下键盘布局选择界面,然后再显示选项界面,对于硬盘上没有操作系统的,则仅提供“疑难解答”和“关闭电脑”的选项。如果硬盘上存在系统,则会提示“继续”、“使用设备”、“疑难解答”和“关闭电脑”的选项。这与旧安装体验的“修复计算机”是保持一致的。(PS:目前还没有看到 Online 方式修复的功能)

3-Repair-1

3-Repair-23-Repair-2-existOS

        在“疑难解答”中提供了以下选项:“启动修复、命令提示符、卸载更新、UEFI 固件设置、系统还原、系统映像恢复”。看起来与之前的版本也保持了一致。

3-Repair-3

        使用全新的体验 - “安装 Windows 11”,会来到产品密钥的向导界面,如果不输入密钥则无法点击下一步,但可以点击位于左下方的“I don't have a product key”以跳过(PS:它是一个文本形式的选项,虽然它不是一个醒目的按钮)。

4

        映像选择,以及之后的声明和许可条款,和不满足硬件需求的向导界面倒是延续了以往的设计。

5

6

6-noRequired

        硬盘和分区向导界面倒是有了挺大的改动,对于新硬盘并且不打算额外创建分区,可以直接点击下一步,Windows Setup 会自动分区格式化。

7

        我们也可以手动创建分区,在指定了系统卷的大小后,向导会自动创建 EFI 引导分区和 MSR 分区,从截图可见 EFI 引导分区默认为 100MB。(PS:gOxiA 在部署实践时更青睐 260MB 大小的 EFI 分区)

7-createpartition

        Windows Setup 应答部分完成旧可以开始安装,向导会再提示确认是否要进行全新安装。之后的安装进度界面大改,变成了纯文本方式。此外在全新 Windows Setup 体验下,一样可以通过热键调出 CMD 窗口。Windows Setup 结束后重启会进入 Specialized 阶段,说明 Windows Setup 安装逻辑并没有改变,那以往的映像定制流程不会受到影响。

8

9-1

10

        Windows Setup 新体验到这里就算告一段落,不知道各位看官是否有不同的建议和意见,不妨留言讨论!此外,26040 对应的 ADK 也有发布,可供大家下载安装使用。

相关链接:

下载 Windows 预览体验成员 ISO | Microsoft Learn

分页: 2/146 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]