沈陽理工大學 劉珠光 李愛華 趙國棟 張云宇 曹子璨
Web網絡中掛馬網頁、釣魚網頁等黑頁的存在和傳播,無時無刻不威脅用戶使用網頁的安全,而且惡意頁面所采用的攻擊技術和欺騙手段也逐漸復雜化、多樣化。用戶在正常瀏覽網頁的時候,若點擊彈框、鏈接、圖片等就有可能中招,導致用戶處于不安全狀態。主機悄無聲息的被植入遠控,成為肉雞、礦機,這不僅僅消耗主機的處理器資源,還會導致用戶敏感數據泄露,更有甚者會利用該主機作為入口,去攻擊其他的用戶主機。這些黑頁的廣泛傳播,為黑產從業者帶來了可觀的利益。今天的網絡用戶、網絡應用呈爆炸式增長,網絡的快速增長給黑頁的隱藏提供便利,層層嵌套使得更不容易發現,而且網民的安全意識普遍不高,如何快速高效的識別惡意網頁成為當今網絡亟待解決的問題。
網頁木馬是近幾年新出現的網絡攻擊形式,它偽裝成正常的網頁文件或者將惡意代碼插入到正常的網頁代碼之中,當用戶和網頁進行交互時,木馬就會通過漏洞自動將惡意程序植入到客戶端,導致客戶端機器中馬。
近年來檢測掛馬網頁的主要方式有如下兩種:基于正則的特征匹配檢測與客戶端蜜罐檢測技術。
(1)基于正則的特征匹配檢測。對常見的惡意代碼進行規則入庫,然后通過將庫內的規則與網頁進行特征匹配,相似度達到一定程度則判定為惡意代碼,進行標記,反饋到客戶端,對用戶進行提示。但是此類方式也存在很多的缺陷:網頁掛馬技術會隨著檢測技術的提升也在不斷深入,各種跳轉重定向、代碼混淆、框架掛馬層出不群。而且掃描檢測的時候需要很大帶寬,占用很多的CPU資源,會給企業帶來很高的成本。對于大量網站的企業來講,掃描檢測的效率也是不容忽視的問題,特征匹配需要將規則庫內規則和網頁進行逐一匹配,會有很高的時間成本。所以存在很多的問題影響到惡意代碼的檢測。
(2)客戶端蜜罐檢測技術。網頁惡意代碼常常隱藏到正常的網頁中,通過客戶端與服務器端的交互進行傳播,蜜罐檢測技術是兩端交互之后,對客戶端的狀態進行檢測,監控客戶端是否出現異常的系統調用,是否會修改一些系統的默認配置,是否會導致系統進程和注冊表數據異常。蜜罐技術的實現策略有兩種:第一種策略,蜜罐系統直接安裝在客戶端,通過代理的方式進行檢測,就是客戶端和服務器端交互的流量都要先通過蜜罐系統的檢測,對流量進行行為和狀態檢測,如果出現異常狀態,就將惡意代碼進行攔截。但是這種方式會帶來交互速度過慢、消耗CPU資源、增加客戶端成本等等缺點。第二種策略,是大型網安公司,在公網部署蜜罐檢測系統,對公網的資產進行掃面檢測,對惡意代碼網頁進行識別標記,反饋到用戶,給用戶提醒,用戶注意防范。
通過搜索引擎和正則表達式的結合,在全網范圍內搜索足夠多的網站地址,使用爬蟲獲取網站的目錄結構,以便于接下來進行智能分析。
通常頁面會有各種快捷欄、導航條等等垃圾干擾信息,所以本系統采用基于DOM樹結構的網頁內容抽取技術,通過遍歷DOM樹的每個節點,將刪除掉網頁的非文本內容,并提取網頁的關鍵信息。但是,由于部分網站結構不是標準的DOM樹結構,在抽取信息時會出現錯誤。所以使用基于關鍵詞匹配的抽取技術作為補充,以確保抽取的頁面內容的正確性。
選取智能分析算法,分析當前已知的、開源的網頁掛馬的技術:JS文件掛馬、body掛馬、XSS中掛馬、JS變形加密等,將其編寫入智能規則庫中。
將一些掛馬鏈接的關鍵字寫入規則文件,用于正則匹配,如圖1所示。

圖1 掛馬連接的關鍵字正則匹配
機器學習中最重要的是特征選擇。只有選擇合適的特征,訓練有素的分類器才能具有良好的分類效果。
特征集合是網頁掛馬特征值的集合,當網頁被掛馬之后,將網頁源碼中一處或者多處掛馬特征提取出來,作為網頁漏洞的特征,加入待檢測特征知識庫便于后續模塊的檢測。
特征提取模板是整個系統的核心,它的實現由兩部分組成,分別是HTML unit和Rhino,特征提取是由Rhino模塊負責進行提取。然后對提取到的HTML頁面中的腳本代碼進行解析,是通過HTML unit模塊實現對DOM樹形結構的訪問,將提取的待檢測網頁的所有特征,形成完整的特征記錄,并加入待檢測特征知識庫中,為檢測模塊提供使用。
系統主要采用正則匹配的方式進行檢測。對提取到的網頁代碼與規則庫中的特征代碼進行匹配,若匹配成功則提取惡意代碼程序,并做紀錄加入到漏洞報告中,直至所有同樣的特征全部被提取出來。
基于正則規則對特征庫的匹配算法技術,除了對匹配的準確率有較高要求,還對匹配效率有很高的要求,所以系統實現過程中選取高效且準確的規則匹配算法,對本系統的匹配效率和準確率的提高有著重大的意義。
采用BM字符串搜索算法,BM算法是一種非常高效的字符串搜索算法,它將好后綴規則和壞字符規則完美糅合。BM算法的基本流程,是通過比較兩個文本字符串,即文本字符串T和模式字符串P。也就是說,當文本字符串中的字符不匹配時,此刻的字符稱為壞字符,模式字符串將向右移動。從錯誤字符右端的位置減去作為錯誤字符在模式字符串中的位置的模式字符串移動的位數。不良字符規則在文本字符串T上展開。對于后綴良好規則,在模式字符串中成功匹配的字符串是后綴良好字符串。此時,目標字符串從右元素開始并與左匹配,并與良好的后綴對齊。兩種并行算法的目的是使P字符串每次盡可能地向右移動。一般而言,下一個移位的大小取決于兩個并行操作的最大值,以減少匹配不必要的字段浪費時間,從而節省時間成本。
當掃描完一個網站后,將在檢測系統目錄下生成漏洞報告,以便于后續的修復過程使用。
此處采用兩種方式獲取資產:一是通過fofa的API將資產批量爬取用于檢測;二是通過將域名收集到本地的文件下,進行讀入然后用于檢測。域名收集如圖2所示,匹配結果如圖3所示。

圖2 域名收集

圖3 匹配結果
對提取到的特征代碼進行檢測,將特征代碼與智能規則庫文本進行正則匹配,匹配到與規則相關的特征進行輸出,記錄到結果文件中,給出檢測到的相應關鍵字,便于后續的排查和修復。
結束語:基于智能分析的網頁掛馬檢測系統,對掛馬的特征關鍵字單獨編寫入庫。方便后期的添加和修改。采用多線程的方式進行匹配提高檢測的效率,節約時間成本。采用BM匹配算法提高匹配的準確度,好后綴和壞字符的匹配模式可有效減少誤報。智能分析的引入也大大減少人工的付出,對掛馬網頁的檢測與排查具有很高的實用價值。