Windows 启动过程的保护技术

[ 2022/07/04 01:50 | by gOxiA ]

Windows_logo_horiz_blue_rgb

Windows 启动过程的保护技术

        “安全”是这些年最热门的话题之一,Windows 操作系统也在不断完善和增强自己的安全性,我们看到了显著的成果。今天 gOxiA 来分享一些关于 Windows 启动过程的保护技术。

        对于Windows启动过程所面临的威胁恐怕当属Rootkits,作为恶意软件的一部分,它可在内核模式下运行,将拥有与操作系统相同的权限,并且先于操作系统启动,可想而知它的威力、自身隐藏和防御机制有多强大。

        Rootkits可以在启动过程的不同阶段加载不同类型的Rootkit:

  1. Firmware rootkits,可覆盖PC的I/O系统或其他硬件固件,从而可先于Windows启动。
  2. Bootkits,可取代操作系统的引导加载程序,也可实现在操作系统之前加载。
  3. Kernel rootkits,可取代操作系统内核的一部分,因此可随Windows加载时自启动。
  4. Driver rootkits,将伪装成Windows用于与硬件通信的受信任驱动程序的一部分。

        Windows 目前支持四项功能,以帮助防止在启动过程中加载 Rootkit 和 Bootkit。

  1. Secure Boot,即“安全启动”通过将具有 UEFI 和 TPM 的电脑配置为仅加载受信任的操作系统启动加载程序。我们知道当 PC 启动时会首先寻找操作系统的引导加载程序,也就是我们常说的启动程序,没有安全启动的 PC 将无法判断它是受信任的操作系统还是 Rootkit,将会运行硬盘上的任何可引导加载程序。如果 PC 配备了 UEFI,当它启动时首先验证固件是否已进行数字签名,如果启用了安全启动,固件将检查启动加载程序的数字签名,确保其没有被篡改,如果引导加载程序完好无损,则仅当满足下列条件之一时,固件才会启动引导加载程序。
    a. 引导加载程序是使用受信任的证书签名。对于经过 Windows 认证的电脑,Microsoft 证书是受信任的。
    b. 用户已手动批准了引导加载程序的数字签名。此操作允许加载非 Microsoft 操作系统。
  2. Trusted Boot,即“受信任启动”Windows 在加载启动过程的每个组件之前进行完整性检查。在实际过程中,受信任启动将接管安全启动结束的位置。引导加载程序在加载之前验证 Windows 内核的数字签名。反过来,Windows 内核会验证其启动过程的所有其他组件,这包括了驱动程序、启动文件和 ELAM。如果文件被篡改,引导加载程序会检测到问题并拒绝加载损坏的组件。通常,Windows 可以自动修复损坏的组件,恢复 Windows 的完整性并允许 PC 正常启动。
  3. Early Launch Anti-Malware (ELAM),即“提前启动反恶意软件”在加载驱动程序之前进行扫描测试,防止加载未经批准的驱动程序。前面讲到安全启动保护了引导加载程序,而受信任启动保护了 Windows 内核,那下一个被恶意软件盯上的机会便是感染那些非 Microsoft 启动驱动程序。传统的防病毒软件在加载启动驱动程序后才会启动,这为伪装成驱动程序的 Rootkit 提供了机会。而提前启动反恶意软件(ELAM)可在所有非 Microsoft 启动驱动程序和应用程序之前加载微软或非微软的防病毒驱动程序,从而形成安全启动和受信任启动后的信任链。由于操作系统还没有启动,并且 Windows 需要尽快启动,因此 ELAM 有一个简单的任务:检查每个启动驱动程序并确定它是否在受信任的驱动程序列表中。如果它不受信任,Windows 将不会加载。ELAM 驱动程序并不是一个功能齐全的防病毒软件解决方案,我们熟知的 Windows Defender 就支持 ELAM。
  4. Measured Boot,即“度量启动”将记录每一次的启动过程,与之前受信任的启动数据进行比对,客观评估电脑运行状况。该项技术旨在防范那些看起来很健康,但其实已经感染了 Rootkit 的 PC 。这些 PC 可能正在运行防病毒软件,但其实已经感染了恶意程序。度量启动技术可以用来验证 Windows 启动过程的完整性,它会使用如下过程:
    1) PC 的 UEFI 固件在 TPM 中存储固件、引导加载程序、启动驱动程序的哈希值,以及将在防病毒软件应用之前加载的所有内容。
    2) 在启动过程结束时,Windows 将启动非 Microsoft 远程证明客户端。受信任的证明服务器向客户端发送唯一密钥。
    3) TPM 使用唯一密钥对 UEFI 记录的日志进行数字签名。
    4) 客户端将日志发送到服务器,其中还会包含其他安全信息。
    根据实际运行数据和配置数据,我们可以确定客户端是否在正常运行。

windows_boot_process

        综上,Windows 现行提供的启动保护技术创建了一个从根本上抵御 Rootkit 的体系结构。确保了 Windows 安全。参考文档:Secure the Windows boot process | Microsoft Docs

Windows-on-ARM64_banner

