Boss of the SOC のはじめかた (Splunk)
はじめに
研究でSplunkを使ってログ解析をする機会があったので, たまたま見つけたBoss of the SOC
というSplunkが無料で提供しているコンテンツをやろうと思いました.
しかし, 日本語で検索するもほぼドキュメントがなく渋々本家のドキュメントを見て何度も詰まりながらなんとかセルフ開催CTFするところまでできたので, まとめておきます.
今回はmacOSへのインストールを行いましたが, 他の環境でもSplunkのインストール以外ではほぼ差異はないと思います(思います).
僕も英語が得意なわけではないので, 間違ったことを書いていたら, コメントなどでご教示いただければと思います.
目次
- Boss of the SOC とは
- Splunk Enterpriseのインストール
- 依存App/Add-Onのインストール
- データセットのダウンロードとインポート
- CTFデータへのアクセスのための登録
- CTFプラットフォームAppのインストール
- Let's play CTF!
- おわりに
Boss of the SOC とは
BOSS OF THE SOC (BOTS) 1.0によると, ジョパディ形式のSplunkを使って行うCTFで, リアルだけど実在しない企業に起きたインシデントに対する問題に答えるものらしいです. また, もともとはカンファレンスで行われていたこのCTFをオープンソースにして, データセットにも無料でアクセスできるし, 自前でCTFプラットフォームもデプロイできるようにしたものらしいです.
CTFプラットフォームは結構簡単にデプロイできたし, 問題やヒントの追加もcsvに書き足すだけなので, 勉強会でも簡単に使えそうなどと考えながらセットアップをしていました. ただし, 今回の記事では, 一人でセルフ開催CTFするところまでしか書かないので, 実際に勉強会などをやろうとしたらユーザーの権限まわりの設定や, コンテストの開催時間の設定などを追加で行う必要があります.
また, BOTSは1.0(2016)と2.0(2017)が現在利用できるようですが, 今回は1.0のほうを使っていきます.
Splunk Enterpriseのインストール
これについては, いくらでも記事があるためそちらを参照いただければと思います. 今回, 僕が使ったのはSplunk Enterpriseで, 下記からダウンロードできるかと思います.
以下, めちゃくちゃ適当に見つけたインストールの記事を記載しておきます.
- Win: Splunkを使ってみる①インストール
- Mac: Splunkをインストールしてみる
- RedHat: Splunk4.3インストール&クィックリファレンスガイド(pdf)
- CentOS: plunkのインストールが超簡単な件(CentOS編)
- Ubuntu: Ubuntuにsplunkをインストールする
依存App/Add-Onのインストール
データセットをインポートする前に, 依存App/Add-Onのインストールを行います. (今回はtgzファイルをいちいちダウンロードしていちいちアップロードしてインストールしましたがもっと良い方法があれば教えて下さい..)
以下, App/Add-Onのインストール手順です.
1. Splunkのホーム画面左のAppバーの右にある歯車ボタンをクリックする.
2. Appの管理画面に遷移するので,画面右上にあるファイルからAppをインストール
をクリックする.
3. 下記表のURLにアクセスし, 画面右のDownload
をクリックする.
4. 2つのチェックボックスにチェックを入れ, Agree to Download
をクリックしてAppファイルをダウンロードする.
5. ダウンロードしたtgzファイルを選択しアップロード
をクリックする.
6. 再起動が必要です
的なことが言われたらすぐに再起動をする
- ここで再起動をせずに他のAppのインストールを続けると, Splunkがクラッシュする可能性があります.
- クラッシュしてしまうと, 500エラーでログインすらできなくなってしまいます.
- ぼくがクラッシュさせてしまったときには,
rm -rf /Applications/Splunk
で一度Splunk自体を削除してもう一度インストールしました.
クラッシュさせるとめんどくさいので, 気をつけてインストールを行ってください. (間違ってもぼくのように, めんどくさいからまとめてやればええやろ!!などといって再起動を怠らないこと.)
ソースの表では, Splunk Stream Add-on
に併せて, Splunk App for Stream
がありますが, 同じApp(同じURL)なので, ここでは略記させていただいています.
実際にインストールするときも, 1回だけインストールすれば大丈夫です.
App / Add-on | Version | Download |
---|---|---|
Fortinet Fortigate Add-on for Splunk | 1.3 | https://splunkbase.splunk.com/app/2846 |
Splunk Add-on for Tenable | 5.0.0 | https://splunkbase.splunk.com/app/1710/ |
Splunk Stream Add-on / Splunk App for Stream(Note Stream 6.6.1 is no longer available. Use Version 7.1.1 instead.) | 6.6.1 | https://splunkbase.splunk.com/app/1809/ |
Splunk Add-on for Microsoft Windows | 4.8.3 | https://splunkbase.splunk.com/app/742/ |
TA-Suricata | 2.3 | https://splunkbase.splunk.com/app/2760/ |
Microsoft Sysmon Add-on | 3.2.3 | https://splunkbase.splunk.com/app/1914/ |
URL Toolbox | 1.6 | https://splunkbase.splunk.com/app/2734/ |
データセットのダウンロードとインポート
データセットのダウンロードとインポートには若干時間がかかってしまうため, 最初の方にしておきます.
BOTS1.0のデータセットにはbotsv1_data_set.tgz (6.1GB compressed)
と, botsv1-attack-only.tgz(135MB compressed)
の2つがあります.
後者(以降,フルデータとよぶ)は攻撃のログだけを含むデータセットで, 135MBと非常に小さくなっています.
前者(以降,攻撃データとよぶ)は攻撃以外のログも含むデータセットで, 圧縮した状態でも6.1GBと非常に大きいデータセットになっています.
しかし, 無料枠では1日に500MBまでのデータしかインポートできません. 今回は, 無料枠ということもあり, 攻撃データの小さい方を使って進めていきます. (ちなみに, 公式によれば月に3回までは制限を超えても大丈夫らしいです.)
攻撃データのダウンロードとインポート手順は以下の通りです.
1. botsv1-attack-only.tgz(135MB compressed)からデータをダウンロードする.
2. Splunkのホーム画面左のAppバーの右にある歯車ボタンをクリックする.
3. Appの管理画面に遷移するので,画面右上にあるファイルからAppをインストール
をクリックする.
4. Appのアップロード画面に遷移するので,画面中央にあるファイルを選択
でダウンロードしたbotsv1-attack-only.tgz
をアップロードする.
5. Appの管理画面に遷移して, 画面上部に「Splunk Boss of the SOC (BOTS) Version 1 Data Set」は正常にインストールされました
と表示されていれば, アップロードが正常に完了.
アップロードが正常に完了したら, 下記の手順でデータを確かめる.
1. Appの管理画面左上の, splunk>enterprise
ロゴの右隣にあるApp
プルダウンをクリックして, Search&Reporting
をクリックする.
2. Search&Reporting Appの新規サーチ画面に遷移するので, 次のようなコマンドを打ち込む.
index=botsv1 earliest=0
3. コマンドを打ち込んだフォームの右にある過去24時間
と書いてあるプルダウンをクリックして,全時間
をクリックする.
4. 検索ボタン(虫眼鏡アイコン)をクリックし, 次のような画面が表示されることを確かめる.
CTFデータへのアクセスのための登録
BOTSのデータは基本的に無料でアクセスができます. ただし, データセット本体についてはgithubで簡単にアクセスできるのに対して, CTFの問題と回答,ヒントなどのデータについては別途登録を行う必要があります. そのため, ここでは登録方法について説明します.
登録なんてこんなん見なくてもできるだろ!なんて声が聞こえてきそうですが詰まったポイント(笑)があったので書き残しておきます.
手順は下記の通りです.
1. BOSS OF THE SOC (BOTS) 1.0にアクセスする.
2. 下記画像の右側のフォームを埋める.
3. State: * Zip Code: *
のフォームにマウスをフォーカスして右クリックし,「検証」をクリックしてHTMLのソースコードを表示する.
4. <select name="stateOrProvince" class="form-control" style="display: none;">
を探す(PostalCodeのフォームの上あたりにあります).
5. display:none;
を2回クリックして消す.
6. Countryのフォームの下にStateフォームが現れるので,Non-US/Canada
を選択する.
7. その他の入力が済んでいたら, Submitを押して登録を完了する.
登録が完了したらメールでteamsplunk@splunk.com
からCTFの問題と回答,ヒントなどを含むGoogle Driveのリンクが送られてきます.
これらのファイルは後で使うので, 必ず送られてきていることを確認してください.
ちなみに, Stateフォームに値を入力せずに登録しようとすると次のような画面(笑)になってしまいます. ぼくはこれで小一時間悩んだ結果このやり方にたどり着きました...ショッパナからBOTSをはじめるハードルが高い... もしかしたらちゃんとした登録方法があるのかも..?
CTFプラットフォームAppのインストール
いよいよCTFをセルフ開催していきます. SA-ctf_scoreboardのREADMEを見てみると, 次のような機能が使えて, BOTSでなくても簡単にSplunkを利用したCTFが開催できそうです.
- User/Team management
- Scoring management
- Question/Answer management
- Hint management
- Comprehensive scoreboards, dashboards, and analytics
基本的にはREADMEに則ってSA-ctf_scoreboardをインストールしていきます. ただしここでも少し詰まるポイントがあるので, しっかり説明をしていきます.
インストールの手順は以下の通りです.
1. 環境変数$SPLUNK_HOME
を以下の手順で設定する(macOS).
~/.bash_profile
などに次を追加する.
export SPLUNK_HOME="/Applications/Splunk"
2. 下記の4つのAppを依存App/Add-Onのインストールと同様にしてインストールする.
- Lookup File Editor app (Note: Tested with version 3.0.3)
- Parallel Coordinates Custom Visualization (Note: Tested with version 1.2.0)
- Simple Timeseries Custom Visualization (Note: Tested with version 1.0)
- Timeline Custom Visualization (Note: Tested with version 1.2.0)
3. 次のコマンドで, CTF Scoreboard appをインストールする.
cd $SPLUNK_HOME/etc/apps git clone https://github.com/splunk/SA-ctf_scoreboard
4. 次のコマンドで, CTF Scoreboard Admin appをインストールする.
cd $SPLUNK_HOME/etc/apps git clone https://github.com/splunk/SA-ctf_scoreboard_admin
5. 次のコマンドで, Splunkを再起動する.
$SPLUNK_HOME/bin/splunk restart
6. 次のコマンドでスコアボードのログのためのディレクトリを作成する.
mkdir $SPLUNK_HOME/var/log/scoreboard
7. Splunkのホーム画面にアクセスすると, AppバーにCapture the Flag
と, Capture the Flag Admin
が追加されていることを確認する.
8. 次の手順でメインユーザをctfのadminとして設定する.
- Splunkのホーム画面右上の
設定
プルダウンをクリックし,アクセス制御
をクリックする. - アクセス制御画面に遷移するので,
ユーザー
をクリックする. - 普段ログインするユーザーの
アクション
カラムにある編集
をクリックする. ロールに割り当て
の利用可能アイテム
から次の3つをクリックして選択済みアイテム
に追加する.- can_delete
- ctf_admin
- ctf_answer_service
- ここで,
ctf_competitor
を選択してしまうと, 後々CTFの問題に回答できなくなってしまうため注意が必要.
9. 次の手順でカスタムコントローラーを作成し, 設定を書き込む.
- 下記のコマンドでexampleからカスタムコントローラーをコピーする.
cd $SPLUNK_HOME/etc/apps/SA-ctf_scoreboard/appserver/controllers cp scoreboard_controller.config.example scoreboard_controller.config
- カスタムコントローラーに適当な値を設定する(設定時[]は必要なし)
[ScoreboardController] USER = [先程設定したユーザー名] PASS = [先程設定したユーザーのログインパスワード] VKEY = [10-20文字のランダムな文字列(なんでもいい)]
10. 次のコマンドで, Splunkを再起動する.
$SPLUNK_HOME/bin/splunk restart
11. BOTS1.0の問題/解答/ヒントを以下の手順で読み込む.
ここで, 本家インストール手順の13番目(Load sample data)をしてしまうと, サンプルデータとBOTS1.0の問題番号がコリジョンしてしまい, 正しいFlagがCorrectしなくなってしまうので注意が必要.
- CTFデータへのアクセスのための登録で登録したメールアドレスに送られてきたメールに記載されているGoogle Driveのリンク(
BOTS v1: Access here
)からBOTS1.0のCTFデータをダウンロードする. - ダウンロードした
botsv1content.zip
を展開するとctf_{questions,answers,hints}.csv
の3つが得られる. - Splunkのホーム画面左のAppバーにある
Capture the Flag Admin
をクリックする. - Capture the Flag Admin Appの管理画面に遷移するので, 画面上部のバー左側にある
Edit...
プルダウンをクリックし,Edit Questions
をクリックする. - Lookup Editor Appの
Lookups / ctf_questions
画面に遷移するので, 画面右上のImport
ボタンをクリックする. - Import Fileダイアログが表示されるので,
Select file to import
ボタンをクリックして, 先程展開したctf_questions.csv
を選択してインポートする. - 同様の手順で, Capture the Flag Admin Appの
Edit
プルダウンの,Edit Answers
およびEdit Hints
からctf_answers.csv
とctf_hints.csv
をそれぞれインポートする.
12. Agreementのサンプルデータを下記の手順でロードする
- Splunkのホーム画面左のAppバーにある
Capture the Flag Admin
をクリックする. - Capture the Flag Admin Appの管理画面に遷移するので, 画面上部のバー左側にある
Data Management...
プルダウンのLoad SAMPLE Data (DANGER)...
をクリックし,Load sample User Agreement
をクリックする. (DANGERとあるのは, CTF競技中にこれをやると, データが上書きされてしまうためであり, 最初にやる事自体はなんらDANGERではないとのこと)
Let's play CTF!
以上で, CTFプラットフォームおよびデータセットの準備が完了したので, 実際に1問だけ動作を確認してみます. 以下の手順で, 実際にCTFをプレイしていきます.
1. Splunkのホーム画面左のAppバーにあるCapture the Flag
をクリックする.
2. Capture the Flag AppのWelcome
画面に遷移するので, 画面左中央にあるUser AgreementのView/Accept
ボタンをクリックする.
3. 先程ロードしたSampleのUser Agreementが表示されるので, ダイアログ右下のAccept Agreement
をクリックする.
4. WelcomeページのYour Event Details
直下にある表のUser Agreement
欄がAccepted
になったことを確認する.
5. Capture the Flag Appの上部バーのQuestions
をクリックする.
6. Number 1の問題をクリックする.
7. This is a simple question to get you familiar with submitting answers. What is the name of the company that makes the software that you are using for this competition? Just a six-letter word with no punctuation.
とのことなので, Answer
フォームにsplunk
と入力する.
8. 下記画面が表示されれば, CTFは正常にプレイできる.
おわりに
今回は, SplunkとIncident Response的なsomethingを同時に学べる一石二鳥なBoss of the SOC
というオープンソースCTFのはじめかたを解説しました.
このように, 1から順序立ててはじめかたを説明されたドキュメントは日本語はおろか, 英語の公式ドキュメントでも情報がバラバラと散らばっており, かなりとっつきにくい状況でした. 実際, 公式ドキュメントを読み進めていく中でも何度もつまづくポイントがあり, せっかくかなり良いコンテンツなのに, 環境構築でつまづいて実際に遊べないというのはもったいないなと思い, 今回記事におこすにいたりました.
ぼくはSplunkの第一人者でもなければ, 一般ユーザーにも及ばない初心者ですが, この記事をみて, BOTSのデータセットおよびCTFに触れたことがない人の, このコンテンツをはじめるきっかけ, あるいははじめる手助けになればと思います.
なにか間違いや, 他に詰まったポイントがあれば気軽にコメントやTwitter等でお知らせいただけると幸いです.