すごいログ分析ツール(TWSLA) v1.7.0リリース
TWSLA v1.7.0をリリースしました。
sigmaコマンド追加
ログから脅威を検知する標準フォーマットsigma
に対応しました。
Detect threats using SIGMA rules.
About SIGAMA
https://sigmahq.io/
Usage:
twsla sigma [flags]
Flags:
-c, --config string config path
-g, --grok string grok definitions
-x, --grokPat string grok pattern if empty json mode
-h, --help help for sigma
-s, --rules string Sigma rules path
--strict Strict rule check
Global Flags:
-d, --datastore string Bblot log db (default "./twsla.db")
-f, --filter string Simple filter
-v, --not string Invert regexp filter
-r, --regex string Regexp filter
-t, --timeRange string Time range
-sオプションでsigmaルールの保存されたディレクトリを指定してください。ログはjsonで保存された形式を前提としています。jsonではないログを扱う場合は、grokでデータを抽出する必要があります。
-gオプションでgrockの定義を指定します。指定しなければデフォルト定義、fullを指定すれば、全組み込み定義を利用します。定義ファイルへのパスを指定すれば、定義を読み込みます。
組み込みのgrock定義は
を参照してください。
自分で定義する場合は、
TEST from\s+%{IP}
のように、
定義名<SP>定義
とします。
-xオプションで定義名を指定します。
-c オプションでsigmaの設定ファイルを指定します。windowsのイベントリグ用に
title: Sigma config for windows event log
backends:
- github.com/bradleyjkemp/sigma-go
fieldmappings:
Image: $.Event.EventData.Image
CommandLine: $.Event.EventData.CommandLine
ParentProcessName: $.Event.EventData.ParentProcessName
NewProcessName: $.Event.EventData.NewProcessName
User: $.Event.EventData.User
ParentUser: $.Event.EventData.ParentUser
Channel: $.Event.System.Channel
Computer: $.Event.System.Computer
EventID: $.Event.System.EventID
Level: $.Event.System.Level
Provider.Guid: $.Event.System.Provider.Guid
Provider.Name: $.Event.System.Provider.Name
という形式のファイルを組み込んであります。-c windowsと指定すれば、この定義を利用します。fieldmappingsの部分で変数名を変換しています。
sigmaルールの中でImageと書いたものは、イベントログの$.Event.EventData.Imageの値になるという設定です。josnpathで指定します。
sigmaコマンドを実行すると
のような結果表示になります。検知したsigmaルールの情報を表示します。リターンキーを押せば、対象のログを含む詳しいログを表示します。
cキーを押せば、検知したルール毎に集計した表示になります。
gキーまたはhキーでグラフを表示します。
sキーでデータやグラフをファイルに保存できます。
grokとjsonによるデータ抽出
extractコマンド、countコマンドにgrokとjsonによるデータ抽出モードを追加しました。
Count the number of logs.
Number of logs per specified time
Number of occurrences of items extracted from the log
Usage:
twsla count [flags]
Flags:
-e, --extract string Extract pattern
-g, --grok string grok pattern definitions
-x, --grokPat string grok pattern
-h, --help help for count
-i, --interval int Specify the aggregation interval in seconds.
-n, --name string Name of key (default "Key")
-p, --pos int Specify variable location (default 1)
Global Flags:
--config string config file (default is $HOME/.twsla.yaml)
-d, --datastore string Bblot log db (default "./twsla.db")
-f, --filter string Simple filter
-v, --not string Invert regexp filter
-r, --regex string Regexp filter
-t, --timeRange string Time range
GROKモード
-e オプションにgrokを指定するとgrokモードになります。この場合、-xオプションにgrokのパターンを指定する必要があります。-gオプションでgrokの定義を指定します。sigmaコマンドと同じ方法です。-nに抽出するデータ名を指定します。
$twsla count -x IP -n IP -e grok
のような感じです。以前からある
$twsla count -e ip
をほぼ同じ結果になります。でもgrokのほうが遅いです。grokは複雑な抽出に使ったほうがようです。
JSONモード
WindowsのイベントログやzeekのjsonログなどJSON形式で保存されたログは、JSONPATHで抽出できます。
-e オプションにjsonを指定して-nオプションにJSONPATHを指定します。
JSONのフォーマット
searchコマンドの結果でjson形式のログをフォーマットする機能をつけました。Windowsのイベントログは、フォーマット後の形式で保存していましたが、JSONで保存するように変更しました。結果の画面でpキーを押せば、フォーマットした状態で表示します。
が
のようになります。dキーで戻ります。
グラフ表示
これまで、グラフは保存してから自分で開く必要がありましたが、hまたはg
キーでグラフを開けるようにしました。一時ファイルの保存しているので終了すれば消えます。