本發(fā)明涉及一種適應(yīng)于電力行業(yè)的網(wǎng)站監(jiān)控系統(tǒng)及方法。
背景技術(shù):
現(xiàn)有技術(shù)存在以下幾個(gè)方面的問題:
1、當(dāng)前情況下,電力系統(tǒng)作為我國(guó)能源行業(yè)的重要組成部分,信息化已經(jīng)具備了一定規(guī)模,而信息化建設(shè)的重點(diǎn)之一就是信息安全;信息安全已成為電網(wǎng)公司信息化工作的重要內(nèi)容,信息安全工作是企業(yè)信息化建設(shè)的基礎(chǔ)和保障,直接關(guān)系到企業(yè)安全和發(fā)展。
2、網(wǎng)頁(yè)掛馬、SQL注入攻擊和XSS跨站攻擊已經(jīng)成為木馬、病毒傳播的主要途徑之一。由于各種系統(tǒng)漏洞和軟件漏洞的存在,因此通過掛馬進(jìn)行入侵的數(shù)量會(huì)繼續(xù)增加。同時(shí)黑客通過SQL注入攻擊或XSS跨站腳本攻擊等手法入侵網(wǎng)站系統(tǒng),從而篡改網(wǎng)站網(wǎng)頁(yè)或數(shù)據(jù)庫(kù)的內(nèi)容,甚至植入各種各樣的下載腳本代碼。用戶只要瀏覽被植入木馬的網(wǎng)站,如果系統(tǒng)存在漏洞就會(huì)遭遇木馬入侵,從而造成個(gè)人信息泄漏和財(cái)產(chǎn)損失。
3、著名的信息技術(shù)研究和分析公司Gartner統(tǒng)計(jì),近些年來,超過70%的攻擊都來自于Web攻擊;CNCERT 2016年7月中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告顯示,2015年境內(nèi)被篡改網(wǎng)站較2014年增加10%。一系列的數(shù)據(jù)顯示,傳統(tǒng)的Web安全防護(hù)與監(jiān)測(cè)已經(jīng)難以應(yīng)對(duì)當(dāng)前形勢(shì),Web安全的常態(tài)化監(jiān)測(cè)、預(yù)警與態(tài)勢(shì)分析已經(jīng)是Web安全的當(dāng)務(wù)之急。
4、面對(duì)大規(guī)模的網(wǎng)站安全監(jiān)測(cè)工作,仍然依靠傳統(tǒng)單機(jī)安全檢測(cè)工具或者管理員手工檢測(cè)管理網(wǎng)站幾乎是不可想象的,不僅消耗了大量人力物力,而且檢測(cè)的實(shí)效性和全面性都很低。雖然可以通過部署入侵防御系統(tǒng)、高性能防火墻等相關(guān)防御類產(chǎn)品來起到一定的防御效果,但是用戶難以及時(shí)的發(fā)現(xiàn)風(fēng)險(xiǎn)隱患,并預(yù)防這些安全事件。除此之外,管理員需要維護(hù)大量的安全設(shè)備,分析眾多日志信息,這些帶來的額外工作量不可小視。在目前網(wǎng)頁(yè)篡改、網(wǎng)頁(yè)掛馬和SQL注入攻擊日益嚴(yán)重的現(xiàn)狀下,將面臨著很大的挑戰(zhàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是為了解決上述問題,提供一種適應(yīng)于電力行業(yè)的網(wǎng)站監(jiān)控系統(tǒng)及方法,本發(fā)明利用現(xiàn)有的服務(wù)器,對(duì)眾多的電力業(yè)務(wù)系統(tǒng),設(shè)計(jì)了基于云計(jì)算技術(shù)的集群檢測(cè)工具,采用先進(jìn)的Map/Reduce模型來實(shí)現(xiàn)存儲(chǔ)技術(shù),實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的集群式,可以使數(shù)據(jù)在各個(gè)檢測(cè)節(jié)點(diǎn)間共享,同時(shí)將所有數(shù)據(jù)匯聚到管理中心,進(jìn)行數(shù)據(jù)挖掘、關(guān)聯(lián)分析、統(tǒng)計(jì)分析和趨勢(shì)分析等計(jì)算,并最終通過餅圖、折線圖、柱狀圖等圖表進(jìn)行展示。這樣的操作,能夠極大 提高檢測(cè)效率和檢測(cè)時(shí)間,同時(shí)可以更直觀的發(fā)現(xiàn)網(wǎng)站安全趨勢(shì),獲取安全事件對(duì)公司網(wǎng)站的運(yùn)營(yíng)影響等。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種適應(yīng)于電力行業(yè)的網(wǎng)站監(jiān)控系統(tǒng),包括:交互層、數(shù)據(jù)層、調(diào)度層、檢測(cè)引擎;
交互層,用于與用戶進(jìn)行交互;
數(shù)據(jù)層,用于存儲(chǔ)用戶資料、檢測(cè)數(shù)據(jù)、配置數(shù)據(jù)以及配置文件;
調(diào)度層,用于調(diào)度檢測(cè)引擎對(duì)用戶下達(dá)的任務(wù)進(jìn)行周期性自動(dòng)化檢測(cè),并且在檢測(cè)結(jié)束后,將檢測(cè)結(jié)果匯總至數(shù)據(jù)層;
檢測(cè)引擎,用于接受調(diào)度層下達(dá)的檢測(cè)命令,對(duì)目標(biāo)網(wǎng)站進(jìn)行檢測(cè),識(shí)別Web安全漏洞,對(duì)網(wǎng)站進(jìn)行深度安全體檢;同時(shí)實(shí)時(shí)監(jiān)測(cè)網(wǎng)站運(yùn)行的安全狀態(tài),識(shí)別網(wǎng)頁(yè)非法篡改、網(wǎng)頁(yè)被嵌入惡意代碼、域名被劫持、訪問頁(yè)面被拒絕和網(wǎng)頁(yè)中出現(xiàn)敏感信息;并利用漏洞掃描設(shè)備和漏洞檢測(cè)工具,到現(xiàn)場(chǎng)采集內(nèi)網(wǎng)安全信息,排查漏洞隱患和深層安全事件,采集網(wǎng)站安全體檢結(jié)果、網(wǎng)站運(yùn)行安全狀態(tài)和現(xiàn)場(chǎng)安全檢查結(jié)果,并傳送到數(shù)據(jù)庫(kù)中進(jìn)行保存。
配置文件包含定義系統(tǒng)加載所需環(huán)境的設(shè)置和文件的集合。
所述交互層包括:用戶界面UI展示層和數(shù)據(jù)處理層;
用戶界面UI展示層,用于與用戶交互,用戶操作請(qǐng)求通過用戶界面UI展示層向后端傳遞,并且接收后端傳遞數(shù)據(jù),通過繪制圖表等方式展現(xiàn)給用戶;
數(shù)據(jù)處理層,用于接收用戶前端傳遞數(shù)據(jù)進(jìn)行各類邏輯處理,并且操作數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)、查詢、修改、刪除操作。
所述交互層包括:權(quán)限控制模塊、網(wǎng)站發(fā)現(xiàn)模塊、檢測(cè)任務(wù)添加模塊、各類數(shù)據(jù)查看模塊、API接口、設(shè)置模塊、用戶管理模塊、日志管理模塊、關(guān)鍵詞管理模塊和其他外部服務(wù)模塊。
所述權(quán)限控制模塊,用于根據(jù)設(shè)置的安全規(guī)則或者安全策略,限制用戶訪問的權(quán)限,限制用戶只能訪問自己被授權(quán)的資源;
從用戶訪問的權(quán)限將用戶分為:root用戶、超級(jí)用戶(系統(tǒng)管理員)、普通用戶。
root用戶具有最高權(quán)限,可以添加和刪除超級(jí)用戶和普通用戶,擁有系統(tǒng)管理和應(yīng)用管理的權(quán)限;root用戶具有超級(jí)用戶和普通用戶的所有權(quán)限,root用戶不能被刪除;
超級(jí)用戶可以添加和刪除普通用戶,擁有系統(tǒng)管理和應(yīng)用管理的權(quán)限;超級(jí)用戶需要為添加的用戶進(jìn)行分組;
普通用戶擁有應(yīng)用管理的權(quán)限;普通用戶具有添加檢測(cè)任務(wù),查看日志等權(quán)限。
所述網(wǎng)站發(fā)現(xiàn)模塊,用于使用掃描技術(shù)對(duì)目標(biāo)網(wǎng)站進(jìn)行分析、掃描探測(cè)、服務(wù)查點(diǎn)、掃描對(duì)方漏洞和查找目標(biāo)網(wǎng)站的IP地址;
所述檢測(cè)任務(wù)添加模塊,用于供用戶添加檢測(cè)任務(wù);
所述各類數(shù)據(jù)查看模塊,用于供用戶查看各類數(shù)據(jù)信息,包括檢測(cè)任務(wù)和檢測(cè)結(jié)果;
所述API接口,是一組定義、程序及協(xié)議的集合,用于實(shí)現(xiàn)計(jì)算機(jī)軟件之間的相互通信,API接口還可以作為二次開發(fā)使用;
所述設(shè)置模塊,用于實(shí)現(xiàn)用戶管理、日志管理、關(guān)鍵詞管理以及提供其他外部服務(wù);
所述用戶管理模塊,用于負(fù)責(zé)用戶的添加、修改、刪除操作;
所述日志管理模塊,用于記錄用戶已執(zhí)行的網(wǎng)站檢測(cè)任務(wù);
所述關(guān)鍵詞管理模塊,用于存儲(chǔ)敏感關(guān)鍵詞。
所述網(wǎng)站發(fā)現(xiàn)模塊,還分別與Memcache數(shù)據(jù)庫(kù)和網(wǎng)站發(fā)現(xiàn)掃描引擎連接;
所述Memcache數(shù)據(jù)庫(kù),用于存放加密狗信息;
所述網(wǎng)站發(fā)現(xiàn)掃描引擎,用于接收用戶下達(dá)的檢測(cè)指令,對(duì)網(wǎng)站進(jìn)行檢測(cè),檢測(cè)完畢后,將檢測(cè)結(jié)果存入MongoDB數(shù)據(jù)庫(kù)。
所述其他外部服務(wù)模塊,包括:遠(yuǎn)程維護(hù)服務(wù)單元、備份服務(wù)單元、SNMP服務(wù)單元、集群服務(wù)單元、SSH服務(wù)單元、升級(jí)服務(wù)單元、郵件服務(wù)單元、短信接口單元和二次開發(fā)接口。
所述遠(yuǎn)程維護(hù)服務(wù)單元,通過開啟遠(yuǎn)程服務(wù)端口實(shí)現(xiàn)遠(yuǎn)程維護(hù)服務(wù)。例如開啟3389端口可采用遠(yuǎn)程連接來維護(hù)系統(tǒng)服務(wù)器。
所述備份服務(wù)單元,用于采用手工或者自動(dòng)方式定期備份數(shù)據(jù)。
所述SNMP服務(wù)單元,用于從網(wǎng)絡(luò)上的軟硬件設(shè)備中收集網(wǎng)絡(luò)管理信息,將信息呈現(xiàn)給系統(tǒng)網(wǎng)絡(luò)管理員查看。
所述集群服務(wù)單元,用于對(duì)服務(wù)器做出優(yōu)化,使檢測(cè)程序充分利用所有資源。
所述SSH服務(wù)單元,用于為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,利用SSH協(xié)議防止遠(yuǎn)程維護(hù)過程中的信息泄露問題。所述其他網(wǎng)絡(luò)服務(wù)包括FTP、POP、PPP;
所述升級(jí)服務(wù)單元,用于網(wǎng)站監(jiān)控系統(tǒng)后期版本升級(jí)。
所述郵件服務(wù)單元,用于提供郵件服務(wù),當(dāng)監(jiān)測(cè)到網(wǎng)站異?;虬l(fā)現(xiàn)高危安全事件后,將立即發(fā)郵件給任務(wù)對(duì)應(yīng)的管理員或操作員。
所述短信接口單元,用于提供短信服務(wù),當(dāng)監(jiān)測(cè)到網(wǎng)站異?;虬l(fā)現(xiàn)高危安全事件后,將立即發(fā)短信給任務(wù)對(duì)應(yīng)的管理員或操作員。
所述二次開發(fā)接口,用于網(wǎng)站監(jiān)控系統(tǒng)后期進(jìn)行二次開發(fā)使用。
所述數(shù)據(jù)層包括:MongoDB數(shù)據(jù)庫(kù)、MySQL數(shù)據(jù)庫(kù)和其他系統(tǒng)配置文件;
所述MongoDB數(shù)據(jù)庫(kù),用于存儲(chǔ)發(fā)現(xiàn)的網(wǎng)站、添加的檢測(cè)任務(wù)、數(shù)據(jù)查看任務(wù)以及檢測(cè)信息;
所述MySQL數(shù)據(jù)庫(kù),用于存儲(chǔ)用戶信息、系統(tǒng)日志以及關(guān)鍵詞信息;
所述其他系統(tǒng)配置文件,包括:用戶登錄時(shí)定義系統(tǒng)加載所需環(huán)境的設(shè)置和文件的集合。
所述調(diào)度層,包括:任務(wù)分發(fā)模塊、任務(wù)獲取模塊、Redis數(shù)據(jù)庫(kù)和work子進(jìn)程;
所述任務(wù)分發(fā)模塊,任務(wù)分發(fā)進(jìn)程taskd輪詢MongoDB數(shù)據(jù)庫(kù),從MongoDB數(shù)據(jù)庫(kù)中獲取任務(wù)組信息。根據(jù)任務(wù)組的預(yù)約檢測(cè)時(shí)間、檢測(cè)優(yōu)先級(jí)及檢測(cè)周期判斷目標(biāo)網(wǎng)站任務(wù)是否需要調(diào)度,達(dá)到檢測(cè)周期后會(huì)生成單次檢測(cè)任務(wù)實(shí)例,并拆分成單個(gè)網(wǎng)站檢測(cè)實(shí)例存入Redis數(shù)據(jù)庫(kù)。
所述任務(wù)獲取模塊,任務(wù)獲取進(jìn)程jobd定期從Redis數(shù)據(jù)庫(kù)中獲取單個(gè)網(wǎng)站檢測(cè)實(shí)例,創(chuàng)建work子進(jìn)程。
所述Redis數(shù)據(jù)庫(kù),用于存放任務(wù)隊(duì)列供調(diào)度組件使用網(wǎng)站。
所述work子進(jìn)程,由任務(wù)獲取模塊(jobd)創(chuàng)建用于檢測(cè)的子進(jìn)程。
對(duì)任務(wù)中的每個(gè)掃描模塊,創(chuàng)建一個(gè)新的子進(jìn)程來處理。并對(duì)調(diào)度層檢測(cè)的任務(wù)進(jìn)行統(tǒng)計(jì),對(duì)檢測(cè)到的異常或者安全事件發(fā)出告警。
所述work子進(jìn)程,包括:統(tǒng)計(jì)組件單元和告警單元;
所述統(tǒng)計(jì)組件單元,用于對(duì)調(diào)度組件檢測(cè)的任務(wù)進(jìn)行統(tǒng)計(jì)。
所述告警單元,用于對(duì)檢測(cè)到的異?;蛘甙踩录l(fā)出告警。
所述檢測(cè)引擎,負(fù)責(zé)接受調(diào)度層下達(dá)的檢測(cè)命令,對(duì)目標(biāo)網(wǎng)站進(jìn)行檢測(cè)。包括:配置文件、可用性探測(cè)模塊、安全事件及漏洞檢測(cè)模塊、網(wǎng)頁(yè)變更檢測(cè)模塊、網(wǎng)站信息獲取模塊和安全事件及漏洞檢測(cè)結(jié)果存儲(chǔ)文件;
所述配置文件,用于存儲(chǔ)用戶登錄時(shí)定義系統(tǒng)加載所需環(huán)境的設(shè)置和文件的集合。
所述可用性探測(cè)模塊,用于探測(cè)目標(biāo)網(wǎng)站是否存活、響應(yīng)時(shí)間、域名是否被劫持。
所述安全事件及漏洞檢測(cè)模塊,用于檢測(cè)安全事件中的網(wǎng)頁(yè)掛馬、暗鏈、關(guān)鍵詞,及所有的漏洞。安全事件及漏洞檢測(cè)是分開調(diào)度的,采用不同的深度、URL數(shù)上限。
所述網(wǎng)頁(yè)變更檢測(cè)模塊,用于監(jiān)測(cè)目標(biāo)網(wǎng)站的網(wǎng)頁(yè)變更情況,以防出現(xiàn)遺漏的網(wǎng)頁(yè)篡改事件。
所述網(wǎng)站信息獲取模塊,用于探測(cè)網(wǎng)站標(biāo)題、Web容器等信息。
所述漏洞檢測(cè)結(jié)果存儲(chǔ)文件,用于存儲(chǔ)漏洞檢測(cè)結(jié)果。
一種適應(yīng)于電力行業(yè)的網(wǎng)站監(jiān)控方法,包括:
步驟(1):接收檢測(cè)配置信息,并將檢測(cè)配置信息存儲(chǔ)到MongoDB數(shù)據(jù)庫(kù)中;
步驟(2):包括如下三個(gè)并列步驟:
步驟(2-1):對(duì)目標(biāo)網(wǎng)站進(jìn)行分析、掃描探測(cè)、服務(wù)查點(diǎn)、漏洞掃描,查找目標(biāo)網(wǎng)站IP地址,進(jìn)而發(fā)現(xiàn)要監(jiān)控的網(wǎng)站;將檢測(cè)結(jié)果存儲(chǔ)到MongoDB數(shù)據(jù)庫(kù);檢測(cè)結(jié)果包括SQL注入、XSS、網(wǎng)頁(yè)掛馬、暗鏈、敏感信息泄露的網(wǎng)站信息;
步驟(2-2):采用漏洞掃描工具對(duì)網(wǎng)站進(jìn)行掃描檢測(cè),實(shí)時(shí)監(jiān)控檢測(cè)結(jié)果;根據(jù)需求,利用API接口進(jìn)行二次開發(fā),完善監(jiān)控功能;將任務(wù)配置信息存儲(chǔ)到MongoDB數(shù)據(jù)庫(kù);
步驟(2-3):將用戶信息、系統(tǒng)日志以及關(guān)鍵詞信息存儲(chǔ)到MySQL數(shù)據(jù)庫(kù);
步驟(3):任務(wù)分發(fā)模塊每間隔設(shè)定時(shí)間就從MongoDB數(shù)據(jù)庫(kù)中獲取任務(wù)信息,將獲取的任務(wù)信息存儲(chǔ)到Redis數(shù)據(jù)庫(kù)中;
步驟(4):任務(wù)獲取模塊從Redis數(shù)據(jù)庫(kù)中獲取任務(wù)信息并創(chuàng)建第一work子進(jìn)程、第二work子進(jìn)程、第三work子進(jìn)程和第四work子進(jìn)程;每個(gè)子進(jìn)程執(zhí)行不同的任務(wù),從而實(shí)現(xiàn)對(duì)網(wǎng)站的監(jiān)控;
步驟(5):告警組件每間隔設(shè)定時(shí)間就從MongoDB數(shù)據(jù)庫(kù)中獲取信息,發(fā)現(xiàn)異常就進(jìn)行告警。
所述第一work子進(jìn)程,用于對(duì)目標(biāo)網(wǎng)站的可用性進(jìn)行探測(cè),所述可用性包括網(wǎng)站是否存活、響應(yīng)時(shí)間以及域名是否被劫持;將探測(cè)結(jié)果存儲(chǔ)到MongoDB數(shù)據(jù)庫(kù);
所述第二work子進(jìn)程,用于獲取網(wǎng)站信息,所述網(wǎng)站信息包括網(wǎng)站標(biāo)題和WEB容器;
所述第三work子進(jìn)程,用于對(duì)網(wǎng)頁(yè)變更與否進(jìn)行檢測(cè);將檢測(cè)結(jié)果存儲(chǔ)到MongoDB數(shù)據(jù)庫(kù);
所述第四work子進(jìn)程,用于對(duì)安全事件及漏洞進(jìn)行檢測(cè),生成檢測(cè)結(jié)果文件,所述安全事件包括:SQL注入、XSS、網(wǎng)頁(yè)掛馬、暗鏈和敏感關(guān)鍵詞。
所述步驟(5)的告警分為手動(dòng)告警和自動(dòng)告警;
所述手動(dòng)告警:網(wǎng)站列表接收外界對(duì)網(wǎng)站的選擇指令和網(wǎng)站安全現(xiàn)狀信息,通過郵件告警的方式將告警信息發(fā)送出去;
所述自動(dòng)告警:檢測(cè)到網(wǎng)站可用性異?;虬l(fā)現(xiàn)高危安全事件后,通過郵件或短信的方式將告警信息發(fā)送出去。
步驟(4)中,SQL注入檢測(cè)插件工作步驟如下:
步驟(4a-1):發(fā)送URL請(qǐng)求:將SQL參數(shù)加載到頁(yè)面請(qǐng)求的查詢字符串中,采用GET、POST或Cookie方式發(fā)送URL請(qǐng)求;
步驟(4a-2):頁(yè)面響應(yīng):根據(jù)提交的SQL參數(shù),頁(yè)面做出相應(yīng)的回應(yīng);
步驟(4a-3):判斷SQL參數(shù)是否可以SQL注入;若可以就獲取數(shù)據(jù)庫(kù)有效載荷payload信息,利用數(shù)據(jù)庫(kù)服務(wù)端SQL分析引擎進(jìn)行分析,獲取網(wǎng)站對(duì)應(yīng)的敏感數(shù)據(jù),檢測(cè)結(jié)束,若不可以就進(jìn)入步驟(4a-4);所述敏感數(shù)據(jù)包括后臺(tái)數(shù)據(jù)庫(kù)信息,用戶信息,表結(jié)構(gòu)信息;
步驟(4a-4):判斷payload是否把會(huì)導(dǎo)致SQL注入的所有情況都全部嘗試進(jìn)行檢測(cè),若是就檢測(cè)結(jié)束,若否就測(cè)試不同的payload,返回步驟(4a-1)。
步驟(4)中,SQL注入普通模式盲注檢測(cè)工作步驟如下:
步驟(4b-1):請(qǐng)求原始頁(yè)面:將SQL參數(shù)加載到頁(yè)面請(qǐng)求的查詢字符串中,采用GET、POST或Cookie方式發(fā)送URL請(qǐng)求;
步驟(4b-2):判斷頁(yè)面是否動(dòng)態(tài)變化,若是就設(shè)定基準(zhǔn)HTML,然后進(jìn)入步驟(4b-3),若否就直接進(jìn)入步驟(4b-3);
設(shè)定基準(zhǔn)HTML根據(jù)具體網(wǎng)站頁(yè)面,具體問題具體分析。舉例來說:HTML 5<base>規(guī)定頁(yè)面中所有鏈接的基準(zhǔn)URL方法如下:
HTML5的<base>標(biāo)簽為文檔中的所有相對(duì)鏈接指定一個(gè)基準(zhǔn)URL,一般情況下,瀏覽器會(huì)從當(dāng)前文檔的URL中提取相應(yīng)的元素來填寫相對(duì)的URL。一旦使用了<base>標(biāo)簽,瀏覽器將不再使用當(dāng)前文檔的URL,而是使用指定的基準(zhǔn)URL來解析所有的相對(duì)URL。<base>標(biāo)簽必須位于<head>標(biāo)簽內(nèi)部。
HTML 5<base>標(biāo)簽設(shè)定基準(zhǔn)HTML舉例如下:
假設(shè)pic圖像的絕對(duì)地址是:<img src="http://www.169it.com.cn/i/pic.GIF"/>
現(xiàn)在我們?cè)陧?yè)面中的head部分插入<base>標(biāo)簽,規(guī)定頁(yè)面中所有鏈接的基準(zhǔn)URL:
<head>
<base href="http://www.169it.com.cn/i/"/>
</head>
在此例中的頁(yè)面上插入圖像時(shí),我們必須規(guī)定相對(duì)的地址,瀏覽器會(huì)尋找文件所使用的完整URL:
<img src="pic.GIF"/>
步驟(4b-3):判斷SQL參數(shù)是否動(dòng)態(tài)可變,若是就嘗試注入特殊字符,使數(shù)據(jù)庫(kù)報(bào)錯(cuò)以識(shí)別數(shù)據(jù)庫(kù)類型或者版本信息;進(jìn)入步驟(4b-4);若否就結(jié)束;所述特殊字符包括下劃線、單引號(hào)、百分號(hào)或方括號(hào)等。
步驟(4b-4):判斷是否報(bào)錯(cuò),若是就利用后臺(tái)規(guī)則識(shí)別數(shù)據(jù)庫(kù)類型或者版本;嘗試進(jìn)行payload匹配,進(jìn)入步驟(4b-5);若否就根據(jù)整數(shù)類型、字符串類型以及搜索類型依次判斷是否存在SQL注入,嘗試進(jìn)行payload匹配,進(jìn)入步驟(4b-5);所述后臺(tái)規(guī)則包括:用語(yǔ)句查詢當(dāng)前數(shù)據(jù)庫(kù)(--current-db)或查詢數(shù)據(jù)庫(kù)版本信息(--version);
步驟(4b-5):根據(jù)整數(shù)類型、字符串類型以及搜索類型判斷是否匹配成功,若否就進(jìn)入專家檢測(cè)模式流程,即采用SSQLInjection、Sqlmap、Pangolin、Havij等自動(dòng)化工具進(jìn)行滲透測(cè)試,結(jié)束;若是就進(jìn)行邏輯為真(and1=1)判斷,將響應(yīng)頁(yè)面與原始頁(yè)面對(duì)比,判斷是否相同;若不相同就結(jié)束,若頁(yè)面相同則接著進(jìn)行邏輯為假(and 1=2)判斷,將響應(yīng)頁(yè)面與原始頁(yè)面對(duì)比,進(jìn)入步驟(4b-6);
步驟(4b-6):進(jìn)行邏輯為假(and 1=2)判斷,判斷響應(yīng)頁(yè)面和原始頁(yè)面是否相同,若是就結(jié)束,若否就進(jìn)行邏輯為真(and 1=1)判斷,將響應(yīng)頁(yè)面與原始頁(yè)面對(duì)比,進(jìn)入步驟(4b-7);
步驟(4b-7):進(jìn)行邏輯為真(and 1=1)判斷,判斷響應(yīng)頁(yè)面和原始頁(yè)面是否相同,若否就結(jié)束,若是就確認(rèn)漏洞存在,進(jìn)入嘗試獲取數(shù)據(jù)庫(kù)信息階段,獲取數(shù)據(jù)庫(kù)敏感信息。所述數(shù)據(jù)庫(kù)敏感信息包括數(shù)據(jù)庫(kù)名稱、數(shù)據(jù)庫(kù)表名和表信息;
步驟(4)中,XSS檢測(cè)工作步驟如下:
步驟(4c-1):發(fā)送URL請(qǐng)求:發(fā)送GET/POST或Headers請(qǐng)求,得到頁(yè)面資源;
步驟(4c-2):判斷頁(yè)面是否因網(wǎng)絡(luò)原因造成故障,若是就返回步驟(4c-1);若否就向待測(cè)參數(shù)提交正常測(cè)試字符串,進(jìn)入步驟(4c-3);
步驟(4c-3):判斷返回頁(yè)面中是否可以檢測(cè)到參數(shù)值,若是就定位參數(shù)在頁(yè)面DOM結(jié)構(gòu)的位置,根據(jù)上下文環(huán)境加載XSS攻擊載荷,進(jìn)入步驟(4c-4);若否就結(jié)束;
步驟(4c-4):XSS分析引擎判斷返回頁(yè)面是否存在XSS攻擊載荷,若是就確定XSS漏洞,結(jié)束,若否就進(jìn)入步驟(4c-5);
步驟(4c-5):判斷是否需要提交變形代碼,若是就提交變形測(cè)試代碼,若否就結(jié)束。所述變形代碼包括:將部分小寫變換為大寫、填入空白字符;所述空白字符包括:空格、制表符和換行符。
步驟(4)中,網(wǎng)頁(yè)掛馬檢測(cè)工作步驟如下:
步驟(4d-1):判斷URL自身是否在黑名單內(nèi);
步驟(4d-2):網(wǎng)頁(yè)內(nèi)嵌的鏈接是否在黑名單內(nèi)。
步驟(4)中,暗鏈檢測(cè)工作步驟如下:
步驟(4e-1):接收爬蟲傳入U(xiǎn)RL及HTML信息;
步驟(4e-2):腳本解析:對(duì)網(wǎng)頁(yè)源代碼模擬執(zhí)行腳本代碼;
步驟(4e-3):HTML解析:將利用js腳本動(dòng)態(tài)輸出的HTML,歸并到HTML代碼中。
步驟(4e-4):對(duì)隱藏區(qū)域檢測(cè):包括對(duì)HTML隱藏特征檢測(cè)、腳本隱藏特征檢測(cè)及CSS隱藏特征檢測(cè);
步驟(4e-5):對(duì)帶有隱藏屬性的代碼塊進(jìn)行結(jié)構(gòu)檢測(cè);若有暗鏈代碼塊則進(jìn)入步驟(4e-6),有可疑代碼塊則進(jìn)入步驟(4e-7);
步驟(4e-6):對(duì)暗鏈代碼塊進(jìn)行分析,判斷暗鏈代碼塊是文字還是鏈接;如果是文字進(jìn)入步驟(4e-9),如果是鏈接進(jìn)入步驟(4e-10);
步驟(4e-7):將可疑代碼塊與特征檢測(cè)模塊詞進(jìn)行對(duì)比分析,再次與暗鏈代碼塊對(duì)比,循環(huán)比較判斷;進(jìn)入步驟(4e-8);
步驟(4e-8):特征檢查模塊;由用戶設(shè)置特征詞,特征詞包含用戶關(guān)心的敏感詞;進(jìn)入步驟(4e-6);
步驟(4e-9):分詞模塊對(duì)暗鏈代碼塊中的文字進(jìn)行分詞;從而生成暗鏈關(guān)鍵詞庫(kù);根據(jù)特征詞生成暗鏈詞匯庫(kù);進(jìn)入步驟(4e-8),若循環(huán)比較結(jié)束,則進(jìn)入步驟(4e-10);
步驟(4e-10):暗鏈鏈接庫(kù)與暗鏈詞匯庫(kù)對(duì)比分析,輸出暗鏈鏈接或關(guān)鍵詞。
本發(fā)明的有益效果:
1、通過擬采用先進(jìn)的Map/Reduce模型來實(shí)現(xiàn)存儲(chǔ)技術(shù),實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的集群式,可以使數(shù)據(jù)在各個(gè)檢測(cè)節(jié)點(diǎn)間共享,提高數(shù)據(jù)存儲(chǔ)與處理效率。
2、遠(yuǎn)程監(jiān)測(cè)引擎能夠?qū)崿F(xiàn)常態(tài)化的安全監(jiān)控,來發(fā)現(xiàn)潛在的安全風(fēng)險(xiǎn),并通知相應(yīng)單位進(jìn)行整改,減少由此帶來的不良影響或危害。
3、通過網(wǎng)站監(jiān)控系統(tǒng),將網(wǎng)站上存在的安全事件用餅圖、折線圖、柱狀圖等圖表進(jìn)行展示,直觀方便。
4、通過網(wǎng)站監(jiān)控系統(tǒng),能夠極大提高檢測(cè)效率和檢測(cè)時(shí)間,同時(shí)可以更直觀的發(fā)現(xiàn)網(wǎng)站安全趨勢(shì),獲取安全事件對(duì)公司網(wǎng)站的運(yùn)營(yíng)影響等。
5、對(duì)于監(jiān)控范圍廣、網(wǎng)頁(yè)數(shù)量多、監(jiān)測(cè)規(guī)模大的用戶來說,采用一臺(tái)控制服務(wù)器,多臺(tái)檢測(cè)引擎的集群部署模式,可大幅度提升監(jiān)測(cè)能力,并且可通過控制服務(wù)器實(shí)現(xiàn)簡(jiǎn)便的統(tǒng)一管理。
附圖說明
圖1為網(wǎng)站監(jiān)控系統(tǒng)體系架構(gòu)圖;
圖2為網(wǎng)站監(jiān)控系統(tǒng)網(wǎng)絡(luò)設(shè)備部署圖;
圖3為網(wǎng)站監(jiān)控系統(tǒng)總體設(shè)計(jì)系統(tǒng)架構(gòu)圖;
圖4為網(wǎng)站監(jiān)控系統(tǒng)詳細(xì)架構(gòu)圖;
圖5為網(wǎng)站監(jiān)控系統(tǒng)運(yùn)行流程圖;
圖6為網(wǎng)站監(jiān)控系統(tǒng)任務(wù)調(diào)度工作流程圖;
圖7為網(wǎng)站監(jiān)控系統(tǒng)提醒及告警分類圖;
圖8為SQL注入檢測(cè)插件工作流程圖;
圖9為SQL注入普通模式盲注檢測(cè)工作流程圖;
圖10為XSS檢測(cè)工作流程圖;
圖11為暗鏈檢測(cè)流程圖;
圖12為暗鏈檢測(cè)的具體詳細(xì)流程圖。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。
如圖1所示,一種適應(yīng)于電力行業(yè)的網(wǎng)站監(jiān)控系統(tǒng),包括數(shù)據(jù)采集模塊、數(shù)據(jù)分析模塊和數(shù)據(jù)處理模塊。各模塊之間采用加密通訊,確保傳輸安全,系統(tǒng)日志數(shù)據(jù)逐級(jí)上傳,管理數(shù)據(jù)逐級(jí)下發(fā)。
數(shù)據(jù)采集模塊,通過網(wǎng)站發(fā)現(xiàn)掃描引擎識(shí)別Web安全漏洞對(duì)網(wǎng)站進(jìn)行深度安全體檢;同時(shí)實(shí)時(shí)監(jiān)測(cè)網(wǎng)站運(yùn)行的安全狀態(tài)識(shí)別網(wǎng)頁(yè)非法篡改,網(wǎng)頁(yè)被嵌入惡意代碼、域名被劫持、訪問頁(yè)面被拒絕、網(wǎng)頁(yè)中出現(xiàn)敏感信息等安全事件;并利用漏洞掃描設(shè)備和工具包檢測(cè),到現(xiàn)場(chǎng)采集內(nèi)網(wǎng)安全信息,排查漏洞隱患和深層安全事件。系統(tǒng)將采集的網(wǎng)站安全體檢結(jié)果、網(wǎng)站運(yùn)行安全狀態(tài)和現(xiàn)場(chǎng)安全檢查結(jié)果傳送到數(shù)據(jù)庫(kù)保存。
遠(yuǎn)程監(jiān)測(cè)引擎能夠?qū)崿F(xiàn)常態(tài)化的安全監(jiān)控,來發(fā)現(xiàn)潛在的安全風(fēng)險(xiǎn),并通知相應(yīng)單位進(jìn)行整改。一旦網(wǎng)絡(luò)上爆發(fā)零日漏洞等高危安全漏洞,系統(tǒng)即可及時(shí)探查到目標(biāo)應(yīng)用系統(tǒng)是否存在相應(yīng)漏洞、存在被攻破的風(fēng)險(xiǎn),并及時(shí)進(jìn)行預(yù)警。另一方面,能及時(shí)發(fā)現(xiàn)攻擊行為造成的后果如網(wǎng)頁(yè)篡改、掛馬、暗鏈等事件,并立即通知目標(biāo)單位進(jìn)行整改,減少由此帶來的不良影響或危害。
為實(shí)現(xiàn)對(duì)電力系統(tǒng)領(lǐng)域眾多網(wǎng)站、主動(dòng)進(jìn)行自動(dòng)化的遠(yuǎn)程掃描檢測(cè),依靠單臺(tái)檢測(cè)引擎難以達(dá)到相應(yīng)的性能,因此系統(tǒng)采用了分布式任務(wù)調(diào)度機(jī)制。分布式任務(wù)調(diào)度由集群調(diào)度模 塊及監(jiān)測(cè)引擎功能模塊組成。集群調(diào)度模塊負(fù)責(zé)統(tǒng)一定時(shí)下發(fā)監(jiān)測(cè)任務(wù)并收集監(jiān)測(cè)結(jié)果,監(jiān)測(cè)引擎負(fù)責(zé)接收監(jiān)測(cè)任務(wù)并進(jìn)行相應(yīng)的網(wǎng)頁(yè)篡改、網(wǎng)頁(yè)掛馬等檢測(cè)。分布式任務(wù)調(diào)度的底層技術(shù)涉及分布式任務(wù)隊(duì)列、分布式數(shù)據(jù)庫(kù),擬分別采用國(guó)際開源軟件redis、mongodb來實(shí)現(xiàn)。
遠(yuǎn)程監(jiān)測(cè)引擎采用遠(yuǎn)程爬蟲技術(shù)來實(shí)現(xiàn)網(wǎng)頁(yè)篡改、掛馬、暗鏈等的監(jiān)測(cè),無需在目標(biāo)網(wǎng)站服務(wù)器上部署任何設(shè)備或軟件。監(jiān)測(cè)時(shí),爬蟲模塊通過模擬正常網(wǎng)頁(yè)訪問請(qǐng)求來抓取目標(biāo)網(wǎng)站的內(nèi)容,并將采集到的數(shù)據(jù)交由網(wǎng)頁(yè)篡改、網(wǎng)頁(yè)掛馬等檢測(cè)模塊來進(jìn)行進(jìn)一步的分析處理。
攻擊者入侵網(wǎng)站后最常見的攻擊手段是網(wǎng)頁(yè)篡改,在網(wǎng)站上加入反動(dòng)、低俗信息。網(wǎng)頁(yè)篡改將給網(wǎng)站帶來極為嚴(yán)重的影響。網(wǎng)頁(yè)變更檢測(cè)的主要目標(biāo)是監(jiān)測(cè)目標(biāo)網(wǎng)站的網(wǎng)頁(yè)變更情況,及時(shí)發(fā)現(xiàn)網(wǎng)頁(yè)篡改事件。但攻擊者篡改網(wǎng)頁(yè)后也可能只是對(duì)網(wǎng)頁(yè)進(jìn)行其他修改,例如替換文字、圖片等。系統(tǒng)擬采用爬蟲技術(shù),通過監(jiān)測(cè)目標(biāo)網(wǎng)站的網(wǎng)頁(yè)是否有變化來實(shí)現(xiàn)。變更監(jiān)控級(jí)別分為四個(gè):輕度變更,中度變更,高度變更,確認(rèn)篡改。監(jiān)控級(jí)別的標(biāo)準(zhǔn)是比較相似度,即與源文件是否一樣,如果相似度越高,則變更級(jí)別越低。
網(wǎng)頁(yè)掛馬是網(wǎng)站篡改后的常見癥狀,一旦網(wǎng)站被掛馬,將給網(wǎng)站造成極大的不良影響。掛馬檢測(cè)功能模塊應(yīng)能夠使用靜態(tài)檢測(cè)和動(dòng)態(tài)行為檢測(cè)兩種檢測(cè)技術(shù)檢測(cè)功能,從而提高檢測(cè)的準(zhǔn)確度。
當(dāng)進(jìn)行定期安全評(píng)估,或當(dāng)網(wǎng)站發(fā)現(xiàn)安全風(fēng)險(xiǎn)、需進(jìn)一步深入內(nèi)網(wǎng)進(jìn)行安全檢查時(shí),系統(tǒng)可以生成任務(wù)工單派發(fā)給相應(yīng)系統(tǒng)運(yùn)維人員。運(yùn)維人員收到檢查工單后,攜帶漏洞掃描設(shè)備到現(xiàn)場(chǎng)采集內(nèi)網(wǎng)安全漏洞信息,并將采集到的結(jié)果上傳到內(nèi)網(wǎng)信息收集接口、并通過光閘傳遞到分析平臺(tái)進(jìn)行進(jìn)一步的分析處理。系統(tǒng)將采集的網(wǎng)站安全體檢結(jié)果、網(wǎng)站運(yùn)行安全狀態(tài)和現(xiàn)場(chǎng)安全檢查結(jié)果傳送到數(shù)據(jù)庫(kù)保存?,F(xiàn)場(chǎng)漏洞掃描設(shè)備一方面能夠錄入內(nèi)網(wǎng)的IP、服務(wù)器類型、數(shù)量、編號(hào)等資產(chǎn)信息,另一方面采用標(biāo)準(zhǔn)的網(wǎng)絡(luò)漏洞掃描器,對(duì)內(nèi)網(wǎng)資產(chǎn)進(jìn)行網(wǎng)絡(luò)漏洞方面的安全檢查。內(nèi)網(wǎng)檢查工具可兼容多種網(wǎng)絡(luò)漏洞掃描器,檢查時(shí)可根據(jù)實(shí)際情況進(jìn)行選擇。
數(shù)據(jù)分析模塊,對(duì)數(shù)據(jù)庫(kù)中的安全數(shù)據(jù)進(jìn)行分析,以網(wǎng)站為單位,輸出該網(wǎng)站當(dāng)前的漏洞存在情況,將漏洞和安全事件劃分等級(jí)進(jìn)行統(tǒng)計(jì),并將此結(jié)果與漏洞庫(kù)進(jìn)行比對(duì)。對(duì)符合安全風(fēng)險(xiǎn)定義的日志,觸發(fā)系統(tǒng)的告警規(guī)則,生成告警,并由人工對(duì)告警進(jìn)行研判,從而生成安全事件,并將安全事件生成安全任務(wù)指派到網(wǎng)站管理員進(jìn)行處置,對(duì)處置結(jié)果在系統(tǒng)中進(jìn)行反饋,從而完成對(duì)安全事件的全生命周期的流程管理。由于需處理的數(shù)據(jù)量較大、對(duì)性能要求高,擬采用分布式數(shù)據(jù)庫(kù)進(jìn)行分布式存儲(chǔ)、并行計(jì)算;同時(shí)采用基于內(nèi)存的分布式任 務(wù)隊(duì)列,以滿足大量任務(wù)順序執(zhí)行處理的需求。
數(shù)據(jù)處理模塊,從數(shù)據(jù)庫(kù)獲取信息,通過展示策略完成多樣化的展示輸出。輸出包括安全事件實(shí)時(shí)監(jiān)視、事件地圖輸出、統(tǒng)計(jì)報(bào)表輸出及平臺(tái)配置、知識(shí)管理、用戶管理等操作界面。數(shù)據(jù)處理模塊主要是基于數(shù)據(jù)分析模塊輸出的數(shù)據(jù)進(jìn)行進(jìn)一步展示,是直接與用戶交互的,通常采用餅圖、折線圖、柱狀圖等圖表進(jìn)行展示。系統(tǒng)擬采用B/S架構(gòu),提供基于瀏覽器的交互展現(xiàn)接口。
網(wǎng)站監(jiān)控系統(tǒng)整個(gè)處理過程步驟如下:
步驟一:通過對(duì)資產(chǎn)的監(jiān)控任務(wù)的設(shè)置,使用分布式的任務(wù)分發(fā)、調(diào)度機(jī)制,控制監(jiān)測(cè)引擎對(duì)被監(jiān)測(cè)的資產(chǎn)進(jìn)行周期性或指定性的檢查。
步驟二:通過遠(yuǎn)程監(jiān)測(cè)引擎識(shí)別Web安全漏洞對(duì)網(wǎng)站進(jìn)行深度安全體檢,實(shí)時(shí)監(jiān)測(cè)網(wǎng)站運(yùn)行的安全狀態(tài),識(shí)別網(wǎng)頁(yè)非法篡改,網(wǎng)頁(yè)被嵌入惡意代碼、域名被劫持、訪問頁(yè)面被拒絕、網(wǎng)頁(yè)中出現(xiàn)敏感信息等安全事件。
步驟三:在系統(tǒng)現(xiàn)場(chǎng)利用漏洞掃描設(shè)備和工具包檢測(cè),采集內(nèi)網(wǎng)安全信息。將采集的網(wǎng)站安全體檢結(jié)果、網(wǎng)站運(yùn)行安全狀態(tài)和現(xiàn)場(chǎng)安全檢查結(jié)果傳送到數(shù)據(jù)庫(kù)保存。
步驟四:對(duì)采集的數(shù)據(jù)進(jìn)行自動(dòng)的歸一化,并與相關(guān)數(shù)據(jù),如現(xiàn)場(chǎng)檢查數(shù)據(jù)、歷史數(shù)據(jù)、不同來源的數(shù)據(jù)等進(jìn)行關(guān)聯(lián)分析,形成有機(jī)、一致的數(shù)據(jù)整體,排除無效數(shù)據(jù)的干擾。
步驟五:輸出該網(wǎng)站當(dāng)前的漏洞存在情況,將漏洞和安全事件劃分等級(jí)進(jìn)行統(tǒng)計(jì),并將此結(jié)果與漏洞庫(kù)進(jìn)行比對(duì)。
步驟六:對(duì)符合安全風(fēng)險(xiǎn)定義的日志,觸發(fā)系統(tǒng)的告警規(guī)則,生成告警,并結(jié)合隱患漏洞庫(kù)、解決方案庫(kù)進(jìn)行人工審驗(yàn)和評(píng)判,并給出評(píng)判意見,生成安全事件報(bào)告。
步驟七:將安全事件生成安全任務(wù)指派到網(wǎng)站管理員進(jìn)行處置,對(duì)處置結(jié)果在系統(tǒng)中進(jìn)行反饋,從而完成對(duì)安全事件的全生命周期的流程管理。
步驟八:從數(shù)據(jù)庫(kù)獲取信息,根據(jù)用戶需要展示的數(shù)據(jù)形態(tài),如餅圖、折線圖、柱狀圖等圖表進(jìn)行展示,完成多樣化的展示輸出。
如圖2所示,對(duì)于監(jiān)控范圍廣、網(wǎng)頁(yè)數(shù)量多、監(jiān)測(cè)規(guī)模大的用戶來說,可采用一臺(tái)控制服務(wù)器,多臺(tái)檢測(cè)引擎的集群部署模式,使用該部署模式,可大幅度提升監(jiān)測(cè)能力,并且可通過控制服務(wù)器實(shí)現(xiàn)簡(jiǎn)便的統(tǒng)一管理。
網(wǎng)站監(jiān)控系統(tǒng)架構(gòu)如圖3所示:
網(wǎng)站監(jiān)控系統(tǒng)支持集群部署。集群部署下涉及的組件有:
(1)、調(diào)度引擎:集群模式下單獨(dú)部署;
(2)、檢測(cè)引擎:集群模式下單獨(dú)部署;
(3)、存儲(chǔ)引擎:默認(rèn)與用戶界面UI控制節(jié)點(diǎn)共同部署。
網(wǎng)站監(jiān)控系統(tǒng)采用交互層、數(shù)據(jù)層、調(diào)度層和檢測(cè)引擎四層架構(gòu)體系。而交互層可以拆分為用戶界面UI展示層和數(shù)據(jù)處理層兩部分,其中UI展示層直接與用戶進(jìn)行交互,數(shù)據(jù)處理層對(duì)用戶來說是透明的。
UI展示層:主要功能是與用戶交互,用戶操作請(qǐng)求通過該層向后端傳遞,并且接收后端傳遞數(shù)據(jù),通過繪制圖表等方式展現(xiàn)給用戶。
數(shù)據(jù)處理層:接收用戶前端傳遞數(shù)據(jù)進(jìn)行各類邏輯處理,并且操作數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)、查詢、修改、刪除等操作。
數(shù)據(jù)層:主要包括存儲(chǔ)用戶資料、檢測(cè)數(shù)據(jù)、配置的數(shù)據(jù)庫(kù)等;以及一些系統(tǒng)配置文件。
調(diào)度層:負(fù)責(zé)調(diào)度檢測(cè)引擎對(duì)用戶下達(dá)的任務(wù)進(jìn)行周期性自動(dòng)化檢測(cè),并且在檢測(cè)結(jié)束后處理檢測(cè)結(jié)果匯總至數(shù)據(jù)庫(kù)層。
檢測(cè)引擎:負(fù)責(zé)接受調(diào)度層下達(dá)的檢測(cè)命令,對(duì)目標(biāo)網(wǎng)站進(jìn)行檢測(cè)。
如圖4所示,1、對(duì)網(wǎng)站監(jiān)控系統(tǒng)詳細(xì)架構(gòu)圖中部分功能說明如下:
(1)用戶只和交互層進(jìn)行交互,所有UI功能均受用戶使用身份權(quán)限控制。
(2)按前臺(tái)功能劃分:網(wǎng)站發(fā)現(xiàn)、檢測(cè)任務(wù)添加、數(shù)據(jù)查看等功能主要使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ);而系統(tǒng)管理設(shè)置中的用戶管理、日志管理、關(guān)鍵詞管理等部分則使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)。
(3)網(wǎng)站發(fā)現(xiàn)掃描引擎不受調(diào)度控制,為獨(dú)立模塊。當(dāng)用戶通過交互層下達(dá)指令后直接啟用該模塊,當(dāng)檢測(cè)完畢后,該模塊會(huì)將結(jié)果寫入MongoDB數(shù)據(jù)庫(kù)。
(4)添加網(wǎng)站等操作通過API封裝與MongoDB進(jìn)行交互。API還可作為二次開發(fā)使用。
變更檢測(cè)引擎與MongoDB直接進(jìn)行交互,將結(jié)果直接寫入MongoDB而不是生成檢測(cè)結(jié)果文件。可用性、網(wǎng)站信息獲取以函數(shù)方式調(diào)用,而非直接創(chuàng)建子進(jìn)程。
2、網(wǎng)站監(jiān)控系統(tǒng)數(shù)據(jù)模型
數(shù)據(jù)庫(kù)主要采用MySQL、MongoDB、Redis以及Memcache。
MongoDB為主要數(shù)據(jù)庫(kù),存儲(chǔ)各類任務(wù)以及檢測(cè)信息等;
MySQL用于存儲(chǔ)用戶信息、系統(tǒng)日志以及關(guān)鍵詞信息;
Redis用于存放任務(wù)隊(duì)列供調(diào)度組件使用;
Memcache目前用于存放加密狗信息。
以添加網(wǎng)站一線流程進(jìn)行分析,展示網(wǎng)站監(jiān)控系統(tǒng)完整運(yùn)行流程如圖5所示。
網(wǎng)絡(luò)監(jiān)控系統(tǒng)模塊詳細(xì)技術(shù)原理如下:
1、任務(wù)調(diào)度
任務(wù)調(diào)度在前臺(tái)劃分了不同檢測(cè)周期,更貼合實(shí)際使用場(chǎng)景。
任務(wù)調(diào)度:程序通過用戶在UI中設(shè)置的配置信息自動(dòng)對(duì)目標(biāo)網(wǎng)站進(jìn)行監(jiān)控與檢測(cè)。
術(shù)語(yǔ)解釋:
Redis高效內(nèi)存隊(duì)列:高性能的key-value數(shù)據(jù)庫(kù),支持豐富的value類型,包括字符串、列表、集合與有序集合。數(shù)據(jù)緩存在內(nèi)存中,支持分布式任務(wù)操作?;赗edis的任務(wù)調(diào)度模塊能夠方便且高效地進(jìn)行任務(wù)分布式調(diào)度。
taskd:運(yùn)行在調(diào)度節(jié)點(diǎn)上,負(fù)責(zé)處理用戶下達(dá)的任務(wù)并將其實(shí)例化形成任務(wù)檢測(cè)隊(duì)列。任務(wù)指用戶通過UI添加網(wǎng)站下達(dá)的監(jiān)測(cè)任務(wù),監(jiān)測(cè)任務(wù)中對(duì)應(yīng)著監(jiān)測(cè)模塊,一個(gè)任務(wù)可分為可用性、安全事件、漏洞三個(gè)監(jiān)測(cè)模塊。
jobd:運(yùn)行在掃描節(jié)點(diǎn)上,負(fù)責(zé)接收和處理實(shí)例化的檢測(cè)任務(wù)并調(diào)動(dòng)相應(yīng)后臺(tái)程序。
worker:由jobd創(chuàng)建用于檢測(cè)的進(jìn)程,針對(duì)系統(tǒng)中的每個(gè)掃描模塊,worker創(chuàng)建一個(gè)新進(jìn)程來處理。任務(wù)調(diào)度工作流程,如圖6所示。
2、提醒及告警
網(wǎng)站監(jiān)控系統(tǒng)中,提醒及告警分為兩類:手動(dòng)告警和自動(dòng)告警。如圖7所示。
手動(dòng)告警:操作員可在網(wǎng)站列表,選中指定網(wǎng)站后將網(wǎng)站安全現(xiàn)狀通過郵件告警的方式發(fā)送給相應(yīng)的網(wǎng)站管理員。每個(gè)網(wǎng)站可單獨(dú)配置接收告警郵件的用戶名、郵箱。
自動(dòng)告警:監(jiān)測(cè)到網(wǎng)站可用性異?;虬l(fā)現(xiàn)高危安全事件后,將立即發(fā)郵件或短信給任務(wù)對(duì)應(yīng)的管理員或操作員。提醒方式可在系統(tǒng)管理中統(tǒng)一配置,也可為每個(gè)任務(wù)單獨(dú)配置。
3、檢測(cè)模塊
系統(tǒng)的檢測(cè)功能模塊主要分為四部分:可用性探測(cè)模塊、安全事件及漏洞檢測(cè)模塊、網(wǎng)頁(yè)變更檢測(cè)模塊、網(wǎng)站信息獲取模塊。
可用性探測(cè)模塊:探測(cè)目標(biāo)網(wǎng)站是否存活、響應(yīng)時(shí)間、域名是否被劫持。
安全事件及漏洞檢測(cè)模塊:安全事件中的網(wǎng)頁(yè)掛馬、暗鏈、關(guān)鍵詞,及所有的漏洞檢測(cè)功能都由A3(appscan)實(shí)現(xiàn)。安全事件及漏洞檢測(cè)是分開調(diào)度的,采用不同的深度、URL數(shù)上限。
網(wǎng)頁(yè)變更檢測(cè)模塊,用于監(jiān)測(cè)目標(biāo)網(wǎng)站的網(wǎng)頁(yè)變更情況,以防出現(xiàn)遺漏的網(wǎng)頁(yè)篡改事件。
網(wǎng)站信息獲取模塊:探測(cè)網(wǎng)站標(biāo)題、Web容器等信息??稍O(shè)置成將每個(gè)網(wǎng)站每天探測(cè)一 次。
下面就常見的SQL注入、XSS、掛馬、暗鏈等檢測(cè)過程作如下詳細(xì)介紹。
(1)SQL注入
SQL注入檢測(cè)插件工作流程圖:如圖8所示。
SQL注入檢測(cè)模塊流程說明:
1)SQL注入檢測(cè)模塊向爬蟲傳遞的參數(shù)插入測(cè)試代碼,嘗試根據(jù)頁(yè)面響應(yīng)判斷注入是否存在或者繼續(xù)嘗試其他的測(cè)試代碼。
2)當(dāng)確認(rèn)SQL注入存在時(shí)則進(jìn)入下一步驗(yàn)證階段,否則當(dāng)所有payload測(cè)試完畢后退出檢測(cè)。
3)根據(jù)目標(biāo)數(shù)據(jù)庫(kù)類型使用不同的攻擊Payload獲取目標(biāo)網(wǎng)站的數(shù)據(jù)庫(kù)信息,例如數(shù)據(jù)庫(kù)名稱、表結(jié)構(gòu)、數(shù)據(jù)庫(kù)用戶名及密碼信息,對(duì)于某些權(quán)限較大的數(shù)據(jù)庫(kù)用戶(例如:root、sa、sys用戶)甚至能執(zhí)行提權(quán)后執(zhí)行任意命令。
SQL注入普通模式是基于盲注檢測(cè)的頁(yè)面相似度算法,對(duì)有漏洞的參數(shù)進(jìn)行檢測(cè)的,具體原理如圖9所示。
流程說明:
1)檢測(cè)開始,檢測(cè)模塊會(huì)先對(duì)頁(yè)面請(qǐng)求2次,判斷頁(yè)面是否有動(dòng)態(tài)變化部分。若有動(dòng)態(tài)變化,則會(huì)設(shè)置基準(zhǔn)HTML。
2)檢測(cè)參數(shù)是否動(dòng)態(tài)可變,嘗試輸入其他值,查看頁(yè)面響應(yīng)判斷參數(shù)是否可變。若參數(shù)不可變則直接退出檢測(cè)。
3)嘗試注入特殊符號(hào)使數(shù)據(jù)庫(kù)報(bào)錯(cuò),根據(jù)后臺(tái)規(guī)則依照?qǐng)?bào)錯(cuò)信息對(duì)數(shù)據(jù)庫(kù)類型或者版本進(jìn)行識(shí)別。若識(shí)別成功,則根據(jù)數(shù)據(jù)庫(kù)版本加載特定payload,可提高檢測(cè)效率。
4)嘗試多種payload進(jìn)行匹配,例如:
整數(shù)型:and 1=1及and 1=2
字符串型:and‘a(chǎn)’=’a及and‘a(chǎn)’=’b
搜索型:%’and‘a(chǎn)’=’a’and‘%’=’
(注:以上為示例,非實(shí)際測(cè)試代碼。)
5)若匹配均不成功,則根據(jù)用戶配置選擇是否使用專家模式進(jìn)行掃描,即采用SSQLInjection、Sqlmap、Pangolin、Havij等自動(dòng)化工具進(jìn)行滲透測(cè)試。匹配成功則開始進(jìn)行邏輯判斷檢測(cè)。
6)首先進(jìn)行邏輯為真的請(qǐng)求判斷(and 1=1),將響應(yīng)頁(yè)面與原頁(yè)面進(jìn)行對(duì)比,若對(duì)比結(jié) 果不同則直接結(jié)束檢測(cè)。
7)而后進(jìn)行邏輯為假的請(qǐng)求判斷(and 1=2),將響應(yīng)頁(yè)面與原頁(yè)面進(jìn)行對(duì)比,若對(duì)比結(jié)果相同則直接結(jié)束檢測(cè)。
8)再一次進(jìn)行邏輯為真的請(qǐng)求判斷(and 1=1,此步驟可增加檢測(cè)準(zhǔn)確度),將響應(yīng)頁(yè)面與原頁(yè)面進(jìn)行對(duì)比,若對(duì)比結(jié)果不同則直接結(jié)束檢測(cè)。
9)確認(rèn)漏洞存在后會(huì)根據(jù)用戶配置加載獲取數(shù)據(jù)庫(kù)信息模塊,對(duì)漏洞進(jìn)行驗(yàn)證利用,嘗試獲取數(shù)據(jù)庫(kù)敏感信息。
所有請(qǐng)求在遇到網(wǎng)絡(luò)超時(shí)情況下會(huì)重復(fù)發(fā)送至多3次,若仍未結(jié)果則直接結(jié)束檢測(cè)。
SQL注入檢測(cè)支持的數(shù)據(jù)庫(kù)有:MS SQL,MS Access,MySQL,DB2,Oracle,Postgresql,firebird,maxdb,infomix,sybase等十余種。
(2)XSS檢測(cè)
XSS檢測(cè)插件工作流程圖,如圖10所示。
XSS檢測(cè)流程說明:
1)目標(biāo)URL,如:http://www.test.com/t.php?news=china&id=1,參數(shù)為news=china&id=1,根據(jù)參數(shù)生成隨機(jī)的定位字符串(字母組合),最終為news=chinaazxsdb&id=1adwsdss;
2)發(fā)送GET/POST或Headers請(qǐng)求,得到頁(yè)面資源(HTML內(nèi)容);
3)如果頁(yè)面請(qǐng)求錯(cuò)誤,則重新針對(duì)特定參數(shù)進(jìn)行定位;
4)定位隨機(jī)串在頁(yè)面資源的DOM結(jié)構(gòu)位置,比如在<script></script>內(nèi)、在<input>標(biāo)簽屬性內(nèi)等;
5)根據(jù)定位到的位置生成特定的攻擊代碼,提高攻擊的準(zhǔn)確度,并能減少不相關(guān)的攻擊請(qǐng)求;
6)根據(jù)特定的攻擊代碼再次生成“XSS攻擊載體”;
7)發(fā)送GET/POST或Headers請(qǐng)求,得到XSS攻擊后的頁(yè)面資源(HTML內(nèi)容);
8)XSS分析引擎判斷是否存在攻擊代碼,存在則認(rèn)為有XSS漏洞;
9)如果不存在,則判斷是否需要提交變形攻擊代碼,再次生成“XSS攻擊載體”。
(3)網(wǎng)站信息獲取模塊
網(wǎng)站信息獲取模塊用于獲取網(wǎng)站標(biāo)題、開放端口等信息。開放端口及服務(wù)采用了nmap的檢測(cè)規(guī)則。
一個(gè)任務(wù)被添加后,系統(tǒng)會(huì)立即獲取任務(wù)組網(wǎng)站的網(wǎng)站信息??稍O(shè)置為系統(tǒng)每天獲取一次網(wǎng)站信息。
(4)掛馬檢測(cè)
掛馬檢測(cè)默認(rèn)只基于云端庫(kù)來確認(rèn)目標(biāo)網(wǎng)頁(yè)是否存在掛馬現(xiàn)象。檢測(cè)策略如下:
1)判斷URL自身是否在黑名單內(nèi)(已被掛馬的網(wǎng)站);
2)網(wǎng)頁(yè)內(nèi)嵌的鏈接是否在黑名單內(nèi)(被植入掛馬網(wǎng)頁(yè))。
(5)暗鏈檢測(cè)
暗鏈?zhǔn)侵肝唇?jīng)網(wǎng)站管理員授權(quán)的情況下,在其他網(wǎng)站惡意嵌入隱藏的鏈接,鏈接指向需要搜索引擎優(yōu)化SEO的目標(biāo)網(wǎng)站,這些鏈接就叫暗鏈,是一種惡意欺騙搜索引擎的SEO作弊行為。黑客攻擊目標(biāo)網(wǎng)站后最常見的篡改網(wǎng)頁(yè)行為之一就是植入暗鏈。
暗鏈檢測(cè)算法:暗鏈檢測(cè)模塊接收爬蟲傳入的url及html信息,經(jīng)過html解析、靜態(tài)特征檢測(cè)、黑名單匹配及白名單過濾,來判斷目標(biāo)網(wǎng)頁(yè)是否有被植入惡意的隱藏鏈接。如圖11所示。
如圖12所示,暗鏈檢測(cè)的具體流程如下:
1)腳本代碼處理
將利用js腳本動(dòng)態(tài)輸出的HTML,歸并到HTML代碼中。
2)查找隱藏標(biāo)簽
第一,查找?guī)в须[藏特征的標(biāo)簽,隱藏特征包括但不限于style屬性值;
第二,查找width/height小于10的marquee標(biāo)簽;
第三,查找?guī)в须[藏特征的腳本,并根據(jù)id/class反查標(biāo)簽。如以下這種隱藏特征:
document.getElementById(“mark_id”).style.display=“none”
document.getElementById(“mark_id”).style.visibility=“hidden”
第四,查找?guī)в须[藏特征的CSS,并根據(jù)id/class反查標(biāo)簽。
隱藏特征諸如:top/bottom/left/right值為負(fù)數(shù),display:none,visibility:hidden。
3)根據(jù)隱藏標(biāo)簽查找閉合的標(biāo)簽,獲取隱藏的區(qū)域,并對(duì)隱藏區(qū)域進(jìn)行檢查。
a、外域鏈接檢查
獲取區(qū)域內(nèi)所有鏈接,并解析出根域名,判斷根域名是否與所要檢查的網(wǎng)站一致,不一致則判定為外域鏈接,若該區(qū)域存在外域鏈接則進(jìn)入下一步檢查,否則拋棄。
b、外域鏈接比例檢查
如果外域鏈接比例超過60%,則判定該區(qū)域可疑,進(jìn)行下一步檢測(cè),否則拋棄。
c、區(qū)域結(jié)構(gòu)檢查
獲取區(qū)域內(nèi)所有標(biāo)簽的數(shù)目,獲取區(qū)域內(nèi)所有超鏈接數(shù)目,若鏈接數(shù)目占所有標(biāo)簽數(shù)目 的45%以上,則區(qū)域被判定為暗鏈區(qū)域,否則為可疑。
d、特征檢查
根據(jù)暗鏈特征庫(kù)(關(guān)鍵詞、鏈接)檢查區(qū)域中是否存在暗鏈特征詞或暗鏈鏈接,若存在則判定為暗鏈區(qū)域,否則為可疑。
(6)網(wǎng)頁(yè)變更檢測(cè)
網(wǎng)頁(yè)變更檢測(cè)作為安全事件的輔助檢測(cè)功能,主要目標(biāo)是監(jiān)測(cè)目標(biāo)網(wǎng)站的網(wǎng)頁(yè)變更情況,以防出現(xiàn)遺漏的網(wǎng)頁(yè)篡改事件。
網(wǎng)站監(jiān)控系統(tǒng)中,暗鏈、掛馬、敏感關(guān)鍵詞一般都是網(wǎng)頁(yè)被篡改后的表現(xiàn)。但攻擊者篡改網(wǎng)頁(yè)后也可能只是對(duì)網(wǎng)頁(yè)進(jìn)行其他修改,例如替換文字、圖片等。
由于網(wǎng)頁(yè)變更檢測(cè)就是監(jiān)測(cè)目標(biāo)網(wǎng)站的網(wǎng)頁(yè)是否有變化,通常發(fā)現(xiàn)的大部分變更,都可能是網(wǎng)站的正常替換。
變更監(jiān)控級(jí)別分為四個(gè):輕度變更,中度變更,高度變更,確認(rèn)篡改。
監(jiān)控級(jí)別的標(biāo)準(zhǔn)是比較相似度,即與源文件是否一樣。如果相似度越高,則變更級(jí)別越低。
如果選高度變更,有漏報(bào)可能,如果選低度變更,有誤報(bào)可能。
選高度變更級(jí)別,則文件相似度低,有些輕微的改變可能發(fā)現(xiàn)不了,則容易漏報(bào)。
選輕度變更級(jí)別,則文件相似度高,輕微的改變會(huì)發(fā)現(xiàn),則容易誤報(bào)。
每次檢測(cè)時(shí)會(huì)與前面的版本進(jìn)行對(duì)比,文件相似度為100%意味著完全相同。文件相似度為20%,為高度變更;文件相似度為80%,為低度變更。這個(gè)相似度可以在程序中自行設(shè)置。
確認(rèn)篡改,有兩個(gè)條件:第一,文件相似度不是100%,第二,出現(xiàn)了被黑的關(guān)鍵字。例如:“友情檢測(cè)”,“您的網(wǎng)站存在嚴(yán)重漏洞”,“黑客聯(lián)盟”,“貴站存在安全隱患”,“貴站有漏洞”,“hacked by”,“被掛黑頁(yè)”,“本站已被入侵”,“請(qǐng)及時(shí)修補(bǔ)”,“安全檢測(cè)”,“請(qǐng)管理員修補(bǔ)”,“此站被黑”等等。這個(gè)關(guān)鍵字可以在程序中自行設(shè)置。
(7)域名劫持檢測(cè)
域名劫持檢測(cè)主要是基于用戶自定義域名對(duì)應(yīng)IP,以及網(wǎng)站監(jiān)控系統(tǒng)域名劫持檢測(cè)兩種檢測(cè)方式。當(dāng)用戶設(shè)定域名對(duì)應(yīng)IP信息后,系統(tǒng)會(huì)根據(jù)用戶設(shè)置進(jìn)行檢測(cè)。當(dāng)發(fā)現(xiàn)域名對(duì)應(yīng)IP信息有變化時(shí)進(jìn)行域名劫持告警。當(dāng)用戶未設(shè)置任何域名對(duì)應(yīng)IP信息時(shí),將啟用網(wǎng)站監(jiān)控系統(tǒng)域名劫持檢測(cè),原理如下:
1)首先向國(guó)外一些不存在的域名服務(wù)器地址發(fā)起DNS查詢(UDP方式)。
2)無響應(yīng),則正常;否則判定為網(wǎng)站監(jiān)控系統(tǒng)所處網(wǎng)絡(luò)環(huán)境下存在DNS污染。向本地DNS服務(wù)發(fā)起正常查詢請(qǐng)求,若返回結(jié)果包含互聯(lián)網(wǎng)服務(wù)提供商ISP的IP地址(基于ISP糾錯(cuò)域名庫(kù)),則判定此域名被ISP劫持。
上述雖然結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行了描述,但并非對(duì)本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動(dòng)即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。