PowerShell 中的加密和解密
除了保护敏感数据之外,PowerShell 还可以使用其他 cmdlet 功能,例如Invoke-Command或New-PSSession。在这篇简短的文章中,我将向您展示在 PowerShell 中加密或解密数据是多么容易,以及如何使用加密数据创建帐户数据。
PowerShell 电脑 中的加密和解密在 PowerShell中,ConvertTo-SecureString和ConvertFrom-SecureStringcmdlet可用于将标准字符串System.String加密和解密为System.Security.SecureString。
这是一个字符串被加密并存储在变量中的示例:
data 电脑= "This is some extremely important data"$encryptedData=ConvertTo-SecureString-String $data -AsPlainText如果我们输入包含加密字符串的变量的名称,我们将看到它的类型System.Security.SecureString:我们还可以解密存储在System.Security.SecureString对象中的数据,如下所示:
ConvertFrom-SecureString-SecureString $encryptedData-AsPlainText为 PowerShell 凭据使用加密字符串1.在某些情况下,以不同用户身份运行 cmdlet 的能力可能是一项电脑非常有用的功能。例如,设法获取受感染用户凭据的红队(专门从事黑客攻击和破坏计算机和移动设备的黑客)可能会尝试使用被盗凭据代表该用户在远程计算机上执行命令。
2.定义Credential参数的 cmdlet允许我们指定 cmdlet 应在其下运行的凭据。传递给Credential参数的值必须是PSCredential对象。为了让我们创建一个PSCredential对象,我们需要用户名和密码作为安全字符串,这意味着我们需要对密码进行加密。
3.为了安全地加密字符串,不建议在命令行上以明文形式提供密码作为参数。这是因为 PowerShell 日志记录或任何启用的命令行日志记录可以以明文形式记录这些凭据,这是一个缺陷。
4.因此,应该从标准stdn读取密码并将其存储在变量中。Read-Hostcmdlet允许您从标准流中读取数据,它有一个AsSecureString参数,用于将从标准流中读取的数据转换为System.Security.SecureString。
使用以下 PowerShell 代码,您可以从标准输入读取数据并将其作为安全字符串存储在变量中:
$password = Read-Host -AsSecureString然后我们可以获取这个安全字符串并创建所需的PSCredential对象:
$Cred = New-Object System.Management.Automation.PSCredential("domain\user",电脑 $password)我们现在可以将此PSCredential对象与允许我们指定Credential参数的 cmdlet 一起使用。以下是我使用我们创建的PSCredential在远程WINRM机器上以不同用户身份执行Invoke-Commandcmdlet 的方法:
Invoke-Command -Credential $Cred -ScriptBlock { whoami } -ComputerName 10.10.1.11就这样。我们弄清楚了PowerShel的加密和解密。希望这篇文章是有用的。
电脑 电脑