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



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