2024年セキュリティの現状:競争が激化するAIの活用
先進的なサイバーセキュリティ対策を推進する組織がどのように課題を克服し、AIを活用してイノベーションを推進し、デジタルレジリエンスを強化しているかをご確認ください。
かつて、ある賢者が言いました。「脅威ハンティングに出かける前にlookupコマンドを使いなさい」と。イギリスの音楽グループ「ワム!」風に言えば「Look It Up Before You Go-Go…Hunting」といったところでしょうか。
Splunkでハンティングをするにあたって必読のこのチュートリアルでは、lookupコマンドを取り上げ、その役割と、脅威ハンティングでの使い方、使いどころを解説します。ではさっそく始めましょう。
(この記事は「Splunkで脅威ハンティング」シリーズの一部です。お客様に最大限の価値を提供できるよう、その内容を最近更新しました。)
まずおさらいしておくと、Splunkにcsvファイルをルックアップとして追加してから、lookupコマンドを使うと、Splunk内のデータとcsvファイル内のコンテンツを照合するサーチを実行できます。ルックアップを使って、Splunk内の既存のデータにコンテキストを追加することも可能です。
たとえば、ユーザーに関するコンテキストを追加したい場合は、オフィスの電話番号や住所をルックアップとしてSplunkにインポートしてから、lookupコマンドを使ってその情報を表示できます。
*もちろん、csvファイル以外にもルックアップとして、自動ルックアップ、スクリプトルックアップ、データベースから取り込んだデータ、SplunkのKVストアを使用できます。
lookupコマンドは、Splunkの技術ドキュメントで紹介されているように、幅広い使い方ができます。しかしこの記事では、用途をハンティングに絞ってlookupコマンドの使い方を説明します。
環境内でハンティングの対象となるデータや場所はたくさんありますが、ここでは以下のものを見ていきます。
サイバー攻撃でパブリックDNSサーバーがよく利用されることはご存じでしょう。そこから、「組織のネットワーク内でパブリックDNSサーバーを使った痕跡から犯罪者を見つけ出せる」という仮説を立てることができます。
では、これらのパブリックDNSサーバーと組織のネットワークのつながりを突き止めるにはどうすればよいでしょうか?
まずは、パブリックDNSサーバーのリストを取得し、組織のネットワーク内でこれらのサーバーに接続するホストを見つけることをお勧めします。実際にやってみましょう。
はじめに、公開/パブリックDNSサーバーのリストを見つけて、csvをダウンロード(または作成)します。
csvを用意したら、Splunkにログインし、[設定] > [ルックアップ]と選択して、[ルックアップテーブルファイル]の[新規追加]リンクをクリックします。次のウィンドウが表示されます。
[ファイルを選択]をクリックしてcsvをアップロードし、[宛先ファイル名]に名前を入力します。この例ではシンプルに「open_nameservers.csv」と名付けました。
[保存]をクリックします。
[ルックアップテーブルファイル]画面が表示されたら[ルックアップ]に戻り、[ルックアップ定義]の[新規追加]をクリックして、今アップロードしたcsvをサーチで使えるように定義します。
以下の例では、定義名として「open_nameservers」という(創意に富んだ)名前を入力しています。この名前を後ほどlookupコマンドで使用します。
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つのフィールドがイベントに追加されます。
(Splunkを使ったDNSハンティングについて詳しくは、こちらのブログ記事をご覧ください。)
このコンテキスト補強の手法では、別のサーチコマンド(その名もずばり)「search」を追加し、これら新しいフィールドのいずれかを使って、ルックアップで一致したすべてのIPアドレスを抽出できます。前述の例では、searchでnameフィールドを指定して照合しています。Google DNSサーバーに限定して抽出したい場合は、次のように追加します。
| search name=*.google.com
パブリックDNSサーバー「ではない」IPアドレスをすべて抽出したい場合は、「=」の代わりに「!=」を使用します。
| search name!=*
このように指定すると、ルックアップファイルのnameフィールドに値がないIPアドレスのイベントが表示されます。
上の例では、IPアドレスを調べました。しかし、この手法はIPアドレス以外にも使えます。高度な攻撃が行われている可能性を示すWindowsイベントIDを調べるためにも役立ちます。ORステートメントを使ってイベントIDをサーチすることもできますが、こういったイベントIDをルックアップテーブルに取り込むと、より柔軟に調査を行えます。
この例では、3つのフィールドを含むcsvを作成しました。
先ほどの例と同様に、[設定] > [ルックアップ]と選択して、[ルックアップテーブルファイル]の[新規追加]リンクをクリックします。ファイルをアップロードし、名前を指定します。ルックアップ定義を作成して、今インポートしたcsvをサーチできるようにします。
下の例では、ルックアップ定義で、csvを「nsa_hunting」と名付けています。nsa_huntingの「eventcode」フィールドとWindowsイベントログの「EventCode」フィールドを照合しています。このサーチでは、ソースタイプが「WinEventLog:Security」で、アカウントやグループを使った攻撃を検出するためのNSAのガイダンスと一致するすべてのイベントコードが表示されます。
(イベントコードIDについて詳しくは、Sysmonデータを使ったハンティングに関するこちらのブログ記事をご覧ください。)
ルックアップテーブルは、侵害の痕跡(IOC)や文字列を照合するのに非常に便利なツールです。ただし、考慮すべき点がいくつかあります。
この記事の情報を参考に、Mandiant社のレポートで取り上げられているIOCを調べる方法についてもぜひ考えてみてください。また、最新の脅威ハンティング手法については、E-book『PEAK脅威ハンティングフレームワーク』もぜひご覧ください。
Splunkはセキュリティチームをいつでも支援いたします。:-)
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。