脅威ハンティングの始め方:ビギナーガイド

Security Madeleine Tauber , Tamara Chacon

周囲をすばやく観察し、その情報に基づいて計画を立て、実行する。これはサイバーセキュリティにおいても人生においても欠かせないスキルです。

新しい環境でハンティングを行うときは、実際の作業に入る前に、そのプロセスを確認しておくことが重要です。このチュートリアルでは、新しい環境で脅威ハンティングを行うという冒険的な体験を乗り越えるための方法をご紹介します。

脅威ハンティングを日常的に行っている場合でも、初めて行う場合でも、このチュートリアルを読めば役に立つヒントが見つかるはずです。この記事は以下の4つのセクションで構成されています。

このチュートリアルはSplunkユーザー向けで、データがすでにSplunkに取り込まれていることを前提としています。Splunkにデータを取り込む方法については多くのブログ記事でご紹介しているので省略し、ここでは、それらのデータから情報を引き出そうとするアナリストの皆様を対象にご説明します。

(この記事は「Splunkで脅威ハンティング」シリーズの一部で、初稿はJohn Stonerによって書かれました。お客様に最大限の価値を提供できるよう、その内容を最近更新しました。)

ステップ1. ハンティングプロセスを始める

ハンティングを始めるときは、目的を明確にすることが大切です。どこで何を探すかを決めるために役立つ方法がいくつかあります。

たとえば、WindowsシステムでPowerShellが実行されていると仮定すれば、ハンティングで何に集中すべきかがわかり、他の脅威の痕跡を求めてわき道にそれることもなくなります。

もちろん、他の脅威の痕跡が実際に見つかった場合はメモしておき、あとでその脅威を仮定してハンティングを行いましょう。

ステップ2. ハンティングの対象を絞る

Splunkコンソールを見ると、多数のデータソース(sourcetypes)の、数日、数週間、数カ月、または数年にわたるデータが表示されているはずです。

まずは、対象とするデータと期間を絞り込んで、特定の範囲またはサブセットに限定します。もちろん、その範囲外のデータは調べなくてよいというわけではありませんが、最初は効果を上げるために対象を絞ります。

では、どうやって絞り込めばよいでしょうか。期間から見ていきましょう。

期間

Splunkサーチバーの右側には タイムピッカー と呼ばれるドロップダウンがあり、これを使ってサーチの対象とする期間を設定できます。このドロップダウンをクリックすると、複数のプリセットの期間が表示されます。また、日時を指定して検索範囲を設定することもできます。ハンティングを行うときは常に、このタイムピッカーでサーチを絞り込むことが非常に重要です。

データソース(sourcetypes)を限定するときは、利用可能なソースタイプを把握しておく必要があります。利用可能なソースタイプをすばやく調べるには、metadataコマンドを使って次のように指定します。

期間
| metadata type=sourcetypes | sort - totalCount

この例では、以下の情報を含むリストが表示されます。

サーチ結果

(このサーチについて詳しくは、ブログ記事「metadataとtstatsを活用した脅威ハンティング」をご覧ください。)

データソース

仮説(目的)、期間、ソースタイプが決まったら、データを掘り下げていきます。次に考えるのは、対象にするデータの種類です。これは、最初に立てた仮説(目的)によって決まります。

ネットワークデータソースは、どのデータがどこに送信されたかを特定するために役立ちます。データがクラウドプロバイダーに送られたのか、社内のサーバーからワークステーションに送られたのかといった情報を把握することは非常に重要です。

ネットワークデータソースには以下のものがあります。

ワイヤーデータは、TCP、HTTP、SMTP、DNSなどのネットワークプロトコルごとに分類された、Splunk for Streamの形式で確認できます。

Splunk for Streamを使用していない場合でも、PCAPデータやZeekをお使いであれば、それらのデータセットから、組織のネットワークで使用している各プロトコルに関する有用なインサイトを得られます。

コンテキスト

ネットワーク、システム、ユーザーの状況をより詳しく理解するには、ログイベントに加えて、コンテキストデータも入手する必要があります。検討すべきデータタイプには以下のものがあります。

ステップ3. Splunkでサーチを行う

データとコンテキストを確認し、期間を絞り込む方法がわかったら、Splunkサーチを実行します。Splunkでは、非体系的なアプローチと体系的なアプローチのどちらでもサーチを実行して結果を得られます。

私は、ハンティングで何を探すかが明確になっていない場合、最初は広い範囲でサーチを行うことにしています。それには以下のような理由があります。

この例では、Microsoft Sysmonデータを対象に、2017年8月23日に発生したイベントをサーチしています。(もちろん、このデータがやや古いことは承知していますが、このデータの内容とそこから学べることは今でも非常に有用です。)

sourcetype="xmlwineventlog:microsoft-windows-sysmon/operational"

