新しい環境に対して新規に SIEM の検知ルールを検討する必要性がでてきたため、いろいろな参考文献を見ながら自分なりの考え方を整理してみました。
その結果、今回については以下の考え方で進めるのがよいのではないかと整理してみましたが、環境や関係者によって進め方は変わってくると思いますので、一例として参考になると幸いです。
SIEM検知ルール作成の流れ
1.データフローダイアグラム(DFD)を作成
2.STRIDEを利用して脅威の洗い出し
3.Attack Treeを利用して脅威に対する攻撃手法を整理
4.各攻撃手法について防御/検知などを選定
1.データフローダイアグラム(DFD)を作成
データフローダイアグラム(DFD)の作成については、下記、ウェルスナビさんのブログが大変参考になったので参考にさせていただきました。
脅威モデリングを参考に、社内全体のセキュリティリスク可視化を試みた話(ウェルスナビ開発者ブログ)
https://tech.wealthnavi.com/entry/20240423/1713841200
DFD 作成にあたって検討が必要だった点は以下の通りです。
<検討した点>
・どこまでこまかくエンティティを記載する必要があるのか
・同じエンティティ間でも双方向に流れがある場合は矢印は別々に書いたほうがいいか
・境界線(Trust Boundary)をどういう基準でひけばいいのか
また、DFD を作成することで以下のメリットがあり、まず最初に作成してみてよかったと考えています。
<DFD作成のメリット>
・通信の流れを整理することで、脅威を検討すべきルートが明らかになる
・脅威の洗い出しポイントが明確になる(通信の流れとTrust Boundaryが交わる部分を脅威の洗い出しポイントとしました。(STRIDE-per-Interaction))
2.STRIDEを利用して脅威の洗い出し
STRIDE の利用については、マイナビニュースさんのサイトが非常に有益だったので参考にさせていただきました。
Kubernetesのセキュリティ対策の第一歩とは?(マイナビニュース)
https://news.mynavi.jp/techplus/article/k8ssecurity-1/2
進め方としては、1.で洗い出した脅威の洗い出しポイント(通信の流れとTrust Boundaryが交わる部分)毎に、以下のような表で脅威を整理していく感じです。
通信元 | 通信先 | 通信内容 | STRIDE | 想定脅威 |
モバイル | VDI | リクエスト | S | モバイルなりすまし |
T | リクエスト改竄 | |||
R | ー | |||
I | リクエストデータ漏洩 | |||
D | サービス拒否攻撃 | |||
E | ー |
ちなみに ChatGPTに以下のような質問をしたところ、いい感じでSTRIDEの具体的な脅威や対策を説明してくれました。
<質問>
Azure の AVD環境に対してSTRIDEで可能な限り脅威を洗い出してもらうことは可能でしょうか?
<ChatGPTの回答>
もちろん、Azure Virtual Desktop (AVD) 環境に対して、STRIDEフレームワークを用いて脅威を洗い出すことは可能です。それでは、各脅威カテゴリごとにAVD環境に特有の脅威と対策を検討してみましょう。
Spoofing (なりすまし)
脅威:
攻撃者が正当なユーザーになりすましてAVDにアクセスする。
不正な認証情報を使用して管理者権限を取得する。
対策:
多要素認証 (MFA) の導入。
Azure AD Conditional Accessを使用してリスクベースのアクセス制御を実装する。
強力なパスワードポリシーを適用する。
Tampering (改ざん)
脅威:
攻撃者がAVDセッションの設定やデータを改ざんする。
仮想デスクトップ上のアプリケーションやファイルを不正に変更する。
対策:
データの整合性を保つために デジタル署名 や ハッシュ関数 を使用する。
Azure Policyを使用してリソースの一貫性を監視し、ポリシー違反を検出する。
仮想デスクトップの監査ログを定期的に確認する。
Repudiation (否認)
脅威:
ユーザーが自身の行動を否認することができる。
攻撃者が不正な行為を行い、その痕跡を残さない。
対策:
すべての重要な操作を記録する 監査ログ を導入。
Azure Monitorを使用してログの収集と分析を行い、異常な活動を検出する。
Log Analyticsを利用して詳細なログ分析を実施する。
Information Disclosure (情報漏洩)
脅威:
攻撃者が機密情報に不正にアクセスする。
データが暗号化されずに転送されることによる漏洩。
対策:
データ暗号化 を徹底する(転送中および保存時の暗号化)。
Azure Key Vaultを使用して機密情報を安全に管理する。
ネットワークセグメントの分離とアクセス制御リスト (ACL) を使用してアクセスを制限する。
Denial of Service (サービス拒否)
脅威:
攻撃者がAVD環境を過負荷にしてサービスを停止させる。
リソース消費型攻撃により正当なユーザーが利用できなくなる。
対策:
DDoS保護 サービスを導入し、ネットワークの過負荷攻撃を防ぐ。
Azure Resource Manager (ARM) ポリシーを使用してリソースの使用量を制限する。
Azure Monitorを使用してリソース使用率を監視し、異常な動作を検出する。
Elevation of Privilege (権限昇格)
脅威:
攻撃者が低権限のユーザーアカウントを利用して管理者権限を取得する。
アプリケーションやサービスの脆弱性を突いて権限を昇格する。
対策:
ロールベースのアクセス制御 (RBAC) を実装し、最小権限の原則を適用する。
Azure Security Centerを使用して脆弱性を検出し、迅速に対策を講じる。
定期的なセキュリティパッチの適用とセキュリティアップデートの管理。
また、想定脅威を広げるには MITRE ATT&CKを利用するのもよいと思います。
3.Attack Treeを利用して、脅威に対する攻撃手法を整理
Attack Treeについてはも、マイナビニュースさんのサイトが非常に有益だったので参考にさせていただきました。
これについてもChatGPTに以下のような質問をしたところ、いい感じの回答をしてくれました。
<質問>
Spoofing (なりすまし)の「攻撃者が正当なユーザーになりすましてアクセスする。」について、Attack Treeをつかって具体的な攻撃手法を整理してもらえませんか?
<ChatGPTの回答>
はい、Attack Treeを用いて「攻撃者が正当なユーザーになりすましてアクセスする」シナリオを具体的に整理してみます。Attack Treeは、脅威の構造を視覚的に表現し、各攻撃手法を階層的に整理するためのツールです。
目的: 攻撃者が正当なユーザーになりすましてAVDにアクセスする
├── フィッシング (Phishing)
│ ├── メールフィッシング
│ ├── スピアフィッシング
│ ├── Vishing (Voice Phishing)
│ └── Smishing (SMS Phishing)
├── マルウェア (Malware)
│ ├── キーロガー
│ ├── リモートアクセスツール (RAT)
│ └── フェイク認証ページ
├── ソーシャルエンジニアリング (Social Engineering)
│ ├── 偽のカスタマーサポート
│ ├── 信用の偽装
│ └── SNS経由の情報収集
├── 技術的攻撃 (Technical Attacks)
│ ├── ブルートフォース攻撃
│ ├── 辞書攻撃
│ └── セッションハイジャック
└── 情報漏洩 (Information Leakage)
├── データベースの侵害
├── キャッシュの盗難
└── コードインジェクション
4.各攻撃手法について防御/検知など選定
3.で攻撃手法が整理できたら、それぞれについて防御できているか確認し、防御できていない、もしくは防御できているが予兆としてログを監視したい場合には SIEMを利用した監視をするとよいと思います。
![](http://image.moshimo.com/af-img/0068/000000004159.gif)
コメントを残す