国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      北京天融信科技有限公司

      免費會員·4年
      您現(xiàn)在的位置: 首頁> 公司動態(tài)> 安全運營內(nèi)刊|檢測與防護能力-淺析PowerShell

      安全運營內(nèi)刊|檢測與防護能力-淺析PowerShell

      2022-2-11  閱讀(150)

      分享:

      01什么是 PowerShell

      PowerShell是微軟為Windows平臺制作的新一代命令行操作環(huán)境。和傳統(tǒng)的命令行環(huán)境相比,PowerShell的功能更加強大,使用方式也非常靈活。但這些新的特性單來便利的同時,也隱藏著更大的安全風險。本文在對PowerShell功能和特點介紹的基礎上,將會概述部分安全機制的繞過方法,以及針對PowerShell攻擊的檢測和防御技巧。

      1.1 PowerShell三大組件

      powershell由三個主要組件構(gòu)成:

      System.Management.Automation.dll :PowerShell核心功能位于此dll庫中;

      PowerShell.exe :加載System.Management.Automation.dll庫的主進程文件;

      Antimalware Scanning Interface (AMSI) :反惡意軟件掃描接口,允許與Windows Defender等反惡意軟件程序集成。

      1.2 PowerShell版

      下表是Powershell的歷史版本及所運行的環(huán)境:

      注意事項:

      PowerShell v2 無法升級到 v2 以上;

      PowerShell v3 可以直接升級到 v5+;

      PowerShell v2 和 PowerShell v5 可以共存;

      PowerShell v2 無法從 Windows 7/Windows Server 2008 中刪除;

      Windows 8+/Server 2012+ 上默認不安裝 PowerShell v2/.Net 3.5;

      Microsoft Office 需要 .Net 3.5 并且需要啟用 PowerShell v2;

      %SystemRoot%\System32\WindowsPowerShell\v1.0\是所有版本的的PowerShell 的可執(zhí)行文件的路徑。

      02PowerShell的攻擊特性

      PowerShell的cmdlets包含許多系統(tǒng)管理工具,這些工具在用于攻擊時因其沒有文件承載,不需要接觸磁盤,直接在內(nèi)存中加載并執(zhí)行惡意代碼,可以繞過防火墻、IDS/IPS,以及許多反病毒軟件。

      2.1 內(nèi)置工具

      PowerShell內(nèi)置工具可以直接執(zhí)行惡意操作,例如Invoke-WebRequest可以通過HTTP協(xié)議下載惡意文件,如下圖:

      2.2 創(chuàng)建自定義工具

      PowerShell的強大之處還在于可以創(chuàng)建自定義工具,如果像Invoke-WebRequest這樣的工具不可用,仍然可以使用.Net中的.Net WebClient類編寫自己的下載器,如下圖是自定義的文件下載工具:

      使用自定義下載工具下載文件:

      WebClient類也可以直接在命令行調(diào)用,以達到避免文件落地的目的,使用DownloadString加載并執(zhí)行遠程腳本如下:

      以上就是powershell的基本使用。

      2.3 PowerShell在釣魚攻擊中的應用

      1.編寫后門ps文件Invoke-BaseConfig.ps1,如下:

      2.新建word文檔的宏代碼輸入如下代碼:

      3.通過郵件等形式進行投遞,當有人打開附件并啟用宏時,攻擊者就可以獲得該pc的權(quán)限。

      2.4 PowerShell攻擊框架

      除了在攻擊場景中基本用法,PowerShell還可以用來創(chuàng)建自定義工具集。使用PowerShell創(chuàng)建的開源攻擊項目有很多,這些攻擊框架展示了整個攻擊過程中 PowerShell 如何發(fā)揮作用。下面是一些比較流行的PowerShell 的攻擊工具/框架:

      03PowerShell 的可見性問題

      對于許多 EDR 和防病毒產(chǎn)品,只有在調(diào)用“PowerShell.exe "與進程創(chuàng)建相關(guān)聯(lián)時,才能捕獲 PowerShell 活動,這也會導致攻擊行為繞過這些防護設備。

      若要提高對PowerShell活動的檢測能力,方法就是手動執(zhí)行一些PowerShell操作,然后查看對應的檢測日志,檢測是否存在遺漏,以便完善安全產(chǎn)品的檢測能力。

      下面通過一個名為“Invoke-BaseConfig.ps1"的演示腳本,來展示相同的腳本在不同的工具中可能會有那些不同的行為。演示腳本的行為包括自定義函數(shù)、對本地可執(zhí)行文件進行調(diào)用、混淆以及調(diào)用其他 PowerShell 腳本等。


      3.1 Sysmon

      下面通過使用 Sysmon 來模擬殺毒軟件捕獲的內(nèi)容。

      調(diào)用 PowerShell.exe 執(zhí)行 cmdlet 時的樣子:

      PowerShell執(zhí)行上圖所示命令時,大多數(shù)命令行工具都會記錄整個命令。但在PowerShell終端中則無需先調(diào)用 PowerShell.exe,運行 cmdlet 時的產(chǎn)生日志如下圖:

      由于 cmdlet 是在已經(jīng)啟動的 PowerShell 進程中執(zhí)行,因此不會捕獲到任何命令行。

      執(zhí)行更復雜的腳本時捕獲的內(nèi)容如下:

      如上圖所示,腳本源文件本身并沒有被捕獲,但是任何直接與可執(zhí)行文件/進程創(chuàng)建(powershell.exe、net.exe)相關(guān)的命令都被捕獲。其他如混淆的命令則*沒有被捕獲。還有另一個被記錄下來的調(diào)用shell.ps1執(zhí)行命令,但該腳本并不在Invoke-BaseConfig.ps1 腳本的原始文件中。

      04PowerShell 日志記錄

      下表顯示了可用的 PowerShell 日志、所需的版本以及一些對應日志的附加說明:

      *表示默認不啟用

      4.1 Scriptblock日志

      Scriptblock 日志是可以啟用的用日志之一。在下面的屏幕截圖中,運行之前相同的命令,可以看到初始命令以及執(zhí)行腳本的全部源代碼,從日志分析和防守的角度上講,Scriptblock的日志粒度已經(jīng)非常詳細。

      4.2 Module日志

      使用Module記錄日志時,每個命令都會記錄成一個單獨的事件,某些情況下一個命令可能產(chǎn)生多個事件,這導致Module日志量會非常多。將這些事件與Scriptblock日志事件關(guān)聯(lián)后,可以看到命令在通過PowerShell管道時的詳細信息。通過這種方法不僅可以看到命令本身,還可以看到與該命令執(zhí)行時相關(guān)的變量以及輸出的值。因為Module日志會記錄變量的值,所以甚至可以在這些日志中分析到硬編碼的密碼或通過控制臺輸入的密碼。

      在下面的演示中,我們可以觀察到混淆命令在執(zhí)行時的細節(jié),該命令通過使用Set-ItemProperty修改注冊表,創(chuàng)建了一個開機啟動項 ,這個啟動項在每次系統(tǒng)啟動時下載另一個混淆命令并執(zhí)行:

      在此例子中看到,從最開始 Invoke-Expression初始化到 Set-ItemProperty 修改注冊表整個過程中Module記錄的多個事件。

      4.3 Transcription日志

      當需要確定事件是否成功執(zhí)行以及有哪些內(nèi)容輸出到會話時,Transcription日志是非常有用的。在下面的屏幕截圖中可以看到初始命令以及輸出到屏幕的所有內(nèi)容,通過上述這些的日志進行分析,可以很輕松看到PowerShell在執(zhí)行腳本做了什么。

      05PowerShell混淆

      5.1 混淆技巧

      PowerShell腳本在編寫方式上非常靈活,非常容易進行各種混淆。除此之外也可以使用混淆工具進行混淆,例如:

      Invoke-Obfuscation(https://github.com/danielbohannon/Invoke-Obfuscation)。

      如果是手動混淆,可以使用以下技術(shù):

      注意:PowerShell 包含一個 -encode 選項,可以執(zhí)行 base64 編碼的命令。這個選項是為了運行包含括號 ({}) 的復雜代碼塊的,所以并不算是混淆。

      5.2 Deep Scriptblock Logging

      4.1小節(jié)里,Scriptblock日志記錄了 Invoke-BaseConfig.ps1 的整個源代碼,但命令仍然是被混淆的。但由于我們擁有完整的源代碼,所以可以手動反混淆,只是會比較麻煩。從PowerShell v5.1 開始,PowerShell引入了一個名為“Deep Scriptblock Logging"的功能,這個功能在執(zhí)行混淆代碼時,會在剝離每一層混淆代碼的同時記錄下實際運行的代碼。

      在下面的示例中,可以看到通過CHAR 編碼的命令通過管道傳輸?shù)?For-EachObject 循環(huán),解碼后的命令被記錄到日志中:

      5.3 手動反混淆

      并非所有的混淆代碼都可以自動解碼,此時就需要手動解碼,手動解碼同樣也是利用PowerShell操作的。

      在上一節(jié)記錄的反混淆命令中,IEX Net.WebClient 命令沒有被反混淆。要手動對其進行反混淆,只需要復制括號里包含的字符串內(nèi)容,然后粘貼到PowerShell中,如下圖:

      PowerShell會自動對輸入的內(nèi)容解碼并輸出。

      5.4 backdoor.ps1和Shell.ps1

      繼續(xù)查看Scriptblock日志,查看Invoke-BaseConfig.ps1執(zhí)行之后的事件。如下圖,可以看到backdoor.ps1的全部源碼,backdoor.ps1禁用了Windows Defender,然后調(diào)用shell.ps1,Shell.ps1 ,其中包含大量 base64 編碼數(shù)據(jù):

      backdoor.ps1最初是從Invoke-BaseConfig.ps1中調(diào)用并執(zhí)行的,由于沒有直接調(diào)用PowerShell.exe,所以在3.1節(jié)中,Sysmon工具沒有記錄到這個事件。backdoor.ps1通過調(diào)用“PowerShell.exe -Exec Bypass"調(diào)用了shell.ps1,所以在3.1節(jié)中記錄shell.ps1執(zhí)行的事件,卻不知道shell.ps1的來源。

      5.5 Invoke-Decoder

      現(xiàn)在還剩下一個問題,shell.ps1 中的這一大塊 base64壓縮數(shù)據(jù)是什么,這里需要用到一個解碼工具:

      Invoke-Decoder(https://github.com/robwillisinfo/Invoke-Decoder)。

      運行Invoke-Decoder,選擇L加載字符串、S從終端加載字符串,然后復制需要解碼得字符到終端,如下圖:

      然后使用選項2,base64解碼和解壓縮:

      通過記事本打開剛剛解碼的文件,文件是MZ開頭的,說明這是一個可執(zhí)行文件。在文件中有“GruntStager"關(guān)鍵字,說明這個文件可能是一個Covenant

      https://www.cobbr.io/Covenant.html),C2地址是http://192.168.90.206:80。

      06PowerShell安全控制

      在前面的章節(jié)主要講增加對PowerShell的監(jiān)控和檢測能力,除此之外,還應該控制PowerShell的使用場景,提高系統(tǒng)安全性。

      6.1 受限語言模式(CLM)

      受限語言模式支持運行日常管理任務,限制了可以任意調(diào)用 Windows API 的敏感語言元素。啟用受限語言模式(CLM)可以阻止大多數(shù)的基于PowerShell 的惡意代碼運行。

      關(guān)于受限語言模式的更多信息可以參考:/powershell/powershell-constrained-language-mode/.

      6.2 限制 IT 管理權(quán)限(JEA)

      Just Enough Administration 比受限語言模式的控制更加完善,控制粒度更細。它是一種基于角色的訪問控制,可以限制用戶可以運行的 cmdlet、函數(shù)和外部命令。會話也是沙盒化的。

      關(guān)于JEA的更多信息可以參考:

      /en-us/previous-versions/dn896648(v=technet.10)

      6.3 應用鎖(AppLocker)

      AppLocker通過使用 CLM 和 JEA限制了攻擊者在 PowerShell 中的可以進行的攻擊行為,AppLocker 根據(jù)定義的策略控制用戶能夠啟動的內(nèi)容,以此限制攻擊行為。使用 AppLocker可以將定義的策略分配給組或個人。

      AppLocker 可以限制以下內(nèi)容:

      可執(zhí)行文件(.exe、.com)

      腳本(.js、.ps1、.vbs、.cmd、.bat)

      Windows 安裝程序文件(.mst、.msi、.msp)

      DLL 文件(.dll、.ocx)

      打包的應用程序/安裝程序 (appx)

      關(guān)于AppLocker的更多信息可以參考:

      /en-us/windows/security/threat-protection/windows-defender-application-control/applocker/applocker-overview

      07PowerShell 繞過

      7.1 PowerShell v2 降級攻擊

      PowerShell v2缺少微軟發(fā)布的較新的安全功能,比如PowerShell v2不支持AMSI。以下命令可以將 PowerShell “降級"到 v2,不僅可以避開 AMSI檢測,還可以避開大多數(shù)日志記錄功能,如下圖:

      如上圖所示日志,降級命令本身可以在Scriptblock (4104) 事件中檢測到,但是在降級之后檢測不到任何內(nèi)容。防止“降級攻擊"辦法就是刪除 PowerShell v2。

      關(guān)于PowerShell降級攻擊可以參考鏈接:https://robwillis.info/2020/01/disabling-powershell-v2-with-group-policy/

      7.2 非托管 PowerShell

      1.1章節(jié)提到,PowerShell的核心實際上是System.Management.Automation.dll,所以攻擊者可以在沒有PowerShell.exe的情況下運行PowerShell代碼。這也是為什么不推薦阻止PowerShell.exe原因之一。這種技術(shù)被稱為“非托管"PowerShell,這些工具通常在二進制文件中實現(xiàn)AMSI和PowerShell日志記錄,想要對這類攻擊進行檢測很困難。

      如下圖,powerless.exe是我們自己編譯的powershell的替代程序:

      下面是非托管的PowerShell的項目:

      UnmanagedPowerShell(https://github.com/leechristensen/UnmanagedPowerShell)

      SharpPick(https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick)

      PSAttack(https://github.com/jaredhaight/PSAttack)

      nps(https://github.com/Ben0xA/nps)

      InsecurePowerShell(https://github.com/cobbr/InsecurePowerShell)

      08防御 PowerShell 攻擊

      下表是總結(jié)了本文中講的概念和技術(shù),可以作為檢測PowerShell惡意活動的基本手段:

      使用支持 AMSI 的 EDR 和 殺毒軟件。

      PowerShell v5 Malicious自動記錄事件;

      Malicious自動日志事件是通過 AMSI 標記為“警告"級別的 4104/Scriptblock 事件,這些事件是檢測PowerShell的步,但是4014中存在一些正常的事件需要單獨處理。

      已知樣本

      針對已知的工具和降級攻擊創(chuàng)建基于簽名的告警規(guī)則。

      混淆

      分析字符的使用頻率(`,{},(), whitespace);

      在檢索數(shù)據(jù)時去除轉(zhuǎn)義字符 (`);

      檢測base64 之外的編碼技術(shù)。

      09總結(jié)

      PowerShell 工具是一把劍,一直以來都是網(wǎng)絡對抗中的熱點技術(shù),而且隨著微軟對PowerShell的投入越來越大,針對PowerShell的利用也將越來越復雜。身為安全人員,我們首先要熟知環(huán)境中正常 PowerShell 的行為特征以及惡意行為跡象。衡量并理解對手使用該工具的方式以及所發(fā)生的變化,是檢測并最終防御PowerShell攻擊的關(guān)鍵所在。

      原文鏈接:

      https://robwillis.info/2021/02/defending-against-powershell-attacks/

      聲明:

      1.本文檔由天融信安全團隊發(fā)布,未經(jīng)禁止第三方轉(zhuǎn)載及轉(zhuǎn)投。

      2.本文檔所提到的技術(shù)內(nèi)容及資訊僅供參考,有關(guān)內(nèi)容可能會隨時更新,天融信不另行通知。

      3.本文檔中提到的信息為正常公開的信息,若因本文檔或其所提到的任何信息引起了他人直接或間接的資料流失、利益損失,天融信及其員工不承擔任何責任。


      會員登錄

      ×

      請輸入賬號

      請輸入密碼

      =

      請輸驗證碼

      收藏該商鋪

      X
      該信息已收藏!
      標簽:
      保存成功

      (空格分隔,最多3個,單個標簽最多10個字符)

      常用:

      提示

      X
      您的留言已提交成功!我們將在第一時間回復您~
      產(chǎn)品對比 二維碼

      掃一掃訪問手機商鋪

      對比框

      在線留言