◆梁志宏 樊 凱
(中國南方電網(wǎng)有限責(zé)任公司 廣東 510623)
Web信息安全動態(tài)監(jiān)測關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
◆梁志宏 樊 凱
(中國南方電網(wǎng)有限責(zé)任公司 廣東 510623)
鑒于目前國內(nèi)外信息安全形勢備受關(guān)注,各類網(wǎng)絡(luò)攻擊、數(shù)據(jù)泄露、病毒感染、漏洞威脅等事件時常發(fā)生。基于webkit爬蟲原理,建立一套基于云信息Web信息安全動態(tài)監(jiān)測系統(tǒng),著重介紹了非連接探測技術(shù)、支持插件的安全測試、頁面變更模板自動生成方法、指紋技術(shù)。為提高WEB安全防護(hù)的實(shí)時性、系統(tǒng)性和精準(zhǔn)性,降低WEB系統(tǒng)運(yùn)營風(fēng)險提供幫助。
爬蟲原理; 信息安全; 網(wǎng)絡(luò)攻擊; 動態(tài)監(jiān)測
某大型國企目前有近百個互聯(lián)網(wǎng)網(wǎng)站,因此其安全性備受關(guān)注。某大型國企各子單位經(jīng)常發(fā)現(xiàn)Web系統(tǒng)被掛馬、頁面信息被篡改,因此國內(nèi)很多大型企業(yè)Web安全還需要進(jìn)行如下不足[1]:
(1)缺乏全方位信息安全,尤其是Web安全,感知和分析技術(shù)手段,事件處理和漏洞發(fā)現(xiàn)主要依靠第三方安全機(jī)構(gòu)支持或主管部門通報,較為被動;
(2)安全漏洞監(jiān)測和分布統(tǒng)計手段不足。如對struts、openSSL等漏洞的處理主要依賴人工排查和手工統(tǒng)計分析,效率不高。缺乏技術(shù)手段即時對某一新爆發(fā)漏洞或存在漏洞設(shè)備在全網(wǎng)的分布于整改情況進(jìn)行摸底與呈現(xiàn);
(3)無法全局掌握全網(wǎng)對外信息系統(tǒng)與內(nèi)部信息系統(tǒng)的信息資產(chǎn)組成情況,如某一應(yīng)用系統(tǒng)IP地址、由何種操作系統(tǒng)、中間件、數(shù)據(jù)庫與Web組件構(gòu)成;
(4)存在大量業(yè)務(wù)部門自建小網(wǎng)站或廠商自行搭建的演示系統(tǒng),部署在互聯(lián)網(wǎng)上,易被安全監(jiān)管部門通報;
(5)安全可視性不強(qiáng),無法通過較友好的可視化方式呈現(xiàn)全網(wǎng)當(dāng)前安全動態(tài)與特定安全漏洞的爆發(fā)與整改動態(tài)。
通過對基于云的WEB安全感知分析技術(shù)、WEB安全指紋技術(shù)、多維可視化展示技術(shù)的研究,建立一套基于某大型國企云的信息安全動態(tài)監(jiān)測分析及場景重構(gòu)技術(shù),實(shí)現(xiàn)自動化對公司所有web系統(tǒng)實(shí)時的安全監(jiān)控,對漏洞監(jiān)控、掛馬監(jiān)控、網(wǎng)頁被篡改、網(wǎng)站可用性等安全形態(tài)進(jìn)行一體化監(jiān)測預(yù)警; 通過多維展示技術(shù)研究、全面的展示信息安全的實(shí)時態(tài)勢。從多個方面幫助安全主管部門實(shí)時掌握Web系統(tǒng)的安全狀況,提高WEB安全防護(hù)的實(shí)時性、系統(tǒng)性和精準(zhǔn)性,降低WEB系統(tǒng)運(yùn)營風(fēng)險,增強(qiáng)安全防護(hù)能力,避免引發(fā)WEB安全事件并造成不良社會影響,建立一體化、精益化、縱深化的信息安全管控體系。
2.1 監(jiān)測平臺系統(tǒng)架構(gòu)

