劉毓彬,葉傳奇,張少博,朱溪洋,秦夢雯,劉曉雨
(河南科技大學軟件學院,洛陽 471003)
互聯網的快速發展給人們帶來了巨大的便利,但伴隨著互聯網行業發展而滋生的惡意下載捆綁軟件的問題也已困擾互聯網用戶十余年[1]。在2022年的315消費者晚會曝光多個P2P類型惡意捆綁軟件下載器網站后,該問題成為了社會關注的焦點。
對于含有惡意代碼軟件的檢查,傳統的防護方案是使用Sandbox 技術,正如張燦巖[2]所提出的:在含有惡意代碼軟件侵入用戶計算機后,使用API Hook 技術,防護軟件將可能的惡意軟件放入沙箱隔離運行,其方法具有普適性,但也存在系統侵入性過大,資源開銷較大等缺點。本系統旨在將含有惡意代碼的軟件主要攔截在用戶下載操作之前,并對少量逃避攔截的惡意下載捆綁軟件使用特征值匹配、云查殺[3]等技術實現清除,以達到減輕系統負擔與減小系統侵入性的目的。用戶在應用本系統后有利于減輕信息的認知壓力與電腦的使用壓力。
功能輸入:當前用戶計算機運行中所有瀏覽器的數據庫路徑
功能輸出:用戶瀏覽網址信息的數據庫最新記錄
Step1:全局監聽,等待用戶點擊
Step2:獲取瀏覽器進程
Step3:獲取瀏覽器歷史記錄數據庫文件
根據文件修改日期新舊確定用戶文件存放位置,拼接數據庫存放路徑;
以火狐瀏覽器數據庫路徑為例:
Step4:讀取歷史記錄數據庫數據
根據文件后綴名判斷數據庫類型,并建立相應連接
以主流瀏覽器使用的sqlite3數據庫為例:
根據不同瀏覽器選擇不同的查詢語句,獲取到歷史記錄。
Step5:對數據庫中歷史記錄判斷新舊
Step6:功能一次執行結束,等待用戶再次點擊激活
Step1:通過URL獲取相應頁面
例:Jsoup.connect(HTMLUrl).get();
Step2:使用正則表達式進行數據清洗
去除script的正則表達式匹配語句:
去除style樣式的正則表達式匹配語句:
去除HTML標簽的正則表達式匹配語句:
去除特殊字符的正則表達式匹配語句:
去除轉義的正則表達式匹配語句:
將多個空格替換成1個空格:
得到以空格為分隔符的頁面文本數據
Step3:使用基于 mmseg 算法的 Jcseg API 進行中文分詞與詞義分類[4]
Step4:將HashMap中的詞語按詞頻排序
根據HashMap 中值的大小,對HashMap 使用快速排序得到詞頻由高到低的數組;
Step5:關鍵詞得分
選取數組中出現次數大于(最高次數+最低次數)/2的詞組作為關鍵詞進行計分,公式如下:
注:①“詞組詞頻總數”:HashMap 中所有詞組出現次數之和;n為常數,是平衡因子,用于防止因詞組詞頻總數(即頁面文字內容總量)過多或過少導致的失衡;②“數據庫反饋因子”:查詢數據庫,返回數據庫中詞組標記的基礎得分,得分區間為[-1,1]。
Step6:頁面內容總得分
哈希值特征碼的構造主要由節的大小加上節的哈希值組成,程序執行時會主動掃描文件的節頭,判斷是不是PE 文件,如果是,則打開文件,以文件頭的字節流構造特征碼,并與病毒庫中的數據進行匹配,如果匹配成功則返回病毒名稱,失敗則返回空。同時,本功能的病毒庫以特征碼的頭一個字符為標準劃分為0~9、A~G 十七個子病毒庫,在病毒掃描時,以特征碼頭一個字符為準跳到對應的子病毒庫中進行數據匹配,減少了掃描數據的數量,從而節約了病毒掃描所需的時間。
MD5 信息摘要算法(MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128 位(16 字節)的散列值(hash value),用于確保信息傳輸完整一致。理論上,任意兩個文件、字符串不會有相同的MD5 值[5]。因此我們建立了以MD5 為基礎的病毒特征碼數據庫,再對用戶電腦全盤掃描使獲取用戶系統文件的MD5 特征碼與病毒特征碼庫比對,進行病毒文件的查殺。工作流程如圖1所示。

圖1 MD5特征值匹配流程
云查殺技術依賴于云計算技術,是將安全引擎和病毒木馬特征庫放在服務器端,將主要的計算、查詢等資源開銷較大的操作交由服務器處理,從而減輕用戶個人計算機的資源占用負擔,并獲取更快的查殺速度、更短的反映時間以及更優秀的查殺效果[6]。
功能需求:檢查用戶瀏覽的網站是否安全,阻止用戶瀏覽包含惡意捆綁軟件下載連接的網站。
功能核心:獲取當前用戶瀏覽的網頁信息;數據庫信息篩選;網頁文本內容分析。
功能實現:首先,全局監聽用戶點擊,用戶每次點擊后獲取當前運行中的全部進程,篩選出所有瀏覽器進程,根據運行中的瀏覽器名稱獲取到其本地數據庫路徑。將數據庫文件拷貝至本系統指定目錄中,以防止瀏覽器的寫與本系統的讀并行執行造成的死鎖問題。
然后,瀏覽器數據庫記錄新歷史數據時具有‘只會將首次訪問的頁面記錄到數據庫中,若非首次訪問,數據庫則只更新相關記錄的訪問次數與最后訪問時間’的特性。本功能利用該特性獲取到當前用戶首次瀏覽的頁面。用戶首次點擊后,程序記錄到用戶上次使用時最后一條歷史記錄的ID 值并將其作為標號,當用戶第二次點擊后,獲取到的當前最新歷史記錄的ID 值與標號之間的差額記錄數列即為用戶兩次點擊之間首次訪問的頁面,更新標號后循環往復,從而獲取到用戶的瀏覽信息。
再次,獲取到新歷史記錄后,程序將對新記錄逐條進行安全性初篩。程序根據用戶選擇的安全防護等級執行不同的初篩策略:用戶選擇低等級防護時,程序只進行黑名單域名匹配;用戶選擇中等級(默認等級)防護時,首先進行黑名單全域名匹配,若頁面不為黑名單中頁面,則采用了Jaro-Winkler Distance 與LevenshteinDistance 兩種編輯距離[7]進行黑名單域名相似度匹配,同時進行頁面名稱特征詞匹配,將各項匹配結果分別加權參與安全性評判,當值達到閾值時,認為該記錄可能含有危險性需要進一步分析;用戶選擇高等級防護時,首先進行黑名單全域名匹配,若頁面不為黑名單中頁面,首先進行白名單特征匹配,特征值匹配結果為1(匹配結果范圍為0~1),即白名單有該條記錄時返回頁面安全,否則本歷史記錄與有相同域名的白名單列表逐條相似度匹配獲取到該頁面得到的最高分,并減去黑名單標題特征匹配的加權值后獲取到最終值,若該值達到安全線值,則判斷該頁面安全,并添加該記錄至白名單中,否則判斷該頁面需要下一步檢測。頁面攔截模塊處理流程如圖2所示。

圖2 頁面攔截功能模塊處理流程
最后,對于標記為需進一步檢測的記錄將進行更加細致的檢測。為每一條記錄開啟一個新的線程,使用Jsoup 通過URL 獲取HTML 全部內容,若Jsoup 獲取網頁內容失敗,則使用本功能自編寫的程序獲取網頁內容。使用正則表達式將頁面中文本提取。使用Web 頁面文本內容關鍵詞分析技術得到頁面內容得分并加權;使用Jsoup 獲取所有頁面中的超鏈接標簽并逐個判別其鏈接是否安全,得到頁面鏈接安全性得分并加權;獲取網頁ICP 備案號,通過工業和信息化部政務服務平臺的ICP/IP 地址/域名信息備案管理系統(https://beian.miit.gov.cn)獲取到頁面備案信息,得到頁面合法性得分并加權。最終通過綜合得分判別該頁面是否安全。若該頁面安全則將其添加到系統白名單中,不安全則通知用戶并關閉頁面。
功能需求:監控用戶下載的文件并進行病毒查殺;自定義病毒掃描。
功能核心:監控文件的下載;常見格式壓縮包的解壓縮;病毒掃描。
功能實現:首先,文件系統中的文件夾均會被WatchService(基于本機操作系統實現監控)監控,在監控過程中,程序獲取到新建文件的絕對路徑,并根據新建文件的絕對路徑進行病毒掃描。
需要說明的是,計算機系統生成新文件的途徑除了用戶下載,還可能為用戶復制本地文件產生的備份文件,程序運行產生的緩存文件,等等,如果對所有新生成的文件都進行掃描,無疑加大了程序的負擔。而本功能根據“在文件下載過程中系統會產生一個臨時文件用于存放下載文件片段而在文件下載合并完成后臨時文件被刪除”的特性增加判斷,從而獲取到用戶下載的文件。本功能僅對用戶下載的文件進行病毒檢測,提高了系統運行效率。下載監控功能模塊處理流程如圖3所示。

圖3 下載監控功能模塊處理流程
其次,在各種文件格式中,因為壓縮包內部可以包含多個文件且殺毒程序無法直接檢查未解壓壓縮包中的文件,所以壓縮包格式的文件可能導致病毒文件特征值匹配的失敗。針對壓縮包格式的文件掃描問題,本功能先將壓縮文件解壓到指定的臨時文件夾下,再對該文件夾下的所有文件進行病毒掃描,如果出現病毒就給予用戶相應的提示信息。無論是否有病毒,系統在掃描完成之后都即刻清空該臨時文件夾。然而,壓縮文件的格式有多種,不同的壓縮格式使用不同的編碼方式,考慮到系統開發時效性與程序適用性,本功能只針對RAR、ZIP、7Z三種最常見壓縮格式的未加密壓縮文件進行解壓與病毒掃描。
功能需求:檢測用戶計算機磁盤文件。用戶上傳文件進行檢測并出具檢測結果。
功能核心:掃描磁盤文件;利用特征值匹配檢測文件;使用云查殺技術對用戶提交的文件進行檢查并返饋分析報告。
功能實現:功能運行后,用戶電腦磁盤中的文件均會被FileScanService(基于本機系統實現掃描模塊)掃描并計算出文件的MD5值,每個文件都與本系統的病毒庫進行MD5 特征值匹配[5]。用戶還可以自定義區域進行病毒掃描。如果文件的MD5 值匹配中病毒樣本記錄,系統將會提醒用戶并建議用戶對此文件進行刪除或者對該軟件進行卸載。但此種方法不能有效檢測出混合病毒,因為病毒文件混入了其他文件后,其對應的MD5 特征值也將改變;其次,此種方法對變形病毒的檢測能力也較弱。
本系統得到了合作公司(北京云海協同科技有限公司)旗下VirScan 網站的使用授權與技術支持。對于上述問題,系統將沒有檢測出病毒的文件上傳至VirScan 服務器進行云查殺并給予檢測反饋[6]。
用戶還可以單獨調用云查殺功能。當用戶將文件上傳給系統后(文件大小不得超過50 Mb),系統調用相關API 將用戶上傳的文件提交給VirScan,VirScan 將該文件置于一個虛擬環境,使用47 款掃描引擎進行病毒掃描并逐個反饋結果。系統對反饋結果進行分析,得到最終的文件檢測報告。下面以“virus.exe”為例,云查殺部分結果見表1所示。

表1 云查殺部分結果展示
本系統相比于主流的計算機防護殺毒軟件具有體積更小的特點,在十余種主流統計樣本中,本系統大小約為樣本平均大小的48.4%。系統與部分主流計算機防護殺毒軟件大小對比如圖4所示。

圖4 系統與部分主流計算機防護殺毒軟件大小對比
另外在預防惡意捆綁軟件下載至用戶電腦功能上,相比于主流的計算機防護殺毒軟件的平均防護水平,本系統的頁面檢測準確性指標與系統資源占用指標分別提升6%與13%。各項實現結果得分如圖5所示。

圖5 “預防惡意捆綁軟件下載”功能中本系統得分與主流防護軟件各項平均得分對比
系統在檢測和清除惡意軟件和病毒的軟件程序仍有不足,如病毒庫樣本量過小,對于病毒變種的應對方法單一,掃描時間過長等問題。可借鑒張燦巖[2]、何國賢[3]等人使用的沙盒檢測技術來改進上述問題。
本文使用SSM 開發框架[8]依據成熟的MVC設計模式[9],實現了對惡意捆綁軟件進行有效的攔截和清除的系統。本系統旨在將含有惡意代碼的軟件主要攔截在用戶下載操作之前,并對少量逃避攔截的惡意下載捆綁軟件使用特征值匹配、云查殺等技術實現清除,具有較小的系統開銷,較快的運行速度等特點。用戶應用本系統后可以保護其不受惡意軟件的侵害,減輕了用戶使用電腦時的認知負擔,操作壓力等。