如果我已经有内核驱动程序,如何创建一个设置了 PsProtectedSignerAntimalware 标志的进程?
Posted
技术标签:
【中文标题】如果我已经有内核驱动程序,如何创建一个设置了 PsProtectedSignerAntimalware 标志的进程?【英文标题】:How to create a process with PsProtectedSignerAntimalware flag set if i already have a kernel driver? 【发布时间】:2021-06-25 06:30:26 【问题描述】:Windows 中的某些进程如何为它们设置 PsProtectedSignerAntimalware 标志?这意味着windows如何决定哪些进程在创建时应该设置这个标志?
有关此标志的更多信息:
https://www.crowdstrike.com/blog/evolution-protected-processes-part-1-pass-hash-mitigations-windows-81/
我怀疑微软是否在某处硬编码了防病毒列表,并根据证书决定哪些进程应该得到这个标志,那么 windows 是如何决定哪些进程应该得到这个标志的呢?
假设我已经加载了一个驱动程序,我是否可以强制我的用户模式进程具有此标志?
【问题讨论】:
如果您有驱动程序,可能在EPROCESS
对象中找到,PS_PROTECTION
驻留在其中,仅基于非常一般的假设。
@RbMm 是的,但显然修改 EPROCESS 结构并不是一个好主意,我不记得 patchguard 是否捕捉到它,但无论哪种方式都必须有更好的记录方式这样做
不,修改EPROCESS
没问题,而且是个好主意。当然 patchguard 无法捕捉到这一点,因为 EPROCESS
在设计上是易变的。这是 100% 有效且稳定的解决方案,我在自己的工具中使用了很多年
@RbMm 很高兴知道谢谢。但是windows本身是如何决定是否设置PsProtectedSignerAntimalware标志的呢?
这个我从不研究也不知道。可能 Ion Larrañaga 的答案是正确的。我在需要时在我的进程中自行修改 PS_PROTECTION,然后将其重置为 0。通常在打开受保护的进程/线程或调试它之前。以及为什么需要PsProtectedSignerAntimalware
级别?而不是PsProtectedSignerWinSystem
或PsProtectedSignerApp
【参考方案1】:
这似乎与用于签署二进制文件的证书的 EKU 有关。看看 Alex Ionescu 在幻灯片 11 和 19 上的演示文稿:
https://nosuchcon.org/talks/2014/D3_05_Alex_ionescu_Breaking_protected_processes.pdf
还有你提到的 URL 的第三部分:
https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/
无论如何,我无法找到所需的 EKU 的确切值,但我认为如果您有兴趣,Microsoft 可以帮助您。
【讨论】:
你错了。可以从内核模式设置它。这也不会导致任何崩溃 - 没有任何理由。 嗯,很高兴知道这一点。我想象内核会对此有某种保护(尽管回想起来,即使它有,你已经在内核中运行,所以你甚至可以覆盖它)。我将从答案中删除该部分并保留其余部分,因为我仍然认为它对问题有效。 我只是在这个问题上分享我的经验和知识+想法。 内核会对此有某种保护 - 我不这么认为。基于什么 ?是否会定期检查exe,从哪个进程创建?我只这样看待。可能但不认为。这里最危险的是, PS_PROTECTION 的格式可能会改变(它已经在 win7 和 win8 之间改变过一次)。但无论如何存在可靠的方法检测这个位的位置,没有任何硬编码,这也适用于旧(win7)和新格式。 关于 EKU 我不研究这个,但很可能你就在这里 @IonLarrañaga 好像......你可以吗?这篇博文展示了将 EKU 添加到现有证书中,嗯! sysadmins.lv/blog-en/…以上是关于如果我已经有内核驱动程序,如何创建一个设置了 PsProtectedSignerAntimalware 标志的进程?的主要内容,如果未能解决你的问题,请参考以下文章
Linux系统如何将某一程序设置为开机自启动,linux 小白求详细讲解......