linux远程开机windows,从Linux到Windows的PowerShell远程处理
原標(biāo)題:從Linux到Windows的PowerShell遠(yuǎn)程處理
前提條件
1)后期利用期間可以通過目標(biāo)NTLM身份驗(yàn)證
2)重啟WinRM服務(wù)
3)使用此NTLM支持PowerShell Docker鏡像到Linux的PS-Remote,您可以從Linux到Windows進(jìn)行PS遠(yuǎn)程到Windows。背景資料
偶然發(fā)現(xiàn)在我的測試中使用PowerShell遠(yuǎn)程處理作為維護(hù)系統(tǒng)遠(yuǎn)程代碼執(zhí)行的主要方法很有用。它是一個(gè)內(nèi)置的Windows功能。不幸的是,由于PowerShell Core的Linux分支支持的身份驗(yàn)證機(jī)制,從我的Kali Linux遠(yuǎn)程連接到我的目標(biāo)并不是一件容易的事。
PowerShell遠(yuǎn)程處理需要對Kerberos身份驗(yàn)證,這意味著客戶端計(jì)算機(jī)和目標(biāo)計(jì)算機(jī)必須都連接到同一域。如果我們沒有可以連接的機(jī)器來執(zhí)行遠(yuǎn)程處理,那么這對測試人員來說可能會造成問題。幸運(yùn)的是,我們可以選擇將自己添加為目標(biāo)配置中的“TrustedHost”,這將允許我們執(zhí)行NTLM身份驗(yàn)證而不是Kerberos,因此無需從域上的系統(tǒng)進(jìn)行連接。
現(xiàn)在唯一的問題是,用于Linux的PowerShell核心(撰寫本文時(shí)為PowerShell 6.1.0)并未支持NTLM身份驗(yàn)證。幸運(yùn)的是,Redditors找到了在Centos上使用PowerShell進(jìn)行NTLM身份驗(yàn)證的方法,因此我將他們的發(fā)現(xiàn)整合到一個(gè)簡單的PowerShell Docker鏡像quickbreach / powershell-ntlm中。
如何使用從Linux到Windows的PowerShell遠(yuǎn)程處理
本節(jié)將逐步介紹如何從Linux客戶端到Windows目標(biāo)建立遠(yuǎn)程PowerShell會話。假設(shè)您對目標(biāo)PC具有管理訪問權(quán)限(RDP,payload等)。
1.在目標(biāo)上啟用PowerShell遠(yuǎn)程處理
Enable-PSRemoting –Force
2.獲取目標(biāo)系統(tǒng)上當(dāng)前TrustedHost的列表以供參考
Get-Item WSMan:\localhost\Client\TrustedHosts
3.將自己添加為目標(biāo)上的TrustedHost。這是在Enter-PSSession設(shè)置階段使用NTLM身份驗(yàn)證所必需的,這是唯一可用于通過PowerShell遠(yuǎn)程連接從Linux連接到Windows的身份驗(yàn)證機(jī)制。要完成此操作,請運(yùn)行以下命令之一:使用通配符允許所有計(jì)算機(jī)在對此主機(jī)進(jìn)行身份驗(yàn)證時(shí)使用NTLM
Set-Item WSMan:\localhost\Client\TrustedHosts -Force -Value
或者只將您的IP添加到NTLM身份驗(yàn)證允許列表中
Set-Item WSMan:\localhost\Client\TrustedHosts -Force -Concatenate -Value 192.168.10.100
4.設(shè)置并重新啟動WinRM服務(wù)
Set-Service WinRM -StartMode Automatic
Restart-Service -Force WinRM
5.放入PowerShell-NTLM Docker鏡像的實(shí)例。下面的示例命令還在docker鏡像內(nèi)的/mnt路徑上安裝包含PowerShell腳本
docker run -it -v /pathTo/PowerShellModules:/mnt quickbreach/powershell-ntlm
6.現(xiàn)在我們一直在等待:使用以下命令進(jìn)入遠(yuǎn)程PowerShell會話 – 請注意,您必須指定-Authentication類型:
# Grab the creds we will be logging in with
$creds=Get-Credential
?
# Launch the session
# Important: you MUST state the authentication type as Negotiate
Enter-PSSession-ComputerName(Target-IP)-AuthenticationNegotiate-Credential$creds
?
# i.e.
?
Enter-PSSession-ComputerName10.20.30.190-AuthenticationNegotiate-Credential$creds
您也可以以類似的方式使用Invoke-Command功能
Invoke-Command -ComputerName 10.20.30.190 -Authentication Negotiate -Credential $creds -Block {Get-HotFix}
清除痕跡
如果您的命令之前存在TrustedHosts以自行添加,請更換您的IP并運(yùn)行以下命令:
$newvalue = ((Get-ChildItem WSMan:\localhost\Client\TrustedHosts).Value).Replace(",192.168.10.100","") Set-Item WSMan:\localhost\Client\TrustedHosts -Force -Value $newvalue
或者,如果您是唯一的TrustedHosts,則可以刪除所有TrustedHosts
Clear-Item WSMan:\localhost\Client\TrustedHosts
重新啟動WinRM服務(wù)以完成更改(請注意,這將使您與Enter-PSSession斷開連接)
Restart-Service WinRM
*參考來源quickbreach,由周大濤編譯,轉(zhuǎn)載請注明來自FreeBuf.COM返回搜狐,查看更多
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的linux远程开机windows,从Linux到Windows的PowerShell远程处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亚币兑换
- 下一篇: linux 3.4内核初始化,S3C24