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