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