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