好的,我知道在许多 unix 变体上,您可以设置 root/admin 用户、标准用户等。默认情况下,在某些 Linux 发行版中,有时已知“root”超级用户有一个默认密码。例如(仅举例)在 Oracle Linux 发行版上,默认密码可能只是“oracle”。
现在在 Windows 方面,我试图进入系统帐户,因为显然访问被拒绝,即使在计算机上以“管理员”身份运行某些程序(如 regedit),仍然可以拒绝我访问。
我注意到在任务调度程序和其他几个区域中,似乎有一些针对“LocalService”和“NetworkService”用户的特殊或加密密码,这些密码由 Microsoft 编程来执行诸如启动任务调度程序、运行后台进程等操作。因此,如果有办法找出这些帐户使用的默认密码,那将提供很大的帮助。如果不能解密它们,那么我会重置它们。
无论如何,Windows 是否有默认系统密码?我本质上需要对本地计算机的超级用户访问权限,因此如果您有任何方法,我将不胜感激。
PS 我知道过去我曾利用过一些漏洞(供我自己使用)在我的计算机上以更高的权限级别运行程序。在 Windows XP 上,通过任务管理器终止资源管理器,然后由于允许这样做的安全漏洞而通过 schedtasks 重新启动它,等等。
因此,如果我需要访问机器上的超级用户帐户(这仅适用于我的机器,我不会尝试在其他人的机器上执行此操作),我可能需要访问机器上的超级用户帐户。此时,我最好的选择是使用 LocalService 或 SYSTEM,因为它的功能足够强大,可以完成我需要做的事情。
感谢您的帮助!
问候
答案1
SYSTEM
和账户NETWORK SERVICE
不是真实账户,也不存在于 SAM 中 – 换句话说,它们不能设置了密码,您无法登录。它们仅作为“知名 SID”(安全标识符) – Windows 只是对诸如S-1-5-18
或 之类的 SID 进行了特殊处理S-1-5-20
,类似于 Unix 中 uid 0 的特殊处理,特权程序可以通过自己创建令牌来使用此帐户(类似于在 Unix 中调用setuid()
+ )。capset()
以 SYSTEM 权限运行程序的一个简单方法是通过执行程序来自 Sysinternals:
psexec -dsi cmd
然而,与 Unix 不同的是,根,甚至SYSTEM
不允许绕过对象 ACL – 这就是为什么所有注册表项、系统文件和其他内容都明确显示SYSTEM
在其 ACL 中。相反,如果管理员出于某种原因需要覆盖对象的 ACL,他们可以使用取得所有权权限1(默认授予所有管理员)。这是因为对象的所有者是总是允许更改其 ACL,即使他们明确拒绝这样做;这是Windows 做出的仅有的两个例外。
有时,访问被拒绝是由于其他原因——许多防病毒程序都带有“自我防御”内核驱动程序,这些驱动程序会修补 Windows 内核本身的各种功能,并使它们仅根据名称拒绝对特定键或文件的修改;阻止是前原始 ACL 检查将发生,并且没有权限或特权可以覆盖它。绕过此类保护的唯一方法是撤消内核修改;任何内核调试器都可用于此目的。诸如内核侦探可以列出SSDT中的所有条目,哪个内核驱动程序修改了哪个功能,甚至有命令来重置默认值。
1如果您好奇,可以使用 Process Explorer 查看分配给特定进程的所有 SID 和特权位。您会发现,甚至系统进程也没有任何通用的“覆盖安全性”特权;相反,只有特定特权例如模仿,取得所有权或者创建令牌存在。
2对于文件,有人拿着备份权限可以读取“备份模式”下的文件(包含数据、元数据、ACL、所有权等的存档),然后根据需要对其进行修改,并将其恢复到文件系统。也就是说,假设有人对这些备份存档的结构进行了逆向工程。其他类型的对象则无法做到这一点。