劉毓彬,葉傳奇,張少博,朱溪洋,秦夢(mèng)雯,劉曉雨
(河南科技大學(xué)軟件學(xué)院,洛陽(yáng) 471003)
互聯(lián)網(wǎng)的快速發(fā)展給人們帶來(lái)了巨大的便利,但伴隨著互聯(lián)網(wǎng)行業(yè)發(fā)展而滋生的惡意下載捆綁軟件的問(wèn)題也已困擾互聯(lián)網(wǎng)用戶(hù)十余年[1]。在2022年的315消費(fèi)者晚會(huì)曝光多個(gè)P2P類(lèi)型惡意捆綁軟件下載器網(wǎng)站后,該問(wèn)題成為了社會(huì)關(guān)注的焦點(diǎn)。
對(duì)于含有惡意代碼軟件的檢查,傳統(tǒng)的防護(hù)方案是使用Sandbox 技術(shù),正如張燦巖[2]所提出的:在含有惡意代碼軟件侵入用戶(hù)計(jì)算機(jī)后,使用API Hook 技術(shù),防護(hù)軟件將可能的惡意軟件放入沙箱隔離運(yùn)行,其方法具有普適性,但也存在系統(tǒng)侵入性過(guò)大,資源開(kāi)銷(xiāo)較大等缺點(diǎn)。本系統(tǒng)旨在將含有惡意代碼的軟件主要攔截在用戶(hù)下載操作之前,并對(duì)少量逃避攔截的惡意下載捆綁軟件使用特征值匹配、云查殺[3]等技術(shù)實(shí)現(xiàn)清除,以達(dá)到減輕系統(tǒng)負(fù)擔(dān)與減小系統(tǒng)侵入性的目的。用戶(hù)在應(yīng)用本系統(tǒng)后有利于減輕信息的認(rèn)知壓力與電腦的使用壓力。
功能輸入:當(dāng)前用戶(hù)計(jì)算機(jī)運(yùn)行中所有瀏覽器的數(shù)據(jù)庫(kù)路徑
功能輸出:用戶(hù)瀏覽網(wǎng)址信息的數(shù)據(jù)庫(kù)最新記錄
Step1:全局監(jiān)聽(tīng),等待用戶(hù)點(diǎn)擊
Step2:獲取瀏覽器進(jìn)程
Step3:獲取瀏覽器歷史記錄數(shù)據(jù)庫(kù)文件
根據(jù)文件修改日期新舊確定用戶(hù)文件存放位置,拼接數(shù)據(jù)庫(kù)存放路徑;
以火狐瀏覽器數(shù)據(jù)庫(kù)路徑為例:
Step4:讀取歷史記錄數(shù)據(jù)庫(kù)數(shù)據(jù)
根據(jù)文件后綴名判斷數(shù)據(jù)庫(kù)類(lèi)型,并建立相應(yīng)連接
以主流瀏覽器使用的sqlite3數(shù)據(jù)庫(kù)為例:
根據(jù)不同瀏覽器選擇不同的查詢(xún)語(yǔ)句,獲取到歷史記錄。
Step5:對(duì)數(shù)據(jù)庫(kù)中歷史記錄判斷新舊
Step6:功能一次執(zhí)行結(jié)束,等待用戶(hù)再次點(diǎn)擊激活
Step1:通過(guò)URL獲取相應(yīng)頁(yè)面
例:Jsoup.connect(HTMLUrl).get();
Step2:使用正則表達(dá)式進(jìn)行數(shù)據(jù)清洗
去除script的正則表達(dá)式匹配語(yǔ)句:
去除style樣式的正則表達(dá)式匹配語(yǔ)句:
去除HTML標(biāo)簽的正則表達(dá)式匹配語(yǔ)句:
去除特殊字符的正則表達(dá)式匹配語(yǔ)句:
去除轉(zhuǎn)義的正則表達(dá)式匹配語(yǔ)句:
將多個(gè)空格替換成1個(gè)空格:
得到以空格為分隔符的頁(yè)面文本數(shù)據(jù)
Step3:使用基于 mmseg 算法的 Jcseg API 進(jìn)行中文分詞與詞義分類(lèi)[4]
Step4:將HashMap中的詞語(yǔ)按詞頻排序
根據(jù)HashMap 中值的大小,對(duì)HashMap 使用快速排序得到詞頻由高到低的數(shù)組;
Step5:關(guān)鍵詞得分
選取數(shù)組中出現(xiàn)次數(shù)大于(最高次數(shù)+最低次數(shù))/2的詞組作為關(guān)鍵詞進(jìn)行計(jì)分,公式如下:
注:①“詞組詞頻總數(shù)”:HashMap 中所有詞組出現(xiàn)次數(shù)之和;n為常數(shù),是平衡因子,用于防止因詞組詞頻總數(shù)(即頁(yè)面文字內(nèi)容總量)過(guò)多或過(guò)少導(dǎo)致的失衡;②“數(shù)據(jù)庫(kù)反饋因子”:查詢(xún)數(shù)據(jù)庫(kù),返回?cái)?shù)據(jù)庫(kù)中詞組標(biāo)記的基礎(chǔ)得分,得分區(qū)間為[-1,1]。
Step6:頁(yè)面內(nèi)容總得分
哈希值特征碼的構(gòu)造主要由節(jié)的大小加上節(jié)的哈希值組成,程序執(zhí)行時(shí)會(huì)主動(dòng)掃描文件的節(jié)頭,判斷是不是PE 文件,如果是,則打開(kāi)文件,以文件頭的字節(jié)流構(gòu)造特征碼,并與病毒庫(kù)中的數(shù)據(jù)進(jìn)行匹配,如果匹配成功則返回病毒名稱(chēng),失敗則返回空。同時(shí),本功能的病毒庫(kù)以特征碼的頭一個(gè)字符為標(biāo)準(zhǔn)劃分為0~9、A~G 十七個(gè)子病毒庫(kù),在病毒掃描時(shí),以特征碼頭一個(gè)字符為準(zhǔn)跳到對(duì)應(yīng)的子病毒庫(kù)中進(jìn)行數(shù)據(jù)匹配,減少了掃描數(shù)據(jù)的數(shù)量,從而節(jié)約了病毒掃描所需的時(shí)間。
MD5 信息摘要算法(MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128 位(16 字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。理論上,任意兩個(gè)文件、字符串不會(huì)有相同的MD5 值[5]。因此我們建立了以MD5 為基礎(chǔ)的病毒特征碼數(shù)據(jù)庫(kù),再對(duì)用戶(hù)電腦全盤(pán)掃描使獲取用戶(hù)系統(tǒng)文件的MD5 特征碼與病毒特征碼庫(kù)比對(duì),進(jìn)行病毒文件的查殺。工作流程如圖1所示。
圖1 MD5特征值匹配流程
云查殺技術(shù)依賴(lài)于云計(jì)算技術(shù),是將安全引擎和病毒木馬特征庫(kù)放在服務(wù)器端,將主要的計(jì)算、查詢(xún)等資源開(kāi)銷(xiāo)較大的操作交由服務(wù)器處理,從而減輕用戶(hù)個(gè)人計(jì)算機(jī)的資源占用負(fù)擔(dān),并獲取更快的查殺速度、更短的反映時(shí)間以及更優(yōu)秀的查殺效果[6]。
功能需求:檢查用戶(hù)瀏覽的網(wǎng)站是否安全,阻止用戶(hù)瀏覽包含惡意捆綁軟件下載連接的網(wǎng)站。
功能核心:獲取當(dāng)前用戶(hù)瀏覽的網(wǎng)頁(yè)信息;數(shù)據(jù)庫(kù)信息篩選;網(wǎng)頁(yè)文本內(nèi)容分析。
功能實(shí)現(xiàn):首先,全局監(jiān)聽(tīng)用戶(hù)點(diǎn)擊,用戶(hù)每次點(diǎn)擊后獲取當(dāng)前運(yùn)行中的全部進(jìn)程,篩選出所有瀏覽器進(jìn)程,根據(jù)運(yùn)行中的瀏覽器名稱(chēng)獲取到其本地?cái)?shù)據(jù)庫(kù)路徑。將數(shù)據(jù)庫(kù)文件拷貝至本系統(tǒng)指定目錄中,以防止瀏覽器的寫(xiě)與本系統(tǒng)的讀并行執(zhí)行造成的死鎖問(wèn)題。
然后,瀏覽器數(shù)據(jù)庫(kù)記錄新歷史數(shù)據(jù)時(shí)具有‘只會(huì)將首次訪(fǎng)問(wèn)的頁(yè)面記錄到數(shù)據(jù)庫(kù)中,若非首次訪(fǎng)問(wèn),數(shù)據(jù)庫(kù)則只更新相關(guān)記錄的訪(fǎng)問(wèn)次數(shù)與最后訪(fǎng)問(wèn)時(shí)間’的特性。本功能利用該特性獲取到當(dāng)前用戶(hù)首次瀏覽的頁(yè)面。用戶(hù)首次點(diǎn)擊后,程序記錄到用戶(hù)上次使用時(shí)最后一條歷史記錄的ID 值并將其作為標(biāo)號(hào),當(dāng)用戶(hù)第二次點(diǎn)擊后,獲取到的當(dāng)前最新歷史記錄的ID 值與標(biāo)號(hào)之間的差額記錄數(shù)列即為用戶(hù)兩次點(diǎn)擊之間首次訪(fǎng)問(wèn)的頁(yè)面,更新標(biāo)號(hào)后循環(huán)往復(fù),從而獲取到用戶(hù)的瀏覽信息。
再次,獲取到新歷史記錄后,程序?qū)?duì)新記錄逐條進(jìn)行安全性初篩。程序根據(jù)用戶(hù)選擇的安全防護(hù)等級(jí)執(zhí)行不同的初篩策略:用戶(hù)選擇低等級(jí)防護(hù)時(shí),程序只進(jìn)行黑名單域名匹配;用戶(hù)選擇中等級(jí)(默認(rèn)等級(jí))防護(hù)時(shí),首先進(jìn)行黑名單全域名匹配,若頁(yè)面不為黑名單中頁(yè)面,則采用了Jaro-Winkler Distance 與LevenshteinDistance 兩種編輯距離[7]進(jìn)行黑名單域名相似度匹配,同時(shí)進(jìn)行頁(yè)面名稱(chēng)特征詞匹配,將各項(xiàng)匹配結(jié)果分別加權(quán)參與安全性評(píng)判,當(dāng)值達(dá)到閾值時(shí),認(rèn)為該記錄可能含有危險(xiǎn)性需要進(jìn)一步分析;用戶(hù)選擇高等級(jí)防護(hù)時(shí),首先進(jìn)行黑名單全域名匹配,若頁(yè)面不為黑名單中頁(yè)面,首先進(jìn)行白名單特征匹配,特征值匹配結(jié)果為1(匹配結(jié)果范圍為0~1),即白名單有該條記錄時(shí)返回頁(yè)面安全,否則本歷史記錄與有相同域名的白名單列表逐條相似度匹配獲取到該頁(yè)面得到的最高分,并減去黑名單標(biāo)題特征匹配的加權(quán)值后獲取到最終值,若該值達(dá)到安全線(xiàn)值,則判斷該頁(yè)面安全,并添加該記錄至白名單中,否則判斷該頁(yè)面需要下一步檢測(cè)。頁(yè)面攔截模塊處理流程如圖2所示。
圖2 頁(yè)面攔截功能模塊處理流程
最后,對(duì)于標(biāo)記為需進(jìn)一步檢測(cè)的記錄將進(jìn)行更加細(xì)致的檢測(cè)。為每一條記錄開(kāi)啟一個(gè)新的線(xiàn)程,使用Jsoup 通過(guò)URL 獲取HTML 全部?jī)?nèi)容,若Jsoup 獲取網(wǎng)頁(yè)內(nèi)容失敗,則使用本功能自編寫(xiě)的程序獲取網(wǎng)頁(yè)內(nèi)容。使用正則表達(dá)式將頁(yè)面中文本提取。使用Web 頁(yè)面文本內(nèi)容關(guān)鍵詞分析技術(shù)得到頁(yè)面內(nèi)容得分并加權(quán);使用Jsoup 獲取所有頁(yè)面中的超鏈接標(biāo)簽并逐個(gè)判別其鏈接是否安全,得到頁(yè)面鏈接安全性得分并加權(quán);獲取網(wǎng)頁(yè)ICP 備案號(hào),通過(guò)工業(yè)和信息化部政務(wù)服務(wù)平臺(tái)的ICP/IP 地址/域名信息備案管理系統(tǒng)(https://beian.miit.gov.cn)獲取到頁(yè)面?zhèn)浒感畔?,得到?yè)面合法性得分并加權(quán)。最終通過(guò)綜合得分判別該頁(yè)面是否安全。若該頁(yè)面安全則將其添加到系統(tǒng)白名單中,不安全則通知用戶(hù)并關(guān)閉頁(yè)面。
功能需求:監(jiān)控用戶(hù)下載的文件并進(jìn)行病毒查殺;自定義病毒掃描。
功能核心:監(jiān)控文件的下載;常見(jiàn)格式壓縮包的解壓縮;病毒掃描。
功能實(shí)現(xiàn):首先,文件系統(tǒng)中的文件夾均會(huì)被WatchService(基于本機(jī)操作系統(tǒng)實(shí)現(xiàn)監(jiān)控)監(jiān)控,在監(jiān)控過(guò)程中,程序獲取到新建文件的絕對(duì)路徑,并根據(jù)新建文件的絕對(duì)路徑進(jìn)行病毒掃描。
需要說(shuō)明的是,計(jì)算機(jī)系統(tǒng)生成新文件的途徑除了用戶(hù)下載,還可能為用戶(hù)復(fù)制本地文件產(chǎn)生的備份文件,程序運(yùn)行產(chǎn)生的緩存文件,等等,如果對(duì)所有新生成的文件都進(jìn)行掃描,無(wú)疑加大了程序的負(fù)擔(dān)。而本功能根據(jù)“在文件下載過(guò)程中系統(tǒng)會(huì)產(chǎn)生一個(gè)臨時(shí)文件用于存放下載文件片段而在文件下載合并完成后臨時(shí)文件被刪除”的特性增加判斷,從而獲取到用戶(hù)下載的文件。本功能僅對(duì)用戶(hù)下載的文件進(jìn)行病毒檢測(cè),提高了系統(tǒng)運(yùn)行效率。下載監(jiān)控功能模塊處理流程如圖3所示。
圖3 下載監(jiān)控功能模塊處理流程
其次,在各種文件格式中,因?yàn)閴嚎s包內(nèi)部可以包含多個(gè)文件且殺毒程序無(wú)法直接檢查未解壓壓縮包中的文件,所以壓縮包格式的文件可能導(dǎo)致病毒文件特征值匹配的失敗。針對(duì)壓縮包格式的文件掃描問(wèn)題,本功能先將壓縮文件解壓到指定的臨時(shí)文件夾下,再對(duì)該文件夾下的所有文件進(jìn)行病毒掃描,如果出現(xiàn)病毒就給予用戶(hù)相應(yīng)的提示信息。無(wú)論是否有病毒,系統(tǒng)在掃描完成之后都即刻清空該臨時(shí)文件夾。然而,壓縮文件的格式有多種,不同的壓縮格式使用不同的編碼方式,考慮到系統(tǒng)開(kāi)發(fā)時(shí)效性與程序適用性,本功能只針對(duì)RAR、ZIP、7Z三種最常見(jiàn)壓縮格式的未加密壓縮文件進(jìn)行解壓與病毒掃描。
功能需求:檢測(cè)用戶(hù)計(jì)算機(jī)磁盤(pán)文件。用戶(hù)上傳文件進(jìn)行檢測(cè)并出具檢測(cè)結(jié)果。
功能核心:掃描磁盤(pán)文件;利用特征值匹配檢測(cè)文件;使用云查殺技術(shù)對(duì)用戶(hù)提交的文件進(jìn)行檢查并返饋分析報(bào)告。
功能實(shí)現(xiàn):功能運(yùn)行后,用戶(hù)電腦磁盤(pán)中的文件均會(huì)被FileScanService(基于本機(jī)系統(tǒng)實(shí)現(xiàn)掃描模塊)掃描并計(jì)算出文件的MD5值,每個(gè)文件都與本系統(tǒng)的病毒庫(kù)進(jìn)行MD5 特征值匹配[5]。用戶(hù)還可以自定義區(qū)域進(jìn)行病毒掃描。如果文件的MD5 值匹配中病毒樣本記錄,系統(tǒng)將會(huì)提醒用戶(hù)并建議用戶(hù)對(duì)此文件進(jìn)行刪除或者對(duì)該軟件進(jìn)行卸載。但此種方法不能有效檢測(cè)出混合病毒,因?yàn)椴《疚募烊肓似渌募螅鋵?duì)應(yīng)的MD5 特征值也將改變;其次,此種方法對(duì)變形病毒的檢測(cè)能力也較弱。
本系統(tǒng)得到了合作公司(北京云海協(xié)同科技有限公司)旗下VirScan 網(wǎng)站的使用授權(quán)與技術(shù)支持。對(duì)于上述問(wèn)題,系統(tǒng)將沒(méi)有檢測(cè)出病毒的文件上傳至VirScan 服務(wù)器進(jìn)行云查殺并給予檢測(cè)反饋[6]。
用戶(hù)還可以單獨(dú)調(diào)用云查殺功能。當(dāng)用戶(hù)將文件上傳給系統(tǒng)后(文件大小不得超過(guò)50 Mb),系統(tǒng)調(diào)用相關(guān)API 將用戶(hù)上傳的文件提交給VirScan,VirScan 將該文件置于一個(gè)虛擬環(huán)境,使用47 款掃描引擎進(jìn)行病毒掃描并逐個(gè)反饋結(jié)果。系統(tǒng)對(duì)反饋結(jié)果進(jìn)行分析,得到最終的文件檢測(cè)報(bào)告。下面以“virus.exe”為例,云查殺部分結(jié)果見(jiàn)表1所示。
表1 云查殺部分結(jié)果展示
本系統(tǒng)相比于主流的計(jì)算機(jī)防護(hù)殺毒軟件具有體積更小的特點(diǎn),在十余種主流統(tǒng)計(jì)樣本中,本系統(tǒng)大小約為樣本平均大小的48.4%。系統(tǒng)與部分主流計(jì)算機(jī)防護(hù)殺毒軟件大小對(duì)比如圖4所示。
圖4 系統(tǒng)與部分主流計(jì)算機(jī)防護(hù)殺毒軟件大小對(duì)比
另外在預(yù)防惡意捆綁軟件下載至用戶(hù)電腦功能上,相比于主流的計(jì)算機(jī)防護(hù)殺毒軟件的平均防護(hù)水平,本系統(tǒng)的頁(yè)面檢測(cè)準(zhǔn)確性指標(biāo)與系統(tǒng)資源占用指標(biāo)分別提升6%與13%。各項(xiàng)實(shí)現(xiàn)結(jié)果得分如圖5所示。
圖5 “預(yù)防惡意捆綁軟件下載”功能中本系統(tǒng)得分與主流防護(hù)軟件各項(xiàng)平均得分對(duì)比
系統(tǒng)在檢測(cè)和清除惡意軟件和病毒的軟件程序仍有不足,如病毒庫(kù)樣本量過(guò)小,對(duì)于病毒變種的應(yīng)對(duì)方法單一,掃描時(shí)間過(guò)長(zhǎng)等問(wèn)題。可借鑒張燦巖[2]、何國(guó)賢[3]等人使用的沙盒檢測(cè)技術(shù)來(lái)改進(jìn)上述問(wèn)題。
本文使用SSM 開(kāi)發(fā)框架[8]依據(jù)成熟的MVC設(shè)計(jì)模式[9],實(shí)現(xiàn)了對(duì)惡意捆綁軟件進(jìn)行有效的攔截和清除的系統(tǒng)。本系統(tǒng)旨在將含有惡意代碼的軟件主要攔截在用戶(hù)下載操作之前,并對(duì)少量逃避攔截的惡意下載捆綁軟件使用特征值匹配、云查殺等技術(shù)實(shí)現(xiàn)清除,具有較小的系統(tǒng)開(kāi)銷(xiāo),較快的運(yùn)行速度等特點(diǎn)。用戶(hù)應(yīng)用本系統(tǒng)后可以保護(hù)其不受惡意軟件的侵害,減輕了用戶(hù)使用電腦時(shí)的認(rèn)知負(fù)擔(dān),操作壓力等。