内核模式下是否存在所有驱动程序?

逆向工程 视窗 dll 记忆 内核模式
2021-07-05 06:45:09

我正在学习 Windows API 并总体上倒退,所以如果这是一个相当愚蠢的问题,我深表歉意。

在阅读了讨论本机 API 的“实用恶意软件分析”部分后,我决定查看一些 ntdll.dll 的导出函数。我遇到了NtLoadDriver,它只是从注册表加载指定的驱动程序。

这个驱动程序会存在于用户空间还是内核空间?甚至有可能存在非内核模式驱动程序吗?

如果在内核模式下加载驱动程序那么简单(我假设它不是)那么为什么我们没有看到更多驱动程序形式的恶意软件?

任何见解或澄清将不胜感激。

1个回答

这个驱动程序会存在于用户空间还是内核空间?

内核空间。

甚至有可能存在非内核模式驱动程序吗?

您可以使用用户模式驱动程序框架编写用户模式驱动程序,但这种类型的驱动程序实际上是一种用户模式服务,可以访问一些额外的 I/O 功能。

我们通常认为的“驱动程序”是内核模式驱动程序。

如果在内核模式下加载驱动程序那么简单(我假设它不是)那么为什么我们没有看到更多驱动程序形式的恶意软件?

要做的第一件事NtLoadDriver()是检查调用者的令牌是否SeLoadDriverPrivilege具有 ,默认情况下甚至管理员的令牌也没有。

我们没有看到太多以驱动程序形式存在的恶意软件的其他原因:

  • 开发(恶意)内核模式代码比开发(恶意)用户模式代码更困难。由于恶意软件作者很少需要做一些只能从内核模式完成的事情,因此编写恶意驱动程序通常没有太大价值。
  • 现代版本的 Windows 在允许驱动程序加载方面有非常严格的驱动程序签名要求。对于恶意软件作者来说,获得合法的驱动程序签名证书并不容易,一旦微软发现该证书被用于对恶意驱动程序进行签名,微软将撤销该证书并阻止所有 Windows 安装加载使用该证书签名的驱动程序。