我更熟悉*nix环境,但我正在尝试从Windows的角度学习安全性。我看到Windows安全领域中有很多针对外围程序(如媒体播放器或其他用户模式程序)的漏洞和补丁。控制这些用户程序是否容易获得root访问权限?我原本以为漏洞会针对像*nix上的telnetd
这样的特权程序。
“特权程序”是什么意思?
有两个不同的概念:
仅当某些驱动程序存在漏洞时,才可能破坏 (1)。也就是说,内核模式下运行的代码中存在错误,理论上可以被利用。除此之外,没有其他漏洞。
如果驱动程序存在特定的漏洞,则也可能破坏 (2)。也就是说,驱动程序应该验证调用过程/线程的上下文中的用户权限,但并不总是这样做。
大多数 Windows 漏洞与运行在用户模式下的代码问题有关。与 Unix/Linux 不同,Windows “成长”时并未天然关注帐户权限等问题。因此,在将事物分为自由/受限时,出现了许多问题。
传统上,在Unix系统上,大多数用户都在其“正常”用户ID下运行程序。当他们需要root访问权限(执行操作被操作系统视为敏感或特权时),他们会su到root或在sudo下运行这些程序。普通应用程序以普通用户身份运行,该用户没有权限执行某些操作(触摸系统文件,打开某些资源等)。
在Windows方面,用户传统上使用具有管理员权限的帐户运行(基本上是Windows的root)。有许多原因,但主要原因是Windows始于单用户操作系统,没有用户角色的概念,并且通过不破坏应用程序来保留功能,使得让用户在没有管理员权限的情况下运行变得非常困难。当前版本的Windows(Vista和Win7)默认使用非管理员帐户,并使用用户帐户控制的概念,让用户知道他们正在运行的某些内容需要此类访问权限,他们需要确认。
简而言之-大多数Windows用户都具有管理员权限,因此针对普通用户应用程序确实在许多情况下给您提供了特权访问。
运行在用户上下文中的恶意软件通常比管理员或内核模式恶意软件更容易找到和清除,因为它不能像安全软件和Windows更新那样轻松地干扰。但这并不意味着它无法达到其目的:它仍然可以渗透到您的浏览器中以干扰、拦截或修改您的网络浏览,仍然可以发送垃圾邮件,仍然可以记录按键等。