SECURITY

脅威ハンティングでのlookupコマンドの使い方(ハンティングに乗り出す前の下調べ)

かつて、ある賢者が言いました。「脅威ハンティングに出かける前にlookupコマンドを使いなさい」と。イギリスの音楽グループ「ワム!」風に言えば「Look It Up Before You Go-Go…Hunting」といったところでしょうか。

Splunkでハンティングをするにあたって必読のこのチュートリアルでは、lookupコマンドを取り上げ、その役割と、脅威ハンティングでの使い方、使いどころを解説します。ではさっそく始めましょう。 

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

lookupコマンドの役割

まずおさらいしておくと、Splunkにcsvファイルをルックアップとして追加してから、lookupコマンドを使うと、Splunk内のデータとcsvファイル内のコンテンツを照合するサーチを実行できます。ルックアップを使って、Splunk内の既存のデータにコンテキストを追加することも可能です。 

たとえば、ユーザーに関するコンテキストを追加したい場合は、オフィスの電話番号や住所をルックアップとしてSplunkにインポートしてから、lookupコマンドを使ってその情報を表示できます。 

*もちろん、csvファイル以外にもルックアップとして、自動ルックアップスクリプトルックアップデータベースから取り込んだデータ、SplunkのKVストアを使用できます。

脅威ハンティングでのlookupコマンドの使い方 

lookupコマンドは、Splunkの技術ドキュメントで紹介されているように、幅広い使い方ができます。しかしこの記事では、用途をハンティングに絞ってlookupコマンドの使い方を説明します。

環境内でハンティングの対象となるデータや場所はたくさんありますが、ここでは以下のものを見ていきます。 

  • パブリックDNSサーバー
  • IPアドレス 
  • WindowsイベントID

パブリックDNSサーバー

サイバー攻撃でパブリックDNSサーバーがよく利用されることはご存じでしょう。そこから、「組織のネットワーク内でパブリックDNSサーバーを使った痕跡から犯罪者を見つけ出せる」という仮説を立てることができます。

では、これらのパブリックDNSサーバーと組織のネットワークのつながりを突き止めるにはどうすればよいでしょうか? 

まずは、パブリックDNSサーバーのリストを取得し、組織のネットワーク内でこれらのサーバーに接続するホストを見つけることをお勧めします。実際にやってみましょう。 

はじめに、公開/パブリックDNSサーバーのリストを見つけて、csvをダウンロード(または作成)します。

公開/パブリックDNSサーバーのリスト

csvを用意したら、Splunkにログインし、[設定] > [ルックアップ]と選択して、[ルックアップテーブルファイル]の[新規追加]リンクをクリックします。次のウィンドウが表示されます。 

ルックアップテーブルファイル

[ファイルを選択]をクリックしてcsvをアップロードし、[宛先ファイル名]に名前を入力します。この例ではシンプルに「open_nameservers.csv」と名付けました。

[保存]をクリックします。

[ルックアップテーブルファイル]画面が表示されたら[ルックアップ]に戻り、[ルックアップ定義]の[新規追加]をクリックして、今アップロードしたcsvをサーチで使えるように定義します。 

以下の例では、定義名として「open_nameservers」という(創意に富んだ)名前を入力しています。この名前を後ほどlookupコマンドで使用します。

open_nameservers

csvをSplunkに読み込んで定義したので、サーチを実行して照合できます(ルックアップテーブルに登録されているDNSサーバーに応答しているサーバーを探すなど)。

サーチ

ソースタイプは、照合するデータの種類に合わせて指定します。この例では、Splunk Streamを使ってDNSデータを収集しています。コマンドは次のようになります。

| lookup open_nameservers ip_address AS dest_ip

実行すると、先ほど定義したopen_nameservers.csvから「ip_address」フィールドが取得され、「dest_ip」フィールドに指定されたデータと一致するIPアドレスが検索されます。一致があると、該当するイベントに、csvからコンテキストが追加されます。

サーチの結果から、ネットワーク内の1台のワークステーションが8.8.8[.]8 (Googleが提供している無料のパブリックDNSサーバー)に接続してDNSドメインの名前解決を行っていることがすぐにわかります。csvのip_addressフィールドとログのdest_ipフィールドのデータが一致すると、open_nameservers.csvに含まれる次の3つのフィールドがイベントに追加されます。

  • name
  • country_code 
  • city

