王本鈺 鄭棣文 李禹欣 彭舒凡 王勇
摘 ?要:文章對(duì)網(wǎng)頁(yè)篡改現(xiàn)狀進(jìn)行了調(diào)查,對(duì)新聞、博客、大學(xué)網(wǎng)頁(yè)被篡改方式進(jìn)行了研究,并基于LD算法、Python爬蟲(chóng),研究出可以有效對(duì)網(wǎng)頁(yè)添加暗鏈、添加惡意代碼、篡改網(wǎng)頁(yè)文本等網(wǎng)頁(yè)篡改行為進(jìn)行可視化預(yù)警的系統(tǒng),搭建了可視化動(dòng)態(tài)網(wǎng)頁(yè),可以及時(shí)呈現(xiàn)網(wǎng)頁(yè)篡改的位置和網(wǎng)頁(yè)篡改周期和頻率,并通過(guò)網(wǎng)頁(yè)源碼關(guān)聯(lián)數(shù)據(jù)庫(kù),有效保證了網(wǎng)頁(yè)的可恢復(fù)性。
關(guān)鍵詞:網(wǎng)頁(yè)篡改;LD算法;Python爬蟲(chóng);可視化預(yù)警;數(shù)據(jù)庫(kù)
中圖分類(lèi)號(hào):TP393 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)21-0141-04
Research on Visual Early Warning System of Webpage Tampering
Based on LD Algorithm
WANG Benyu,ZHENG Diwen,LI Yuxin,PENG Shufan,WANG Yong
(School of Information and Network Security,Peoples Public Security University of China,Beijing ?100038,China)
Abstract:This paper investigates the current situation of webpage tampering,and studies the ways of news,blog and university webpage tampering. Based on LD algorithm and Python crawler,a visual early warning system is developed,which can effectively alert webpage tampering behaviors such as adding dark chain,adding malicious code and tampering with webpage text,and builds a visual dynamic webpage,which can timely present the location,period and frequency of webpage tampering,and effectively ensure the recoverability of webpage by associating webpage source code with database.
Keywords:webpage tampering;LD algorithm;Python spider;visual early warning ;database
0 ?引 ?言
近年來(lái),我國(guó)互聯(lián)網(wǎng)正經(jīng)歷著日新月異的變化。現(xiàn)如今,高校充分利用校園網(wǎng)發(fā)布各類(lèi)信息。然而,互聯(lián)網(wǎng)的廣泛使用也為其發(fā)展埋下了隱患。不法分子尋找技術(shù)與制度的漏洞,通過(guò)惡意程序、網(wǎng)站后門(mén)、安全漏洞、木馬病毒、僵尸網(wǎng)絡(luò)、DDOS攻擊、網(wǎng)頁(yè)仿冒、SQL注入[1]和網(wǎng)頁(yè)篡改等手段謀取利益,例如通過(guò)手機(jī)短信傳播,具有可以獲取用戶(hù)手機(jī)短信和通信錄功能的“相冊(cè)”類(lèi)安卓惡意程序和具有惡意扣費(fèi)、惡意傳播屬性的色情軟件,此外,攻擊高校校園網(wǎng)的案件更是不計(jì)其數(shù)。此類(lèi)現(xiàn)象不僅嚴(yán)重?fù)p害高校形象,還會(huì)嚴(yán)重危害用戶(hù)個(gè)人信息安全和財(cái)產(chǎn)安全[2]。監(jiān)控的不及時(shí)不到位是這些情況產(chǎn)生的主要原因,網(wǎng)站的開(kāi)發(fā)和維護(hù)人員在網(wǎng)站上線(xiàn)和運(yùn)行階段沒(méi)有重視網(wǎng)頁(yè)篡改的危害,監(jiān)控環(huán)節(jié)缺位、監(jiān)控措施缺乏、處置措施無(wú)力、網(wǎng)站資金人力資源缺乏,以至于網(wǎng)頁(yè)被篡改之后無(wú)法及時(shí)處理,無(wú)人問(wèn)津[3]。
1 ?關(guān)鍵技術(shù)
1.1 ?LD算法
網(wǎng)頁(yè)本質(zhì)上是純文本文件,可以將整個(gè)網(wǎng)頁(yè)文檔看作一個(gè)長(zhǎng)字符串,通過(guò)文本比較算法來(lái)查找兩個(gè)網(wǎng)頁(yè)之間的差異。比較兩個(gè)給定文本間差異的算法稱(chēng)為文本比較算法,目前主流的文本比較算法可以分為兩大類(lèi):一類(lèi)是基于編輯距離的文本比較算法,如LD算法;另一類(lèi)是基于最大公共子串的文本比較算法,如Needleman/Wunsh算法。兩類(lèi)文本比較算法的核心思想的區(qū)別在于,前者突出的是文本間的差異性,而后者突出的是文本間的共同性。顯然,基于編輯距離的文本比較算法更符合當(dāng)前的應(yīng)用,本次研究以L(fǎng)D算法為例,將文本比較算法應(yīng)用到網(wǎng)頁(yè)對(duì)比上。
1.2 ?Python爬蟲(chóng)
本此研究利用lxml庫(kù)和XPath語(yǔ)法來(lái)對(duì)所需要的標(biāo)簽內(nèi)容進(jìn)行解析與提取。lxml庫(kù)利用XPath語(yǔ)法來(lái)對(duì)網(wǎng)頁(yè)數(shù)據(jù)進(jìn)行定位和解析。XPath語(yǔ)法是可以對(duì)XML文檔和HTML文檔使用的查找信息的語(yǔ)言,它是一種基于節(jié)點(diǎn)的查找語(yǔ)言,在HTML文檔中節(jié)點(diǎn)的表現(xiàn)形式就是一個(gè)一個(gè)的標(biāo)簽,由標(biāo)簽來(lái)組成父節(jié)點(diǎn)、子節(jié)點(diǎn)、同胞節(jié)點(diǎn)、先輩節(jié)點(diǎn)以及后代節(jié)點(diǎn)這五種復(fù)雜的關(guān)系。XPath語(yǔ)法通過(guò)路徑表達(dá)式來(lái)選取相應(yīng)的節(jié)點(diǎn),用謂語(yǔ)來(lái)查找某個(gè)符合爬取要求的特定節(jié)點(diǎn)或者包含相應(yīng)屬性的節(jié)點(diǎn)。通過(guò)設(shè)置爬取規(guī)則,可以對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行有效爬取。
2 ?系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 ?系統(tǒng)功能模塊設(shè)計(jì)
依據(jù)不同的職能和服務(wù)將網(wǎng)頁(yè)篡改可視化預(yù)警系統(tǒng)劃分成三大模塊。通過(guò)模塊化的拆分和組合,可以方便管理員對(duì)系統(tǒng)的維護(hù),并且保證了系統(tǒng)的可延展性,為之后擴(kuò)大系統(tǒng)的使用規(guī)模打下良好的基礎(chǔ)。不同角色的模塊相互配合,也增加了本系統(tǒng)的安全性,易于管理。系統(tǒng)的功能模塊如圖1所示。
2.2 ?操作流程設(shè)計(jì)
當(dāng)整個(gè)系統(tǒng)部署完畢之后,管理員即可通過(guò)該系統(tǒng)對(duì)網(wǎng)頁(yè)實(shí)時(shí)篡改信息進(jìn)行分析和監(jiān)控。具體的數(shù)據(jù)流向是:監(jiān)控程序負(fù)責(zé)爬取實(shí)時(shí)網(wǎng)頁(yè)信息,將網(wǎng)頁(yè)信息做初步的分詞處理導(dǎo)入數(shù)據(jù)庫(kù)中,然后將數(shù)據(jù)庫(kù)新老內(nèi)容做出對(duì)比,將不同之處導(dǎo)出,最后在可視化動(dòng)態(tài)網(wǎng)頁(yè)中顯示出具體的不同之處。操作流程如圖2所示。
2.3 ?監(jiān)控器模塊
監(jiān)控器是該系統(tǒng)最重要的部分,完成了整個(gè)系統(tǒng)80%的工作。為了達(dá)到實(shí)時(shí)監(jiān)控的目的,監(jiān)控器對(duì)被監(jiān)控網(wǎng)頁(yè)的爬取頻率要選取合適的區(qū)間。經(jīng)多次試驗(yàn)發(fā)現(xiàn),將時(shí)間間隔定位為每三秒執(zhí)行一次監(jiān)控程序效果最佳,兼顧了效率與各模塊之間的平衡。
首先,使用Python爬蟲(chóng)爬取網(wǎng)頁(yè)正文,為了更好地展示網(wǎng)頁(yè)篡改可視化預(yù)警系統(tǒng),運(yùn)用了lxml庫(kù)解析網(wǎng)頁(yè)內(nèi)容以及XPath語(yǔ)法定位網(wǎng)頁(yè)信息,并將每段話(huà)用##分開(kāi)。其次,建立文字對(duì)比器,利用Python的jieba將爬取的新老網(wǎng)頁(yè)內(nèi)容分詞和切分,文字對(duì)比器是監(jiān)控器的核心模塊,利用LD算法對(duì)新老文本進(jìn)行兩次對(duì)比,并分別保存新老文本的不同之處以便之后的處理。最后,利用Python自帶的MySQLHelp庫(kù)并加以修改建立起監(jiān)控器對(duì)數(shù)據(jù)庫(kù)的調(diào)用、存儲(chǔ)信息與先期處理。
數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞會(huì)決定系統(tǒng)運(yùn)行是否流暢,本次構(gòu)建系統(tǒng)的數(shù)據(jù)庫(kù)名稱(chēng)為web_page_monitor,內(nèi)含三個(gè)表,分別是user表、web_content表、web_info表。user表記錄的是系統(tǒng)的用戶(hù)信息,包括用戶(hù)id、名稱(chēng)、密碼以及年齡等主鍵id;web_content表存儲(chǔ)的主要是初始網(wǎng)頁(yè)、被篡改之后的網(wǎng)頁(yè)的正文信息以及網(wǎng)頁(yè)被篡改之后的不同之處,如果監(jiān)測(cè)程序發(fā)現(xiàn)沒(méi)有發(fā)生篡改,就不存入;web_info表存儲(chǔ)的是被監(jiān)控網(wǎng)頁(yè)的信息。
2.4 ?可視化網(wǎng)頁(yè)預(yù)警模塊
利用jQuery EasyUI提供的服務(wù)來(lái)輔助搭建網(wǎng)頁(yè)篡改可視化系統(tǒng)的前端,服務(wù)器端運(yùn)用PHP語(yǔ)言來(lái)實(shí)現(xiàn)各種服務(wù)。主要網(wǎng)頁(yè)包括登錄界面、注冊(cè)界面以及登錄之后的系統(tǒng)界面。系統(tǒng)界面里包含介紹系統(tǒng)功能模塊的內(nèi)容、被監(jiān)控網(wǎng)頁(yè)配置、篡改檢測(cè)預(yù)警可視化以及用戶(hù)信息的管理。篡改檢測(cè)預(yù)警可視化部分將每一次的被修改段落都標(biāo)注了出來(lái),并且根據(jù)篡改制作了篡改次數(shù)圖,直觀(guān)地反映了頁(yè)面被篡改的程度以及篡改的頻率,給管理人員一個(gè)基本的參考。可視化預(yù)警模塊組成直觀(guān)圖如圖3所示。
登錄可視化動(dòng)態(tài)網(wǎng)頁(yè)之后就能看到管理員可以對(duì)該系統(tǒng)進(jìn)行的三個(gè)最終的操作:被監(jiān)控網(wǎng)頁(yè)配置、篡改檢測(cè)預(yù)警可視化以及用戶(hù)信息管理。被檢測(cè)網(wǎng)頁(yè)模塊可以通過(guò)添加需要監(jiān)控的網(wǎng)頁(yè)URL以及爬取規(guī)則來(lái)達(dá)到對(duì)相應(yīng)的多個(gè)被監(jiān)控網(wǎng)頁(yè)進(jìn)行防篡改監(jiān)控。篡改檢測(cè)預(yù)警可視化可以對(duì)每一次對(duì)網(wǎng)頁(yè)進(jìn)行篡改的內(nèi)容以及對(duì)網(wǎng)頁(yè)篡改的頻率做了直觀(guān)的統(tǒng)計(jì)和展示。用戶(hù)信息管理可以對(duì)用戶(hù)的密碼等信息做出改變并存入數(shù)據(jù)庫(kù)。
3 ?系統(tǒng)功能實(shí)現(xiàn)與測(cè)試
3.1 ?系統(tǒng)測(cè)試
通過(guò)修改爬蟲(chóng)規(guī)則,本系統(tǒng)可以對(duì)網(wǎng)頁(yè)內(nèi)加入暗鏈、添加惡意代碼、網(wǎng)頁(yè)文本信息篡改進(jìn)行有效檢測(cè)。
系統(tǒng)運(yùn)用lxml庫(kù)解析網(wǎng)頁(yè)內(nèi)容和XPath語(yǔ)法定位網(wǎng)頁(yè)信息,有效定位網(wǎng)頁(yè)正文內(nèi)容有無(wú)修改,什么地方被修改。系統(tǒng)通過(guò)爬取網(wǎng)頁(yè)內(nèi)所有鏈接,并將這些鏈接逐一保存在數(shù)據(jù)庫(kù)表中從而有效的檢測(cè)添加暗鏈等網(wǎng)頁(yè)篡改行為。此外,系統(tǒng)通過(guò)爬取網(wǎng)頁(yè)所有的源代碼,并將網(wǎng)頁(yè)源代碼按行為單位存儲(chǔ)在數(shù)據(jù)庫(kù)的字段中,通過(guò)比對(duì)算法比對(duì)網(wǎng)頁(yè)源代碼有無(wú)被更改的情況并定位更改的地方進(jìn)行預(yù)警。
3.2 ?系統(tǒng)功能實(shí)現(xiàn)步驟
3.2.1 ?啟動(dòng)監(jiān)控器
監(jiān)控器是該系統(tǒng)最重要的模塊,將其置入管理員電腦后可以與其他模塊相互獨(dú)立的運(yùn)行。從監(jiān)控器的界面可以看出監(jiān)控器整個(gè)運(yùn)行的邏輯以及數(shù)據(jù)的流向。
3.2.2 ?被監(jiān)控網(wǎng)頁(yè)的查看
被監(jiān)控網(wǎng)頁(yè)即為管理員需要保護(hù)的對(duì)象,這里利用天涯論壇網(wǎng)上某博主的博客前端代碼來(lái)搭建本系統(tǒng)的被監(jiān)控網(wǎng)頁(yè),天涯論壇網(wǎng)是中國(guó)知名的論壇博客,如圖4所示,它的前端模板基本上可以代表主流博客網(wǎng)站的代碼風(fēng)格。
3.2.3 ?對(duì)被監(jiān)控的網(wǎng)頁(yè)進(jìn)行篡改
將所有服務(wù)開(kāi)啟并且登錄網(wǎng)頁(yè)篡改可視化預(yù)警系統(tǒng)之后,進(jìn)行第一步測(cè)試。直接在服務(wù)器端人為地將網(wǎng)頁(yè)中博客正文的源碼篡改,目的是模擬網(wǎng)站服務(wù)器被攻擊者脫庫(kù)或者獲取網(wǎng)站后臺(tái)信息后進(jìn)行的網(wǎng)頁(yè)篡改。
3.2.4 ?系統(tǒng)可視化動(dòng)態(tài)網(wǎng)頁(yè)的查看
打開(kāi)系統(tǒng)的可視化動(dòng)態(tài)網(wǎng)頁(yè),會(huì)有提示出現(xiàn)。按照提示刷新網(wǎng)頁(yè)后,點(diǎn)開(kāi)篡改檢測(cè)預(yù)警可視化,可以查看每次被篡改的具體段落以及篡改的次數(shù),其中增添刪除操作記為一次,修改操作會(huì)統(tǒng)計(jì)篡改前與篡改后不同的地方以及篡改后與篡改前不同的地方相加后的結(jié)果,顯示篡改次數(shù)折線(xiàn)圖如圖5所示。
3.2.5 ?數(shù)據(jù)庫(kù)的查看
數(shù)據(jù)庫(kù)是連接監(jiān)控器和可視化動(dòng)態(tài)網(wǎng)頁(yè)的橋梁,查看數(shù)據(jù)庫(kù)可以從一定程度上判斷錯(cuò)誤發(fā)生的位置,直觀(guān)的反應(yīng)數(shù)據(jù)在這兩部分之間的傳遞和存儲(chǔ)過(guò)程。
4 ?結(jié) ?論
筆者結(jié)合LD算法、Python爬蟲(chóng)構(gòu)建了基于LD算法的網(wǎng)頁(yè)篡改可視化預(yù)警系統(tǒng),通過(guò)搭建自己的靜態(tài)博客網(wǎng)頁(yè)并且以部署網(wǎng)頁(yè)篡改可視化預(yù)警系統(tǒng)的方式來(lái)測(cè)試系統(tǒng)的可用性,進(jìn)而調(diào)試系統(tǒng)存在的漏洞。經(jīng)過(guò)一系列的努力,基本上建立并完善了一個(gè)可以滿(mǎn)足功能需求、高效率、操作便捷的可視化系統(tǒng)。本文中實(shí)現(xiàn)的系統(tǒng)運(yùn)行速度快、檢測(cè)率高,在靜態(tài)網(wǎng)絡(luò)方面,可以達(dá)到只要網(wǎng)頁(yè)源碼發(fā)生了改變,便可以對(duì)網(wǎng)頁(yè)篡改行為進(jìn)行預(yù)警,并顯示被篡改的地方。同時(shí)在此基礎(chǔ)上,下一步將進(jìn)行對(duì)爬取動(dòng)態(tài)博客網(wǎng)頁(yè)的研究。
在具體的公安工作中,由于本次研究的系統(tǒng)體量小、安裝方便、資源占用少,可以作為部署在各個(gè)重點(diǎn)單位網(wǎng)站的防篡改監(jiān)控器,配合一系列操作與其他的軟件能在較短的時(shí)間對(duì)篡改網(wǎng)頁(yè)做出反應(yīng),為公安機(jī)關(guān)保護(hù)人民財(cái)產(chǎn)安全做出一定的貢獻(xiàn)。
參考文獻(xiàn):
[1] ELSHAZLY K,F(xiàn)OUAD Y,SALEH M,et al. A Survey of SQL Injection Attack Detection and Prevention [J].Journal of Computer and Communications,2014,2(8):1-9.
[2] 王小群,丁麗,嚴(yán)寒冰,等.2016年我國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全態(tài)勢(shì)綜述 [J].互聯(lián)網(wǎng)天地,2017(4):47-56.
[3] 何世平.2013年中國(guó)互聯(lián)網(wǎng)站安全情況綜述 [J].互聯(lián)網(wǎng)天地,2014(7):53-58.
作者簡(jiǎn)介:王本鈺(1998—),男,漢族,江蘇鹽城人,碩士研究生,研究方向:軟件設(shè)計(jì)。