こんにちは!セキュリティの世界へようこそ。
日々の開発やインフラの管理、本当にお疲れ様です。「セキュリティの勉強を始めなきゃいけないけれど、専門用語が多くてどこから手をつければいいか分からない…」そんな風に悩んでいませんか?
今回は、SOC(セキュリティ・オペレーション・センター)の現場で私たちが毎日向き合っている、少しカッコいい言葉で言うと「MITRE ATT&CKに基づいたSIEMの相関ルール作成」というテーマについてお話しします。
なんだか難しそうな名前ですよね。でも、安心してください。今日お伝えするのは、私たちが普段暮らしている「家の防犯」と同じ、とってもシンプルで泥臭い仕組みです。一歩ずつ、優しく紐解いていきましょう!
—
1. 泥棒の侵入を防ぐ「家の防犯」と「サイバー攻撃」の共通点
突然ですが、あなたの家を守る防犯対策を想像してみてください。
玄関の鍵を閉める、窓に補助錠をかける、センサーライトを置く。これらはすべて、家を守るための「セキュリティ対策」ですよね。
では、泥棒が家に入ろうとするとき、いきなり玄関のドアをバールでこじ開けるでしょうか?
プロの泥棒(あるいは侵入者)は、もっと慎重です。
1. まず近所をウロついて、留守かどうかを確認する(下見)
2. 勝手口の鍵がうっかり空いていないかガチャガチャと試してみる(侵入の試み)
3. 中に入れたら、すぐに電気をつけずに、こっそり貴重品を探す(潜伏・目的の達成)
サイバー攻撃もこれと全く同じなんです。攻撃者はシステムに侵入する際、一足飛びに重要なデータベースを盗み出すわけではありません。いくつかの段階を踏んで、じわじわと忍び込んできます。
単一のログを見るだけでは、泥棒を見逃してしまう理由
SIEM(Security Information and Event Management:シーム)という言葉を聞いたことがあるかもしれません。これは、サーバーやファイアウォールが出す膨大な「ログ(日誌)」を集めて監視してくれる、いわば「24時間稼働の防犯カメラのモニター室」です。
ここで初心者の方がやりがちな失敗が、「1つのログだけで判断しようとすること」です。
例えば、防犯カメラの映像で「夜中に庭を人が1回横切った」というログだけを見たとします。「うーん、野良猫かもしれないし、住人かもしれないから、とりあえず放置しよう」となりますよね。これが「単一ログの罠」です。
しかし、もしその直前に「勝手口のドアがガチャっと開けられた(失敗ログ)」があり、さらにその直後に「リビングの窓ガラスが割られた(別のログ)」があったとしたらどうでしょう?
「あ、これは野良猫じゃなくて、明らかに泥棒だ!」と気づけますよね。
この「いくつかのバラバラの出来事(イベント)を組み合わせて、裏の意図を見抜く仕組み」こそが、今回学ぶ「相関ルール(Correlation Rule)」なのです。
—
2. 攻撃者の手口をまとめた地図「MITRE ATT&CK」とは?
「じゃあ、泥棒がどんな手口を使うのか、どうやって予測すればいいの?」と思いますよね。
そこで登場するのが、MITRE ATT&CK(マイター・アタック)というフレームワークです。
難しく考える必要はありません。これは、世界中のセキュリティ専門家たちが、「サイバー攻撃者(泥棒)は、こういう順番でこういう手口を使って会社を狙ってくるよ!」という手口を網羅してくれた、いわば「悪党の全手口図鑑」のようなものです。
この図鑑には、攻撃の初期段階(偵察)から、侵入、潜伏、そして目的の達成(データの窃取)までが、ステップ順に綺麗に整理されています。
私たちが相関ルールを作るときは、この図鑑を参照しながら、「この手口と、次のあの手口が短時間に連続したら、それは間違いなく攻撃だ!」というシナリオを組み立てていくわけです。
—
3. 実践!SIEMの相関ルールを作ってみよう
百聞は一見に如かず。実際に、SIEMで使われる相関ルールの設定例を見てみましょう。
今回は、新人のIT担当者でもイメージしやすい「パスワード総当たり(ブルートフォース)からの、不正ログイン成功」というシナリオを例にします。
どんなシナリオ?
1. 攻撃者が、あるユーザーのログイン画面に対して、短時間に何回もパスワードを間違えて入力する(ブルートフォース攻撃 / MITRE ATT&CK ID: T1110)
2. その直後に、見事正解を見つけ出して「ログイン成功」のログが出る(有効なアカウントの悪用 / MITRE ATT&CK ID: T1078)
単に「パスワードを5回間違えた」というログだけなら、うっかり屋さんの社員かもしれません。しかし、「何度も間違えた直後に、同じアカウントでログインに成功した」となれば、それは泥棒が鍵をガチャガチャ当てずっぽうに試して、ついに入ってきてしまった瞬間です。
相関ルールの設定サンプル(Splunk等でのイメージ)
多くのSIEMでは、以下のようなクエリ(検索条件)やルール設定を書くことで、この一連の流れを検知します。
-- 【相関ルール名】短時間の連続パスワード試行からの不正ログイン検知
-- MITRE ATT&CK TTPs: T1110 (Brute Force) -> T1078 (Valid Accounts)
-- 1. まず、直近5分間のログを対象にします
index=auth_logs
(action="login_failed" OR action="login_success")
-- 2. ユーザー名ごとにグループ化します
| stats count(eval(action="login_failed")) as fail_count,
values(eval(action="login_success")) as has_success
by user, src_ip, span=5m
-- 3. 「失敗が5回以上」かつ「その後ログインに成功している」ものを絞り込む
| where fail_count >= 5 AND has_success="success"
-- 4. アラートとしてSOCアナリストに通知する
| table user, src_ip, fail_count, _time
この設定では、以下の条件が揃ったときに初めてアラート(警報)が鳴るようになっています。
- 条件A(時間軸): 5分という短い時間の中で起きていること。
- 条件B(回数軸): 失敗の回数が5回を超えていること。
- 条件C(結果軸): 最終的に「成功」で終わっていること。
このように複数のイベントを「時間」と「条件」で糸電話のように結びつける(相関させる)ことで、ノイズ(誤検知)を減らし、本当に対応すべき危険な攻撃だけをピンポイントでぶり抜くことができるのです。
—
4. 現場で役立つ!相関ルール作成の3つのコツ
最後に、私たちが実務で相関ルールを作るときに気をつけている、ちょっとしたコツをこっそりシェアしますね。
① 時間の窓(タイムウィンドウ)を意識する
攻撃者は人間なので、人間業のスピードで動くこともあれば、スクリプトを使って一瞬で終わらせることもあります。「5分以内」「1時間以内」など、その攻撃の性質に合わせて適切な時間設定を行うことが、誤検知を防ぐカギになります。
② 現場の「日常」を知ることから始める
「夜中の3時に社内から大量のファイルがダウンロードされた」というルールを作ったとします。でも、もしその会社に「海外の支社とデータ同期を行うバッチ処理が毎晩3時に走っている」という事情があったらどうでしょう? 大量の警報が鳴り響き、SOCはパンクしてしまいます。
ルールを作る前に、まずは「自社の普通の日常(ベースライン)」をしっかり知ることが何よりも大切です。
③ 小さく産んで、大きく育てる
最初から完璧なルールを作ろうとすると息切れします。最初は少し緩めの条件でルールを作り、実際にアラートが上がってきたら「あ、これはただの社内システムのエラーだな」とチューニングを重ねていく。この泥臭いブラッシュアップの繰り返しこそが、強いセキュリティチームを作る秘訣です。
—
まとめ
いかがでしたでしょうか?
「相関ルール」や「MITRE ATT&CK」といった言葉を聞くと、どうしても身構えてしまいますよね。でも本質は、家やお店の防犯カメラの映像を組み合わせて、「怪しい動き」にいち早く気づくための、とっても人間らしい知恵の延長線上にあるものです。
セキュリティに初めて触れるあなたも、今日から「1つの現象だけでなく、その前後のストーリーを見る」という視点を持て立派なセキュリティ・エンジニアの第一歩を踏み出しています。
一歩ずつ、焦らず、一緒に学んでいきましょう!次のインシデントハンドリングの現場で、あなたのその視点が会社を救うキッカケになる日が必ず来ますよ。
コメント