はじめに
Splunk社が,年に1回程度?プライベートトレードショーをやっているようなのだけれど,その中でハッカソンのようなイベント,Boss Of The SOCというものを開催しているそうで,その出題内容はgithubで公開されている. Boss of the SOCでは,問題を解いていくタイムアタックでの腕自慢なんだけれど,実際には和気あいあいと使いかたを学んでいくような感じらしい. Boss of the SOCで使われた問題と学習用データは,オープンソースでgithubに公開されているので,今回はそれを使えるようにセットアップしてみる.
Boss of the SOC(BOTS) Investigatin Workshop for Splunkのインストール
まずは,学習用のSplunk Appのインストールから.今回は,Splunk Baseからファイルをダウンロードしてインストール.
以下のリンクを訪問.
Boss of the SOC (BOTS) Advanced APT Hunting Companion App for Splunk https://splunkbase.splunk.com/app/4430/ c
次のように表示される.
ダウンロードする.(当然,Splunkに無料ユーザ登録が必要)
ダウンロードしたいファイルは次の通り.
約16MB.
SplunkのApp画面でファイルを選択してアップロード.
問題なくインストールできたら,この様に表示される.
演習用データの入手
演習用データは,Githubに登録してある.
splunk/botsv1 https://github.com/splunk/botsv1
ここにあるデータを全てダウンロードしてインストールすると,11.3GBになる.ちなみに,フリー版だと1日500MBという制限があるが,このデータは分析済みデータなので入れる時にチャージされない様だ. そのサイトにあるリンクに掲載されているbotsv1-attack-only.tgzというファイルは圧縮して135MBだけれど演習に十分なデータが入っているそうなので,これを入手する.
$ wget https://s3.amazonaws.com/botsdataset/botsv1/botsv1-attack-only.tgz🆑 --2019-10-22 17:44:13-- https://s3.amazonaws.com/botsdataset/botsv1/botsv1-attack-only.tgz s3.amazonaws.com (s3.amazonaws.com) をDNSに問いあわせています... 52.216.165.133 s3.amazonaws.com (s3.amazonaws.com)|52.216.165.133|:443 に接続しています. .. 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 134331235 (128M) [application/x-tar] `botsv1-attack-only.tgz' に保存中 botsv1-attack-only.tgz 100%[=====================================>] 128.11M 482KB/s 時間 2m 42s 2019-10-22 17:46:56 (811 KB/s) - `botsv1-attack-only.tgz' へ保存完了 [134331235/134331235] $
ダウンロードできたら,ファイルを確認.
$ ls -la botsv1-attack-only.tgz🆑 -rw-r--r-- 1 ujpadmin staff 134331235 4 30 2018 botsv1-attack-only.tgz $
135MB. 圧縮ファイルを展開.
$ tar xzvf botsv1-attack-only.tgz🆑 x botsv1_data_set/ x botsv1_data_set/LICENSE x botsv1_data_set/bin/ x botsv1_data_set/var/ x botsv1_data_set/default/ x botsv1_data_set/README.txt x botsv1_data_set/metadata/ x botsv1_data_set/metadata/local.meta x botsv1_data_set/metadata/default.meta x botsv1_data_set/default/app.conf x botsv1_data_set/default/indexes.conf x botsv1_data_set/default/data/ x botsv1_data_set/default/data/ui/ x botsv1_data_set/default/data/ui/nav/ x botsv1_data_set/default/data/ui/views/ x botsv1_data_set/default/data/ui/views/README x botsv1_data_set/default/data/ui/nav/default.xml x botsv1_data_set/var/lib/ x botsv1_data_set/var/lib/splunk/ x botsv1_data_set/var/lib/splunk/botsv1/ x botsv1_data_set/var/lib/splunk/botsv1/thaweddb/ x botsv1_data_set/var/lib/splunk/botsv1/datamodel_summary/ x botsv1_data_set/var/lib/splunk/botsv1/colddb/ x botsv1_data_set/var/lib/splunk/botsv1/db/ x botsv1_data_set/var/lib/splunk/botsv1/db/.bucketManifest x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ x botsv1_data_set/var/lib/splunk/botsv1/db/CreationTime x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ x botsv1_data_set/var/lib/splunk/botsv1/db/GlobalMetaData/ x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ SourceTypes.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ 1470864737-1470864649-3842594044383916393.tsidx x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ Sources.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ splunk-autogen-params.dat x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ merged_lexicon.lex x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ optimize.result x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ 1470868141-1470799731-3987826563906861801.tsidx x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ Hosts.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/. sizeManifest4.1 x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ rawdata/ x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/. rawSize x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ Strings.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ rawdata/journal.gz x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ rawdata/slicemin.dat x botsv1_data_set/var/lib/splunk/botsv1/db/db_1470868141_1470799731_28/ rawdata/slicesv2.dat x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ SourceTypes.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ Sources.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ splunk-autogen-params.dat x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ 1472055410-1472055311-2848570253371219060.tsidx x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ merged_lexicon.lex x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ 1472058450-1472053148-2997229452421710715.tsidx x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ optimize.result x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ Hosts.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/. sizeManifest4.1 x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ rawdata/ x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/. rawSize x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ 1472063264-1472058288-3063067740541508307.tsidx x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ Strings.data x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ rawdata/journal.gz x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ rawdata/slicemin.dat x botsv1_data_set/var/lib/splunk/botsv1/db/db_1472063264_1472053148_48/ rawdata/slicesv2.dat x botsv1_data_set/bin/README $
展開したファイルのファイルサイズを確認.
$ ls -la🆑 total 147520 drwx------+ 5 ujpadmin staff 160 10 22 17:53 . drwxr-xr-x+ 20 ujpadmin staff 640 10 22 17:37 .. -rw------- 1 ujpadmin staff 0 12 9 2018 .localized -rw-r--r-- 1 ujpadmin staff 134331235 4 30 2018 botsv1-attack-only.tgz drwxr-xr-x 8 ujpadmin staff 256 11 19 2017 botsv1_data_set $ du -sh botsv1_data_set/🆑 322M botsv1_data_set/🈁 $
結構大きいねぇ. アプリケーションが格納されているディレクトリを確認.
$ ls -la /Applications/Splunk/etc/apps🆑 total 0 drwxr-xr-x 23 ujpadmin wheel 736 10 23 23:12 . drwxr-xr-x 36 ujpadmin wheel 1152 10 23 23:11 .. drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 SplunkForwarder drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 SplunkLightForwarder drwxr-xr-x 7 ujpadmin wheel 224 9 19 09:24 alert_logevent drwxr-xr-x 7 ujpadmin wheel 224 9 19 09:24 alert_webhook drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 appsbrowser drwxr-xr-x 6 ujpadmin wheel 192 9 19 09:24 gettingstarted drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 introspection_generator_addon drwxr-xr-x 9 ujpadmin wheel 288 10 23 23:12 investigate_workshop🈁 drwxr-xr-x 6 ujpadmin wheel 192 9 19 09:24 launcher drwxr-xr-x 5 ujpadmin wheel 160 9 26 22:52 learned drwxr-xr-x 3 ujpadmin wheel 96 9 19 09:24 legacy drwxr-xr-x 8 ujpadmin wheel 256 10 22 18:32 lookup_editor🈁 drwxr-xr-x 6 ujpadmin wheel 192 9 19 09:24 sample_app drwxr-xr-x 10 ujpadmin wheel 320 10 7 00:03 search drwxr-xr-x 6 ujpadmin wheel 192 9 26 23:17 splunk_archiver drwxr-xr-x 9 ujpadmin wheel 288 9 19 09:25 splunk_gdi drwxr-xr-x 3 ujpadmin wheel 96 9 19 09:24 splunk_httpinput drwxr-xr-x 8 ujpadmin wheel 256 9 26 22:52 splunk_instrumentation drwxr-xr-x 8 ujpadmin wheel 256 9 19 09:25 splunk_metrics_workspace drwxr-xr-x 11 ujpadmin wheel 352 9 26 22:53 splunk_monitoring_console drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 user-prefs $
先ほど入れたBoss of the SOCのApp(investigate_workshop)が入っていることが確認できる. このディレクトリに,ダウンロードしたデータファイルを配置する.
$ mv botsv1_data_set /Applications/Splunk/etc/apps/.🆑 $ $ ls -la /Applications/Splunk/etc/apps🆑 total 0 drwxr-xr-x 24 ujpadmin wheel 768 10 23 23:17 . drwxr-xr-x 36 ujpadmin wheel 1152 10 23 23:11 .. drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 SplunkForwarder drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 SplunkLightForwarder drwxr-xr-x 7 ujpadmin wheel 224 9 19 09:24 alert_logevent drwxr-xr-x 7 ujpadmin wheel 224 9 19 09:24 alert_webhook drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 appsbrowser drwxr-xr-x 8 ujpadmin staff 256 11 19 2017 botsv1_data_set🈁 drwxr-xr-x 6 ujpadmin wheel 192 9 19 09:24 gettingstarted drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 introspection_generator_addon drwxr-xr-x 9 ujpadmin wheel 288 10 23 23:12 investigate_workshop drwxr-xr-x 6 ujpadmin wheel 192 9 19 09:24 launcher drwxr-xr-x 5 ujpadmin wheel 160 9 26 22:52 learned drwxr-xr-x 3 ujpadmin wheel 96 9 19 09:24 legacy drwxr-xr-x 8 ujpadmin wheel 256 10 22 18:32 lookup_editor drwxr-xr-x 6 ujpadmin wheel 192 9 19 09:24 sample_app drwxr-xr-x 10 ujpadmin wheel 320 10 7 00:03 search drwxr-xr-x 6 ujpadmin wheel 192 9 26 23:17 splunk_archiver drwxr-xr-x 9 ujpadmin wheel 288 9 19 09:25 splunk_gdi drwxr-xr-x 3 ujpadmin wheel 96 9 19 09:24 splunk_httpinput drwxr-xr-x 8 ujpadmin wheel 256 9 26 22:52 splunk_instrumentation drwxr-xr-x 8 ujpadmin wheel 256 9 19 09:25 splunk_metrics_workspace drwxr-xr-x 11 ujpadmin wheel 352 9 26 22:53 splunk_monitoring_console drwxr-xr-x 4 ujpadmin wheel 128 9 19 09:24 user-prefs $
有効にするために,Splunkを再起動する. ここは好みの問題だけれど,Stopして停止する.
$ /Applications/Splunk/bin/splunk stop🆑 Stopping splunkd... Shutting down. Please wait, as this may take a few minutes. .. Stopping splunk helpers... Done. $
停止したので,起動する.
$ /Applications/Splunk/bin/splunk start🆑 Splunk> Australian for grep. Checking prerequisites... Checking http port [8000]: open Checking mgmt port [8089]: open Checking appserver port [127.0.0.1:8065]: open Checking kvstore port [8191]: open Checking configuration... Done. Checking critical directories... Done Checking indexes... Validated: _audit _internal _introspection _telemetry _thefishbucket botsv1🈁 history ipaccess_access ipaccess_error juno_syslog main ujp1_access ujp1_error summary ujp_access ujp_error ujp_mail ujp_mailaccess Done Checking filesystem compatibility... Done Checking conf files for problems... Done Checking default conf files for edits... Validating installed files against hashes from '/Applications/Splunk/ splunk-7.3.1.1-7651b7244cf2-darwin-64-manifest' File '/Applications/Splunk/etc/system/default/web.conf' changed. Problems were found, please review your files and move customizations to local All preliminary checks passed. Starting splunk server daemon (splunkd)... Done Waiting for web server at http://127.0.0.1:8000 to be available.... Done If you get stuck, we're here to help. Look for answers here: http://docs.splunk.com The Splunk web interface is at http://gaia.local:8000 $
起動しました.インデックスも認識されている模様.
追加で必要になるAppとAdd-on
BOTSの例題では,著名でスタンダードなアプリケーションやネットワーク機器を使ったりしているという仮定があるようで,それら専用のSplunk App/Add-onを入れておく. 知らないものもたくさんあるので,違うことを書いているかもしれないけれど,それはご愛嬌で.
- Fortinet Fortigate Add-on for Splunk
- https://splunkbase.splunk.com/app/2846
- 中小企業によく入っているネットワークセキュリティアプライアンス. ファイアウォールと言えばいいのかなぁ.
- Splunk Add-on for Tenable
- https://splunkbase.splunk.com/app/1710
- フリーのペネトレーションテストツールのNessusのログを扱うものっぽい.
- Splunk Stream Add-on
- https://splunkbase.splunk.com/app/1809/
- Splunkの機能のStream.パケットキャプチャ機能的なもの?のアドオン.
- Splunk App for Stream
- https://splunkbase.splunk.com/app/1809/
- Splunk StreamのSplunk App版.といいうか,最近はAdd-onじゃなくてAppになった模様.
- Splunk Add-on for Microsoft Windows
- https://splunkbase.splunk.com/app/742/
- WindowsのActive Direcotory関連のログ分析用アドオン.
- TA-Suricata
- https://splunkbase.splunk.com/app/2760/
- フリーのIPSであるSuricataのログを扱うものらしい.
- Microsoft Sysmon Add-on
- https://splunkbase.splunk.com/app/1914/
- Microsoftが無償で提供しているSysmonのログ.Sysmonはプロセスの作成やファ イルアクセスなどのイベントが取れるものらしい.
- URL Toolbox
- https://splunkbase.splunk.com/app/2734/
- よくわからないけれどログデータの中のURLをみやすくしてくれるってことかな...