最近、不正アクセスが流行ってる。
世の中に脅威検知とか脆弱性検知とかのソリューションは山ほどあるけれど、全ての組織でそれらの恩恵に与るわけじゃない。 導入の手間とか、コスト面とか、データポリシーとか、まぁそこらへんの色々。
というわけで、最低限何かしらのLLMは使用するものの、今現在使っているツールを使って、システムに不審な点がないかをチェックする仕組みを考えてみる。
とはいっても物自体はシンプルで、手持ちのツールで以下のパイプラインを組むだけ。
- スクリプトなどでシステムのイベントや状態を収集する
- 収集結果を外部ストレージに退避する
- 定期的にログを取得し、AIに不審な点を分析させる
- 分析レポートを作成し、社内に共有する
なお、対象はクラウドプラットフォームに限ってない。
状態収集
まず、「1. スクリプトなどでシステムのイベントや状態を収集する」について。
例えば、ホストなら以下のようなものを集計する。
- SSHログイン履歴
- sudo実行履歴
- インストール済みパッケージファイルの改竄検知
- debsums など
- 意図していない実行バイナリの配置
すでに集計済みのものであれば、 それももちろん使える。
bpftrace
とか使うと、もっと細かいログとかも残せそう(ログ容量やばいかもだけど)
退避
後処理するために、「収集結果を外部ストレージに退避する」。
S3とか、Google Cloud Storageとか、そういうオブジェクトストレージとかを想定。 独自のログ基盤があるなら、そこに送るでもいいし、ホストと隔離されていればどこでもいい。
「3. 定期的にログを取得し、AIに不審な点を分析させる」で扱いやすいところに置くのがポイントかなぁ。
分析
「3. 定期的にログを取得し、AIに不審な点を分析させる」ということで、↑で退避した収集結果を、どこか隔離された環境でダウンロードして、そこでLLM使って分析する。
定期的、なので、LLM自体に高度な自律性は必要ない。
GitHub Actionsでもいいし、既存のワークフロー基盤でもいいし、どっかのホストのcronとかでもいい。
できれば、ダウンロードしてきた収集結果だけではなく、システムを構成するコードベースやアーキテクチャが理解できる資料やIaCコードがあると望ましい。
報告
そして、「4. 分析レポートを作成し、社内に共有する」。
LLMに分析した結果を何かしらのドキュメント形式にアウトプットさせて、それをSlackとかメールとかドキュメンテーションツールとかに投稿させる。 これによって、分析結果を人間が確認して、追加のアクション可否を判断する。
脅威度にラベルをつけさせて、一定以上だったら担当者に通知、みたいなこともして良いかもしれない。
これはtool callingより、ハーネス側の実装として組み込みたい。
(=
LLMエージェントが通知APIをcallするのではなく、レポート内容を見てHarness側が決定的手法で判断する)
大体、こんな感じ。
課題
もちろん、この程度の仕組みだと課題は少なくない。
- 短期間の不正なアクセスを見逃す
- 実行バイナリ置いて実行、即バイナリ削除するケース
- 意図しないSSHとかで検知はできるかもしれないけど、SSHログインの妥当性を判断できる運用である必要がある
- 外部ストレージに退避する収集結果の改ざん
- 収集スクリプトや収集結果を書き換えられたら終わり
- 収集スクリプト自体はおそらく中央管理されたものを配布した方が望ましいので、その場合改ざん検知はできるかも...
- この時の改ざん検知は外部から実行する必要があるが
- 収集結果を作成したら即ハッシュ計算して外部ストレージにハッシュ値退避、その後、本体の収集結果をゆっくり退避
- ↑を考えると、ホスト自体がcronするのではなくて、外部から定期的にAnsibleしてスクリプト動かす、みたいなアプローチの方がいいかもしれん?
- AIエージェントのFalse Negative
- AI自体が全てを判断しているわけではないが、異常とみなしてサマリーにも載せない可能性は当然ある
- このアプローチで満足いかなかったら、別のツールやソリューションを試してもろて
- でも大量の収集結果全部を人間がチェックしたとしても同様だよね
- AI自体が全てを判断しているわけではないが、異常とみなしてサマリーにも載せない可能性は当然ある
あとまぁ、他にも色々。
おわりに
これで完全とは思ってない。でも、何もやらないよりはマシ。何か気になることがあった時に毎度調査するのも手間だし。
むしろ、今まで見えてなかったものがAIを活用することによって見えてくるかもしれない。 調査スクリプト自体をAIが診断してもいいし、どのような監視項目が欠けているかのアドバイスを求めてもいい。
仮に攻撃する側がAIを活用しているとしたら、防御側でもAIを活用することで対抗しないとやられるだけになってしまう。 この流れは一過性ではないはず。
いきなり大掛かりにせず、こんな感じの小さなAI活用から始めてみて、実際にAIを活用する防御がどんなもんかの知見を集めていくのがええんちゃうかなぁ。