linux远程开机windows,从Linux到Windows的PowerShell远程处理
原標(biāo)題:從Linux到Windows的PowerShell遠(yuǎn)程處理
前提條件
1)后期利用期間可以通過(guò)目標(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)在我的測(cè)試中使用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)程處理需要對(duì)Kerberos身份驗(yàn)證,這意味著客戶端計(jì)算機(jī)和目標(biāo)計(jì)算機(jī)必須都連接到同一域。如果我們沒(méi)有可以連接的機(jī)器來(lái)執(zhí)行遠(yuǎn)程處理,那么這對(duì)測(cè)試人員來(lái)說(shuō)可能會(huì)造成問(wèn)題。幸運(yùn)的是,我們可以選擇將自己添加為目標(biāo)配置中的“TrustedHost”,這將允許我們執(zhí)行NTLM身份驗(yàn)證而不是Kerberos,因此無(wú)需從域上的系統(tǒng)進(jìn)行連接。
現(xiàn)在唯一的問(wèn)題是,用于Linux的PowerShell核心(撰寫(xiě)本文時(shí)為PowerShell 6.1.0)并未支持NTLM身份驗(yàn)證。幸運(yùn)的是,Redditors找到了在Centos上使用PowerShell進(jìn)行NTLM身份驗(yàn)證的方法,因此我將他們的發(fā)現(xiàn)整合到一個(gè)簡(jiǎn)單的PowerShell Docker鏡像quickbreach / powershell-ntlm中。
如何使用從Linux到Windows的PowerShell遠(yuǎn)程處理
本節(jié)將逐步介紹如何從Linux客戶端到Windows目標(biāo)建立遠(yuǎn)程PowerShell會(huì)話。假設(shè)您對(duì)目標(biāo)PC具有管理訪問(wèn)權(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)證所必需的,這是唯一可用于通過(guò)PowerShell遠(yuǎn)程連接從Linux連接到Windows的身份驗(yàn)證機(jī)制。要完成此操作,請(qǐng)運(yùn)行以下命令之一:使用通配符允許所有計(jì)算機(jī)在對(duì)此主機(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è)置并重新啟動(dòng)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會(huì)話 – 請(qǐng)注意,您必須指定-Authentication類(lèi)型:
# 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
您也可以以類(lèi)似的方式使用Invoke-Command功能
Invoke-Command -ComputerName 10.20.30.190 -Authentication Negotiate -Credential $creds -Block {Get-HotFix}
清除痕跡
如果您的命令之前存在TrustedHosts以自行添加,請(qǐng)更換您的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
重新啟動(dòng)WinRM服務(wù)以完成更改(請(qǐng)注意,這將使您與Enter-PSSession斷開(kāi)連接)
Restart-Service WinRM
*參考來(lái)源quickbreach,由周大濤編譯,轉(zhuǎn)載請(qǐng)注明來(lái)自FreeBuf.COM返回搜狐,查看更多
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的linux远程开机windows,从Linux到Windows的PowerShell远程处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 亚币兑换
- 下一篇: linux 3.4内核初始化,S3C24