張穎君,劉尚奇,楊牧,張海霞,黃克振
基于日志的異常檢測技術綜述
張穎君1,劉尚奇2,楊牧2,張海霞1,黃克振1
(1. 中國科學院軟件研究所可信計算與信息保障實驗室,北京 100190;2. 北京市公安局網絡安全保衛總隊,北京 100029)
日志信息是信息系統快速發展中產生的重要信息資源,通過日志的分析,可以進行異常檢測、故障診斷和性能診斷等。研究基于日志的異常檢測技術,首先對主要使用的基于日志的異常檢測框架進行介紹,然后對日志解析、日志異常檢測等關鍵技術進行詳細介紹。最后對當前技術進行總結,并對未來研究方向給出建議。
異常檢測;日志分析;機器學習
現代系統在運行過程中往往產生大量日志文件,日志文件包含有關系統中事件的信息。日志分析已經在控制臺、網絡應用、存儲系統、并發系統以及一般系統等廣泛應用,日志文件在監控網絡情況、檢查硬件故障、保護軟件安全等方面起著重要作用[1]。通過分析系統日志記錄程序運行時的動態信息,可以有效幫助維護人員分析重現錯誤,進而更正系統錯誤,提高系統運行時的可靠性[2]。然而,在系統運行中,每天產生的日志數量龐大。例如,根據對擁有1 000名員工設備的企業的保守估計,小型組織預計每天產生超過100 GB的日志流量,峰值EPS(事件數每秒)超過22 000[3]。盡管日志具有巨大的價值,但如何有效地分析仍然是一個巨大的挑戰。
在日志分析方面面臨的主要問題包括:①分布式軟件系統會生成大量的日志信息,甚至達到每小時吉比特字節的數據[4];②不同類型設備包含多樣的元素,如路由器、交換機、服務器等生成的日志涉及不同內容,包括網絡層、協議和服務等,因此,產生的日志具有多樣化的特點[5];③開發人員為了方便,即使是統一類型的設備,不同廠商為了靈活地記錄系統事件,使用的日志結構也不同,導致日志信息的非結構化[6]。總之,自動化地分析日志信息具有較大難度。因此,研究人員主要通過日志解析獲取日志相關事件模板,完成對日志的自動化分析。日志解析包括很多方法,如正則表達式、代碼分析、機器學習和自然語言處理等相關技術,且已經具有較為成熟的工具。
在日志解析基礎上,日志分析應用也很廣泛,主要包括異常檢測[7]、故障診斷[8-10]、程序分析與驗證[11]、調查取證[12]和性能診斷[13-14]等。異常檢測是指在數據中發現與預期行為不符的模式的問題,這些不合格的模式通常被稱為不同應用領域中的異常情況、不一致的觀察結果、意外情況等[15]。本文主要針對日志信息進行異常檢測,一方面,系統越來越先進和復雜,如果希望系統安全有效,那么異常檢測是一項必不可少的任務[16];另一方面,執行異常檢測對于大規模的開發、維護和性能優化具有重要作用。目前,基于日志的異常檢測技術主要包括監督學習、無監督學習和深度學習方法等。
本文重點對基于日志的異常檢測框架、日志解析相關技術、日志異常檢測相關技術進行詳細介紹。

圖1 基于日志的異常檢測框架
Figure 1 Log-based anomaly detection framework
由于現有的日志類型繁多,本文主要針對正常日志進行分析(異常日志的發現和處理本文不進行介紹),挖掘系統或設備運行中的異常行為。日志的異常檢測框架如圖1所示,主要包括4個部分:日志收集與預處理、日志解析、特征提取和異常檢測[7]。
首先,進行日志收集,獲取原始數據并進行預處理。日志收集[17]主要指從設備中獲取相關日志記錄,包括系統的運行狀態、時間信息等,這些信息用來記錄系統運行過程中的重要信息,是日志分析的前提。在收集完日志數據后,進行預處理,主要是根據具體需求,將日志數據中的無效信息進行剔除,包括重復信息、無用信息等。日志信息中的事件序列如圖2所示。
其次,對處理后的數據進行解析,分析日志結構與信息,獲取日志針對每個事件的模板。日志解析是從無結構的日志中提取相應的事件模板,每個模板由多個指定參數構成,作為后續特征提取的基礎。由于日志數量龐大,當前主要采用固定時間窗口、滑動時間窗口、會話窗口等為日志分割的方式[7],將龐大的日志劃分為多個部分進行檢測,或者通過采樣的方式進行檢測。在數據采樣過程中,采樣方式、樣本尺寸與檢測正確率關系密切,因此,在該方向進一步探索,對提高所提方案的實用性有重要推動作用。本文通過設定固定的時間范圍作為窗口,對窗口內日志內容進行解析,提煉其中的事件模板,將日志切分成一組日志事件序列Log={e1,e2,…,e},進而從提取信息中選擇合適的變量和分組來表示相關內容,并進行數字化向量表示,構建成特征向量,方便后續進行機器學習。例如,對一段時間窗口內的信息組成一個日志序列(圖2中的內容為一個時間窗口),根據日志解析后的事件模板進行分析(如表1所示)。

