Task Scheduler如何在Windows 7上保存密码?

如果我为计划的任务或服务的login凭证保存密码,是否安全

在我看来,Windows以某种方式保存了encryption的密码,但是由于Windows必须对其进行解密,所以任何人都可以脱机访问计算机。

这是真的吗? 是否有工具可以恢复这些密码?

随着任务计划2.0(Vista和更新)密码保存使用Windows凭据pipe理器 :

Windows Vista中的任务计划程序支持构成安全隔离模型一部分的新凭据pipe理器。 在这个模型中,在一个特定的安全上下文中运行的每一组任务开始于一个单独的会话。 密码现在存储在凭证pipe理器(CredMan)服务中。 您可以使用CredManencryption界面来防止恶意软件窃取存储的密码。

从技术上讲,证书pipe理器(新版Windows版本中的“证书锁存器” ) 将密码存储在本地磁盘上 :

用户可以select通过使用应用程序或通过Credential Manager控制面板小程序在Windows中保存密码。 这些凭据存储在硬盘驱动器上,并使用数据保护应用程序编程接口(DPAPI)进行保护。 以该用户身份运行的任何程序都将能够访问该商店中的凭据

(强调加)

尽pipe凭证pipe理器改进了encryption方法和安全体系结构,而不是使用较早版本的任务计划程序使用的弃用保护存储(PStore)服务,但所写的内容仍然有效:无论保存的是什么工具都可以公开获取对于这个任务呢。

我的理解是密码存储在DPAPI中 。 所以是的,他们存储在本地,但他们不是存储在明文,并要求正确的encryption密钥能够召回/解密他们。 从处理这些东西的遥远的记​​忆中,encryption密钥是从正在存储信息的当前login用户的证书导出的,所以理论上只有那个用户可以将数据拉出并解密。

在任务调度程序的情况下,我想象的是数据是由运行任务调度程序的帐户存储的,所以任何可以模拟此帐户(可能是默认情况下都是SYSTEM )的人都可以检索数据。

“是否安全”是一个完全主观的问题。 除非您对磁盘上的数据进行encryption,并将密钥远离磁盘,否则理论上可以检索它。

是的,有一些工具可以提取预定任务存储的凭据。 这些工具需要提升权限,就像其他用于凭证提取的工具一样。

例如:

  • 下载psexec
  • 下载nirsoft的netpass
  • 使用psexec在SYSTEM的上下文中启动netpass

所以! 如果psexec在我的path中,并且netpass.exe在C:\,我可以运行这个:

 psexec -i -s -d C:\netpass.exe 

这将打开netpass,在那里您将看到runas帐户的计划任务凭据。 我已经用Windows Server 2008 R2和Window Server 2012 R2上的标准域帐户进行了testing。 新的操作系统或某些types的帐户可能会有限制。

干杯!