沈陽理工大學(xué) 劉珠光 李愛華 趙國棟 張?jiān)朴?曹子璨
Web網(wǎng)絡(luò)中掛馬網(wǎng)頁、釣魚網(wǎng)頁等黑頁的存在和傳播,無時無刻不威脅用戶使用網(wǎng)頁的安全,而且惡意頁面所采用的攻擊技術(shù)和欺騙手段也逐漸復(fù)雜化、多樣化。用戶在正常瀏覽網(wǎng)頁的時候,若點(diǎn)擊彈框、鏈接、圖片等就有可能中招,導(dǎo)致用戶處于不安全狀態(tài)。主機(jī)悄無聲息的被植入遠(yuǎn)控,成為肉雞、礦機(jī),這不僅僅消耗主機(jī)的處理器資源,還會導(dǎo)致用戶敏感數(shù)據(jù)泄露,更有甚者會利用該主機(jī)作為入口,去攻擊其他的用戶主機(jī)。這些黑頁的廣泛傳播,為黑產(chǎn)從業(yè)者帶來了可觀的利益。今天的網(wǎng)絡(luò)用戶、網(wǎng)絡(luò)應(yīng)用呈爆炸式增長,網(wǎng)絡(luò)的快速增長給黑頁的隱藏提供便利,層層嵌套使得更不容易發(fā)現(xiàn),而且網(wǎng)民的安全意識普遍不高,如何快速高效的識別惡意網(wǎng)頁成為當(dāng)今網(wǎng)絡(luò)亟待解決的問題。
網(wǎng)頁木馬是近幾年新出現(xiàn)的網(wǎng)絡(luò)攻擊形式,它偽裝成正常的網(wǎng)頁文件或者將惡意代碼插入到正常的網(wǎng)頁代碼之中,當(dāng)用戶和網(wǎng)頁進(jìn)行交互時,木馬就會通過漏洞自動將惡意程序植入到客戶端,導(dǎo)致客戶端機(jī)器中馬。
近年來檢測掛馬網(wǎng)頁的主要方式有如下兩種:基于正則的特征匹配檢測與客戶端蜜罐檢測技術(shù)。
(1)基于正則的特征匹配檢測。對常見的惡意代碼進(jìn)行規(guī)則入庫,然后通過將庫內(nèi)的規(guī)則與網(wǎng)頁進(jìn)行特征匹配,相似度達(dá)到一定程度則判定為惡意代碼,進(jìn)行標(biāo)記,反饋到客戶端,對用戶進(jìn)行提示。但是此類方式也存在很多的缺陷:網(wǎng)頁掛馬技術(shù)會隨著檢測技術(shù)的提升也在不斷深入,各種跳轉(zhuǎn)重定向、代碼混淆、框架掛馬層出不群。而且掃描檢測的時候需要很大帶寬,占用很多的CPU資源,會給企業(yè)帶來很高的成本。對于大量網(wǎng)站的企業(yè)來講,掃描檢測的效率也是不容忽視的問題,特征匹配需要將規(guī)則庫內(nèi)規(guī)則和網(wǎng)頁進(jìn)行逐一匹配,會有很高的時間成本。所以存在很多的問題影響到惡意代碼的檢測。
(2)客戶端蜜罐檢測技術(shù)。網(wǎng)頁惡意代碼常常隱藏到正常的網(wǎng)頁中,通過客戶端與服務(wù)器端的交互進(jìn)行傳播,蜜罐檢測技術(shù)是兩端交互之后,對客戶端的狀態(tài)進(jìn)行檢測,監(jiān)控客戶端是否出現(xiàn)異常的系統(tǒng)調(diào)用,是否會修改一些系統(tǒng)的默認(rèn)配置,是否會導(dǎo)致系統(tǒng)進(jìn)程和注冊表數(shù)據(jù)異常。蜜罐技術(shù)的實(shí)現(xiàn)策略有兩種:第一種策略,蜜罐系統(tǒng)直接安裝在客戶端,通過代理的方式進(jìn)行檢測,就是客戶端和服務(wù)器端交互的流量都要先通過蜜罐系統(tǒng)的檢測,對流量進(jìn)行行為和狀態(tài)檢測,如果出現(xiàn)異常狀態(tài),就將惡意代碼進(jìn)行攔截。但是這種方式會帶來交互速度過慢、消耗CPU資源、增加客戶端成本等等缺點(diǎn)。第二種策略,是大型網(wǎng)安公司,在公網(wǎng)部署蜜罐檢測系統(tǒng),對公網(wǎng)的資產(chǎn)進(jìn)行掃面檢測,對惡意代碼網(wǎng)頁進(jìn)行識別標(biāo)記,反饋到用戶,給用戶提醒,用戶注意防范。
通過搜索引擎和正則表達(dá)式的結(jié)合,在全網(wǎng)范圍內(nèi)搜索足夠多的網(wǎng)站地址,使用爬蟲獲取網(wǎng)站的目錄結(jié)構(gòu),以便于接下來進(jìn)行智能分析。
通常頁面會有各種快捷欄、導(dǎo)航條等等垃圾干擾信息,所以本系統(tǒng)采用基于DOM樹結(jié)構(gòu)的網(wǎng)頁內(nèi)容抽取技術(shù),通過遍歷DOM樹的每個節(jié)點(diǎn),將刪除掉網(wǎng)頁的非文本內(nèi)容,并提取網(wǎng)頁的關(guān)鍵信息。但是,由于部分網(wǎng)站結(jié)構(gòu)不是標(biāo)準(zhǔn)的DOM樹結(jié)構(gòu),在抽取信息時會出現(xiàn)錯誤。所以使用基于關(guān)鍵詞匹配的抽取技術(shù)作為補(bǔ)充,以確保抽取的頁面內(nèi)容的正確性。
選取智能分析算法,分析當(dāng)前已知的、開源的網(wǎng)頁掛馬的技術(shù):JS文件掛馬、body掛馬、XSS中掛馬、JS變形加密等,將其編寫入智能規(guī)則庫中。
將一些掛馬鏈接的關(guān)鍵字寫入規(guī)則文件,用于正則匹配,如圖1所示。
圖1 掛馬連接的關(guān)鍵字正則匹配
機(jī)器學(xué)習(xí)中最重要的是特征選擇。只有選擇合適的特征,訓(xùn)練有素的分類器才能具有良好的分類效果。
特征集合是網(wǎng)頁掛馬特征值的集合,當(dāng)網(wǎng)頁被掛馬之后,將網(wǎng)頁源碼中一處或者多處掛馬特征提取出來,作為網(wǎng)頁漏洞的特征,加入待檢測特征知識庫便于后續(xù)模塊的檢測。
特征提取模板是整個系統(tǒng)的核心,它的實(shí)現(xiàn)由兩部分組成,分別是HTML unit和Rhino,特征提取是由Rhino模塊負(fù)責(zé)進(jìn)行提取。然后對提取到的HTML頁面中的腳本代碼進(jìn)行解析,是通過HTML unit模塊實(shí)現(xiàn)對DOM樹形結(jié)構(gòu)的訪問,將提取的待檢測網(wǎng)頁的所有特征,形成完整的特征記錄,并加入待檢測特征知識庫中,為檢測模塊提供使用。
系統(tǒng)主要采用正則匹配的方式進(jìn)行檢測。對提取到的網(wǎng)頁代碼與規(guī)則庫中的特征代碼進(jìn)行匹配,若匹配成功則提取惡意代碼程序,并做紀(jì)錄加入到漏洞報告中,直至所有同樣的特征全部被提取出來。
基于正則規(guī)則對特征庫的匹配算法技術(shù),除了對匹配的準(zhǔn)確率有較高要求,還對匹配效率有很高的要求,所以系統(tǒng)實(shí)現(xiàn)過程中選取高效且準(zhǔn)確的規(guī)則匹配算法,對本系統(tǒng)的匹配效率和準(zhǔn)確率的提高有著重大的意義。
采用BM字符串搜索算法,BM算法是一種非常高效的字符串搜索算法,它將好后綴規(guī)則和壞字符規(guī)則完美糅合。BM算法的基本流程,是通過比較兩個文本字符串,即文本字符串T和模式字符串P。也就是說,當(dāng)文本字符串中的字符不匹配時,此刻的字符稱為壞字符,模式字符串將向右移動。從錯誤字符右端的位置減去作為錯誤字符在模式字符串中的位置的模式字符串移動的位數(shù)。不良字符規(guī)則在文本字符串T上展開。對于后綴良好規(guī)則,在模式字符串中成功匹配的字符串是后綴良好字符串。此時,目標(biāo)字符串從右元素開始并與左匹配,并與良好的后綴對齊。兩種并行算法的目的是使P字符串每次盡可能地向右移動。一般而言,下一個移位的大小取決于兩個并行操作的最大值,以減少匹配不必要的字段浪費(fèi)時間,從而節(jié)省時間成本。
當(dāng)掃描完一個網(wǎng)站后,將在檢測系統(tǒng)目錄下生成漏洞報告,以便于后續(xù)的修復(fù)過程使用。
此處采用兩種方式獲取資產(chǎn):一是通過fofa的API將資產(chǎn)批量爬取用于檢測;二是通過將域名收集到本地的文件下,進(jìn)行讀入然后用于檢測。域名收集如圖2所示,匹配結(jié)果如圖3所示。
圖2 域名收集
圖3 匹配結(jié)果
對提取到的特征代碼進(jìn)行檢測,將特征代碼與智能規(guī)則庫文本進(jìn)行正則匹配,匹配到與規(guī)則相關(guān)的特征進(jìn)行輸出,記錄到結(jié)果文件中,給出檢測到的相應(yīng)關(guān)鍵字,便于后續(xù)的排查和修復(fù)。
結(jié)束語:基于智能分析的網(wǎng)頁掛馬檢測系統(tǒng),對掛馬的特征關(guān)鍵字單獨(dú)編寫入庫。方便后期的添加和修改。采用多線程的方式進(jìn)行匹配提高檢測的效率,節(jié)約時間成本。采用BM匹配算法提高匹配的準(zhǔn)確度,好后綴和壞字符的匹配模式可有效減少誤報。智能分析的引入也大大減少人工的付出,對掛馬網(wǎng)頁的檢測與排查具有很高的實(shí)用價值。