圖2 Hadoop日志信息樣例
Figure 2 Hadoop log information sample
為了描述清晰,這里將不同服務器相關操作構建不同的特征向量,方便后續挖掘服務器中的異常操作。實際解析中,可以將不同服務器的操作進行關聯分析,獲得更多的異常信息。例如,針對服務器“ZooKeeperServer”構建特征向量<2,1,1, …>,表示事件1“server environment”發生2次,“client attempting to establish new session”“established session”各發生1次。最終,可以由不同時間段形成的特征向量構建成特征矩陣。
最后,進行異常檢測過程,主要是使用機器學習的方法(如聚類分析、決策樹、深度學習等)對特征向量進行學習,產生一個異常檢測模型,通過對輸入特征矩陣機器學習模型進行訓練,從而生成一個異常檢測模型,并使用該模型對新的日志進行檢測。例如,在將日志信息標記為正常、異常后,根據提取的特征進行聚類分析。首先對各個特征賦予不同權重;然后將特征向量進行歸一化處理;之后定義特征向量之間的相似性(即距離大小);最后通過定義閾值,對日志間的相似性進行判斷,定義是否為異常。針對異常檢測結果,進一步進行人工分析和確認,結果可以作為樣本加入數據集中,對模型進行修正。

表1 日志模板示例
綜上所述,基于日志的異常檢測技術中,各個環節都不可或缺。但是,由于日志獲取部分,不同系統、不同用戶有不同實現方式。而特征提取及表示主要為異常檢測做準備,與異常檢測使用的模型及方法直接相關,因此,本文對特征提取與表示合并入異常檢測部分進行介紹。
目前,日志解析技術在工業界取得了較大進展,已開發完成多個日志解析工具,并進行應用,日志解析器跨越分布式系統、超級計算機、操作的數據集系統、移動系統、服務器應用程序和獨立軟件[18]。較為典型的包括Splunk[19]、Logentries[20]、Logz.io[21]等。但大多針對專業領域進行應用,本文重點對學術研究中相關技術進展進行介紹。
在自動化解析日志過程中,傳統的方式主要通過正則表達式來提取事件模板和主要參數[22]。但是,手動分析并寫正則表達式規則是很耗時的,而且日志更新速度非常快,導致正則表達式的效率不高。因此,很多研究主要使用代碼分析、機器學習、自然語言處理等方法進行日志模板的提取,方便對日志信息進行解析。
在代碼分析方面,主要采用靜態分析的方法從源代碼中提取事件模板。其中,文獻[23]在日志解析過程中主要分為靜態源代碼解析和運行時日志解析兩個步驟。靜態源代碼分析步驟將程序源(以及記錄器類的名稱)作為輸入,首先生成源代碼的抽象語法樹(AST);然后枚舉所有類中的toString調用,并查看這些調用中的字符串格式語句,以推斷出消息模板中的變量類型,并將此類型信息替換為部分模板,遞歸地執行此操作,直到所有模板僅插值原始類型為止。文獻[24]主要將執行日志解析為事件序列,并通過構造事件的后綴數組來生成所有可能子序列的有序列表。實驗證明,該方法具有較高的效率。但在實際中,源代碼并不容易獲取。文獻[25]提出了一種新的基于概率后綴樹的統計方法,使用源代碼分析對日志信息之間的邏輯關系進行解析,然后進行準確的分割以提取完整的執行路徑,之后通過定義異常路徑索引進行異常檢測,該方法可以有效進行自動異常檢測。但是,大多數情況獲取代碼并不容易。因此,研究人員展開了利用機器學習相關技術進行日志解析的研究。
在機器學習方面,日志解析技術主要包括基于聚類的數據挖掘方法、基于自然語言處理的解析方法等。日志是由一系列系統或應用中發生的事件進行記錄,一個記錄通常代表一個事件發生的相關具體內容。參照RFC[26],日志記錄通常包含但不限于事件的時間、源頭、標簽、信息等。在日志解析過程中,一般需要對日志記錄進行分析,去除無關部分(如空格等),然后通過機器學習相關方法對日志內容進行學習。
在基于聚類的日志解析方法中,主要通過計算對日志進行聚類,進而進行數據挖掘,形成事件模板,完成對日志的解析。其中,日志解析工具SLCT[27]通過3個步驟進行工作:首先,從數據中識別出頻繁出現的單詞(比支持閾值出現頻率更高的單詞)或1個項集;然后,提取數據集中每一行中出現的這些項的組;最后,將出現比支持值更頻繁出現的候選簇作為數據集中的簇。LogCluster[28]是對SLCT的改進,實現對數據的聚類進而挖掘頻繁發生的線性模式。IPLoM[29]是一種迭代分區日志挖掘算法,用來挖掘事件日志中的事件類型。通過三步分層分區過程,IPLoM將日志數據分區到各自的群集中。與其他類似算法不同,IPLoM基于啟發式的方法,主要對于日志中每個詞的位置進行計數,反復出現的文字會被選取,并組成事件候選,最后選出合適的詞形成日志事件。文獻[30]使用統計聚類方法從非結構化日志消息中提取主要模板,然后建立一個統計模型LTF,捕獲日志消息的時空模式,方便對大量網絡操作進行有效分析,發現其中的異常操作。LKE[31]通過將日志自由格式的文本轉換為日志鍵,然后對日志鍵進行聚類。通過將每個日志消息對應到一系列日志鍵,可以將日志消息轉化為日志鍵序列。當收到新的日志消息時,首先根據規則提取日志消息中的日志鍵,然后選擇與原始日志鍵最近距離的鍵,進而進行異常判斷。LogSig[32]首先將每個日志消息轉換為一組單詞對,以對單詞及其位置信息進行編碼;然后基于單詞對為每個日志消息計算一個潛在值,以確定該日志消息可能屬于哪個群集。經過多次迭代后,可以對日志消息進行集群。最后,在每個群集中,利用日志消息來生成日志模板。文獻[33]提出了一種稱為POP的并行日志解析方法,該方法可以準確有效地解析大規模日志數據。為了提高日志解析的準確性,本文使用迭代分區規則來生成候選事件,并使用分層聚類來改進事件類型。為了提高處理大規模數據的效率,本文將POP設計為線性時間復雜度的日志大小,并在大型數據處理平臺Spark的基礎上進一步優化其計算。上述方法大多采用聚類和數據挖掘相關算法進行日志解析,但是結果大多基于經驗值,一般參數選取過程比較困難。文獻[34, 35]通過將安全日志表示為圖數據結構,日志依據其相似性進行自動分組,達到較好的聚類效果,然后自動化地提取模板,是一種自動化的方法實現日志自動解析。此外,為了提高日志解析的自動化,減少人的參與,一些研究人員提出將日志作為文本進行自然語言處理,根據不同單詞進行解析的方法。
在自然語言處理方面,Logram[36]是一種自動日志解析方法,利用自然語言處理中的n-gram字典來實現有效的日志解析。文獻[37]使用自然語言處理對日志進行解析。首先,將文本劃分為單詞進行標記;然后,對單個單詞進行詞干分析、同義詞替換、停用詞刪除等;之后,將單詞列表中的句子轉化為矢量表示形式;在運行分類之前進行哈希,之后運用兩種無監督聚類算法bisecting k-means 和Latent Dirichlet Allocation進行分類。文獻[38]提出了一種基于經典自然語言處理技術的實現日志分析。首先,使用快速的n-gram語言模型對消息的類型進行預過濾,其中考慮了語法和詞匯的復雜性。然后,使用LDA從大量未標記消息中構建語義空間。最后,使用標準的前饋多層感知器來實現3種分類,并以最少的人工監督。NLog[39]是一種基于自然語言處理的分布式數據分析系統,用于日志解析。首先,通過自然語言處理(NLP)從日志消息中獲取關鍵信息并確定由不同語句生成的日志中的相同對象;之后,使用keyed message存儲結構來存儲解析的日志;最后,實現NLog并將其應用于分布式數據分析框架Spark和MapReduce。
此外,Fastlogsim[40]通過對文本相似度進行計算,合并類似模板,實現快速日志解析。Spell[22,41]利用最長的公共子序列算法(LCS)以流方式解析日志,實現在線系統日志檢測。MoLFI[42]將日志解析建模為多目標優化問題,并使用NSGA-II進化算法解決。Drain[43]應用固定深度的樹結構來表示日志消息,并有效地提取常用模板。文獻[44]主要是對給定兩個或多個系統的執行日志,輸出它們差異的模型。文獻[45]構建CD-LDA方法實現日志分析。首先,通過變更點檢測算法識別網絡中新事件開始或現有事件發生的時刻,然后通過LDA算法將消息分類為事件。LogHound[27]主要使用頻繁項集挖掘算法從事件日志中發現頻繁模式。

