2024年セキュリティの現状:競争が激化するAIの活用
先進的なサイバーセキュリティ対策を推進する組織がどのように課題を克服し、AIを活用してイノベーションを推進し、デジタルレジリエンスを強化しているかをご確認ください。
正規表現(RegEx)は、初心者には意味不明な呪文のように思われますが、セキュリティアナリストがテキストのパターンを定義するために使用できるコンパクトな言語です。ASCIIデータを扱うとき、そしてログに埋もれた重要な情報を見つけ出すときに、正規表現は優れた能力を発揮します。
とはいえ、正規表現を難しく感じる方もいらっしゃるでしょう。そのような方に役立つリソースが数多く提供されています。
ここで「でも、Splunkにはフィールドがあるのに、どうしてわざわざ時間をかけて正規表現を勉強しなければいけないのか?」と思う方もいらっしゃるでしょう。
たしかにそのとおりです。Splunkではすべてのログがインデックス化され、完全な形で保存されます(ここだけの話、特定のフィールドのみを保存する一部のあまり優秀とは言えないデータプラットフォームとは違います)。さらに、どのデータソースでも主要なフィールドをサーチできます。ただし、場合によっては、アナリストとして脅威ハンティングで使いたい貴重な情報がデフォルトでフィールドに割り当てられないこともあります。
というわけで、脅威ハンティングで正規表現を使う方法をいくつかご紹介します。
(この記事は「Splunkで脅威ハンティング」シリーズの一部で、初稿はSteve Brantによって書かれました。お客様に最大限の価値を提供できるよう、その内容を最近更新しました。)
SplunkのSPLには、rexとregexの2つのコマンドがあります。アナリストは、これらのコマンドで正規表現を使って、サーチの中で値を新しいフィールドに割り当てたり、結果を絞り込んだりできます。各コマンドの使い方を詳しく見ていきましょう。
rex [field=<field>] (<regex-expression> [max_match=<int>] [offset_field=<string>]) | (mode=sed <sed-expression>)
rexコマンドでは、フィールド内の文字を置き換えたり(データの匿名化に便利)、値を抽出して新しいフィールドに割り当てたりできます。脅威ハンティングでよく使うのは、値の抽出です。
例として、暗号化されていないパスワードが外部ネットワークに流出していることが確認され、その情報を特定し、分析のために抽出するとしましょう。まず、ネットワークデータでhttpトラフィックを調べたところ、Webログデータに「form_data」というフィールドが見つかりました。
その1件のイベントに、暗号化されていないパスワードが含まれています。Webログにはあってはならない状態です!
この暗号化されていないパスワードの流出がどのくらい広がっているかを調査するために、rexコマンドを使ってサーチを実行します。その中で「pass」というフィールドを作成し、その値を調べて、暗号化されていないパスワードを探します。サーチは次のようになります。
「form_data」フィールドに対してrexコマンドを実行し、「pass」という名前の新しいフィールドを作成しています。その中で呪文のような部分が、「form_data」からデータを抽出する正規表現です。すごいでしょう?結果を見ると、なんと「pass」という新しいフィールドが作成されています!
この新しいフィールドに対して、stats、eventstats、streamstatsなどの操作を実行できます。これらのコマンドの使い方については、John Stonerのブログ記事をご覧ください。
さて、先ほどのコマンドで一体何が起きたのでしょうか?新しいフィールドはどこから現れたのでしょうか?詳しく見ていきましょう。
下のコードは「form_data」フィールドの値です。注目していただきたい部分にマークを付けています。
username=admin&task=login&return=aW5kZXgucGhw&option=com_login&passwd=rock&4a40c518220c1993f0e02dc4712c5794=1
文字列「passwd=」はリテラル文字列で、毎回完全一致で検出するパターンです。この後に続く値が、分析のために抽出するパスワード値です。
パスワードを抽出するための正規表現は次のようになります。
passwd=(?<pass>[^&]+)
便利ですね!では次に、regexを見ていきましょう。
regexコマンドでは、正規表現を使ってイベントをフィルタリングできます。
regex (<field>=<regex-expression> | <field>!=<regex-expression> | <regex-expression>)
このコマンドを実行すると、指定したパターンに一致する値が返されます。逆に、正規表現に否定を付けて、指定したパターンに一致しない値を取得することもできます。rexコマンドとは異なり、regexコマンドでは新しいフィールドは作成されません。
例として、Suricataのログでハンティングの対象を特定のネットワーク範囲(192.168.224.0~192.168.225.255)に絞り込むとします。evalコマンドでcidrmatch関数を使うこともできますが、regexをマスターすれば、ほかにもさまざまな場面で活用できます。
サーチは次のようになります。
regexコマンドを使わない場合、このデータセットのサーチ結果には、8.8.8.8や192.168.229.225のような、ハンティング対象でない値も含まれます。regexを使えば、目的のIP範囲内の値だけを取得できます。
regexなし:
|
regexあり:
|
|
サーチの内容を詳しく見ていきましょう。
src_ipフィールドには以下のような値が含まれています。
次の部分が正規表現です。
192\.168\.(224|225)\.\d{1,3}
正規表現は意味不明な呪文なのでしょうか。そんなことはありません。とはいえ、拒否反応を示す人もいるでしょう。勇気を出して正規表現を身に付け、ハンティングでログを調査する際にパターンの検索に活用してください。
Splunkはセキュリティチームをいつでも支援いたします。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。