Windows on ARM 在企业中的可行性见解


        Windows ARM 已经面世一段时间,但大家貌似并没有积极的追捧,特请不高,可能除了对性能表现有一些担忧外更多的是考虑系统和软件的兼容性了。但不可否则 Windows ARM 也有其先天的优势特性:

  • 始终连接到互联网,通过蜂窝移动数据连接,可以在任何获得蜂窝移动网络信号的地方联网在线,就像用手机一样。(PS:虽然 x86 架构的设备也有 LTE 或者 5G 的支持,但对于调制解调器这块恐怕还是高通的最为强劲和稳定了。)
  • 电池续航时间超过一整天,就像手机一样 ARM 架构的硬件貌似具有天然的优势,非常省电。相对于传统 PC 笔记本的 4~6 小时,ARM 显得更具竞争力。
  • 立即开启,ARM 的架构使其电源管理相对于 x86 更加有效,可以在电脑上实现像手机那样按电源按钮即可开关屏幕,而无需等待。虽然 Windows 为 x86 设计了快速启动和Modern Standby,但兼容性和稳定性还是无法避免的。

        此外, ARM 的 Windows 设备也更加小巧,成本更低廉。现在 Windows 11 ARM 上还提供了 x64 的支持,这也意味着它可以运行更广泛的应用程序。如果您所在的企业正打算尝试部署 ARM 来取代那些陈旧老式的 Windows PC,那么以下内容可能会有帮助。

        Windows on ARM 存在一些限制:

  • 硬件、游戏和应用的驱动程序只有专为基于 Windows ARM 的电脑设计时才有效。这意味着如果您连接了非 Windows PnP 的外设,将无法正常使用他们,这些外设可能是:打印机、摄像头等等。
  • 某些游戏将无法运行,虽然大部分企业并不会允许它的员工运行游戏,但我们需要注意如果游戏或应用使用大于3.3的OpenGL版本,则他们将无法正常工作。
  • 虽然支持模拟 x86 和 x64,但仍旧会出现应用程序不兼容的情况,他们可能是输入法、云存储应用或某些辅助技术应用。此外不要忽视第三方的防病毒软件,除非他们支持 Windows ARM。

        当前能给出的最佳建议:

  • 尽可能的选择基于 ARM 开发的应用程序。(PS:目前已经有很多知名的应用提供了 ARM 版,比如 VLC 一款视频播放器,还有我们熟知的 Edge 浏览器,以及常用 Teams……等等)
  • 在操作系统安装方面,由于微软目前仅面向 Insider 发布有 ISO 格式的 Windows Setup,所以如果我们需要部署那些 RTM 版本,则需要从现有的 ARM 设备中将系统备份出来。如果您是一位桌面标准化的 IT,会知道 Windows ADK,它会提供 ARM 版的 PE。
  • 在系统部署方面,既然有了 PE,也是可以实现自动化甚至批量部署的,此外更为推荐的是采用动态部署或现代部署方案,例如 PPKG,或使用 Intune。
  • 对于 Windows 管理,建议通过 Intune,除了可以下发系统策略,还可以推送软件和脚本。
  • 对于 Windows 服务,除了现有的 WSUS 可以确保 ARM 系统状态保持最新,建议使用 Intune 的 Windows Update for Business。
  • 排错方面,感谢 Mark Russinovich 提供了 Sysinternals 的 ARM 版本。

Windows 的 USB 选择性挂起

[ 2022/06/15 06:02 | by gOxiA ]

Windows_logo_horiz_blue_rgb

Windows 的 USB 选择性挂起

        USB 选择性挂起(USB Selective Suspend)是 Windows 针对硬件设备的一个节电功能,允许系统暂时挂起那些处于空闲状态的 USB 设备以节省电池电量。我们知道外接设备连接到笔记本上的 USB 端口后除了进行数据通讯外,还会获取电源,如果该设备一直连接在端口上就会持续消耗掉笔记本的电池能量,于是微软设计了一个电源功能,可以识别那些不在使用的外接设备,将其挂起或置于一个低功耗状态,Windows 已经能够实现特定 USB 端口的挂起操作,而不会影响设备上的其他在用 USB 端口及对应设备。

        USB Selective Suspend 这一功能对笔记本电脑的电池寿命提供了极高的保护,但是在某些情况下该设置也会导致某些 USB 设备冻结或无响应,特别是当笔记本闲置时间过长时。如果我们的系统出现了类似的问题,可以通过禁用 USB Selective Suspend 来解决,简单的执行办法是通过 Powercfg 命令,具体如下:

powercfg /SETACVALUEINDEX SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0

powercfg /SETDCVALUEINDEX SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0

        之后我们可以执行 Powercfg /q 来查询配置结果,当值为 1  时表示启用了 USB Selective Suspend。

image

        有关 USB Selective Suspend 的详细介绍可以参考:https://learn.microsoft.com/zh-cn/windows-hardware/drivers/usbcon/usb-selective-suspend,此文介绍了选择性挂起的机制,此外还可以参考:https://learn.microsoft.com/zh-cn/windows-hardware/drivers/kernel/determining-whether-a-device-can-wake-the-system 来确定设备是否可以唤醒系统,这些资料有助于我们理解和排查相关的问题。

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