王本鈺 鄭棣文 李禹欣 彭舒凡 王勇



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