微软CrowdStrike驱动蓝屏以及内核签名
原因
当Windows操作系统遇到严重错误导致系统崩溃时,屏幕显示为蓝色,通常伴有错误代码和信息,这被称为“蓝屏死机”(Blue Screen of Death,简称BSOD)
https://www.thepaper.cn/newsDetail_forward_28126297 这次蓝屏事件影响非常广泛,主要原因是CrowdStrike 的内核驱动升级导致的,CrowdStrike是国外广泛使用的一个安全防护软件厂商,类似于国内的毒霸 360之类。
Microsoft says 8.5M systems hit by CrowdStrike BSOD, releases USB recovery tool When reboots don't work, bootable USB sticks may help ease fixes for some PCs.
微软为此发布了一个修复说明,核心意思是说,你用一个PE工具进入系统,然后把CrowdStrike 的内核驱动 C-00000291*.sys删掉,然后就可以了。
什么是sys文件
.sys格式的文件实际上是window 的内核驱动文件,做软件开发的工程师多少都会有些了解。内核驱动直接访问了操作系统的底层资源,如果这个文件有bug,系统很容易蓝屏,且无法恢复,因为重启的时候它又会自动加载。
先来看看.sys在widnows操作系统所处的层级,非常的low level
什么设备需要内核驱动
需要操作系统内核资源的任务或者设备,本质上都可以写一个内核驱动来调用内核资源。通常windows的外设,比如显卡、USB设备、自研PCIe设备、串口设备 都需要对应的内核驱动去实现与硬件的交互,尤其是pcie 设备,只有用内核驱动代码才能访问对应资源,从而驱动外设。
内核驱动安全策略
强制数字签名。
数字签名在Windows操作系统中扮演着重要角色,尤其是为了增强系统稳定性和安全性。数字签名是一种加密技术,用于验证软件的来源和完整性。在Windows环境下,数字签名用于确保驱动程序和其他软件来自可信赖的发布者,并且自发布以来未被篡改。
以下是数字签名在Windows系统中的几个关键作用:
- 验证来源:数字签名可以确认软件是由已知和信任的开发人员或公司创建的,这有助于防止恶意软件和病毒的传播。
- 确保完整性:签名过程使用公钥加密技术来创建一个唯一的数字指纹,如果软件在传输过程中或安装后被修改,数字签名将不再匹配,提示用户软件可能已被篡改。
- 提升系统稳定性:Windows强制要求所有内核模式驱动程序都有数字签名,这是为了确保这些驱动程序遵循Microsoft的操作系统编程规范,从而减少由驱动程序引发的蓝屏事件。
- 驱动程序认证:在Windows Vista及更高版本中,操作系统默认启用了驱动程序签名强制执行,即所有加载到内核的驱动程序必须带有有效的数字签名。这有助于防止不兼容或恶意的驱动程序加载,从而减少系统崩溃的风险。
数字签名
Windows设备安装利用数字签名来验证驱动程序包的完整性和确认提供驱动程序包的供应商(软件发布者)的身份。此外,64位版本的Windows Vista及其后续Windows版本的内核模式代码签名策略规定,内核模式驱动程序必须经过签名才能加载。
Windows 10桌面版(家庭版、专业版、企业版和教育版)以及Windows Server 2016的内核模式驱动程序必须由Windows硬件开发者中心Windows Hardware Quality Labs (WHQL)进行签名,这要求具备扩展验证(EV)证书。详情请参阅驱动程序签名策略。
所有为Windows 10(从版本1507,Threshold 1开始)由硬件开发者中心签名的驱动程序都是使用SHA2算法签名的。有关特定操作系统版本的详细签名要求,请参阅按版本划分的签名要求。
在WIN10之前,用户的内核驱动只要有EV证书签名就可以被操作系统认可,但是实际上这个策略非常不安全,因为EV证书签名很容易获取,即使不是出于非法目的,随意的内核驱动EV签名也可能频繁导致系统BSOD故障或者卡死,因为驱动开发人员不能保证它的测试项覆盖了所有必要的情况。
如何或得签名
- 首先你得有一个EV证书,这个需要到第三方授权机构 购买,你没办法自己凭空生成一个被认可的证书,对你的内核驱动进行签名。
- 到微软 注册账号
- 需要为驱动代码进行测试,微软有一套通用测试列表,在win10之前 叫HCK https://learn.microsoft.com/en-us/windows/win32/w8cookbook/windows-hardware-certification-kit ,win10之后叫HLK https://learn.microsoft.com/en-us/windows-hardware/test/hlk/
- 通过测试后,打包上传 等待微软签名
我们看一下经过认证的驱动签名是什么样子的。
后续会记录如何为驱动进行测试和签名。
为什么CrowdStrike 做了认证还会死机
这大概率是CrowdStrike 钻了微软的空子,因为数字签名的测试步骤非常繁琐,做1个测试至少要1天的时间,并且微软签名并不检查当前驱动打包文件的日期,只要你曾经做过一次成功的测试,保留了日志文件,那么理论上你可以跳过测试让微软签名。
这大概率会导致出现问题。当前市面上有些中介机构,号称可以做WHQL认证,实际上也是这个策略,它根本不会给你做测试,只是偷偷把你的驱动打包到已经做了测试的文件中,然后签名,没有任何成本。
微软CrowdStrike驱动蓝屏以及内核签名的更多相关文章
- 使用WinDbg分析蓝屏dump原因
大多数人或许都经历过系统蓝屏问题,然而大多数人不清楚该怎么处理蓝屏问题,这里主要对系统蓝屏做一些解释,同时介绍下蓝屏问题分析工具WinDbg分析蓝屏问题的一般步骤. 微软官方对蓝屏的定义是,当系统遇到 ...
- win7下自写驱动导致开机蓝屏调试过程
之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来. 问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程: 使用 ...
- win10蓝屏问题,关于驱动kisSaasUrlRedirectKnl64.sys 的
上周末刚从win7升级到win10:今天出现了两次蓝屏了,都是显示: xxxxxxx 百度知道链接---http://zhidao.baidu.com/question/164141456570387 ...
- ------ 解析因内核栈溢出导致的 “double fault” 蓝屏 ------
-------------------------------------------------------------------------- 前一篇指出 tail_recursivef_fac ...
- 更新新网卡驱动,修复win7雷凌网卡Ralink RT3290在电脑睡眠时和启动网卡时出现蓝屏netr28x.sys驱动文件错误
更新新网卡驱动,修复win7雷凌网卡Ralink RT3290在电脑睡眠时和启动网卡时出现蓝屏netr28x.sys驱动文件错误 我的本本是win7,雷凌网卡Ralink RT3290 802.1 ...
- 【原创】驱动开发中Memory read error导致的蓝屏问题
最近在看着<windows驱动开发技术详解>这本书,模仿着敲了第七章中的模拟文件读写部分.在Debug过程中,蓝屏了好多次并出现了各种奇葩的问题.在调了快两天之后,问题终于解决了!现在在这 ...
- 【ask】ghost分区还原win7出现蓝屏,试图加载CLASSPNP驱动时出现
1.最近由于需要把整个c盘备份了,然后还原在另一台机器上. 2.结果当然时出事了,开始一切如旧,但是机器重启后,蓝屏了. 3.哦,开始立马觉得可能时因为有些软件的驱动是装载d盘了. 4.赶紧把d盘也备 ...
- 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载
我们常常在使用电脑中,有时会碰到电脑蓝屏,我们经常束手无策,不知道为什么会蓝屏?有些蓝屏后自动重启能正常进入系统,那么我们就可以借助工具进行分析.而有些可能需要进入到安全模式或者pe系统才会正常,那么 ...
- Win10蓝屏的一些解决办法
请仔细回想这个错误是什么时候出现的: 第一次发生时你对系统做了哪些操作: 发生时正在进行什么操作: 从这些信息中找出可能的原因: 从而选择相应解决方案并尝试排除. 0x0000000A:IRQL_NO ...
- 分析Windows的死亡蓝屏(BSOD)机制
这篇文章本来是投Freebuf的,结果没过.就贴到博客里吧,图懒得发上来了 对于Windows系统来说,被人们视为洪水猛兽的蓝屏也是一种有利于系统稳定的机制.蓝屏其实是Windows系 统的一种自查机 ...
随机推荐
- HTML——超链接标签
一.超链接标签的基本使用 超链接是浏览者和服务器的交互的主要手段,也叫超级链接或a链接,是网页中指向一个目标的连接关系,这个目标可以是网页.网页中的具体位置.图片.邮件地址.文件.应用程序等. 超链接 ...
- .net C# System.Text.Json 如何将 string类型的“true”转换为布尔值 解决方案
直接上解决方法的代码 先定义一个转换顺,代码如下: public sealed class AnhBoolConverter : JsonConverter<bool?> { public ...
- C#使用WebView2替代Electron
C#想要实现Electron那样混合桌面程序可以用以下几个库.本文使用EdgeSharp NanUIgithub.com/NetDimension/NanUI Photinogithub.com/ ...
- CentOS7的一些常规操作
1.启动或者重启sshd服务: systemctl stop sshd.service systemctl start sshd.service systemctl restart sshd.serv ...
- win11启动虚拟机出现蓝屏
win11虚拟机启动出现蓝屏 问题 我的电脑是win11系统,最近在安装vmware后装了centos7.6,发现一启动centos,电脑就出现蓝屏,如图 解决 这个问题搞了好久,最终发现是win11 ...
- css球体
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 5 分钟小工具:使用 dive 分析 docker 镜像
需求 拿到一个镜像之后,我想知道: 分层查看镜像里都有哪些文件 各层使用了什么命令构建的这个镜像 镜像里比较大的文件有哪些(可能需要优化) dive 工具介绍 dive 工具可以做这些分析.dive ...
- Vue学习:9.watch监听器
"watch" 监听器是一种在 Vue.js 中用于监视数据变化并执行相应操作的机制.它是 Vue 实例的一个选项,允许你监视指定的数据,并在数据变化时执行特定的逻辑.通常情况下, ...
- Coap 协议学习:1-有关概念
COAP协议简介 不像人接入互联网的简单方便,由于物联网设备大多都是资源限制型的,有限的CPU.RAM.Flash.网络宽带等.对于这类设备来说,想要直接使用现有网络的TCP和HTTP来实现设备实现信 ...
- openGauss集群主库出现流复制延迟告警
问题描述:环境是openGauss 5.0集群,在一次意外重启数据库之后.收到了一个主库的主从延迟告警,只有从库才能出现延迟,主库怎么会出现了告警延迟 告警信息: Status: Resolved H ...