【问题标题】:Powershell: Discover default network credentials when launched from runas /netonlyPowershell:从 runas /netonly 启动时发现默认网络凭据
【发布时间】:2013-03-28 18:04:53
【问题描述】:

我正在寻找一种方法来将当前会话的网络凭据捕获到我可以稍后传递的变量中......

重点是在我有帐户访问/特权的外部域上执行命令,但源域和目标域之间没有信任。

首先,我们在使用 runas 命令 (runas /netonly /user:domian\account powershell

从这里我可以做几乎所有我想做的事情,除了在任务调度程序中创建一个事件而不将用户名/密码硬编码到命令行中

invoke-command -computer $destination -scriptblock {schtasks -ru domain\account -rp password}

我想做的是类似

$username = 获取当前会话网络用户名($(whoami) 显示的是实际的本地 longon 帐户,而不是生成 powershell 窗口的 runas 帐户)

$password = 获取执行 RunAs 命令时输入的密码

【问题讨论】:

标签: powershell runas networkcredentials defaultnetworkcredentials


【解决方案1】:

一旦从输入的凭据创建安全令牌并针对 Active Directory 进行验证,密码就不再保留。它不能在其他地方检索和重用。只剩下令牌。这是设计使然。

更新

我进一步挖掘以支持我的案例,它与上面的不完全一样,但最终结果是相同的。与runas.exe 一起使用的密码似乎不可用。网络凭据针对 AD 进行验证,回想起来这很有意义,因为您经常使用 /netonly 来处理远程、不受信任的域:根据定义,您无法从本地系统验证远程凭据.来自 MSDN:

这里是标志LOGON_NETCREDENTIALS_ONLY 的信息,与CreateProcessWithLogonW 一起使用。

登录,但仅在网络上使用指定的凭据。新的 进程使用与调用者相同的令牌,但系统会创建一个 LSA 中的新登录会话,并且进程使用指定的 凭据作为默认凭据。

该值可用于创建使用不同集合的进程 本地凭据比远程凭据。这在 没有信任关系的跨域场景。

系统不验证指定的凭据。因此, 进程可以启动,但它可能无权访问网络资源。

好的,既然它无法验证凭据并获取令牌,那么它必须将密码存储在内存中的某个位置,因为它必须稍后通过线路将它们传递给 SSPI 等。所以,我们可以从从runas.exe 启动的进程?让我们看看:

PS> runas /netonly /user:foo\bar powershell.exe
Enter the password for foo\bar: ******

我确实将foo\bar 用于上面的域和用户。如前所述,它未经验证。我输入了12345 作为密码。上面的行将启动一个新的 powershell 实例。所以,从这个新实例中,让我们看看默认的网络凭据:

PS> [System.Net.CredentialCache]::DefaultNetworkCredentials

UserName                                           Domain
--------                                           ------

哦,好吧,不走运:那里什么都没有。我的猜测是,凭证被保护在内核内存的某个加密部分中,可能是 LSA(本地安全机构)无法被窥探进程所触及。

【讨论】:

  • 如果您在变量中捕获凭据,密码仍然存在。试试这个:$cred = get-credential;$cred.GetNetworkCredential().password;See also
  • xOn - 那么 cmdlet 从哪里获取信息?通过执行 powershell runas,通常需要我输入一组新凭据的 cmdlet 使用包装到 powershell 会话中的凭据。
  • cmdlet 获取信息。这发生在堆栈的较高位置;使用 /netonly 意味着 Windows 将自动使用备用令牌进行网络访问,但它将使用进程级令牌进行本地工作。一切都与令牌有​​关 - 密码早已不复存在。
  • @alroc 是的,当然你可以得到这样的密码。但这不是他要问的。他要求找回与“runas”一起使用的密码。
猜你喜欢
  • 2021-02-15
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 2015-09-19
  • 2016-11-01
  • 2020-06-24
相关资源
最近更新 更多