eMudhra CAインシデント分析:主要な発見と影響
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
インドの証明機関eMudhraは、安全でないプライベートキーに結び付けられた8つの中間証明書を誤って発行しました。この侵害により、攻撃者がインターネット上の任意のホスト名に対する有効なTLSおよびコード署名証明書を生成できる可能性があります。この問題は、特に最新のセキュリティ更新を受けていない組み込みシステムやデバイスに接続されるネットワークに重大なリスクをもたらします。
調査
調査により、このインシデントはeMudhra中間証明書に関連する安全でないプライベートキーから発生したことが判明しました。この分析は、Zeekを使用してネットワークトラフィック内のこれらの証明書を、そのSubject Public Key Info(SPKI)ハッシュに一致させることで特定することに焦点を当てています。このアプローチは、クロスサインされた証明書や潜在的な署名の変更をも考慮するため、証明書フィンガープリントの一致よりも信頼性があります。
緩和策
主要なブラウザおよびオペレーティングシステムのベンダーは、ChromeのCRLSetやMozillaのOneCRLなどの不信メカニズムに影響を受けた証明書を追加しました。ユーザーは、これらの不信変更を受け取るために、デバイスを完全に更新する必要があります。ネットワークの監視には、Zeekパッケージを展開してください。 emudhra-weak-keys TLSハンドシェイク中に影響を受けた証明書を検出できるようにします。
対応
Zeekログに Compromised_Intermediate_Cert 通知が表示された場合、セキュリティチームは宛先ホストと接続しているクライアントの両方を調査する必要があります。 Compromised_Intermediate_Cert_Established アラートは、クライアントが潜在的に不正な証明書を正しく受け入れたことを示します。組織はまた、組み込み、レガシー、およびその他の潜在的に古いデバイスのパッチ状況を確認する必要があります。
攻撃の流れ
検出
侵害されたeMudhra中間CA証明書が観測されました(Zeek経由)
emudhra-weak-keysパッケージによるeMudhra中間CA通知の侵害(Zeek経由)
Zeek経由のTLSハンドシェイクにおける侵害されたeMudhra中間CA証明書
侵害されたeMudhra中間CA証明書の検出 [Azure Auditlogs]
シミュレーション実行
-
攻撃のシナリオとコマンド: 敵は、侵害されたeMudhra中間CAから証明書を取得しました。標準のセキュリティコントロールを回避するために、この証明書を使用してTLSハンドシェイク時に提示される悪意のあるリスナーをセットアップします。目的は、有効だが侵害された信頼のチェーンを使用しているように見えるC2チャネルを確立することです。これをシミュレーションするために、
opensslを使用して、侵害されたeMudhra証明書のメタデータ/フィンガープリントを模倣する証明書を使用してローカルのWebサーバーをホストします。その識別ロジックに基づいて”notice”をトリガーするようにZeekセンサーを強制します。 -
リグレッションテストスクリプト:
# 1. 侵害されたeMudhra署名を模倣したモック証明書を生成する # 実際のシナリオでは、攻撃者は実際の侵害された証明書を使用します。 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/C=IN/ST=State/L=City/O=eMudhra/CN=Compromised_Test_CA" # 2. この証明書を使用してローカルのWebサーバーを開始する # バックグラウンドプロセスを使用してサーバーをホストします openssl s_server -accept 4443 -cert cert.pem -key key.pem -quiet & SERVER_PID=$! # 3. サーバーが初期化されるのを待つ sleep 2 # 4. TLSハンドシェイクをトリガーする(これによりZeekトラフィックが生成されます) # 注意: 実際のラボでは、このcertを"Compromised_Intermediate_Cert"として識別する # スクリプト/プラグインを特定の条件でZeekセンサーに構成する必要があります。 curl -k https://localhost:4443 # 5. クリーンアップ(クリーンアップセクションで処理されます) kill $SERVER_PID -
クリーンアップコマンド:
# 生成されたモック証明書ファイルを削除し、サーバーを停止 rm -f key.pem cert.pem # サーバープロセスがまだ実行中の場合: pkill -f "openssl s_server"