本發(fā)明涉及信息安全技術(shù)領(lǐng)域,尤其涉及一種防御PowerShell惡意代碼執(zhí)行的方法及系統(tǒng)。
背景技術(shù):
目前使用PowerShell編寫的惡意腳本具有無實體文件的特點(diǎn),這種特點(diǎn)可以突破傳統(tǒng)反病毒產(chǎn)品的檢測,并被越來越多的攻擊者所使用。近年來,更被APT(高級可持續(xù)威脅)和勒索軟件頻繁使用。
目前大部分反病毒軟件是基于對實體文件進(jìn)行提取特征的檢測,對無實體惡意代碼的檢測存在一定程度上的局限性?,F(xiàn)有的內(nèi)存檢測更是基于代碼基因特征的形式對惡意代碼進(jìn)行檢測,而加密型PowerShell腳本并不能使用這種提取代碼基因特征的方法進(jìn)行檢測。
技術(shù)實現(xiàn)要素:
針對上述技術(shù)問題,本發(fā)明通過對Powershell惡意代碼進(jìn)行分析,預(yù)先生成進(jìn)程鏈白名單和進(jìn)程鏈黑名單,進(jìn)而基于進(jìn)程鏈關(guān)系的匹配,主動防御利用PowerShell執(zhí)行惡意操作的行為,彌補(bǔ)了傳統(tǒng)反病毒產(chǎn)品無法有效檢測PowerShell惡意代碼的空白。
本發(fā)明采用如下方法來實現(xiàn):一種防御PowerShell惡意代碼執(zhí)行的方法,包括:
獲取系統(tǒng)內(nèi)與PowerShell.exe相關(guān)的進(jìn)程鏈;
將所述進(jìn)程鏈與進(jìn)程鏈白名單匹配,若匹配成功則允許操作執(zhí)行;
將所述進(jìn)程鏈與進(jìn)程鏈黑名單匹配,若匹配成功則阻止操作執(zhí)行;
若所述進(jìn)程鏈與進(jìn)程鏈白名單和進(jìn)程鏈黑名單均匹配失敗,則由用戶決定是否允許操作執(zhí)行。
進(jìn)一步地,所述獲取系統(tǒng)內(nèi)與PowerShell.exe相關(guān)的進(jìn)程鏈,具體為:
利用進(jìn)程快照將系統(tǒng)內(nèi)所有進(jìn)程記錄到進(jìn)程列表中;
獲取進(jìn)程列表中每個進(jìn)程的父進(jìn)程,若無父進(jìn)程則判定為根進(jìn)程,進(jìn)而形成二節(jié)點(diǎn)的進(jìn)程關(guān)系;
基于二節(jié)點(diǎn)的進(jìn)程關(guān)系得到多節(jié)點(diǎn)的進(jìn)程關(guān)系,進(jìn)而得到系統(tǒng)內(nèi)各進(jìn)程鏈;
篩選與PowerShell.exe相關(guān)的進(jìn)程鏈。
上述方法中,所述進(jìn)程鏈白名單,包括:Explorer.exe->PowerShell.exe;Explorer.exe->cmd.exe->PowerShell.exe。
上述方法中,所述進(jìn)程鏈黑名單中存儲有利用其它程序間接調(diào)用PowerShell.exe的所有進(jìn)程鏈,包括:
Explorer.exe->WINWORD.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->EXCEL.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->cmd.exe->PowerShell.exe;
Explorer.exe-> Wscript.exe->cmd.exe->PowerShell.exe;
Explorer.exe->*.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->WINWORD.EXE->PowerShell.exe;
Explorer.exe->EXCEL.EXE->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->PowerShell.exe;
Explorer.exe-> Wscript.exe->PowerShell.exe;
Explorer.exe->*.EXE->PowerShell.exe;其中,所述*.EXE為除cmd.exe之外的其他進(jìn)程。
本發(fā)明可以采用如下系統(tǒng)來實現(xiàn):一種防御PowerShell惡意代碼執(zhí)行的系統(tǒng),包括:
進(jìn)程鏈獲取模塊,用于獲取系統(tǒng)內(nèi)與PowerShell.exe相關(guān)的進(jìn)程鏈;
白名單匹配模塊,用于將所述進(jìn)程鏈與進(jìn)程鏈白名單匹配,若匹配成功則允許操作執(zhí)行;
黑名單匹配模塊,用于將所述進(jìn)程鏈與進(jìn)程鏈黑名單匹配,若匹配成功則阻止操作執(zhí)行;
彈窗提示模塊,用于若所述進(jìn)程鏈與進(jìn)程鏈白名單和進(jìn)程鏈黑名單均匹配失敗,則由用戶決定是否允許操作執(zhí)行。
進(jìn)一步地,所述進(jìn)程鏈獲取模塊,具體用于:
利用進(jìn)程快照將系統(tǒng)內(nèi)所有進(jìn)程記錄到進(jìn)程列表中;
獲取進(jìn)程列表中每個進(jìn)程的父進(jìn)程,若無父進(jìn)程則判定為根進(jìn)程,進(jìn)而形成二節(jié)點(diǎn)的進(jìn)程關(guān)系;
基于二節(jié)點(diǎn)的進(jìn)程關(guān)系得到多節(jié)點(diǎn)的進(jìn)程關(guān)系,進(jìn)而得到系統(tǒng)內(nèi)各進(jìn)程鏈;
篩選與PowerShell.exe相關(guān)的進(jìn)程鏈。
上述系統(tǒng)中,所述進(jìn)程鏈白名單,包括:Explorer.exe->PowerShell.exe;Explorer.exe->cmd.exe->PowerShell.exe。
上述系統(tǒng)中,所述進(jìn)程鏈黑名單中存儲有利用其它程序間接調(diào)用PowerShell.exe的所有進(jìn)程鏈,包括:
Explorer.exe->WINWORD.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->EXCEL.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->cmd.exe->PowerShell.exe;
Explorer.exe-> Wscript.exe->cmd.exe->PowerShell.exe;
Explorer.exe->*.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->WINWORD.EXE->PowerShell.exe;
Explorer.exe->EXCEL.EXE->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->PowerShell.exe;
Explorer.exe-> Wscript.exe->PowerShell.exe;
Explorer.exe->*.EXE->PowerShell.exe;其中,所述*.EXE為除cmd.exe之外的其他進(jìn)程。
綜上,本發(fā)明通過分析PowerShell惡意代碼的特點(diǎn),使用進(jìn)程鏈關(guān)系進(jìn)行主動防御,將用戶常規(guī)場景下使用PowerShell的進(jìn)程鏈作為進(jìn)程鏈白名單,將利用其它應(yīng)用程序間接調(diào)用PowerShell的進(jìn)程鏈關(guān)系作為進(jìn)程鏈黑名單,進(jìn)而及時有效地阻止非法進(jìn)程的執(zhí)行。
有益效果為:本發(fā)明所述技術(shù)方案能夠克服傳統(tǒng)檢測工具需要依賴于已知特征的缺陷,本發(fā)明所述方法及系統(tǒng)不僅可供個人使用,同時可供企業(yè)內(nèi)部使用,不僅能夠有效阻止已知的基于PowerShell惡意代碼的執(zhí)行,而且能夠有效防御未知的基于PowerShell惡意代碼的執(zhí)行,進(jìn)而能夠阻止利用PowerShell進(jìn)行的APT攻擊和勒索軟件的入侵。
附圖說明
為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種防御PowerShell惡意代碼執(zhí)行的方法實施例流程圖;
圖2為本發(fā)明提供的一種防御PowerShell惡意代碼執(zhí)行的系統(tǒng)實施例結(jié)構(gòu)圖。
具體實施方式
本發(fā)明給出了一種防御PowerShell惡意代碼執(zhí)行的方法及系統(tǒng)實施例,為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明中技術(shù)方案作進(jìn)一步詳細(xì)的說明:
目前PowerShell惡意代碼被多種惡意程序利用,來傳播和執(zhí)行具有實際惡意功能的程序。主要包括APT和勒索軟件,例如:office宏代碼中嵌入PowerShell代碼、安裝包程序嵌入PowerShell代碼、數(shù)據(jù)庫文件嵌入PowerShell代碼等等。由于將腳本代碼嵌入其他程序的方法免殺能力強(qiáng),且代碼隱蔽性功能好,被諸多惡意代碼作者利用。而正常使用PowerShell腳本的用戶不會將代碼嵌入到其他應(yīng)用程序中?;诖耍景l(fā)明提供如下實施例在無特征的情況下有效阻止PowerShell惡意代碼的執(zhí)行。
本發(fā)明首先提供了一種防御PowerShell惡意代碼執(zhí)行的方法實施例,如圖1所示,包括:
S101:獲取系統(tǒng)內(nèi)與PowerShell.exe相關(guān)的進(jìn)程鏈;
具體為:利用進(jìn)程快照將系統(tǒng)內(nèi)所有進(jìn)程記錄到進(jìn)程列表中;
獲取進(jìn)程列表中每個進(jìn)程的父進(jìn)程,若無父進(jìn)程則判定為根進(jìn)程,進(jìn)而形成二節(jié)點(diǎn)的進(jìn)程關(guān)系;
基于二節(jié)點(diǎn)的進(jìn)程關(guān)系得到多節(jié)點(diǎn)的進(jìn)程關(guān)系,進(jìn)而得到系統(tǒng)內(nèi)各進(jìn)程鏈;
篩選與PowerShell.exe相關(guān)的進(jìn)程鏈。
其中,可以利用CreateToolhelp32Snapshot()函數(shù)獲取進(jìn)程快照。
S102:將所述進(jìn)程鏈與進(jìn)程鏈白名單匹配,若匹配成功則允許操作執(zhí)行,否則執(zhí)行S103;
其中,正常用戶在使用PowerShell.exe時,其進(jìn)程鏈關(guān)系中的父進(jìn)程為Explorer.exe或者cmd.exe;因此,所述進(jìn)程鏈白名單,包括:Explorer.exe->PowerShell.exe;Explorer.exe->cmd.exe->PowerShell.exe。
S103:將所述進(jìn)程鏈與進(jìn)程鏈黑名單匹配,若匹配成功則阻止操作執(zhí)行,否則執(zhí)行S104;
其中,所述進(jìn)程鏈黑名單中存儲有利用其它程序間接調(diào)用PowerShell.exe的所有進(jìn)程鏈,包括:
Explorer.exe->WINWORD.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->EXCEL.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->cmd.exe->PowerShell.exe;
Explorer.exe-> Wscript.exe->cmd.exe->PowerShell.exe;
Explorer.exe->*.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->WINWORD.EXE->PowerShell.exe;
Explorer.exe->EXCEL.EXE->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->PowerShell.exe;
Explorer.exe-> Wscript.exe->PowerShell.exe;
Explorer.exe->*.EXE->PowerShell.exe;其中,所述*.EXE為除cmd.exe之外的其他進(jìn)程。
S104:彈窗給用戶,由用戶決定是否允許操作執(zhí)行。
其中,若當(dāng)前的進(jìn)程鏈關(guān)系與進(jìn)程鏈白名單和進(jìn)程鏈黑名單均匹配失敗,則彈窗給用戶,如果不是用戶在使用PowerShell則用戶會選擇阻止操作執(zhí)行。而上述進(jìn)程鏈白名單和進(jìn)程鏈黑名單基本包含了所有進(jìn)程鏈關(guān)系,因此,除非特殊情況,基本不需要用戶去主動干預(yù),本發(fā)明所述方法實施例可以自動完成對PowerShell惡意代碼執(zhí)行的阻止操作。
本發(fā)明其次提供了一種防御PowerShell惡意代碼執(zhí)行的系統(tǒng)實施例,如圖2所示,包括:
進(jìn)程鏈獲取模塊201,用于獲取系統(tǒng)內(nèi)與PowerShell.exe相關(guān)的進(jìn)程鏈;
白名單匹配模塊202,用于將所述進(jìn)程鏈與進(jìn)程鏈白名單匹配,若匹配成功則允許操作執(zhí)行;
黑名單匹配模塊203,用于將所述進(jìn)程鏈與進(jìn)程鏈黑名單匹配,若匹配成功則阻止操作執(zhí)行;
彈窗提示模塊204,用于若所述進(jìn)程鏈與進(jìn)程鏈白名單和進(jìn)程鏈黑名單均匹配失敗,則由用戶決定是否允許操作執(zhí)行。
優(yōu)選地,所述進(jìn)程鏈獲取模塊,具體用于:
利用進(jìn)程快照將系統(tǒng)內(nèi)所有進(jìn)程記錄到進(jìn)程列表中;
獲取進(jìn)程列表中每個進(jìn)程的父進(jìn)程,若無父進(jìn)程則判定為根進(jìn)程,進(jìn)而形成二節(jié)點(diǎn)的進(jìn)程關(guān)系;
基于二節(jié)點(diǎn)的進(jìn)程關(guān)系得到多節(jié)點(diǎn)的進(jìn)程關(guān)系,進(jìn)而得到系統(tǒng)內(nèi)各進(jìn)程鏈;
篩選與PowerShell.exe相關(guān)的進(jìn)程鏈。
上述系統(tǒng)實施例中,所述進(jìn)程鏈白名單,包括:Explorer.exe->PowerShell.exe;Explorer.exe->cmd.exe->PowerShell.exe。
上述系統(tǒng)實施例中,所述進(jìn)程鏈黑名單中存儲有利用其它程序間接調(diào)用PowerShell.exe的所有進(jìn)程鏈,包括:
Explorer.exe->WINWORD.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->EXCEL.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->cmd.exe->PowerShell.exe;
Explorer.exe-> Wscript.exe->cmd.exe->PowerShell.exe;
Explorer.exe->*.EXE->cmd.exe->PowerShell.exe;
Explorer.exe->WINWORD.EXE->PowerShell.exe;
Explorer.exe->EXCEL.EXE->PowerShell.exe;
Explorer.exe->POWERPNT.EXE->PowerShell.exe;
Explorer.exe-> Wscript.exe->PowerShell.exe;
Explorer.exe->*.EXE->PowerShell.exe;其中,所述*.EXE為除cmd.exe之外的其他進(jìn)程。
本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同或相似的部分互相參見即可,每個實施例重點(diǎn)說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
如上所述,上述實施例給出了一種防御PowerShell惡意代碼執(zhí)行的方法及系統(tǒng)實施例,首先獲取系統(tǒng)內(nèi)與PowerShell.exe相關(guān)的進(jìn)程鏈,并與預(yù)先準(zhǔn)備的進(jìn)程鏈白名單和進(jìn)程鏈黑名單匹配,若匹配成功則按照預(yù)設(shè)操作執(zhí)行,否則彈窗提示用戶,由用戶選擇如何操作。上述實施例利用與PowerShell相關(guān)的進(jìn)程鏈關(guān)系進(jìn)而判定是否是PowerShell相關(guān)的惡意代碼,進(jìn)而彌補(bǔ)了反病毒軟件對PowerShell惡意代碼檢測的空白。
以上實施例用以說明而非限制本發(fā)明的技術(shù)方案。不脫離本發(fā)明精神和范圍的任何修改或局部替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。