近期,火絨工程師在關(guān)注安全動(dòng)態(tài)過(guò)程中發(fā)現(xiàn),存在一種后門(mén)病毒以偽裝成搜狗輸入法的形式進(jìn)行傳播。此病毒采用正規(guī)簽名內(nèi)嵌惡意腳本的手段,以規(guī)避安全檢測(cè)。其釋放的其他 PE 文件均為帶有數(shù)字簽名的白文件,并借助執(zhí)行 PowerShell 和 VBScript 腳本的方式來(lái)釋放和運(yùn)行后門(mén)。其中,遠(yuǎn)控服務(wù)器的域名通過(guò)查詢(xún) TXT 記錄動(dòng)態(tài)獲取,最終等待遠(yuǎn)控服務(wù)器下達(dá)屏幕監(jiān)控、鍵盤(pán)監(jiān)控、執(zhí)行 PowerShell 腳本等指令。目前,火絨安全產(chǎn)品能夠?qū)@些病毒進(jìn)行攔截和查殺。
查殺圖
流程圖
1 樣本分析
1.1 啟動(dòng)階段
啟動(dòng)該文件并首次運(yùn)行 PowerShell 腳本:此為 Inno 安裝包,名為 sogou_pinyin_16c.exe,偽裝成搜狗輸入法的安裝包(且具備正規(guī)簽名)。運(yùn)行此安裝包會(huì)釋放諸多文件,隨后借助 toolsps.exe 傳遞參數(shù)(該參數(shù)即為 PowerShell 腳本)以運(yùn)行 PowerShell 腳本。toolsps.exe 原名為 SQLPS.exe,是 SQL Server 所提供的一個(gè) Windows PowerShell 模塊,可用于運(yùn)行 PowerShell 腳本。
對(duì) 360 進(jìn)行檢測(cè)并執(zhí)行不同邏輯操作:其 PowerShell 指令如圖所示。該指令首先會(huì)判斷 360 是否存在,若 360 存在,則執(zhí)行 4.txt 腳本(此腳本包含安裝輸入法的命令);若 360 不存在,則安裝搜狗輸入法并執(zhí)行 3.txt 腳本。
釋放的文件與啟動(dòng)腳本
搜狗輸入法安裝包數(shù)字簽名
3.txt 與 4.txt 腳本情況:3.txt 腳本會(huì)直接調(diào)用后門(mén)模塊中的 Main 函數(shù);4.txt 腳本是專(zhuān)門(mén)針對(duì)殺毒軟件設(shè)計(jì)的腳本,與 3.txt 腳本不同,其會(huì)采用模擬用戶(hù)輸入的方式,通過(guò)執(zhí)行搜狗輸入法安裝包和利用 mshta.exe 調(diào)用 escsvc.exe 中的惡意腳本,同時(shí)二者最終目的均為調(diào)用后門(mén)模塊中的 Main 函數(shù)。
腳本對(duì)比圖
正規(guī)簽名中嵌入惡意腳本:escsvc.exe 程序的數(shù)據(jù)簽名為正規(guī)簽名,然而該程序的 Security 區(qū)(即簽名區(qū)域)被追加了惡意腳本。這是由于 Windows 在校驗(yàn)簽名時(shí)會(huì)忽略特定區(qū)域,使得往該區(qū)域追加內(nèi)容不會(huì)影響簽名的正確性。這進(jìn)而導(dǎo)致安全軟件在驗(yàn)證簽名正確性后便直接放行,從而達(dá)成免殺效果。
正規(guī)簽名
簽名驗(yàn)證通過(guò)的具體細(xì)節(jié):經(jīng)對(duì)wintrust.dll驗(yàn)證模塊進(jìn)行分析,發(fā)現(xiàn)該模塊在驗(yàn)證PE文件數(shù)據(jù)簽名時(shí),會(huì)忽略CheckSum、Security和Security區(qū)。這是由于計(jì)算結(jié)果將會(huì)被寫(xiě)回到Security區(qū),若不予以忽略,將會(huì)致使哈希值出現(xiàn)不一致的情況。CheckSum的情形與此相同。
排除特定區(qū)域
mshta.exe 對(duì) escsvc.exe 進(jìn)行解析執(zhí)行:當(dāng) mshta.exe 程序傳遞參數(shù) escsvc.exe 時(shí),會(huì)對(duì)數(shù)字簽名中的 VBS 腳本進(jìn)行解析執(zhí)行。經(jīng)測(cè)試可知,僅當(dāng)傳遞參數(shù)的文件名后綴為 .txt 時(shí),才不會(huì)解析其中的腳本;而當(dāng)文件名后綴為 .exe 等其他類(lèi)型或無(wú)后綴名時(shí),會(huì)對(duì)其中