表2 日志自動化解析典型方法對比
在日志解析評估方面,文獻[46]提出了基于值的內部質量評估多種日志解析算法,通過評估,可以對日志解析器的質量有深入了解。文獻[47]對多個日志解析器進行評估,并對成功案例和經驗進行介紹。文獻[48]提出一個質量模型用來評估自動化日志提取技術,該模型包含7個相關參數;并利用該模型對現有技術進行綜合評估。本文對上述典型方法進行了對比(如表2所示),主要從類別、主要算法、準確性、模式、使用范圍、時間復雜度、查找效率等方面進行比較。各方法測評過程使用的測試環境、設備類型等不同,因此不能簡單地直接將實驗結果進行對比,本文通過轉換分析等方法,將結果采用分級方式進行描述,用“+++”表示較高等級,“++”表示中等級,“+”表示較低等級。例如,CFG[25]中主要采用代碼分析方法,涉及的算法是AST、CFG。該方法采用離線模式,準確性一般,構建時間復雜度為O(3),查找效率較高。
綜上所述,當前日志解析的技術已經較為成熟,主要通過定義規則、代碼分析和機器學習等方法,實現為不同日志結構的快速解析,去除不相關內容,將不同事件的關鍵字段進行提取與存儲,方便后續分析。自然語言處理方面,考慮到性能等影響,目前只是運用簡單的相關技術進行日志解析,后續需要將更為復雜的主題劃分、同義詞替換等相關技術引入日志分析中,使日志分析后具有更強的可解釋性,方便操作和理解,并進行實際應用。
當前基于日志的異常檢測方法已經有很多研究,由于現有系統的規模和復雜性不斷增加,手動檢查日志以發現異常變得不可行。因此,針對日志信息進行自動異常檢測的需求越來越迫切,并在相關領域提出許多方法,包括基于規則[49-50]、基于工作流[51]、基于時間序列分析[52]和基于圖[53]的異常等檢測方法。機器學習相關技術的迅速崛起,觸發了其廣泛應用,本文重點對當前研究熱點、基于機器學習的日志異常檢測方法進行介紹,主要包括監督學習、無監督學習和現階段常用的深度學習方法等。
監督學習被定義為一種從標記的訓練數據中得出模型的機器學習方法。帶標簽的訓練數據(通過標簽指示正常或異常狀態)是監督異常檢測的先決條件,訓練數據標簽越多,模型越精確。在基于日志的異常檢測方面使用的機器學習方法較為寬泛,典型的方法如下。
AClog[54]是一種多日志相關分析系統構建攻擊鏈的方法。首先,使用不同的日志來形成系統的步驟,它們是攻擊前的事件序列。然后,利用快速線性SVM和最長公共子序列來發現攻擊前的常規步驟。最后,通過相應的日志序列來識別攻擊前的步驟。LogClass[55]是一個數據驅動的框架對設備日志進行異常檢測和分類。LogClass是預處理設備日志,并產生詞描述方法 bag-of-words矢量,然后通過PU學習方法和SVM來訓練異常檢測和分類模型,最后進行在線異常檢測。文獻[56]提出了一種使用K-原型聚類和k-NN分類算法的集成方法(IM)從大量日志中執行異常檢測。首先,通過分析系統日志的特征,并根據會話信息提取10個特征,有效地表征用戶行為。其次,基于這些提取的特征,K-原型聚類應用算法將數據集劃分為不同的群集。然后,明顯的正常事件通常會濾除高度相干的簇,而其他簇則被視為異常候選進行進一步分析。最后,設計了兩個基于距離的新功能來測量本地和全局這些異常候選者的異常程度。文獻[57]是一種使用數據挖掘和統計學習方法自動監視,并從控制臺日志中檢測異常的分析方法。首先,使用頻繁模式挖掘和分布估計技術以捕獲主導模式(頻繁序列和持續時間)。然后,使用主成分分析法異常檢測技術來識別實際問題。文獻[58]通過從日志中挖掘模板和模板序列來構建控制流圖(CFG)。CFG式系統狀態基線代表正常執行流,通過對比CFG相似性發掘異常行為。
由于監督學習需要前期進行人工標記,工作量大,因此,自動化程度相對不高。更多的研究集中到自動化程度更高的無監督學習。
無監督學習是指沒有任何標記的訓練數據情況下得到模型的機器學習方法。常見的無監督方法包括各種聚類方法[22]、關聯規則挖掘、基于主成分分析等,具體如下。
(1)聚類方法
LogCluster[59]是一種將日志聚類來進行日志問題識別的方法。首先將每個日志序列通過一個向量表示,然后計算兩個日志序列之間的相似度值,并應用聚集層次聚類技術將相似的日志序列分組為聚類。Log2vec[60]是一種基于異構圖嵌入的威脅檢測方法。首先,根據日志條目之間的關系將其轉換為異構圖;然后使用一個改進的圖嵌入方法,可以自動對每個日志描述為一個低維的向量;最后,通過檢測算法,可以將惡意日志和良性日志進行聚類,識別出惡意行為。文獻[61]提出一種基于syslog的系統日志文件中檢測異常日志消息的框架,并使用LogCluster算法進行模式檢測。
(2)關聯規則挖掘
文獻[62]提出了一種非結構化日志異常檢測的新型分析技術。首先,使用日志解析器將非結構化日志轉換為結構化日志。然后,根據日志參數之間的關系,結構化日志消息被進一步分組以記錄消息組。之后,程序不變式將自動從日志消息組中挖掘,挖掘的不變量可以揭示內在的線性特征程序工作流程,自動檢測日志中的異常。文獻[63]提出了一種基于學習的方法進行云服務異常檢測,通過利用來自多個服務的日志來細粒度地發現深度云服務異常的原因。首先,通過最長公共子序列(LCS)方法將日志解析為三元組。然后,使用時間關聯分析(TCA)將相似事件聚類,找出操作的關鍵事件。最后,根據標記進行異常檢測。LogLens[64]是實時日志分析系統,采用基于無監督的機器學習技術,以發現應用程序日志中的模式,然后利用這些模式以及實時日志解析,設計高級日志分析應用程序。
(3)基于主成分分析(PCA)
文獻[23]首先通過系統執行時的特征構造特征矩陣,然后使用PCA[65]與信息檢索中的術語加權技術[66]相結合,構造異常檢測方法。DILAF[65]是一個大型系統日志的分布式分析異常檢測方法。DILAF采用了批量同步并行計算(BSP)模型來并行化機器學習過程。BSP算法將工作負載分配到各個參與流程之間,每個流程均執行本地計算。當一個進程完成其任務并到達障礙時,它將等待,直到所有其他進程達到相同的同步障礙。本文使用BSP模型實現了PCA算法進行異常檢測。文獻[67]是對DILAF的擴展,通過增量分析、分布式和無監督的日志分析框架,更早檢測到異常的離線分析方法。文獻[68]針對異常檢測中兩種無監督機器學習算法PCA和Kmeans算法進行評估。
(4)其他方法
文獻[69]提出了使用遞歸神經網絡(RNN)語言模型對系統日志進行異常檢測。通過對系統日志中事件的正態分布進行建模,異常檢測方法可以發現隱藏在這些日志中的復雜關系。文獻[70]使用自然語言處理技術,將日志作為常規文本進行分析。首先,應用基于Google的word2vec算法的嵌入技術,將日志文件的單詞映射到高維度量空間,然后使用標準分類器進行異常檢測。文獻[71]提出了一種利用混合解決方案——卷積自動編碼器?可變自動編碼器(CAE-VAE)結構來離散事件序列,并利用重構誤差進行異常檢測。但該方法不能在連續事件上進行分析。
總之,無監督學習具有較高的自動化,節省了人工成本,但是檢測中大多使用聚類、關聯分析等方法對事件進行分析,事件間自動化關聯程度不高,因此,更多的研究使用深度學習方法,將事件進行聯合分析,自動化發現潛在安全威脅。
近年來,基于深度學習的異常檢測算法變得越來越流行,并且在多種任務集中深度學習的應用超越了傳統方法[72],因此這里單獨對其進行介紹。
CausalConvLSTM[73]是一種新型混合模型,它利用卷積神經網絡(CNN)的優勢,可以有效地提取并行方式中的空間特征,并通過長短期記憶(LSTM)網絡來捕獲順序關系。該模型可以有效解決異常檢測中概念漂移的問題。DeepLog[74]是主要使用長短期記憶的神經網絡模型,將系統日志建模為自然語言序列。DeepLog從正常執行中自動學習日志模型,并通過該模型,對正常執行下的日志數據進行異常檢測。LogGAN[75]是一種基于LSTM的生成對抗網絡,以基于時態系統日志區分即將到來的異常事件。首先,利用自定義的日志解析器提取結構化信息(即時間戳、簽名和參數),并將每個日志轉換為事件。其次,事件的組合(即模式)使用滑動窗口從時態系統日志中收集相應的即將發生的事件。LogRobust[76]是一種基于不穩定日志數據的異常檢測方法。LogRobust提取日志事件的語義信息并將它們表示為語義向量。然后通過使用基于注意力的Bi-LSTM模型檢測異常,該模型具有捕獲日志序列中的上下文信息的能力,并且自動了解不同日志事件的重要性。文獻[77]提出了一個基于行為和屬性進行無監督學習的日志數據分析方法。首先,通過長短期記憶來預測當前的一級日志數。通過比較預測數量的一級日志,它可以檢測異常行為,如日志數量激增。進而,執行語義分析屬性信息以構建屬性語法森林,協助維護人員監視系統通過日志中的關鍵指紋信息。此外,采用屬性信息和狀態值來訓練無監督學習算法模型,共同實現對日志的分析,協助操作員對系統進行后期維護。文獻[46]設計一個分類器,該分類器使用長短期記憶將用戶日志建模為自然語言順序并實現基于角色的分類。LSTM模型可以通過自動提取特征學習不同用戶的行為模式,并檢測日志中的異常行為。此外,文獻[78]提出基于日志信息和CNN-text的異常檢測方法,通過將CNN-text與主流的SVM、決策樹等對比,顯示該算法的優越性。文獻[79]提出了一種利用卷積神經網絡從大數據系統日志中進行檢測的異常處理方法。該方法可以學習系統日志中事件關系,并精確進行異常檢測。
總之,深度學習方法更多關注連續事件之間的關系,不再僅針對單一離散事件進行分析,但深度學習較大程度上依賴數據集,如何構建通用且高效的方法是下一步研究的重點。
綜上所述,基于日志的異常檢測技術已經得到廣泛關注,越來越多的機器學習相關技術融入其中。本文對各方面進行了量化分析,分析了其方法的準確性和召回率。由于各方法實現不同,且難以獲得源代碼進行驗證,因此本文使用原文獻中的相關描述作為評測依據。表3中記錄了各方案的準確率和召回率(部分文獻未提供其方法的結果以“/”表示)。但是,大部分現有方法是針對特定場景進行分析、提取特征及構建檢測算法,缺乏將不同類型日志聯合分析,并構建通用且高準確性的檢測方法。
在分析和調研現有基于日志異常檢測技術相關文獻基礎上,本文列出一些未來研究的主要方向和面臨的挑戰。
(1)日志數據集的統一:一方面,現有日志分析的數據集種類繁多,各類日志差異較大,給日志分析對比帶來較大的挑戰;另一方面,日志的標記是龐大的工作,標記數據的質量直接影響著后續學習的效果。因此,是否可以提供統一的多類型數據集,并提供相應的標記數據供實驗分析和對比驗證,將成為后續研究的基礎。此外,對日志數據集的劃分方式的進一步探索,會對日志分析效率和準確性產生較大影響。

