我现在已经是PowerShell的一个大粉丝了。我发现自己经常在渗透测试和正常任务管理里面使用到它。这篇文章中,我分享给大家一篇基础的(PowerShell远程处理作弊条)PowerShell Remoting cheatsheet,这样你们也可以使用到它了。
PowerShell远程处理本质上是一种原生的Windows远程命令执行的功能,是建立在Windows远程管理(远程管理)协议基础上的。基于我谷歌到的结果,WinRM 是通过Windows Vista Service Pack 1或更高版本,Windows 7,Windows Server 2008,Windows Server 2012的支持。
在我们开始之前,让我们确保PowerShell远程处理在您的系统上安装妥当了。
Enable-PSRemoting –force
这句应该就够了,如果你遇到了问题,可以使用下面的命令。
# Set start mode to automatic Set-Service WinRM -StartMode Automatic # Verify start mode and state - it should be running Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}
# Trust all hosts Set-Item WSMan:localhost\client\trustedhosts -value * # Verify trusted hosts configuration Get-Item WSMan:\localhost\Client\TrustedHosts
现在 我们可以小玩一把了。这里有篇博文可以小览一下PowerShell Remoting :
http://blogs.technet.com/b/heyscriptingguy/archive/2009/10/29/hey-scripting-guy-october-29-2009.aspx.
这绝对是在我推荐的阅读清单上,但我会在这方面上展开一个小例子。
Invoke-Command –ComputerName MyServer1 -ScriptBlock {Hostname} Invoke-Command –ComputerName MyServer1 -Credentials demo\serveradmin -ScriptBlock {Hostname}
Get-ADComputer -Filter * -properties name | select @{Name="computername";Expression={$_."name"}} | Invoke-Command -ScriptBlock {hostname}
有时候使用存储在本地的脚本似乎更好。如下面几个例子所示:
Invoke-Command -ComputerName MyServer1 -FilePath C:\pentest\Invoke-Mimikatz.ps1 Invoke-Command -ComputerName MyServer1 -FilePath C:\pentest\Invoke-Mimikatz.ps1 -Credentials demo\serveradmin
Also, if your dynamically generating commands or functions being passed to remote systems you can use invoke-expression through invoke-command as shown below.
$MyCommand = "hostname" $MyFunction = "function evil {write-host `"Getting evil...`";iex -command $MyCommand};evil" invoke-command -ComputerName MyServer1 -Credentials demo\serveradmin -ScriptBlock {Invoke-Expression -Command "$args"} -ArgumentList $MyFunction
Enter-PsSession –ComputerName server1.domain.com Enter-PsSession –ComputerName server1.domain.com –Credentials domain\serveradmin
如果你想退出交互界面的 PowerShell session,你可以使用 "Exit-PsSession" 命令。
Exit-PsSession
New-PSSession -ComputerName server1.domain.com New-PSSession –ComputerName server1.domain.com –Credentials domain\serveradmin
New-PSDrive -PSProvider ActiveDirectory -Name RemoteADS -Root "" -Server a.b.c.d -credential domain\user cd RemoteADS: Get-ADComputer -Filter * -Properties name | select @{Name="ComputerName";Expression={$_."name"}} | New-PSSession
Get-PSSession
Enter-PsSession –id 3
Exit-PsSession
Invoke-Command -Session (Get-PSSession) -ScriptBlock {Hostname}
Get-PSSession | Disconnect-PSSession
自然,PowerShell 远程管理为管理员和渗透测试者都提供了很多选择。不管你的使用情况,我认为它归结为:
希望这份cheatsheet 作弊条能对你们有用。玩的开心,负责任的Hack。
关于PowerShell,安全脉搏上已经有很多文章介绍了,http://www.secpulse.com/?s=powershell。
【原文:PowerShell Remoting Cheatsheet 翻译:安全脉搏SP小编 转载请注明来自安全脉搏 分享技术 悦享品质】