我正在学习Windows API并进行一般的反向操作,因此如果这是一个愚蠢的问题,我深表歉意。

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

该驱动程序是否存在于用户空间或内核空间中?

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

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

评论

在链接的顶部,有一个指向更高级别条目“驱动程序支持例程”的链接,该条目显示“驱动程序支持例程是Windows操作系统提供的供内核模式驱动程序使用的例程。”这可能会提示您为什么不将其用于恶意软件。

#1 楼


此驱动程序是否存在于用户空间或内核空间中?


内核空间。


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


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

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


如果加载起来很简单一个以内核模式运行的驱动程序(我假设不是),那么为什么我们没有看到更多以驱动程序形式出现的恶意软件?


呼叫者的令牌具有NtLoadDriver(),默认情况下甚至连管理员的令牌也没有。

其他原因我们看不到驱动程序形式的恶意软件:


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


评论


太棒了,这使事情变得很轻松。谢谢!

–雅各布·珀西(Jacob Persi)
16 Mar 9 '16 at 19:01

请注意:恶意驱动程序通常称为rootkit。这些在UNIX领域更常见。另外,安装rootkit经常与内核利用有关,而不与NtLoadDriver函数有关。

– Stolas
16年4月5日在9:28

对于经验丰富的恶意软件开发人员而言,Windows上的驱动程序签名实施(DSE)完全不是问题:github.com/hfiref0x/TDL

–Skyküff
16-4-11在11:07