windows powershell实战指南_【安全研究】powershell在主机中是否存在安全隐患?
近日,安全狗海青實(shí)驗(yàn)室在研究powershell攻擊運(yùn)用到主機(jī)實(shí)戰(zhàn)場(chǎng)景時(shí),對(duì)powershell在主機(jī)中是否存在安全問(wèn)題進(jìn)行了一次較為全面的分析,并介紹了powershell從灰色工具逐步演變成為攻擊利用工具的過(guò)程、攻擊者的利用手段,最后分享了如何針對(duì)powershell攻擊做效防御。
從0到1的突破是極為困難的;從1到N卻容易得多,powershell的攻擊也是如此。從0到1的突破困難,但從1復(fù)制到N個(gè)1卻容易得多,即,先從無(wú)到有,而后powershell攻擊方式已比比皆是,成為臭名昭著的攻擊利用工具。
一、powershell攻擊工具的演變
Powershell 從誕生至今,其命令行程序內(nèi)置在每一個(gè)受支持的Windows版本中 (Windows 7或更高版本),它提供了高超的靈活性和管理系統(tǒng)的能力。如下圖所示:
(Powershell查看主機(jī)系統(tǒng)信息)(Powershell查看主機(jī)進(jìn)程信息)(Powershell操縱注冊(cè)表)也因?yàn)檫@種能力,powershell逐漸成為了一個(gè)流行且效果拔群的攻擊工具,并被大多數(shù)攻擊者“濫用”在各種主機(jī)攻擊場(chǎng)景中。如:常見(jiàn)的內(nèi)網(wǎng)滲透、APT攻擊、后門(mén)技術(shù),甚至包括目前流行的勒索病毒軟件中。
二、Powershell不止有“powershell.exe”
Powershell是 Windows 系統(tǒng)中的一個(gè)核心組件 (不可移除),它存在于 System.Management.Automation.dll 動(dòng)態(tài)鏈接庫(kù)文件 (DLL) 里,并能附加到不同的運(yùn)行空間中進(jìn)行有效的PowerShell 實(shí)例化(PowerShell.exe 和 PowerShell_ISE.exe)。通俗來(lái)說(shuō),powershell能實(shí)現(xiàn)的功能比cmd更為強(qiáng)大,并且具備腳本編寫(xiě)的能力(ps1類型腳本文件)。
(使用ps1腳本調(diào)用計(jì)算器) (編寫(xiě)后門(mén)ps1腳本)三、PowerShell 執(zhí)行策略并不能提供真正的安全
默認(rèn)情況下,主機(jī)上powershell執(zhí)行策略是不允許執(zhí)行ps類型腳本的。這意味著在默認(rèn)情況下,powershell禁用了所有的腳本文件執(zhí)行。如下圖所示:
(powershell禁用腳本執(zhí)行)盡管如此,攻擊者仍可以通過(guò)手動(dòng)輸入執(zhí)行命令或是繞過(guò)執(zhí)行策略的方式執(zhí)行攻擊命令。首先,先要了解powershell的六種執(zhí)行策略:
| Unrestricted | 權(quán)限最高,可以不受限制執(zhí)行任意腳本 |
| Restricted | 默認(rèn)策略,不允許任意腳本的執(zhí)行 |
| AllSigned | 所有腳本必須經(jīng)過(guò)簽名運(yùn)行 |
| RemoteSigned | 本地腳本無(wú)限制,但是對(duì)來(lái)自網(wǎng)絡(luò)的腳本必須經(jīng)過(guò)簽名 |
| Bypass | 沒(méi)有任何限制和提示(常用手段) |
| Undefined | 沒(méi)有設(shè)置腳本的策略 |
(powershell的六種執(zhí)行策略)
攻擊者通常會(huì)用到以下方式來(lái)達(dá)到繞過(guò)執(zhí)行策略來(lái)執(zhí)行ps1文件的目的。如下圖所示:
(遠(yuǎn)程執(zhí)行ps1文件)(使用特殊標(biāo)記執(zhí)行本地ps1文件)(使用管道符執(zhí)行本地ps1文件)(調(diào)用參數(shù)替換執(zhí)行ps1文件)(修改注冊(cè)表項(xiàng)執(zhí)行ps1文件)在實(shí)際測(cè)試過(guò)程中,powershell的執(zhí)行策略并不能給主機(jī)帶來(lái)安全,攻擊者能用以上任意方式繞過(guò)執(zhí)行策略,達(dá)到在主機(jī)上運(yùn)行惡意腳本的目的。
四、Powershell實(shí)質(zhì)上是一個(gè)攻擊平臺(tái)!
隨著powershell攻擊平臺(tái)的逐漸興起,攻擊者通常將powershell作為“后期滲透利用”工具。以至于在實(shí)際攻擊場(chǎng)景中,攻擊者只要能獲取主機(jī)系統(tǒng)訪問(wèn)權(quán)限,就很有可能會(huì)運(yùn)行惡意的powershell代碼。一旦攻擊者獲得了主機(jī)系統(tǒng)訪問(wèn)權(quán)限,并借助powershell攻擊工具,那么主機(jī)上所有的操作系統(tǒng)標(biāo)準(zhǔn)工具和實(shí)用程序都能被攻擊者利用。
一般來(lái)說(shuō),在攻擊利用工具領(lǐng)域里,極少有工具能真正運(yùn)用在整個(gè)攻擊中。Powershell也是如此。PowerShell通常被運(yùn)用在整個(gè)攻擊手段的“后滲透”環(huán)節(jié)中,其常用的攻擊手段如下表所示:
| WMI | 計(jì)算機(jī)管理 |
| HTA腳本 | HTML應(yīng)用程序 |
| CHM | 編譯的HTML幫助文件 |
| Java | JAR文件 |
| 編碼混淆 | bash64 / ASCII / HEX /AES /BXOR |
| 其它腳本類型 | VBS / WSH / BAT / CMD |
| Microsoft Office宏 | VBA |
(powershell常用攻擊手段)
以下分別展示常見(jiàn)的WMI、HTA和編碼混淆類型的攻擊手段。
1、WMI
攻擊者使用WMI配合powershell做到內(nèi)網(wǎng)隱藏后門(mén)技術(shù)。編寫(xiě)door.ps1文件腳本,并將腳本放在內(nèi)網(wǎng)客戶端上,攻擊者在服務(wù)端上就能查看到客戶端的主機(jī)信息。具體代碼如下:
(遠(yuǎn)程連入服務(wù)端后門(mén))攻擊者在服務(wù)端上執(zhí)行命令即可查看到客戶端上的狀態(tài)信息。如下圖所示:
(遠(yuǎn)程查看客戶端主機(jī)信息)2、HTA
利用HTA腳本也是攻擊者在內(nèi)網(wǎng)主機(jī)滲透中的一貫做法。HTA文件類型腳本本質(zhì)上是HTML的應(yīng)用程序文件,也就是安全檢測(cè)規(guī)則里常見(jiàn)白名單內(nèi)容,被譽(yù)為“披著羊皮的狼”。攻擊者可以使用以下代碼來(lái)實(shí)現(xiàn)添加系統(tǒng)用戶test。
(添加系統(tǒng)test用戶的hta腳本)將以上HTA腳本保存在主機(jī)中并執(zhí)行,系統(tǒng)中將會(huì)增加一個(gè)test用戶。如下圖所示:
(創(chuàng)建test用戶成功)3、編碼混淆
在powershell實(shí)戰(zhàn)場(chǎng)景中攻擊者經(jīng)常會(huì)用到powershell攻擊命令混淆編碼,能有效隱匿攻擊者的操作、繞過(guò)殺毒軟件。以下是經(jīng)過(guò)ASCII編碼后的“ipconfig”命令。如下圖所示:
(ASCII編碼后的命令)既然powershell的功能已經(jīng)強(qiáng)大到“攻其詳、退可隱”的地步,那把powershell直接從主機(jī)系統(tǒng)中禁用不就行了嗎?(如下圖所示)然而這樣的做法通常是無(wú)效的,因?yàn)槿サ魀owershell 2.0勾選并重啟電腦后主機(jī)系統(tǒng)仍能正常使用powershell(v5.0版本)功能。
(禁用powershell功能)事實(shí)上,攻擊者可在cmd中借助攻擊工具做到無(wú)powershell執(zhí)行powershell命令,并對(duì)主機(jī)系統(tǒng)發(fā)起攻擊。如下圖所示:
(無(wú)powershell執(zhí)行powershell命令)五、如何有效預(yù)防powershell攻擊
powershell之所以被“濫用”,就是因?yàn)樗哂泄δ軓?qiáng)大且運(yùn)用方式靈活的特點(diǎn)。隨著利用powershell進(jìn)行攻擊的趨勢(shì)愈演愈烈,掌握有效的防御和檢測(cè)powershell攻擊的方法就很有必要。用戶可以通過(guò)以下操作來(lái)防范powershell攻擊:
(1) 啟用powershell模塊日志記錄
在本地組策略編輯器中找到powershell模塊,并啟用打開(kāi)模塊日志記錄(如下圖所示)。啟用powershell日志記錄功能需要powershell v3版本及更高版本的支持。
(2) 啟用腳本塊日志記錄
在本地組策略編輯器中找到powershell模塊,并啟用打開(kāi)腳本塊日志記錄(如下圖所示)。腳本塊日志在事件日志中提供了能記錄混淆powershell執(zhí)行命令的能力。大多數(shù)攻擊者通常會(huì)進(jìn)行命令混淆處理。
(3) 安裝有效的powershell入侵防護(hù)軟件
這是最有效也是最方便快捷的防護(hù)方法,目前大部殺毒安全軟件都具備了一定程度的powershell入侵防護(hù)功能。雖然不是很成熟,但足以抵御住部分的powershell攻擊。
六、結(jié)語(yǔ)
目前,powershell在Windows主機(jī)中仍然存在很大的安全隱患,尤其當(dāng)powershell配合其它攻擊工具時(shí),更是花樣百出、防不勝防。因此,研究powershell攻擊手段以及powershell安全對(duì)策仍是主機(jī)安全領(lǐng)域中關(guān)鍵性內(nèi)容。
攻擊不停于眼前,防守不止于現(xiàn)在。無(wú)攻則不促防,無(wú)防則不有攻,攻防對(duì)抗,應(yīng)是對(duì)立,相存緊依,不可分離。
總結(jié)
以上是生活随笔為你收集整理的windows powershell实战指南_【安全研究】powershell在主机中是否存在安全隐患?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 循环卷积和周期卷积的关系_PSConv:
- 下一篇: 高德地图区域线显示_护航国庆假期,助力重