一種從Web日志中挖掘攻擊頻繁序列模式的方法
【技術領域】
[0001] 本發(fā)明涉及Web安全領域的數(shù)據(jù)挖掘,特別是涉及一種對攻擊行為的挖掘。具體涉
[0002] 及通過對Web日志的挖掘,發(fā)現(xiàn)網(wǎng)絡攻擊者的攻擊序列模式的方法。
【背景技術】
[0003] 作為互聯(lián)網(wǎng)上最重要的應用之一,Web提供了便捷的文檔發(fā)布與獲取機制,并逐漸 成為各類信息資源的聚集地。信息的豐富性和多樣性誘惑著黑客,導致對Web應用的攻擊越 來越頻繁,尤其是針對Web服務器的攻擊。這種攻擊不僅種類繁多,而且危害巨大,有時會導 致公司用戶信息泄露,更甚者會致使服務器癱瘓。常見的Web應用漏洞有SQL注入、跨站腳本 攻擊、目錄遍歷、文件包含、命令執(zhí)行等。其中SQL注入是發(fā)生在應用程序的數(shù)據(jù)庫層面上的 漏洞,被廣泛用于非法獲取網(wǎng)站的控制權,該漏洞的存在會導致網(wǎng)站被嵌入惡意性代碼、植 入后門程序,嚴重時甚至會破壞硬盤數(shù)據(jù),導致系統(tǒng)癱瘓。而在跨站腳本攻擊中,偽造的URL 被作為誘餌,誘導用戶點擊。用戶點擊被篡改的URL后,惡意的腳本將會在受害者的瀏覽器 中執(zhí)行。該漏洞主要被用于竊取密碼、釣魚欺騙、傳播惡意代碼等。因此對Web應用程序漏洞 的利用,是獲取公司內(nèi)部信息的最便捷的路徑之一。
[0004] Web日志記錄了服務器接受和處理請求以及運行時錯誤的各種原始信息。當用戶 對服務器發(fā)送請求時,服務器的訪問日志文件就會記錄該請求的詳細信息。攻擊者如果想 要利用某個漏洞,需要通過向服務器發(fā)送請求,根據(jù)服務器的響應來攻擊,因此攻擊者的入 侵行為也會被記錄到Web日志中。在服務器的日常運營和安全應急響應過程中,管理員需要 從安全的角度對日志進行分析。在攻擊發(fā)生后通過對近幾天的日志分析,跟蹤攻擊者,并還 原攻擊過程。通常是利用grep等文本搜索命令來完成對日志文件某個關鍵字的搜索,從中 發(fā)現(xiàn)異常行為,然后對這些存在異常行為的日志進行人為分析。然而這種手動檢查的方法 既費時又費力。另一種方法是使用自動化工具,可以實現(xiàn)對日志的高效搜索、可視化分析等 操作。但是這些分析工具僅僅是對日志做一些簡單的統(tǒng)計,比如統(tǒng)計網(wǎng)頁點閱數(shù)和訪問量, 而不是日志進行深入的數(shù)據(jù)分析。此時就需要使用數(shù)據(jù)挖掘技術對日志數(shù)據(jù)進行分析,該 技術被稱為Web使用挖掘(Web Usage Mining)。
[0005] Web使用挖掘是Web數(shù)據(jù)挖掘的一部分,挖掘的數(shù)據(jù)主要來源于服務器的日志,能 夠?qū)崿F(xiàn)對日志數(shù)據(jù)的深入分析。其基本工作流程主要分為三個階段:數(shù)據(jù)收集和預處理,模 式發(fā)現(xiàn),模式分析。在Web安全領域,Web數(shù)據(jù)挖掘的應用并不常見,但是對日志中攻擊數(shù)據(jù) 進行挖掘,有利于幫助管理員發(fā)現(xiàn)漏洞,保護網(wǎng)站。通過對日志中攻擊數(shù)據(jù)的分析,可以比 較輕易的知道攻擊者感興趣的地方,以及市面上是否出現(xiàn)了 lday攻擊的大規(guī)模利用。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明針對目前對網(wǎng)絡攻擊行為分析的迫切性,結(jié)合數(shù)據(jù)挖掘算法,對攻擊者攻 擊網(wǎng)站的序列進行模式挖掘。一方面可以探索漏洞掃描器內(nèi)部的掃描路徑;另一方面從網(wǎng) 站安全角度來考慮,有助于幫助管理員發(fā)現(xiàn)和分析攻擊者的攻擊行為。本發(fā)明提供了一種 探索攻擊者攻擊行為的方法,所敘述方法步驟如圖1,包括:
[0007] 1.數(shù)據(jù)收集階段
[0008] 首先,在預處理之前需要收集針對各種網(wǎng)絡漏洞進行攻擊的特征碼,以此來作為 匹配攻擊的依據(jù)。攻擊特征碼是指在發(fā)送請求時包含在URL中的能夠?qū)δ撤N特定的漏洞進 行利用的特征字符串。將收集到的攻擊特征碼與其對應攻擊類型存儲到特定的文件中作為 漏洞特征庫,格式如圖2所示。
[0009] 其次,作為挖掘數(shù)據(jù)的主體,網(wǎng)站的日志數(shù)據(jù)在這一步也要被收集。由于Web服務 器的多樣性,導致訪問日志的格式也多種多樣。在收集日志數(shù)據(jù)的同時要收集日志的結(jié)構(gòu) 信息,以此為依據(jù)來解析日志的每一個字段。另一方面,為了保持攻擊序列的簡潔性,將每 一個攻擊還原到具體的頁面,此外還需要收集網(wǎng)站頁面信息,作為識別URL請求某一頁面的 依據(jù)。
[0010] 2.預處理階段
[0011] 在日志記錄的用戶請求信息中,URL是數(shù)據(jù)分析的重要依據(jù),其中應用最廣泛的是 HTTP/HTTPS協(xié)議的URL。此外,URL也是Web安全的入口點,各種安全威脅都是伴隨著URL的請 求而進行的,如果客戶端到服務端各層的解析沒做好,一旦被攻擊者利用,篡改URL或請求 頭部就可能出現(xiàn)安全問題。因此日志中的URL字段也可用于檢查該用戶該記錄是否存在漏 洞利用行為的主要依據(jù)。
[0012] 與通用的Web使用挖掘的數(shù)據(jù)清理不同的是,Web使用挖掘會祛除異常請求和靜態(tài) 請求的部分,常見的有對圖片的請求或者是請求響應狀態(tài)不是"200"的記錄。而本方法清理 掉正常的用戶請求,保留惡意的用戶請求,將攻擊數(shù)據(jù)保存后,對攻擊數(shù)據(jù)進行用戶識別和 會話識別,其具體過程包括以下幾個部分:
[0013] (1)日志解析。數(shù)據(jù)收集完畢后,根據(jù)日志結(jié)構(gòu)信息對日志文件解析,將日志記錄 解析為相應的請求IP、請求時間、請求方式、請求URL與請求狀態(tài)、客戶端等字段。
[0014] (2)日志清洗。即攻擊特征匹配,通過日志中的URL來匹配漏洞特征庫,查找日志中 含有攻擊行為的記錄。根據(jù)解析到的URL請求與之前收集到的攻擊特征碼進行逐一對比,如 果該URL中包含任意攻擊類型的特征碼,那么就判定該條日志記錄產(chǎn)生了攻擊的行為,按照 訪問時間、訪問者IP、客戶端瀏覽器、請求方式、請求URL與請求狀態(tài)等信息保存在攻擊文件 中。
[0015] (3 )URL清理。攻擊者的攻擊詳細信息保存到攻擊文件以后,需要對URL字段進行清 理。日志中匹配出含有攻擊的日志條目中,其解析出的URL,除了包含對網(wǎng)站中某個具體頁 面的請求,同時存在大量的攻擊字符串。這些字符串對于分析攻擊者的攻擊路徑來說是無 價值的,因此只需保存該攻擊具體產(chǎn)生在哪一個頁面,所以額外的一步操作是將被攻擊的 頁面提取出來。依據(jù)數(shù)據(jù)收集階段搜集的網(wǎng)站頁面信息來匹配具體對網(wǎng)站哪一個頁面進行 了 Web漏洞的利用。
[0016] (4)用戶識別。從日志記錄中識別出每一個發(fā)送請求的用戶。根據(jù)請求用戶的IP、 操作系統(tǒng)、瀏覽器等信息從大量的Web日志記錄中找出訪問Web站點的具體用戶。針對用戶 識別有很多有效的算法,通用的算法是通過用戶IP和客戶端操作系統(tǒng)或瀏覽器識別不同的 用戶。本發(fā)明依據(jù)預處理后的IP和客戶端信息來識別不同的用戶。
[0017] (5)人為攻擊和漏洞掃描器攻擊的識別。為了更準確的分析人為攻擊的攻擊模式 和機器掃描的攻擊模式,將用戶分為了兩大類,人為攻擊和漏洞掃描工具的探測。識別掃描 工具可以依據(jù)以下幾點來做:
[0018] ?掃描器指紋:不同的掃描器一般都有自己的獨特特征,例如發(fā)送的請求中會加 一些特定的head字段,測試漏洞的請求參數(shù)會加上自己掃描器的名稱等。比如wvs (Acunetix Web Vulnerability Scanner)在請求的參數(shù)URL或post數(shù)據(jù)中會有"acunetix_ wvs_security_test"樣式的字符串,又比如AppScan在請求參數(shù)中會出現(xiàn)"appscan"這樣的 字符串。
[0019] ?單個用戶某段時間內(nèi)觸發(fā)規(guī)則的次數(shù):根據(jù)某個用戶在某時間段內(nèi)觸發(fā)規(guī)則的 次數(shù),如果大于設定的某個閥值,則判定其為漏洞掃描工具。
[0020] ?單個用戶某個時間段內(nèi)響應狀態(tài)錯誤的比例:這種方法主要用來應對探測敏感 目錄和文件的掃描器,有些掃描器都是基于字典文件,通