Splunk社が提供するBOTS環境でSPL言語を勉強する

先日、Splunk FreeをMacOSにインストールした後、Splunk 社が提供しているBOTS(Boss of the SOC)用のデータとQ&Aをダウンロードして、SPL(Search Processing Language) 言語の勉強中です。

SPL 言語が書けるようになれば、Splunk に取り込んだログデータを簡単に検索、分析できるようになり、また日本においても多くの企業でSpunkを導入している為、勉強しておいて損はないかと思います。

なお、以下サイトにSPL言語の入門書/説明書が置かれていますので、参考になるかと思います。

https://www.splunk.com/ja_jp/goto/book

ちなみに今年の3月にその最新版であるv3がリリースされたようですね。

https://www.splunk.com/en_us/blog/security/botsv3-dataset-released.html

また、私がAWS環境にSplunkをインストールした時の記事を以下に載せていますので興味があれば見てみてください。

BOTSv1をトライしたときに利用したSPL言語

まだSPL言語初心者ではありますが、BOTv1を通じて勉強したことを記載しておきたいと思います。

0.Splunk内のインデックスを確認

さっそくSPL言語を利用してみたいところですが、SPL言語を使う際に、indexを指定することが多々あります。

そこで、どんなインデックスがSplunkの中にあるのか確認する方法を記載しておきます。

いろいろ方法はありそうですが、まずはOSのコマンドで確認する方法を記載しておきます。

Splunk がインストールされているディレクトリ(Macの場合、通常、/Applications/Splunk ディレクトリにインストールされています)の配下のbinディレクトリに移動し、splunk list index とコマンドを入力します。

% /Applications/Splunk/bin
% ./splunk list index

すると、以下のようにインデックスの一覧が表示されます。

コマンドでSplunkのインデックス一覧を表示

1.インデックスに取り込まれているデータの一覧表示

以下のように最初にパイプを書いた後、metadataコマンドを以下のようにつかうことで、botsv1インデックスに含まれるhostsの一覧と概要が表示されます。

| metadata type=hosts index=botsv1

また、hostsの代わりに sourcesや sourcetypes を指定することもできます。

| metadata type=sources index=botsv1

2.時間を整型する

上の例だと、各時間(*Time)がなにやら数字の羅列になっているので、これをわかりやすい表記にすることが可能です。

| metadata type=sourcetypes index=botsv1
| foreach *Time [eval <>=strftime(<>,”%d/%b/%y %H:%m:%S”)]

とりあえずSPL言語の出だしだけ書いてみましたが、また気が向いたら、続きを書いてみたいと思います。