圖1 監(jiān)測平臺系統(tǒng)架構(gòu)
監(jiān)測平臺由展示交互層、業(yè)務(wù)邏輯層、數(shù)據(jù)庫和對外接口四部分組成。展示交互層主要包括:主視圖單元、資產(chǎn)管理單元、指紋和域名探測單元、Web漏洞監(jiān)測單元、可用性監(jiān)測單元、網(wǎng)頁變更監(jiān)測單元、DNS監(jiān)測單元、用戶管理和告警系統(tǒng)管理單元。業(yè)務(wù)邏輯層包絡(luò):安全爬蟲模塊、Web漏洞監(jiān)測模塊、可用性監(jiān)測模塊、高速探測模塊、安全測試框架、多引擎管理模塊、權(quán)限管理模塊。監(jiān)測平臺系統(tǒng)架構(gòu)見圖1。
2.2 關(guān)鍵技術(shù)研究
為了實(shí)現(xiàn)對某大型國企所有對外信息系統(tǒng)(可通過互聯(lián)網(wǎng)訪問)與內(nèi)部信息系統(tǒng)的Web安全監(jiān)測、漏洞通報與預(yù)警,保證公司信息系統(tǒng)應(yīng)用安全性; 通過Web指紋庫建立與特征抓取技術(shù),實(shí)現(xiàn)全網(wǎng)對外信息系統(tǒng)與內(nèi)部信息系統(tǒng)的資產(chǎn)信息自動發(fā)現(xiàn)摸底,特定品牌、型號或版本的設(shè)備組件分布情況可視化展示、特定安全漏洞的分布情況可視化; 實(shí)現(xiàn)對全球互聯(lián)網(wǎng)IP的動態(tài)掃描,從而可發(fā)現(xiàn)未在甲方信息部門登記備案的甲方業(yè)務(wù)部門自建小系統(tǒng)或廠商自行搭建的含有甲方相關(guān)信息的演示、測試系統(tǒng),通過可視化方式呈現(xiàn); 通過開放性的輕量級安全檢測框架,支持用戶自定義安全插件的開發(fā)嵌入,從而實(shí)現(xiàn)對甲方某一最新安全漏洞整改情況的全局性檢測、分布情況統(tǒng)計與可視化呈現(xiàn);實(shí)現(xiàn)較為友好的安全可視化展示,可通過安全地圖或傳統(tǒng)圖表等多種可視化方式,并與公司信息安全審計系統(tǒng)(SOC)進(jìn)行可視化集成。
3.1 爬蟲技術(shù)研究
為了能夠充分解析網(wǎng)頁,盡可能的使網(wǎng)頁的解析效果與用戶實(shí)際解析結(jié)果接近,同時盡量利用成熟技術(shù),減少開發(fā)工作量,在本次項目中采用webkit瀏覽器引擎作為解析底層[2]。項目中的爬蟲不采用正則表達(dá)式分析方法,而是采用調(diào)用webkit引擎的技術(shù),通過調(diào)用瀏覽器引擎模塊來對頁面進(jìn)行分析,力圖達(dá)到最佳的頁面還原效果。WebKit 是目前最流行的開源的瀏覽器引擎,被蘋果的Safari瀏覽器和Google的Chrome瀏覽器所采用,本項目采用Webkit引擎作為底層,同時支持Javascript對頁面的解析,同時也考慮支持flash插件,爬取到最真實(shí)的網(wǎng)頁數(shù)據(jù)。爬蟲主要使用qt進(jìn)行編寫,使用了Qwebkit框架進(jìn)行搭建,使用Qwebkit是因為該框架有豐富的接口函數(shù),以及高效的編寫效率。系統(tǒng)流程圖見圖2。
程序從解析參數(shù)模塊入口,首先獲取用戶輸入的參數(shù),然后調(diào)用解析參數(shù)模塊,對每個輸入的參數(shù)進(jìn)行解析并獲取到對應(yīng)的信息。通過信息進(jìn)行參數(shù)匹配,檢測是否某些參數(shù)沒有輸入,如果沒有輸入則啟用默認(rèn)值[3]。然后進(jìn)行數(shù)據(jù)庫的連接,如果數(shù)據(jù)庫連接失敗,則會報錯退出。實(shí)例化爬取對象,在實(shí)例化中構(gòu)建了頁面的元素。設(shè)置相應(yīng)的參數(shù),加載頁面,加載頁面的同時會設(shè)置定時器進(jìn)行檢測是否載入超時。通過創(chuàng)捷QNetworkRequest來設(shè)置網(wǎng)頁請求,通過load方法來進(jìn)行加載頁面。因為有些頁面為跳轉(zhuǎn)頁面,所以加載頁面完成后進(jìn)行頁面跳轉(zhuǎn)的判斷。然后再進(jìn)行頁面鏈接的爬取,通過解析頁面xml的標(biāo)簽以及標(biāo)簽內(nèi)容進(jìn)行獲取所需要的鏈接。獲取頁面鏈接后對鏈接進(jìn)行類型判斷,判斷是否為外鏈或同級域名,然后根據(jù)不同類型進(jìn)行md5處理。根據(jù)處理出的不同類型進(jìn)行入庫處理,入庫過程中,md5相同的鏈接不進(jìn)行入庫處理當(dāng)前層次的鏈接爬取完成后,系統(tǒng)會去獲取下一層的鏈接,并存儲到vecto容器中,以方便獲取鏈接。如果沒有獲取到下一層的鏈接,說明已經(jīng)沒有鏈接可以爬取,則爬取完成,程序退出。
3.2 非連接探測技術(shù)
非連接探測技術(shù)也稱為被動探測技術(shù),是不主動激發(fā)目標(biāo)主機(jī)的響應(yīng),而通過網(wǎng)絡(luò)嗅探來截獲目標(biāo)系統(tǒng)發(fā)出的數(shù)據(jù)包,從中提取和分析特性信息來獲得目標(biāo)主機(jī)的相應(yīng)信息[4]。被動探測抓取目標(biāo)主機(jī)發(fā)送出來的TCP報文,通過分析報文中的相關(guān)字段,獲取不同的特征信息。在TCP/IP協(xié)議中,主要采取3次握手建立1個連接。3次握手采用“發(fā)送-應(yīng)答-發(fā)送”的機(jī)制,等待監(jiān)聽的時間勢必導(dǎo)致發(fā)包速度的緩慢。而ZMap索性就不進(jìn)行三次握手。
ZMap只進(jìn)行第一個SYN,然后等待對方回復(fù)SYN-ACK,隨后發(fā)送RST(重置連接),不存在監(jiān)聽同步操作,清空連接,再繼續(xù)發(fā)下一個數(shù)據(jù)包。而對于識別 ZMap是將對方receiver ip地址進(jìn)行類似hash表一樣的映射,將其處理保存到了sender port和seq number兩個字段中,當(dāng)SYN-ACK回來的時候(可能是Syn+Ack,也可能RST),就可以根據(jù)sender ip、receiver port、ack number這些字段進(jìn)行校驗,并對應(yīng)處理記錄。因此避免了狀態(tài)存儲,接近了網(wǎng)絡(luò)帶寬極限。一個TCP數(shù)據(jù)包包括一個TCP頭,后面是選項和數(shù)據(jù)。一個TCP頭包含6個標(biāo)志位。
單臺服務(wù)器,掃描整個IPv4地址空間,耗時45分鐘,將所接1Gb的帶寬占用了97%。不僅速度上比Nmap(TCP SYN模式)高不少,而且其設(shè)計的無狀態(tài)機(jī)制,讓其搜索成功的覆蓋率也增加了。Zmap 某些方面和python 的scapy很像。但zmap純C語言實(shí)現(xiàn),比scapy效率要高一些。這也讓ZMap能在這單一領(lǐng)域做很多優(yōu)化。像ZMap 這樣的工具沒法發(fā)現(xiàn)所有漏洞。
3.3 支持插件的安全測試
當(dāng)在掃描過程中需要發(fā)送payload時,如果輸入的參數(shù)有--payload項,程序就會執(zhí)行指定的python腳本來實(shí)現(xiàn)相關(guān)功能。如果需要發(fā)送payload,調(diào)用get_payload 函數(shù)獲取payload。獲取python返回值cotent,并獲取其中的payload內(nèi)容。檢測的過程也可以通過支持python腳本實(shí)現(xiàn)。抓到數(shù)據(jù)包,然后初步判斷數(shù)據(jù)包類別,調(diào)用相應(yīng)的處理函數(shù)。如果輸入的參數(shù)指定了python腳本,則調(diào)用相應(yīng)的腳本檢測payload。Flag為檢測的結(jié)果,成功則入庫,失敗則不入庫。程序調(diào)用python腳本的payload_process方法,將payload作為參數(shù)傳入,python腳本接收到參數(shù)之后,對payload進(jìn)行檢測,并返回檢測結(jié)果。
3.4 指紋技術(shù)
由于Web服務(wù)是互聯(lián)網(wǎng)上應(yīng)用十分廣泛,也是容易受到惡意攻擊的一種網(wǎng)絡(luò)服務(wù),并且在HTTP的響應(yīng)包中蘊(yùn)含了豐富的組件信息,這些因素為Web服務(wù)的深入識別提供了必要性和可能性。操作系統(tǒng)的探測識別主要利用指紋技術(shù),包括主動和被動兩種。主動識別技術(shù)采用向目標(biāo)發(fā)送構(gòu)造的特殊包并監(jiān)控其應(yīng)答方式來識別操作系統(tǒng)。被動識別技術(shù),通過被動監(jiān)聽網(wǎng)絡(luò)通信,確定所用的操作系統(tǒng)。本節(jié)在通用應(yīng)用指紋技術(shù)基礎(chǔ)上,針對Web服務(wù)指紋技術(shù)進(jìn)行專門探討。Web服務(wù)可識別的組件信息包含多個層次。
通常有4種方法可以識別一個Web應(yīng)用:
(1)在網(wǎng)站首頁面的HTTP headers和body中進(jìn)行模式匹配或特征串匹配;
(2)獲取特殊的URL,在HTML中進(jìn)行模式匹配;
(3)獲取特定的URL,計算md5,對比md5值進(jìn)行判斷;(4)獲取特定的URL,通過返回的狀態(tài)碼進(jìn)行判斷。
在這4種方法中第1種是應(yīng)用最廣泛的,它網(wǎng)絡(luò)帶寬占用最小并且識別最快,適合大規(guī)則的掃描識別。第2-4種方法,需要獲取網(wǎng)站的更多頁面進(jìn)行匹配,增加了對帶寬的占用,匹配時間也要更久。隨著人們安全意識的增強(qiáng),越來越多的Web應(yīng)用程序不在首頁面中暴露過多有用信息,在這種情況下,方法2、3更加有效。方法4在識別開啟mod_rewrite功能的網(wǎng)站時,可能造成錯誤的判斷。
要識別一種Web服務(wù)器,首先到它的主頁中學(xué)習(xí)它的相關(guān)資料,查看示例,找到下載鏈接,對于版本識別有可能需要下載多個版本進(jìn)行研究。尋找盡可能多的Web服務(wù)器的例子進(jìn)行研究。可以借助官網(wǎng)給出的示例網(wǎng)站,從示例網(wǎng)站中分析一定的特征,再借助搜素引擎尋找更多的例子。還可以從該Web服務(wù)器相關(guān)論壇中獲取一些例子。需要強(qiáng)調(diào)的是例子的數(shù)量及多樣性,數(shù)量越多,種類越多,分析的結(jié)果就越全面,越有代表性。分析示例網(wǎng)站的首頁面,從headers、body中尋找能標(biāo)記這種Web服務(wù)器的相似特征。深入分析幾個網(wǎng)站的源文件,尋找有代表性的特征。通常可以關(guān)注headers、footers、URL、網(wǎng)站結(jié)構(gòu)、Javascript libraries名稱、CSS文件、div命名特點(diǎn)。獲取所有示例網(wǎng)站的首頁源文件,進(jìn)行篩選。通過上面分析出的特征,去除一些明顯不對的示例網(wǎng)站。對剩余的網(wǎng)頁源文件分析相同特征。驗證收集的指紋特征。借助搜索引擎可以驗證指紋是否有效標(biāo)記這種Web服務(wù)器,如果有效保留,如果無效,剔除。
本文通過對爬蟲技術(shù)進(jìn)行研究,建立一套基于信息安全動態(tài)監(jiān)測分析系統(tǒng)。實(shí)現(xiàn)了對公司所有web系統(tǒng)實(shí)時的安全監(jiān)控,對漏洞監(jiān)控、掛馬監(jiān)控、網(wǎng)頁被篡改、網(wǎng)站可用性等安全形態(tài)進(jìn)行一體化監(jiān)測預(yù)警。通過多維展示技術(shù)研究、全面的展示信息安全的實(shí)時態(tài)勢。從多個方面幫助安全主管部門實(shí)時掌握Web系統(tǒng)的安全狀況,提高WEB安全防護(hù)的實(shí)時性、系統(tǒng)性和精準(zhǔn)性,降低WEB系統(tǒng)運(yùn)營風(fēng)險,增強(qiáng)安全防護(hù)能力,避免引發(fā)WEB安全事件并造成不良社會影響。
[1]李萬莉,項著廷.基于B/S結(jié)構(gòu)遠(yuǎn)程監(jiān)測系統(tǒng)軟件設(shè)計[J].計算機(jī)技術(shù)與發(fā)展,2015.
[2]解全穎.Web訪問控制推理研究[J].西南民族大學(xué)學(xué)報(自然科學(xué)版),2014.
[3]鄭木德.基于Web的科研管理信息系統(tǒng)中關(guān)鍵子系統(tǒng)的設(shè)計[J].太原師范學(xué)院學(xué)報(自然科學(xué)版),2008.
[4]石云輝,黃雋.基于.NET的網(wǎng)絡(luò)故障監(jiān)測報警系統(tǒng)的設(shè)計[J].微計算機(jī)信息,2008.
[5]劉家軍,劉夢娜,安源.基于GIS的網(wǎng)絡(luò)化接觸網(wǎng)檢修掛接地線信息管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].電力系統(tǒng)保護(hù)與控制,2016.