Ctrl-Alt-Del 登录背后的基本原理是什么

信息安全 验证 视窗 密码管理
2021-09-04 21:48:37

为什么在某些 Windows 系统上登录时需要Ctrl++ (我在其他地方没有见过,但如果我错了,请AltDel我相矛盾)才能输入密码?从可用性的角度来看,这是一个坏主意,因为它增加了获取访问权限的额外步骤。

它是否以任何方式提高了安全性,如果是,如何提高?

4个回答

这种组合称为安全注意密钥Windows 内核被“连线”以通知Winlogon而没有其他人知道这种组合。这样,当您按Ctrl+ Alt+时Del,您可以确定您是在真正的登录表单中输入密码,而不是其他试图窃取密码的虚假进程。例如,一个看起来与 Windows 登录完全一样的应用程序。

在 Linux 中,有一个定义松散的等价Ctrl++ 但是,它并不完全相同。它会杀死所有内容,除非您尝试输入密码。到目前为止,在运行X时还没有实际的等效项。AltPause

这意味着对系统本身完整性的信任,仍然可以修补内核并覆盖此行为以用于其他目的(恶意或完全合法)

Ctrl-Alt-Del 是 Windows 上的安全注意键操作系统对此组合键强制执行强不拦截策略。

你可以制作一个全屏的应用程序,抓住键盘,然后显示一些看起来像正常登录屏幕的东西,直到最后一个像素。然后你登录机器,启动应用程序,然后离开,直到一些毫无戒心的受害者找到机器,尝试登录,并将他的用户名和密码提供给你的应用程序。然后,您的应用程序只需模拟蓝屏死机,或者可能让用户实际登录,即可完成幻觉。

这次攻击被 SAK 打败了。您的应用程序可以抓取键盘并将所有按键重定向到自身,而不需要管理权限,除了Ctrl-Alt-Del,操作系统不允许重定向。按 Ctrl-Alt-Del 确保您获得真正的登录屏幕,而不是模仿。

这个问题的答案实际上可以在我们的姊妹站点 ServerFault 上找到。CTRL-ALT-DEL 登录如何使 Windows 更安全?

引用 Oskar Duveborn 接受的答案,

Windows (NT) 内核旨在将此组合键的通知保留给单个进程:Winlogon。因此,只要 Windows 安装本身正常工作 - 没有第三方应用程序可以响应此组合键(如果可以,它可能会显示一个虚假的登录窗口并键盘记录您的密码;)

已经提出了一些关于 Windows 8 SAS 支持的额外问题,并且后来被所有者删除了一个单独的问题,也发布了关于它的问题。由于我已经开始写我对这个问题的答案,并且在这个线程中也提到了 Windows 8,所以我把它贴在这里。如果那个被删除的问题再次出现,我会把我的答案移到那里。希望它能帮助那些想知道 SAS 在 Windows 8 手机和平板电脑上的应用。


根据Microsoft 规定的Windows 8 硬件认证要求

对于 Windows 8,当按下 Windows 键按钮和电源按钮的组合时发送 SAS 信号。

所以这不是安全注意键完全消失的情况(在无键盘设备上,其他人仍然可以像以前一样使用SAS),两个标准硬件按钮的组合Win+Pwr只是添加到仍然存在的Ctrl+ Alt+Del组合中,以更好地支持没有硬件键盘,这也是 Windows 8 的设计目的。

当然,由于它不仅是用于没有物理键盘的便携式设备的操作系统,而且是没有这些Win+Pwr物理按钮的台式计算机(但它们确实有键盘),因此仍然保留了旧的SAS方法。如果出于某种原因,您想禁用/重新启用此支持,此博客(或)说明了如何通过几个简单的步骤实现此目的。


@Iszi在本周关于IT 安全元的博客文章讨论中提出了另一个相关问题(或更多的请求)“我发现发现 Windows 和 Linux 不一定使用相同的安全注意密钥。如果有人可以对此进行扩展,那就太好了。. 由于我已经在这个问题上迟到了,没有人能真正指责我劫持了代表火车[ 1 ][ 2 ]它原来是 - 好吧,它是这样的:


我能找到的两种实现之间的主要区别是,Linux SAK(是的,这是 Linux 中使用的首字母缩写词,与 Windows 中使用的SAS(安全注意序列)形成对比)是 Linux SAK从未赢得National Computer安全中心 (NCSC) 的 C2 安全等级Windows NT 具有:

当 NT 获得 C2 安全等级时,NCSC 还认为 NT 满足 B 级安全性的两个要求:可信路径功能和可信设施管理功能。可信路径功能可防止特洛伊木马程序在用户登录时截获用户名和密码。NT 的 Trusted Path 功能以其 Ctrl+Alt+Del 登录注意序列的形式存在。这一系列击键,即安全注意序列 (SAS),会导致 NT 登录对话框弹出,该对话框会初始化帮助 NT 识别潜在特洛伊木马的过程。NT 绕过任何在用户进入注意序列时呈现虚假登录对话框的特洛伊木马。

NT 通过支持管理功能的单独帐户角色来满足受信任的设施管理要求。例如,NT 提供了单独的管理帐户(管理员)、负责备份计算机的用户帐户(备份操作员)和标准用户(用户)。据报道,微软正在开发 NT 的 B 级版本,但该公司尚未就何时发布此版本发表公开声明。

但这仍然不能真正解释原因好的,让我们再深入一点。Andrew Morton 处理的 Linux 2.4.2 Secure Attention Key (SAK) 中,我们得到以下信息:SAK!=SAS

从 PC 键盘来看,Linux 有两种类似但不同的方式来提供 SAK。一种是Alt++SysRq序列K你不应该使用这个序列。仅当内核在 sysrq支持下编译时才可用。

生成 SAK 的正确方法是使用 定义密钥序列 loadkeys无论sysrq支持是否编译到内核中,这都将起作用。

当键盘处于原始模式时,SAK 可以正常工作。这意味着一旦定义,SAK 将终止一个正在运行的X server. 如果系统处于 运行级别 5X server则将重新启动。这就是你想要发生的事情。

你应该使用什么键序列?嗯,Ctrl++是用来重启机器的 Alt++. _ _ _DelCtrlAltBackspaceX server

它继续解释如何创建自定义SAK处理程序,但主要内容是实现与 Windows 中的SAS有很大不同,并且它们可能不会在内核级别实现,具体取决于是否sysrq支持为构建启用。

这是否解释了 Windows 和 Linux 处理SAS/SAK的差异?我会说确实如此。来自 LWN.net 的用户tialaramex巧妙地解释了它:

Linux 对此功能有一些基本的低级支持,但它似乎从未上升为任何影响最终用户的功能。没有应用程序可以捕获 SAK 组合,因为在任何让用户空间应用程序摆弄按键的代码运行之前很久,内核就已经注意到 SAK 已被按下并短路到只处理这种特殊情况的路径。

然而:

在 Windows 中,当您按下 SAK 时,它会强制召唤一个单独的桌面,您可以认为它有点像一个单独的 X 服务器进程。该桌面由系统用户“拥有”,大致相当于 Unix root,因此任何有权篡改它的人都可以替换整个操作系统内核或任何他们想要的东西。

它是否解释了为什么选择不同的键盘序列?我不确定。它说明了为什么 Linux 中有多个这样的键盘序列以及它们之间的区别是什么(请参阅Andrew Morton 的解释),但我找不到一个明确的答案来解释为什么选择一个而不是另一个以及为什么不同的内核构建可能使用不同的SAK组合。我只能怀疑这归结为他们受人尊敬的作者的个人喜好。