摘要:日志文件分析是系統安全檢測的重要內容,同時日志文件也是計算機取證的重要依據。文章設計了第三方的Windows日志取證系統,并討論了今后的研究方向。
關鍵詞:日志文件;網絡取證;審計跟蹤;IRP
0 引言
當前網絡應用非常廣泛,網絡涉及了各種各樣的信息,由此產生各種攻擊事件非常多,有些已經構成網絡犯罪。我們除了對攻擊進行防范外,還要記錄下犯罪現場的信息,得到黑客入侵證據,以便分析入侵者的企圖和事后追究責任。這需要記錄網絡狀態(tài)、系統狀態(tài)等一系列的數據和信息。整個記錄系統中有一個重要的環(huán)節(jié)是系統日志的獲取,但系統中的任何日志文件都可能被入侵者改動過,因此必須要獲得原始的系統日志,尤其對于存儲了敏感信息的服務器,或者是安全需求大的部門,不僅在系統受到威脅時需要備份出原始的系統日志,平時也需要備份出原始的系統日志。本文就是設計一個基于Windows的用于計算機取證的日志系統。該系統有相對獨立的取證計算機,不影響原系統,在實時取證中,不會破壞原始的系統狀態(tài),不會驚擾攻擊者,可以跟蹤攻擊過程,以便分析入侵者的企圖和攻擊技術。有了全面完整的日志,也便于事后的分析和追究責任。
1 取證日志
1.1 Windows日志
Windows日志的默認存放路徑是%SystemRoot%\\system32\\config\\,其中應用日志為AppEvent.Evt,系統日志為SysEvent.Evt,安全日志為SecEvent.Evt。其文件格式為Windows日志文件專用的格式。日志文件中包含了一定的信息,但還有一些信息是在另外的dll文件中。在日志記錄結構中,有定長的部分和不定長的部分。定長部分是固定的描述信息,在定長結構的最后就是事件來源信息。不定長部分則是相關的描述信息。在描述信息中有一些插入字符串,如n%的形式,這些插入字符存在相關的dll文件中。
1.2 日志文件的防護
計算機取證的數據保護的重點是日志保護,它是取證與反取證斗爭的焦點。日志文件包含大量敏感的記錄,每條記錄由時間戳和操作描述組成。普通日志系統非常脆弱,入侵者能輕易讀取、修改或刪除日志而不留痕跡。安全保存日志的方法有:①將日志“定期”備份到異地的日志主機,缺點是日志易被篡改;②直接打印日志或寫入WORM(Write Once Read Multiple)介質,缺點是費用昂貴,不適應大容量日志;③將日志數據“實時”發(fā)送到遠程的日志主機。攻擊者對攻擊目標的操作系統的漏洞非常熟悉,但用另一個系統存儲日志,作為第三方日志,可以被隔離保護,免受入侵者攻擊。第三方存儲作為計算機取證的核心技術之一,目前在國內還屬于新技術。本文設計的系統功能就是將日志數據“實時”發(fā)送到遠程的日志主機,作為取證的日志系統。
2 系統設計
2.1 系統拓撲介紹
把要記錄日志的那臺機器稱為被取證機。我們不能把日志信息記錄在被取證機上,因為從原理上來說有被黑客刪除的可能。所以要把日志信息傳到另一臺黑客所不能發(fā)現的,但與被取證機連在同一個網絡上的機器上,這臺機器稱為取證機。不同的被取證機上運行的操作系統有多種類型(Windows。Liunx,Unix),本文設被取證機上運行Windows2000(2003)操作系統。日志獲取模塊在Windows2000(2003)下截獲操作系統產生的日志,并通過SSL加密方式傳到取證機上。取證機上運行的操作系統是Linux,上面運行接收模塊,接收模塊把接收到的日志解密,用給定的格式存儲,實現了整個系統的日志記錄。
2.2 系統結構圖
取證系統的結構。
2.3 Windows系統模塊功能
在Windows系統上,運行三個模塊:日志信息獲取模塊、日志信息緩存模塊、加密認證傳輸模塊。各模塊主要功能如下:
2.3.1日志信息獲取模塊
日志信息獲取模塊是上述三個模塊中最重要的部分,它又分為:主引導子模塊、過濾器驅動程序子模塊、日志獲取線程子模塊。其中主引導子模塊的作用就是啟動日志獲取線程。
過濾器驅動子模塊:是一個獨立的模塊,主要進行日志截取處理,利用Windows系統驅動程序的方式來實現。
Windows系統由好幾個部分組成,而且是分層次的,上層的程序運行依靠下層的服務。一般來說,上層的程序運行方式叫用戶模式(user Mode),一般的API就是運行在這種模式。在用戶模式下,程序只能得到有限的權限使用計算機的資源,很多硬件資源是限制的,不允許訪問。這樣可防止用戶模式程序不經意地,或故意地會造成計算機崩潰的操作,從而保護了計算機。用戶模式下的程序運行在3個級別的權限下。處于用戶模式下層的是核心模式(Kernel Mode),核心模式下的程序可用任何計算機資源,沒有限制,也就是運行在0級權限下。在這種模式下,誤操作很容易會引起系統死機。日志獲取模塊為了更可靠地截取到日志記錄,使用了過濾器驅動的方法,驅動運行在核心模式,從而可以在系統底層得到更多的權限,把日志充分地記錄下來。
用戶模式對計算機的操作其實是通過向底層即核心模式發(fā)送請求實現的。每一個請求被封裝成一個包,叫IRP(IJOrequest packet),包里面有操作的相關信息。所以用驅動進行日志截取的原理就是,當對日志文件寫入日志信息時,就會有一個IRP發(fā)到底層,只要截獲了這個IRP,那就能從IRP里面得到寫入的信息,也就是說得到日志實時記錄信息。而截獲IRP的過程是由過濾器驅動實現的。
過濾器驅動會在啟動的時候或適當的時候把自己掛接到硬盤驅動上去,只要掛接成功,對硬盤操作的IRP不再發(fā)向硬盤驅動,而是傳到了過濾器驅動上,過濾器驅動作相應的處理后再傳到硬盤驅動,這就是截獲的過程。
該驅動程序在系統啟動時會由日志獲取線程子模塊中的服務調用,一直駐留在內存中,直到關機或用戶讓服務停止驅動才停止工作。同一時間系統只運行一個實例,它負責截取指定文件的寫入操作,把寫入的內容記錄下來,并在其它模塊的要求下傳送截獲的內容。
在這個模塊中數據流的變化:日志信息獲取模塊截獲數據并進行格式化,得到格式化的字節(jié)流,字節(jié)流將組裝成日志信息對象及日志信息對象指針。
日志獲取線程子模塊:在本系統中日志的獲取和傳輸是通過服務來實現的。將相關功能寫成服務,這樣更可靠、穩(wěn)定。為了實現可靠、穩(wěn)定的目的,共設計了三個眼務。第—個是主要的服務:啟動日志獲取線程,調用過濾器驅動程序。為防止服務意外終止,又設計了第二個服務,用于保護的服務。這兩個服務互相監(jiān)視,若發(fā)現一方停止,另一方會馬上啟動被停止的一方,這樣就能保證服務不會停止。為了方便用戶,還設計—個用于停止這兩個服務的程序,以便在確實需要停止的時候,可以停止前兩個服務。
2.3.2日志信息緩存模塊
日志信息緩存模塊的功能是對日志獲取模塊獲得的數據作緩存處理。其中控制功能部分依靠中心控制器來完成,中心控制器檢測到當前優(yōu)先級隊列中有緩存的數據,立即查看它所緩存的傳輸控制對象的指針是否已經初始化,若沒有,則先獲取傳輸控制對象,否則進行下一步:利用緩存的指向傳輸控制對象的指針,進行數據的傳輸Send。Send函數執(zhí)行過程中,傳輸控制對象將對它進行數據的加密、認證等操作,這些操作對于其他對象或者模塊而言是透明的。
2.3.3 加密認證傳輸
加密認證傳輸部分主要是獲得日志信息緩存模塊中的日志信息對象指針,對該指針所指向的數據進行加密、認證并傳輸。傳輸以網絡bit流方式進行。
2.4 Linux系統模塊功能
Linux一方完成日志信息接收和解密:監(jiān)聽網絡數據流,一旦有數據流到達,則進行接收,接收后立即進行數據解密。使用對象緩存的日志信息存儲對象的指針,調用相關操作進行日志的存儲操作,解析數據接收控制對象的數據,進行正確的日志保存。通過數據接收控制對象得到格式化的字節(jié)流,對格式化的字節(jié)流,按照Windows的日志格式和規(guī)范進行存儲,保證數據在Windows平臺上的正確格式,產生日志文件。
3 結束語
本系統為了安全、可靠,通過IRP(UO request packet)來獲得日志信息,所以對WWW、FTP所產生的Log文件不能截獲,因為對這些Log文件的操作不經過Fast I/0及一般的IRP。在下一步的工作中,要實現相關服務所產生的Log文件的獲??;另外,將在現有的模型基礎上,實現基于Linux操作系統的日志取證,并通過實踐進一步完善模型的設計。