SOF-ELK (Elastic Stack) へのインポート結果¶
SOF-ELKのインストールと起動¶
Hayabusaの結果はElastic Stackに簡単にインポートできます。 DFIRインベスティゲーションに特化した無料のElastic StackのLinuxディストリビューションであるSOF-ELKの使用を推奨します。
まず、https://github.com/philhagen/sof-elk/wiki/Virtual-Machine-READMEから、SOF-ELKの7-zip圧縮されたVMwareイメージをダウンロードして解凍してください。
Intel CPU用のx86版とApple M-seriesコンピュータ用のARM版の2つのバージョンがあります。
VMを起動すると、次のような画面が表示されます:
KibanaのURLとSSHサーバーのIPアドレスを控えておいてください。
以下の認証情報でログインできます:
- ユーザー名:
elk_user - パスワード:
forensics
表示されたURLに従って、WebブラウザでKibanaを開きます。 例:http://172.16.23.128:5601/
注意:Kibanaが読み込まれるまでに時間がかかることがあります。
次のようなWebページが表示されます:
VM内でコマンドを入力する代わりに、ssh elk_user@172.16.23.128でVMにSSH接続することをお勧めします。
注意:デフォルトのキーボードレイアウトはUSキーボードです。
Macでのネットワーク接続の問題¶
macOSを使用していて、ターミナルでno route to hostエラーが発生したり、ブラウザでKibanaにアクセスできない場合は、macOSのローカルネットワークプライバシー制御が原因の可能性があります。
システム設定で、プライバシーとセキュリティ -> ローカルネットワークを開き、ブラウザとターミナルプログラムがローカルネットワーク上のデバイスと通信できるように有効になっていることを確認してください。
SOF-ELKをアップデート!¶
データをインポートする前に、必ずsudo sof-elk_update.shコマンドでSOF-ELKをアップデートしてください。
Hayabusaの実行¶
Hayabusaを実行し、結果をJSONLに保存します。
例:./hayabusa json-timeline -L -d ../hayabusa-sample-evtx -w -p super-verbose -G /opt/homebrew/var/GeoIP -o results.jsonl
オプション:古いインポートデータの削除¶
初めてHayabusaの結果をインポートするのではなく、すべてをクリアしたい場合は、以下の手順で実行できます:
- SOF-ELKに現在どのレコードがあるか確認:
sof-elk_clear.py -i list - 現在のデータを削除:
sof-elk_clear.py -a - logstashディレクトリのファイルを削除:
rm /logstash/hayabusa/*
SOF-ELKでHayabusaのlogstash設定ファイルを構成¶
SOF-ELKにはすでにフィールド名をElastic Common Schema形式に変換するHayabusaのlogstash設定ファイルが含まれています。 Hayabusaのフィールド名に慣れている場合は、私たちが提供するものを使用することをお勧めします。
- まずSOF-ELKにSSH接続:
ssh elk_user@172.16.23.128 - 現在のlogstash設定ファイルを削除または移動:
sudo rm /etc/logstash/conf.d/6650-hayabusa.conf - 新しい6650-hayabusa-jsonl.confファイルを
/etc/logstash/conf.d/にアップロード:sudo wget https://raw.githubusercontent.com/Yamato-Security/hayabusa/main/doc/ElasticStackImport/6650-hayabusa-jsonl.conf -O /etc/logstash/conf.d/6650-hayabusa.conf - logstashを再起動:
sudo systemctl restart logstash
この設定ファイルは、統合されたDetailsTextとExtraFieldInfoTextフィールドを作成し、各レコードを一つずつ開いてすべてのフィールドを確認する代わりに、最も重要なフィールドを一目で確認できるようにします。
SOF-ELKにHayabusaの結果をインポート¶
ログは/logstashディレクトリ内の適切なディレクトリにコピーすることでSOF-ELKに取り込まれます。
まずSSHからexitし、作成したHayabusaの結果ファイルをコピーします:
scp ./results.jsonl elk_user@172.16.23.128:/logstash/hayabusa
Kibanaでインポートが成功したか確認¶
まず、HayabusaスキャンのResults SummaryにあるTotal detections、First Timestamp、Last Timestampを控えておいてください。
この情報が取得できない場合は、*nixでwc -l results.jsonlを実行してTotal detectionsの合計行数を取得できます。
デフォルトでは、Hayabusaはパフォーマンスを向上させるために結果をソートしないため、最初と最後の行を見て最初と最後のタイムスタンプを取得することはできません。
正確な最初と最後のタイムスタンプがわからない場合は、Kibanaで最初の日付を2007年に、最後の日をnowに設定して、すべての結果を表示できるようにしてください。
インポートされたイベントのTotal Recordsと最初と最後のタイムスタンプが表示されるはずです。
すべてのイベントをインポートするのに時間がかかることがあるので、Total Recordsが期待するカウントになるまでページを更新し続けてください。
ターミナルからsof-elk_clear.py -i listを実行して、インポートが成功したかどうかを確認することもできます。
evtxlogsインデックスにより多くのレコードが表示されるはずです:
インポート時に解析エラーが発生した場合は、GitHubでissueを作成してください。
これは/var/log/logstash/logstash-plain.logログファイルの末尾を確認することで確認できます。
Discoverで結果を表示¶
左上のサイドバーアイコンをクリックし、Discoverをクリックします:
おそらくNo results match your search criteriaと表示されるでしょう。
左上のlogstash-*インデックスと表示されている場所をクリックし、evtxlogs-*に変更します。
これでDiscoverタイムラインが表示されるはずです。
結果の分析¶
デフォルトのDiscoverビューは次のようになります:
上部のヒストグラムを見ることで、イベントがいつ発生したか、イベントの頻度の概要を把握できます。
カラムの追加¶
左側のサイドバーで、フィールドにカーソルを合わせた後にプラス記号をクリックすることで、カラムに表示したいフィールドを追加できます。 フィールドが多いため、検索ボックスに探しているフィールド名を入力することをお勧めします。
まず、以下のカラムをお勧めします:
ComputerEventIDLevelRuleTitleDetailsText
モニターが十分に広い場合は、すべてのフィールド情報を表示するためにExtraFieldInfoTextも追加することをお勧めします。
Discoverビューは次のようになります:
フィルタリング¶
KQL(Kibana Query Language)でフィルタリングして、特定のイベントとアラートを検索できます。例:
* Level: "crit":重要アラートのみを表示。
* Level: "crit" OR Level: "high":高および重要アラートを表示。
* NOT Level: info:情報イベントは表示せず、アラートのみ。
* MitreTactics: *LatMov*:ラテラルムーブメントに関連するイベントとアラートを表示。
* "PW Spray":「パスワードスプレー」などの特定の攻撃のみを表示。
* "LID: 0x8724ead":ログオンID 0x8724eadに関連するすべてのアクティビティを表示。
* Details_TgtUser: admmig:ターゲットユーザーがadmmigであるすべてのイベントを検索。
詳細の切り替え¶
レコード内のすべてのフィールドを確認するには、タイムスタンプの横にあるアイコン(詳細付きダイアログを切り替え)をクリックします:
前後のドキュメントを表示¶
特定のアラートの直前と直後のイベントを表示したい場合は、まずそのアラートの詳細を開き、右上のView surrounding documentsをクリックします:
この例では、Pass the Hash攻撃アラートの前後のイベントを確認しています:
注意:より多くのイベントを取得するには、上部の
Load x newer documentsまたは下部のLoad x older documentsの数値を変更してください。
フィールドのクイックメトリクスを取得¶
左の列で、フィールド名をクリックすると、その使用状況に関するクイックメトリクスが表示されます:
データは速度のためにサンプリングされているため、100%正確ではないことに注意してください。
今後の計画¶
- CSV用のLogstashパーサー
- 事前構築されたダッシュボード