(Splunkを使ったDNSハンティングについて詳しくは、こちらのブログ記事をご覧ください。)

IPアドレス

このコンテキスト補強の手法では、別のサーチコマンド(その名もずばり)「search」を追加し、これら新しいフィールドのいずれかを使って、ルックアップで一致したすべてのIPアドレスを抽出できます。前述の例では、searchでnameフィールドを指定して照合しています。Google DNSサーバーに限定して抽出したい場合は、次のように追加します。

| search name=*.google.com

パブリックDNSサーバー「ではない」IPアドレスをすべて抽出したい場合は、「=」の代わりに「!=」を使用します。

| search name!=*

このように指定すると、ルックアップファイルのnameフィールドに値がないIPアドレスのイベントが表示されます。

WindowsイベントID

上の例では、IPアドレスを調べました。しかし、この手法はIPアドレス以外にも使えます。高度な攻撃が行われている可能性を示すWindowsイベントIDを調べるためにも役立ちます。ORステートメントを使ってイベントIDをサーチすることもできますが、こういったイベントIDをルックアップテーブルに取り込むと、より柔軟に調査を行えます。

この例では、3つのフィールドを含むcsvを作成しました。

WindowsイベントIDを調査するCSV

先ほどの例と同様に、[設定] > [ルックアップ]と選択して、[ルックアップテーブルファイル]の[新規追加]リンクをクリックします。ファイルをアップロードし、名前を指定します。ルックアップ定義を作成して、今インポートしたcsvをサーチできるようにします。 

下の例では、ルックアップ定義で、csvを「nsa_hunting」と名付けています。nsa_huntingの「eventcode」フィールドとWindowsイベントログの「EventCode」フィールドを照合しています。このサーチでは、ソースタイプが「WinEventLog:Security」で、アカウントやグループを使った攻撃を検出するためのNSAのガイダンスと一致するすべてのイベントコードが表示されます。

サーチ

(イベントコードIDについて詳しくは、Sysmonデータを使ったハンティングに関するこちらのブログ記事をご覧ください。)

lookupコマンドのベストプラクティス

ルックアップテーブルは、侵害の痕跡(IOC)や文字列を照合するのに非常に便利なツールです。ただし、考慮すべき点がいくつかあります。

  • ワイルドカード(「*maliciousioc.com」など)を含むエントリーをcsvに追加する場合、transforms.confを編集する必要があります。これはGUIからはできません。
  • csvを正しく作成していることを確認します。Excelではファイルを正しく作成できないことがあり、その場合はSplunkに適切に取り込めません。取り込みに失敗した場合は、csvに特殊な隠し文字が入っていないかどうかを確認してください。
  • ルックアップに常に第2のフィールドを含めると非常に役立ちます。この第2のフィールドをサーチすれば、Splunkでデータが照合されたかどうか確認できます。もしサーチ結果に第2のフィールドが存在しなければ照合しなかったことが分かります。
  • ルックアップは常に最新の状態に保ちましょう!ルックアップを最新の状態に保つにはいくつかの方法があります。代表的なものを2つご紹介すると、1つ目はSplunkサーチヘッドに新しいcsvをアップロードする方法、2つ目は「outputlookup」SPLコマンドを使ってSplunkサーチからイベントを取得し、ルックアップに追加する方法です。これらのサーチはスケジュールを指定して実行できるため、ルックアップを常に最新に保てます。

この記事の情報を参考に、Mandiant社のレポートで取り上げられているIOCを調べる方法についてもぜひ考えてみてください。また、最新の脅威ハンティング手法については、E-book『PEAK脅威ハンティングフレームワーク』もぜひご覧ください。

Splunkはセキュリティチームをいつでも支援いたします。:-)

このブログはこちらの英語ブログの翻訳、大森 明央によるレビューです。

Ryan Kovar
Posted by

Ryan Kovar

NY. AZ. Navy. SOCA. KBMG. DARPA. Splunk.

TAGS
Show All Tags
Show Less Tags