惡意軟件通過鼠標(biāo)功能逃避檢測
惡意軟件開發(fā)者繼續(xù)部署“聰明的”防護(hù)程序,這些程序通過隱藏在操作系統(tǒng)例程后面來躲避自動(dòng)檢測,但與此同時(shí),惡意軟件用于保持隱蔽的相同方法也可能用于標(biāo)記出惡意代碼。
賽門鐵克研究人員最近發(fā)現(xiàn)了一種遠(yuǎn)程訪問木馬(RAT),這種木馬能夠通過隱藏在與外部設(shè)備(例如鼠標(biāo))通信的例程背后來逃避檢測,它能夠逃避檢測是因?yàn)椋寒?dāng)鼠標(biāo)不使用時(shí),惡意代碼保持非活動(dòng)狀態(tài),這樣就能夠逃避虛擬環(huán)境中動(dòng)態(tài)分析系統(tǒng)的檢查。
賽門鐵克的Hiroshi Shinotsuka寫道:“如果惡意軟件能夠躲過自動(dòng)威脅分析系統(tǒng)的檢查,它就可以混在數(shù)百萬的示例文件中,這樣防病毒應(yīng)用將無法發(fā)現(xiàn)它是惡意軟件。因此,惡意軟件和包裝程序作者都試圖利用這種技術(shù),來使惡意文件逃避自動(dòng)威脅分析系統(tǒng)的檢測。”
Shinotsuka解釋說,此類型惡意軟件逃避檢測能力的關(guān)鍵在于利用系統(tǒng)范圍內(nèi)的“掛鉤”,即消息處理機(jī)制,該機(jī)制允許鼠標(biāo)驅(qū)動(dòng)程序等應(yīng)用安裝一個(gè)子例程來監(jiān)測等待被激活的系統(tǒng)消息流量。賽門鐵克發(fā)現(xiàn)的這個(gè)惡意軟件利用了一個(gè)“等待掛鉤”,在使用鼠標(biāo)導(dǎo)致的激活之前,它都保持休眠狀態(tài)。
KNOS項(xiàng)目聯(lián)合創(chuàng)始人兼架構(gòu)師Kevin McAleavey表示:“問題是,惡意軟件開發(fā)者利用各種系統(tǒng)“掛鉤”已經(jīng)多年,動(dòng)態(tài)分析系統(tǒng)應(yīng)該早就設(shè)計(jì)好彌補(bǔ)這個(gè)威脅檢測中的盲點(diǎn)。賽門鐵克所指的系統(tǒng)范圍內(nèi)的掛鉤早已過時(shí),自動(dòng)分析系統(tǒng)早就應(yīng)該進(jìn)行檢測,同時(shí)檢測合法程序試圖對任何掛鉤的使用。”自1996年以來,McAleavey就一直活躍在反惡意軟件研究和安全產(chǎn)品開發(fā)。
這個(gè)問題歸結(jié)到底是人力資源的問題。由于每天平均出現(xiàn)一百萬個(gè)新惡意軟件變種,我們不可能手動(dòng)檢查每個(gè)樣本的功能以評估哪個(gè)樣本應(yīng)該被放入防病毒軟件進(jìn)行分析,所以,我們需要自動(dòng)化威脅分析系統(tǒng)來以更有效地方式來分析代碼行為。
由于自動(dòng)檢測可能無法識(shí)別像賽門鐵克發(fā)現(xiàn)的RAT這樣的惡意軟件,McAleavey認(rèn)為,任何使用“掛鉤”的應(yīng)用都應(yīng)該被標(biāo)記,并進(jìn)行手動(dòng)分析,但目前殺毒行業(yè)已經(jīng)不堪重負(fù),具有惡意軟件分析專業(yè)技能的人員十分短缺,他們根本沒有時(shí)間來手動(dòng)分析這些代碼,因此這不可能實(shí)現(xiàn)。
微軟公開發(fā)布的MSDN文檔中詳細(xì)地列明了各種“可掛鉤”Windows事件。例如,McAleavey指出了有“等待掛鉤”的各種事件,惡意軟件設(shè)計(jì)者可以用它們中任何一個(gè)激活以下代碼:
◆WH_CALLWNDPROC -等待特定消息從一個(gè)窗口傳遞到另一個(gè)窗口
◆WH_CBT –這很過時(shí)了,它支持“計(jì)算機(jī)輔助培訓(xùn)”,并被用于擊鍵記錄/回放宏
◆WH_GETMESSAGE –檢索鼠標(biāo)、鍵盤或者任何其他系統(tǒng)輸入
◆WH_KEYBOARD –鍵盤掛鉤,鍵盤記錄器的首選攻擊因子
◆ WH_MOUSE –鼠標(biāo)掛鉤,賽門鐵克指的就是這個(gè)
◆WH_MSGFILTER –檢測對按鈕、菜單或者其他Windows功能的觸動(dòng)
◆WH_DEBUG –可能觸發(fā)調(diào)試器的任何溢出
McAleavey解釋說,上面列出“掛鉤”函數(shù)只是少數(shù)可供利用的“調(diào)試”函數(shù),例如能夠檢測機(jī)器是否在虛擬模式下運(yùn)行,檢查防病毒軟件是否為了檢測插入其自己的掛鉤,以及是否徹底檢測到轉(zhuǎn)移程序到獨(dú)立的惡意DLL以控制病毒感染。WH_DEBUG掛鉤控制對所有對其他WH掛鉤的訪問,并能中斷任何其他掛鉤,(例如)檢查這些掛鉤是否應(yīng)該繼續(xù)或者采取其他行動(dòng)來取代原有函數(shù)。這也是惡意軟件如何檢測防病毒軟件是否正在監(jiān)控其他掛鉤,如果是這樣的話,就能夠逃避檢測。
McAleavey認(rèn)為微軟調(diào)試函數(shù)的問題出現(xiàn)在零售版本的操作系統(tǒng)中。微軟已經(jīng)提供了其所有操作系統(tǒng)的開發(fā)者版本,其中包含大量調(diào)試功能和調(diào)試符號(hào)以用于為Windows平臺(tái)編寫軟件,所以這些函數(shù)不必出現(xiàn)在零售版本中。結(jié)果是,微軟的調(diào)試函數(shù)總是被惡意軟件用來隱藏自己。分析師做的第一件事情是檢查任何樣本的函數(shù)調(diào)用,以檢測是否有任何調(diào)試調(diào)用,然后仔細(xì)地跟蹤它們。讓我非常驚訝的是,自動(dòng)系統(tǒng)沒有對另一個(gè)調(diào)試調(diào)用做出任何標(biāo)記。”
由于每個(gè)調(diào)試功能都是被枚舉,并列在所有可執(zhí)行文件中,任何自動(dòng)系統(tǒng)應(yīng)該可以很容易地在提交的樣本中發(fā)現(xiàn)它們的存在并采取行動(dòng)。對程序中調(diào)試掛鉤的任何調(diào)用都會(huì)讓調(diào)用在程序本身中變得可見,所以任何自動(dòng)分析系統(tǒng)都可能發(fā)現(xiàn)對SetWindowsHookEx的調(diào)用,并標(biāo)記它以進(jìn)一步分析。這些調(diào)用沒有隱藏,它們在被分析的樣本中,因此,所有自動(dòng)系統(tǒng)需要做的是,在掃描文件時(shí)匹配字符。
McAleavey說:“我們長久以來忽略它們的存在,這似乎有些違反常識(shí)。在沒有特定理由的情況下,合法軟件不應(yīng)該會(huì)進(jìn)行這種調(diào)試呼叫,當(dāng)檢測到這種函數(shù)時(shí),應(yīng)該立即對未知可執(zhí)行文件進(jìn)行標(biāo)記,直到證明其‘清白’之前,都應(yīng)該保持標(biāo)記。”