作者:
封停
·
2015/07/29 10:27
0x01 前言
工作過程中,尤其是應急的時候,碰到客戶windows域控被入侵的相關安全事件時,往往會需要分析windows安全日誌,此類日誌往往非常的大;此時,高效分析windows安全日誌,提取出我們想要的有用資訊,就顯得尤為關鍵,這裡給大家推薦一款我常用的windows日誌分析工具,logparser,目前版本是2.2。
0x02 logparser使用介紹
首先,讓我們來看一下Logparser架構圖,熟悉這張圖,對於我們理解和使用Logparser是大有裨益的
簡而言之就是我們的輸入源(多種格式的日誌源)經過 SQL語句(有SQL引擎處理)處理後,可以輸出我們想要的格式。
1、輸入源
從這裡可以看出它的基本處理邏輯,首先是輸入源是某一種固定的格式,比如EVT(事件),Registry(登錄檔)等,對於每一種輸入源,它所涵蓋的欄位值是固定的,可以使用logparser –h –i:EVT查出(這裡以EVT為例):
這裡是一些可選引數,在進行查詢的時候,可對查詢結果進行控制,不過我們需要重點關注的是某一類日誌結構裡含有的欄位值(在SQL查詢中匹配特定的段):
對於每一類欄位值的詳細意義,我們可以參照logparser的自帶文件的參考部分,這裡以EVT(事件)為例:
2、輸出源 輸出可以是多種格式,比如文字(CSV等)或者寫入資料庫,形成圖表,根據自己的需求,形成自定的檔案(使用TPL)等,比較自由
0x03 基本查詢結構
瞭解了輸入和輸出源,我們來看一則基本的查詢結構
Logparser.exe –i:EVT –o:DATAGRID “SELECT * FROM E:\logparser\xx.evtx”
這是一則基本的查詢,輸入格式是EVT(事件),輸出格式是DATAGRID(網格),然後是SQL語句,查詢E:\logparser\xx.evtx的所有欄位,結果呈現為網格的形式:
看到這裡,想必你已經明白了,對於windows的安全日誌分析,我們只需要取出關鍵進行判斷或者比對,就可以從龐大的windows安全日誌中提取出我們想要的資訊。
0x04 windows安全日誌分析
對於windows安全日誌分析,我們可以根據自己的分析需要,取出自己關心的值,然後進行統計、匹配、比對,以此有效獲取資訊,這裡透過windows安全日誌的EVENT ID迅速取出我們關心的資訊,不同的EVENT ID代表了不同的意義,這些我們可以在網上很容易查到,這裡列舉一些我們平常會用到的
Event
|
任務類別
|
解釋
|
ID
|
|
|
540
|
登陸/登出
|
Event 540 gets logged when a user elsewhere on the network connects to a resource (e.g. shared folder) provided by the Server service on this computer. The Logon Type will always be 3 or 8, both of which indicate a network logon.
|
538
|
登陸/登出
|
Ostensibly, event 538 is logged whenever a user logs off, whether from a network connection, interactive logon, or other logon type For network connections (such as to a file server), it will appear that users log on and off many times a day. This phenomenon is caused by the way the Server service terminates idle connections.
|
528
|
|
![enter image description here][6]
|
675
|
賬戶登陸
|
When a user attempts to log on at a workstation and uses a valid domain account name but enters a bad password, the DC records event ID 675 (pre-authentication failed) with Failure Code 24. By reviewing each of your DC Security logs for this event and failure code, you can track every domain logon attempt that failed as a result of a bad password. In addition to providing the username and domain name, the event provides the IP address of the system from which the logon attempt originated.
|
有了這些我們就可以對windows日誌進行分析了 比如我們分析域控日誌的時候,想要查詢賬戶登陸過程中,使用者正確,密碼錯誤的情況,我們需要統計出源IP,時間,使用者名稱時,我們可以這麼寫(當然也可以結合一些統計函式,分組統計等等):
LogParser.exe -i:EVT "SELECT TimeGenerated,EXTRACT\_TOKEN(Strings,0,'|') AS USERNAME,EXTRACT\_TOKEN(Strings,2,'|') AS SERVICE\_NAME,EXTRACT\_TOKEN(Strings,5,'|') AS Client_IP FROM 'e:\logparser\xx.evtx' WHERE EventID=675"
查詢結果如下:
如果需要對於特定IP進行統計,我們可以這麼寫(預設是NAT輸出):
LogParser.exe -i:EVT "SELECT TimeGenerated,EXTRACT\_TOKEN(Strings,0,'|') AS USERNAME,EXTRACT\_TOKEN(Strings,2,'|') AS SERVICE\_NAME,EXTRACT\_TOKEN(Strings,5,'|') AS Client\_IP FROM 'e:\logparser\xx.evtx' WHERE EventID=675 AND EXTRACT\_TOKEN(Strings,5,'|')='x.x.x.x'"
或者將查詢儲存為sql的格式:
SELECT TimeGenerated,EXTRACT\_TOKEN(Strings,0,'|') AS UserName,EXTRACT\_TOKEN(Strings,1,'|') AS Domain ,EXTRACT\_TOKEN(Strings,13,'|') AS SouceIP,EXTRACT\_TOKEN(Strings,14,'|') AS SourcePort FROM 'E:\logparser\xx.evtx' WHERE EXTRACT_TOKEN(Strings,13,'|') ='%ip%'
然後在使用的時候進行呼叫
logparser.exe file:e:\logparser\ipCheck.sql?ip=x.x.x.x –i:EVT –o:NAT
查詢結果為:
怎麼樣?是不是一目瞭然呢?根據特定登陸事件,直接定位到異常IP,異常時間段內的連線情況。
同樣我們也可以選擇其他輸出格式,對日誌分析和統計。上述所有操作都是在命令列下完成的,對於喜歡圖形介面的朋友,We also have choices!這裡我們可以選擇使用LogParser Lizard。 對於GUI環境的Log Parser Lizard,其特點是比較易於使用,甚至不需要記憶繁瑣的命令,只需要做好設定,寫好基本的SQL語句,就可以直觀的得到結果,這裡給大家簡單展示一下 首先選取查詢型別
這裡我們選擇windows event log,然後輸入剛才的查詢語句: 比如:
SELECT TimeGenerated,EXTRACT\_TOKEN(Strings,0,'|') AS USERNAME,EXTRACT\_TOKEN(Strings,2,'|') AS SERVICE\_NAME,EXTRACT\_TOKEN(Strings,5,'|') AS Client\_IP FROM 'e:\logparser\xx.evtx' WHERE EventID=675 AND EXTRACT\_TOKEN(Strings,5,'|')='x.x.x.x'
得到的查詢結果為(並且這裡我們可以有多種查詢格式):
具體其他功能,大家可以去嘗試一下~
0x05 總結
這裡簡單和大家介紹了在windows安全日誌分析方面logparser的一些使用樣例,logparser的功能很強大,可進行多種日誌的分析,結合商業版的Logparser Lizard,你可以定製出很多漂亮的報表展現,圖形統計等,至於其他的功能,留給大家去探索吧~
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!