見出し画像

すごいログ分析ツール(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
キーでグラフを開けるようにしました。一時ファイルの保存しているので終了すれば消えます。



いいなと思ったら応援しよう!

twsnmp
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。