您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關從Linux到Windows的PowerShell遠程處理是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
1)后期利用期間可以通過目標NTLM身份驗證
2)重啟WinRM服務
3)使用此NTLM支持PowerShell Docker鏡像到Linux的PS-Remote,您可以從Linux到Windows進行PS遠程到Windows。
偶然發現在我的測試中使用PowerShell遠程處理作為維護系統遠程代碼執行的主要方法很有用。它是一個內置的Windows功能。不幸的是,由于PowerShell Core的Linux分支支持的身份驗證機制,從我的Kali Linux遠程連接到我的目標并不是一件容易的事。
PowerShell遠程處理需要對Kerberos身份驗證,這意味著客戶端計算機和目標計算機必須都連接到同一域。如果我們沒有可以連接的機器來執行遠程處理,那么這對測試人員來說可能會造成問題。幸運的是,我們可以選擇將自己添加為目標配置中的“TrustedHost”
,這將允許我們執行NTLM身份驗證而不是Kerberos,因此無需從域上的系統進行連接。
現在唯一的問題是,用于Linux的PowerShell核心(撰寫本文時為PowerShell 6.1.0)并未支持NTLM身份驗證。幸運的是,Redditors找到了在Centos上使用PowerShell進行NTLM身份驗證的方法,因此我將他們的發現整合到一個簡單的PowerShell Docker鏡像quickbreach / powershell-ntlm中。
本節將逐步介紹如何從Linux客戶端到Windows目標建立遠程PowerShell會話。假設您對目標PC具有管理訪問權限(RDP,payload等)。
1.在目標上啟用PowerShell遠程處理
Enable-PSRemoting –Force
2.獲取目標系統上當前TrustedHost的列表以供參考
Get-Item WSMan:\localhost\Client\TrustedHosts
3.將自己添加為目標上的TrustedHost。這是在Enter-PSSession設置階段使用NTLM身份驗證所必需的,這是唯一可用于通過PowerShell遠程連接從Linux連接到Windows的身份驗證機制。要完成此操作,請運行以下命令之一:使用通配符允許所有計算機在對此主機進行身份驗證時使用NTLM
Set-Item WSMan:\localhost\Client\TrustedHosts -Force -Value
或者只將您的IP添加到NTLM身份驗證允許列表中
Set-Item WSMan:\localhost\Client\TrustedHosts -Force -Concatenate -Value 192.168.10.100
4.設置并重新啟動WinRM服務
Set-Service WinRM -StartMode Automatic
Restart-Service -Force WinRM
5.放入PowerShell-NTLM Docker鏡像的實例。下面的示例命令還在docker鏡像內的/mnt
路徑上安裝包含PowerShell腳本
docker run -it -v /pathTo/PowerShellModules:/mnt quickbreach/powershell-ntlm
6.現在我們一直在等待:使用以下命令進入遠程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) -Authentication Negotiate -Credential $creds
# i.e.
Enter-PSSession -ComputerName 10.20.30.190 -Authentication Negotiate -Credential $creds
您也可以以類似的方式使用Invoke-Command功能
Invoke-Command -ComputerName 10.20.30.190 -Authentication Negotiate -Credential $creds -ScriptBlock {Get-HotFix}
如果您的命令之前存在TrustedHosts以自行添加,請更換您的IP并運行以下命令:
$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服務以完成更改(請注意,這將使您與Enter-PSSession斷開連接)
Restart-Service WinRM
關于從Linux到Windows的PowerShell遠程處理是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。