このサーチで約40,000件のイベントが見つかりました。ここから、利用可能なフィールドを使用することで、サーチ結果を大幅に絞り込むことができます。しかも、いくつかのフィールドをポイントしてクリックするだけでそれが可能です。例として、Amber Turingというユーザーが実行したアクティビティを探します。

sourcetype="xmlwineventlog:microsoft-windows-sysmon/operational" user="FROTHLY\\amber.turing"
イベント

この結果から、Amberが自身のシステムで「tor.exe」を実行したらしいことがわかります。興味深いですね。では、Splunkのすばらしい変換コマンドを使って、データを見やすくしましょう。

変換コマンドのことはご存じでしょうか?これらは、サーチの結果を受け取ってデータ出力を変換する、以下のようなコマンドです。

役に立つコマンドリファレンス

Splunkは、役に立つコマンドリファレンスを公開しています。私もよく参照しています。皆様もハンティングの際にぜひご活用ください!(Splunkのコマンドになじみがなく、いつもキーワードを使ってサーチを行っている場合でも、心配ありません。この脅威ハンティングシリーズは、その方法にも対応しています。)

無人島にSplunkコマンドを2つだけ持っていけるとしたら、私は statseval を選びます。この2つはそのくらい強力です。この2つのコマンドを組み合わせたサーチの例をご紹介します。

sourcetype="pan:traffic" (src_ip=10.0.2.101 OR dest_ip=10.0.2.101)
| stats count AS event_count sum(bytes_in) AS bytes_in sum(bytes_out) AS bytes_out sum(bytes) as bytes_total by src_ip dest_ip
| eval mb_in=round((bytes_in/1024/1024),2)  | eval mb_out=round((bytes_out/1024/1024),2) | eval mb_total=round((bytes_total/1024/1024),2)
| fields - bytes*
| sort - mb_total
| head 10
サーチ

この例では、Amberのシステムと他のシステムとの間で行われた通信の経路を確認しています。コンテキスト情報から、AmberのIPアドレスが「10.0.2.101」であることがわかっているので、1行目のサーチでは、そのIPアドレスが送信元または宛先になっているファイアウォールデータを探しています。

この2つが私のお気に入りのコマンドなので、ここで説明を終えてもよいのですが、さらに先のステップで使えるコマンドをもう少しご紹介しましょう。

これにより、Amberのシステムと大量にデータをやり取りしている外部の通信先トップ10がわかりました。すごいでしょう?

ステップ4. OSINTなどのリソースを活用する

ハンティングを始めるときに覚えておくべき最後の重要なステップは、OSINT (オープンソースインテリジェンス)を活用することです。

私のお気に入りのOSINTサイトは「G」で始まります。おわかりですか?そう、google.comです。

Googleはハンティングで見過ごされがちですが、非常に強力なリソースです。私の記憶力では1,000以上あるWindowsイベントコードをすべて覚えておくことはできないので、こうした情報をすばやく検索できるだけでも十分な価値があります。

Google以外に役立つサイトとしては、以下のものがあります。

ハンティングを始めましょう

短時間で多くのことを学びましたね!サンプルデータセットを使ってハンティングのスキルを磨きたい場合や、新しい技法を試してみたい場合、または単にSplunkサーチの練習をしたい場合は、Splunk GitHubからBOTSデータセット(botsv3など)をダウンロードして、サンドボックス環境で使ってみてください。

また、このシリーズには他にもたくさんのチュートリアルが用意されているので、ぜひご覧ください。

Splunkはセキュリティチームをいつでもサポートします。

このブログはこちらの英語ブログの翻訳、山村 悟史によるレビューです。

関連記事

クラウドセキュリティとは?対策やリスクについて解説
セキュリティ
6 分程度

クラウドセキュリティとは?対策やリスクについて解説

多くの企業がクラウドサービスの導入を加速し、インターネットを介して利用するなか、クラウドサービスの利用にともなうリスクに対するセキュリティ対策「クラウドセキュリティ」が注目されています。セキュリティリスクを分析した上で、安全なクラウド環境構築のためのセキュリティソリューションについて解説します。
実践編:Splunkで実現するランサムウェア攻撃対策 ― 可視化から自動対応まで
セキュリティ
5 分程度

実践編:Splunkで実現するランサムウェア攻撃対策 ― 可視化から自動対応まで

ランサムウェア攻撃のスピードに対抗するには検知(MTTD)と対応(MTTR)の速度を上げ、データ窃取を防ぐという「守るべき資産の可視化」が不可欠。この課題を解決する「可視化」「検知」「対応」「改善」のサイクルと、Splunkのセキュリティ製品群でどう実現するかを紹介します。
SOCマネージャー/ディレクターの役割:スキル、職務、給与など
セキュリティ
10 分程度

SOCマネージャー/ディレクターの役割:スキル、職務、給与など

SOCマネージャーの仕事を始める予定ですか?あるいは、SOCマネージャーを採用しますか?SOCマネージャーは、脅威の検出からインシデント対応まで、サイバーセキュリティの確保に欠かせない役割を担っています。