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

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つだけ持っていけるとしたら、私は stats と eval を選びます。この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はセキュリティチームをいつでもサポートします。

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

関連記事

Splunk® Enterprise Security 8.0の一般提供を開始
セキュリティ
4 分程度

Splunk® Enterprise Security 8.0の一般提供を開始

Splunk Enterprise Security 8.0の一般提供の開始をお知らせいたします。Splunk SOARによる自動化の統合など、シームレスな調査とケース管理を実現して画期的な進化を遂げ、脅威の検出、調査、対応ワークフローをかつてないほど効率化し、アナリストの業務を強力に支援します。
2025年のランサムウェアの現状:最大の脅威とトレンド
セキュリティ
6 分程度

2025年のランサムウェアの現状:最大の脅威とトレンド

ランサムウェアは、企業が直面する最も深刻な脅威の1つです。さらに問題なのは、ランサムウェアの攻撃手法は常に変化しているという点です。ランサムウェアの最新のトレンドと統計情報をご確認ください。
SOCを最新化してレジリエンスを向上させるための基盤を構築する
セキュリティ
9 分程度

SOCを最新化してレジリエンスを向上させるための基盤を構築する

Splunkのセキュリティソリューションは、セキュリティ態勢を包括的に可視化して、ビジネスリスクを低減することにより、デジタルレジリエンスジャーニーの推進をサポートします。リスクベースの脅威検出、調査、対応を実現してSOCの最新化を支援し、活発なコミュニティを通じてセキュリティイノベーションを後押します。