表3 日志異常檢測方法對比
(2)加強多日志間的關聯分析:現有技術大多關注某一設備的日志,分析其中的異常行為。但現在網絡攻擊步驟復雜,攻擊者操作更為隱蔽,是否可以將相關設備的日志進行關聯分析,利用深度學習等技術挖掘隱藏的攻擊路徑,發現異常行為將成為新的挑戰。
(3)有限惡意數據情況下的智能模型訓練:在實際工作部署中,惡意攻擊產生的帶標簽數據相對較少,在圖像領域的數據增強方法難以對惡意數據進行擴充增強,因此有必要研究針對日志檢測的數據增強方法以及模型訓練方法,在惡意攻擊帶標簽數據有限的情況下實現高準確性模型的訓練,并完成實際的檢測。
(4)人工模型的可解釋性研究:當前研究對于深度學習模型的可解釋性存在疑慮,這也是深度學習模型在安全領域難以被大規模應用的主要原因之一。在日志檢測過程中,模型對于檢測結果應具備可解釋性,能夠讓分析人員理解被標記的數據異常的原因,這對于分析人員對結果的判定具有依據。在未來的工作中,模型本身的可解釋性相關研究應與日志檢測方向結合,從而提高判定依據的可信度。
(5)人工智能模型的安全性研究:相對于運用規則的傳統方法,智能化方法雖然帶來了檢測性能的提高,但同時面臨著其模型本身的安全缺陷和/或多種攻擊,如模型脆弱性問題、對抗樣本攻擊、數據投毒攻擊等,這些攻擊將影響模型本身的準確性,使攻擊能夠成功逃逸,避免被檢測。因此,有必要借鑒于模型的安全性增強方法,減少甚至避免因模型脆弱性產生的攻擊。
(6)異常檢測方法的實用性研究:目前,異常檢測方法在多個領域展開了廣泛研究,但在實際檢測中并沒有得到廣泛應用。一方面,誤檢率和漏檢率是異常檢測的一個難點,能夠有效控制誤檢率和漏檢率,異常檢測方法才能有效實施;另一方面,增加檢測次數可以減少犯錯概率(包括誤檢率、漏檢率等),檢測次數與犯錯概率間存在一定關系,如何找到兩者關系,在較少檢測次數情況下得到較少的犯錯概率,是異常檢測方法得以實用化的重要研究方向。
日志已經成為當前信息系統產生的重要信息資源。基于日志的異常檢測技術可以有效發現系統中存在的安全問題,發掘潛在的安全威脅,成為當前研究的熱點。隨著人工智能技術的發展和普及,越來越多的相關研究成果已經應用于基于日志的異常檢測。在基于日志的異常檢測方法中,包括日志收集、日志解析、特征提取、異常檢測等步驟。其中,日志解析和異常檢測是核心部分,也是本文重點論述的內容。當前,日志解析技術已經相對成熟,相關解析工具也應用廣泛。日志解析的研究從傳統的定義正則表達式發展到自動化的方法,主要包括代碼分析、機器學習和自然語言處理等。在基于日志的異常檢測方法中,主要分為監督學習、無監督學習和深度學習等。異常檢測方法大多針對特定場景和數據集進行離線分析,缺乏通用性和高準確性的實用方法。
現在的攻擊越來越隱蔽,攻擊步驟越來越煩瑣,而對相關設備的日志聯合分析可以有效發現潛在攻擊,因此,在后續的研究中,不僅關注單一日志來源,還需要結合不同事件、不同設備進行日志解析,進而進行異常檢測等;此外,利用機器學習的相關研究將進一步應用于在線檢測,構建通用、有效的在線基于日志的異常檢測方法,并應用到實際中。
[1] 廖湘科, 李姍姍. 大規模軟件系統日志研究綜述[J]. 軟件學報,2016,27(8): 1934-1947.
LIAO X K, LI S S. Survey on log research of large scale software system[J]. Journal of Software, 2016, 27(8): 1934?1947.
[2] OLINER A J, GANAPATHI A, XU W. Advances and challenges in log analysis[J]. Communications of the ACM, 2012, 55(2):55–61.
[3] RAPIDS. cyBERT: neural network, that’s the tech; to free your staff from, bad regex[EB].
[4] MI H, WANG H, ZHOU Y, et al. Toward finegrained, unsupervised, scalable performance diagnosis for production cloud computing systems[J]. IEEE Trans Parallel Distrib Syst, 2013, 24(6): 1245-1255.
[5] 崔元, 張琢. 基于大規模網絡日志的模板提取研究[J]. 計算機科學, 2017, 44(11A): 448-452.
CUI Y, ZHANG Z. Research on Template Extraction Based on Large-scale Network Log[J]. Computer Science, 2017, 44(11A): 448-452.
[6] HE P, ZHU J, HE S, et al. An evaluation study on log parsing and its use in log mining[C]// Proc of the 46th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. 2016: 654-661.
[7] HE SL, ZHU J M, HE P J, et al. Experience report: system log analysis for anomaly detection[C]// 27th International Symposium on Software Reliability Engineering. 2016: 207-218.
[8] FU Q, LOU J, et al. Contextual analysis of program logs for understanding system behaviors[C]// MSR ’13. 2013: 397-400.
[9] PECCHIA A, COTRONEO D, KALBARCZYK Z, et al. Improving log-based field failure data analysis of multi-node computing systems[C]// Dependable Systems and Networks. 2011: 97-108.
[10] LU J, LI F, LI L, et al. CloudRaid: hunting concurrency bugs in the cloud via log-mining[C]// Foundations of Software Engineering, 2018: 3-14.
[11] AIT EL HADJ M, KHOUMSI A, BENKAOUZ Y, et al. Efficient security policy management using suspicious rules through access log analysis[J]. Lecture Notes in Computer Science, 2019, 11704: 250-266.
[12] STUDIAWAN H, FERDOUS S, PAYNE C. A survey on forensic investigation of operating system logs[J]. Digital Investigation, 2019, 29: 1-20.
[13] CHOW M, MEISNER D, FLINN J, et al. The mystery machine: end-to-end performance analysis of large-scale internet services[C]// 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI ’14). 2014: 217-231.
[14] KARTHIK N, CHARLES K, JENNIFER N. Structured comparative analysis of systems logs to diagnose performance problems[C]// Networked Systems Design and Implementation. 2012: 26-26.
[15] CHANDOLA V, BANERJEE A, KUMAR V. anomaly detection: a survey[J]. ACM Computing Surveys, 2009, 41(3):30602-30611.
[16] KULKARNI J, JOSHI S, BAPAT S, et al. Analysis of system logs for pattern detection and anomaly prediction[C]// Proceeding of International Conference on Computational Science and Applications. 2020: 427-436 .
[17] ARIEL R, RANDY K. Chukwa: a system for reliable large-scale log collection[C]//Usenix Large Installation Systems Administration Conference. 2010: 1-15.
[18] ZHU J M, HE S L, LIU J Y, et al. Tools and benchmarks for automated log parsing[C]// International Conference on Software Engineering. 2019: 121-130.
[19] Splunk[EB].
[20] Logentries[EB].
[21] Logz.io[EB].
[22] DU M, LI F F. Spell: streaming parsing of system event logs[C]// ICDM 2016. 2016: 859-864.
[23] XU W, HUANG L, FOX A, et al. Detecting large-scale system problems by mining console logs[C]//Symposium on Operating Systems Principles, 2009: 117-132.
[24] NAGAPPAN M, WU K, MLADEN A. Efficiently extracting operational profiles from execution logs using suffix arrays[C]// ISSRE. 2009: 41-50.
[25] BAO L, LI Q, LU P Y, et al. Execution anomaly detection in large-scale systems through console log analysis[J]. Journal of Systems and Software, 2018, 143: 172-186.
[26] LONVICK C. The BSD syslog protocol[EB].
[27] VAARANDI R. Mining event logs with slct and loghound[C]// Proceedings of the 2008 IEEE/IFIP Network Operations and Management Symposium. 2008: 1071-1074.
[28] RISTO V, PIHELGAS M. LogCluster — a data clustering and pattern mining algorithm for event logs[C]// Conference on Network and Service Management (CNSM). 2015: 1-7.
[29] MAKANJU A, ZINCIR-HEYWOOD N, MILIOS E E. A lightweight algorithm for message type extraction in system application logs[J]. IEEE Transactions on Knowledge and Data Engineering, 2012, 24(11): 1921-1936.
[30] TATSUAKI K, KEISUKE I, TATSUYA Mori, et al. Spatio-temporal factorization of log data for understanding network events[C]// IEEE INFOCOM 2014. 2014: 610-618.
[31] FU Q, LOU J G, WANG Y, et al. Execution anomaly detection in distributed systems through unstructured log analysis[C]// (ICDM’09) Proc of International Conference on Data Mining. 2009: 149-158.
[32] TANG L, LI T, PERNG C S. LogSig: generating system events from raw textual logs[C]// CIKM’11: Proc. of ACM International Conference on Information and Knowledge Management. 2011. 785-794.
[33] HE P J, ZHU J M, HE S L, et al. Towards automated log parsing for large-scale log data analysis[J]. IEEE Transactions on Dependable and Secure Computing, 2018, 15(6): 931-944.
[34] STUDIAWAN H, SOHEL F, PAYNE C. Automatic event log abstraction to support forensic investigation[C]// ACSW 2020. 2020: 1-9.
[35] STUDIAWAN H, PAYNE C, SOHEL F. Automatic graph-based clustering for security logs[C]// Advanced Information Networking and Applications(AINA). 2019: 914-926.
[36] DAI H, LI H, CHEN C S, et al. Logram: efficient log parsing using n-gram dictionaries[R]. 2020.
[37] NICOLAS A, YOHAN P, SOPHIE C, et al. Improving performances of log mining for anomaly prediction through NLP-based log parsing[C]// Modeling Analysis And Simulation on Computer and Telecommunication Systems. 2018: 237-243.
[38] Li G F, ZHU P J, CAO N, et al. Improving the system log analysis with language model and semi-supervised classifier[J]. Multimedia Tools and Applications, 2019, 78(15): 21521-21535.
[39] PI A D, CHEN W, ZELLER W, et al. It can understand the logs, literally[C]//International Parallel and Distributed Processing Symposium. 2019: 446-451.
[40] LIU W Y, LIU X, DI X Q, et al. FastlogSim: a quick log pattern parser scheme based on text similarity[C]//Knowledge Science Engineering and Management. 2020: 211-219.
[41] DU M, LI F F. Spell: online streaming parsing of large unstructured system logs[J]. IEEE Transactions on Knowledge and Data Engineering, 2019, 31(11): 2213-2227.
[42] MESSAOUDI S, PANICHELLA A, BIANCULLI D, et al. A search-based approach for accurate identification of log message formats[C]// ICPC. 2018: 167-177.
[43] HE P J, ZHU J M, ZHENG Z B, et al. Drain: an online log parsing approach with fixed depth tree[C]// ICWS. 2017: 33-40.
[44] BAO L F, BUSANY N, LO D, et al. Statistical log differencing[C]// Automated Software Engineering. 2019: 851-862.
[45] SIDDHARTHA S, SUPRATIM D, SRIKANT R, et al. Learning latent events from network message logs[J]. IEEE ACM Transactions on Networking, 2019, 27(4): 1728-1741.
[46] XIE X S, WANG Z, XIAO X H, et al. A confidence-guided evaluation for log parsers inner quality[J]. Mobile Networks and Applications, 2020: 1-12.
[47] ZHANG D X, ZHENG Y, WEN Y, et al. Role-based log analysis applying deep learning for insider threat detection[C]// SecArch'18. 2018: 18-20.
[48] EL-MASRIA D, PETRILLOB F, YANN-GA?L G, et al. A systematic literature review on automated log abstraction techniques[J]. Information & Software Technology, 2020, 22: 1-18.
[49] OPREA A, LI Z, YEN T F, et al. Detection of early-stage enterprise infection by mining large-scale log data[C]//Proceedings of the 45th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN). 2015: 45-56.
[50] MARCELLO C, DOMENICO C, ANTONIO P. Event logs for the analysis of software failures: a rule-based approach[J]. IEEE Transactions on Software Engineering, 2013, 39 (6): 806-821.
[51] LOU J G, FU Q, YANG S G, et al. Mining program workflow from interleaved traces[C]// Proceedings of the 16th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2010: 613-622.
[52] BEZERRA F, WAINER J. Algorithms for anomaly detection of traces in logs of process aware information systems[J]. Information Systems, 2013, 38(1): 33-44.
[53] JIA T, CHEN G, YANG L, et al. An approach for anomaly diagnosis based on hybrid graph model with logs for distributed services[C]// Proceedings of the IEEE International Conference on Web Services (ICWS). 2017: 25-32.
[54] LI T, MA J F, PEI Q Q, et al. AClog: attack chain construction based on log correlation[C]// Global Communications Conference. 2019: 1-6.
[55] MENG W B, LIU Y, ZHANG S L, et al. Device-agnostic log anomaly classification with partial labels[C]// International Workshop on Quality of Service. 2018: 1-6.
[56] LIU Z L, QIN T, GUAN X H, et al. An integrated method for anomaly detection from massive system logs[J]. IEEE Access, 2018: 30602-30611.
[57] XU W, HUANG L, ATREJA S, et al. Online system problem detection by mining patterns of console logs[C]//ICDM’09. 2009: 588-597.
[58] NANDI A, MANDAL A, ATREJA S, et al. Anomaly detection using program control flow graph mining from execution logs[C]// KDD 2016. 2016: 215-224.
[59] LIN Q W, ZHANG H Y, LOU J G, et al. Log clustering based problem identification for online service systems[C]// ICSE 2016. 2016: 1-10 .
[60] LIU F C, WEN Y, ZHANG D X, et al. Log2vec: a heterogeneous graph embedding based approach for detecting cyber threats within enterprise[C]// CCS’19. 2019:1777-1794.
[61] RISTO V, BERNHARDS B, MARKUS K. An unsupervised framework for detecting anomalous messages from syslog log files[C]// Network Operations and Management Symposium. 2018: 1-6.
[62] LOU J G, FU Q, YANG S Q, et al. Mining invariants from console logs for system problem detection[C]// USENIX Annual Technical Conference. 2010: 1-14.
[63] YUAN Y, ANU H, SHI W C, et al. Learning-based anomaly cause tracing with synthetic analysis of logs from multiple cloud service components[C]//Computer Software and Applications Conference. 2019: 66-71.
[64] BIBLOP D, MOHIUDDIN S, MUHAMMADALI G, et al. LogLens: a real-time log analysis system[C]// International Conference on Distributed Computing Systems. 2018: 1052-1062.
[65] DUNIA R, QIN J S. Multi-dimensional fault diagnosis using a subspace approach[C]//ACC. 1997:1-5.
[66] PAPINENI K. Why inverse document frequency? [C]//NAACL ’01. 2001: 1-8.
[67] ASTEKIN M, OZCAN S, SOZER H. Incremental analysis of large-scale system logs for anomaly detection[C]// International Conference on Big Data. 2019:2119-2127.
[68] ASTEKIN M, ZENGIN H, S?ZER H. Evaluation of distributed machine learning algorithms for anomaly detection from large-scale system logs: a case study[C]// 2018 IEEE International Conference on Big Data (Big Data). 2018: 2071-2077.
[69] BROWN A, TUOR A, HUTCHINSON B, et al. Recurrent neural network attention mechanisms for interpretable system log anomaly detection[C]//MLCS 2018. 2018: 1-8.
[70] BERTERO C, ROY M, SAUVANAUD C, et al. Experience report: log mining using natural language processing and application to anomaly detection[C]// International Symposium on Software Reliability Engineering (2017). 2017: 351-360.
[71] AMEY W, TANISHQ G, ROHIT V, et al. Hybrid CAE-VAE for unsupervised anomaly detection in log file systems[C]// International Conference on Computing Communication and Networking Technologies. 2019: 1-7.
[72] YOON-HO C, PENG L, SHANG Z T, et al. Using deep learning to solve computer security challenges: a survey[J]. arXiv: Cryptography and Security. 2019.
[73] STEVEN Y, MELODY M, TENG-SHENG M. CausalConvLSTM: semi-supervised log anomaly detection through sequence modeling[C]// International Conference on Machine Learning and Applications. 2019: 1334-1341.
[74] DU M, LI F F, VIVEK S. DeepLog: anomaly detection and diagnosis from system logs through deep learning[C]// CCS 2017: 1285-1298.
[75] XIA B, YIN J J, XU J, et al. LogGAN: a sequence-based generative adversarial network for anomaly detection based on system logs[C]// SciSec 2019: Science of Cyber Security, Switzerland. 2019: 61-76.
[76] ZHANG XU, XU Y, ZHANG H Y, et al. Robust log-based anomaly detection on unstable log data[C]// ESEC/FSE’19. 2019: 807-817.
[77] WANG X, WANG D, ZHANG Y, et al. Unsupervised learning for log data analysis based on behavior and attribute features[C]//International Conference on Artificial Intelligence. 2020: 510-518.
[78] 梅御東, 陳旭, 孫毓忠, 等, 一種基于日志信息和CNN-text的軟件系統異常檢測方法[J], 計算機學報, 2020, 43(2): 366-380.
MEI Y D, CHEN X, SUN Y Z, et al. A method for software system anmaly detection based on log information and CNN-Text[J]. Chinese Journal of Computers, 2020, 43(2): 366-380.
[79] LU S Y, WEI X, LI Y D, et al. Detecting anomaly in big data system logs using convolutional neural network[C]// Dependable Autonomic and Secure Computing. 2018: 151-158.
Survey on anomaly detection technology based on logs
ZHANG Yingjun1, LIU shangqi2, YANG Mu2, ZHANG Haixia1, HUANG Kezhen1
1. Trusted Computing and Information Assurance Laboratory, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China2. Network Security Corps of Beijing Municipal Public Security Bureau, Beijing 100029, China
Log information has become an important information resource in the rapid development of information systems. Through the analysis of logs, abnormal detection, fault diagnosis and performance diagnosis can be performed. The log-based anomaly detection technology was focused on. Firstly, the currently used log-based anomaly detection framework was introduced, and then the key link technologies such as log analysis and log anomaly detection were focused on. Finally, the current technology was summarized and suggestions for future research directions were given.
abnormal detection,log analysis, machine learning
The Science and Technology Project of the Ministry of Public Security(2018JSYJA08)
TP393
A
10.11959/j.issn.2096?109x.2020072

張穎君(1982? ),女,山西太原人,博士,中國科學院軟件研究所副研究員,主要研究方向為網絡信息安全。
劉尚奇(1971? ),男,湖南桃江人,北京市公安局網絡安全保衛總隊高級工程師,主要研究方向為網絡安全。

楊牧(1984? ),男,北京人,北京市公安局網絡安全保衛總隊工程師,主要研究方向為網絡安全。
張海霞(1981? ),女,河北石家莊人,博士,中國科學院軟件研究所高級工程師,主要研究方向為網絡信息安全。

黃克振(1988? ),男,山東德州人,中國科學院軟件研究所工程師,主要研究方向為網絡信息安全。
論文引用格式:張穎君, 劉尚奇, 楊牧, 等. 基于日志的異常檢測技術綜述[J]. 網絡與信息安全學報, 2020, 6(6): 1-12.
ZHANG Y J, LIU S J, YANG M, et al. Survey on anomaly detection technology based on logs[J]. Chinese Journal of Network and Information Security, 2020, 6(6): 1-12.
2020?07?09;
2020?09?24
張穎君,yjzhang@tca.iscas.ac.cn
公安部科技項目(2018JSYJA08)