SSL/TLSインスペクションとブラウザ内中間者攻撃
セキュリティゲートウェイで暗号化されたHTTPSトラフィックを検査するタイミングと方法を学び、SSLストリッピングや悪意のある拡張機能など、ブラウザベースの攻撃の仕組みを理解します。
「SSL/TLSインスペクションとブラウザ内中間者攻撃」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
暗号化トラフィックを検査する理由
現在、Webトラフィックの90%以上をHTTPSが占めており、その中にはマルウェアのダウンロード、C2チャネル、データの持ち出しも含まれます。TLSを検査できない境界セキュリティツールからは、暗号化されたデータの塊しか見えないため、攻撃者に積極的に悪用される死角が生じます。SSL/TLSインスペクション(SSLインターセプション、SSLバンピング、HTTPSに対するディープパケットインスペクションとも呼ばれます)を使用すると、セキュリティゲートウェイはHTTPSトラフィックを復号、検査、再暗号化してからエンドポイントに到達させることができます。ほとんどのトラフィックがHTTPSである環境では、この可視性がWebコンテンツフィルタリング、DLP、マルウェア対策スキャンに不可欠です。
SSL/TLSインスペクションの仕組み
SSLインスペクションは、組織独自のセキュリティインフラストラクチャが実行する、制御された中間者攻撃です。手順は次のとおりです。ステップ1:クライアントがプロキシとのTLS接続を確立します(企業CAによって署名されたプロキシの証明書を使用します)。ステップ2:プロキシが、実際のサーバーの正規の証明書を使用して、そのサーバーとの別のTLSセッションを確立します。ステップ3:プロキシがクライアントからのトラフィックを復号して検査し、再暗号化してサーバーに転送します(逆方向も同様です)。MDMまたはグループポリシーによって企業CA証明書が管理対象のすべてのエンドポイントにあらかじめインストールされているため、クライアントはプロキシの証明書を信頼できます。
# SSL inspection flow
Client Proxy (SEG) Real Server
| | |
|--TLS ClientHello------>| |
| (proxy cert presented)| |
|<-TLS Established-------|--TLS ClientHello----->|
| |<-TLS Established------|
|--HTTPS Request-------->| |
| |--HTTPS Request------->|
| |<-HTTPS Response-------|
| (inspect, DLP, AV) | |
|<-HTTPS Response--------| |
| | |SSLインスペクションの除外
すべてのトラフィックを検査すべきとは限りません。組織では通常、法的または倫理的に機微なデータを扱うカテゴリを除外します。これには、銀行・金融サイト、医療ポータル、法律研究データベース、Certificate TransparencyおよびOCSPのURL(証明書検証を壊さないため)、証明書ピンニングを使用するサイト(再署名された証明書を拒否してアプリケーションが動作しなくなるため)が含まれます。除外対象は、インスペクションポリシーのバイパスリストとして管理します。法域によっては、従業員の監視に関する法律により個人的なWeb閲覧の検査が制限され、利用規定で明確に開示することが求められる場合があります。
# SSL inspection bypass list examples
ssl_inspect_bypass:
# Financial sites
- *.bankofamerica.com
- *.chase.com
# Healthcare
- *.mychart.com
# Certificate infrastructure
- ocsp.*.com
- crl.*.com
# App that uses cert pinning
- api.corporate-erp.com
# Government sites
- *.irs.gov
- *.ssa.gov証明書ピンニングとインスペクションのバイパス
証明書ピンニングは、アプリケーションが特定のサーバーに対して想定される証明書または公開鍵をハードコードし、証明書がOSのCAストアによって有効かつ信頼されている場合でも、値が一致しなければ接続を拒否する技術です。プロキシが再署名した証明書はピン留めされた値と一致しないため、SSLインスペクションは機能しなくなります。モバイルアプリ(銀行アプリや決済アプリなど)は、MitM対策として証明書ピンニングを頻繁に使用します。企業はピンニングされたアプリのインスペクションをバイパスする必要があり、そうしなければアプリが動作しなくなります。これは、SSLインスペクションを回避したい攻撃者が、マルウェアにピンニングを実装する可能性も意味します。
SSLストリッピングとは
SSLストリッピングは、攻撃者がHTTPSトラフィックをインターセプトしてHTTPにダウングレードし、コンテンツを平文で読み取り、変更できるようにする中間者攻撃です。この攻撃は、HTTPSへリダイレクトされる前にHTTPで開始される接続に対して機能します。攻撃者は最初のHTTPリクエストをインターセプトし、正規のサーバーとはHTTPS接続を確立しながら、被害者とはHTTP接続を維持して、トラフィックを透過的に中継します。被害者からは、そのサイトがHTTPで表示されているように見えます。HTTP Strict Transport Security(HSTS)は、ユーザーがHTTPと入力した場合でも、ドメインに対して常にHTTPSを使用するようブラウザーに指示することで、SSLストリッピングを防ぎます。
# HSTS response header (server sends this)
Strict-Transport-Security: max-age=31536000;
includeSubDomains;
preload
# max-age=31536000 = 1 year in seconds
# includeSubDomains = also enforces HTTPS on subdomains
# preload = include in browser HSTS preload list
# (HSTS enforced even on first visit)
# After receiving HSTS header:
# Browser WILL NOT connect via HTTP for 1 year
# SSL stripping becomes ineffectiveMan-in-the-Browser(MitB)攻撃
Man-in-the-Browser(MitB)攻撃は、Webブラウザーの内部に侵入するバンキング型トロイの木馬による攻撃です。悪意のある拡張機能やブラウザープロセスへのインジェクションとして動作し、ユーザーに気付かれないままWebページや取引を変更します。ネットワーク上のMitMとは異なり、MitBは暗号化されたセッションの内部、つまりブラウザー層で動作するため、TLSでは保護できません。MitBマルウェア(Zeus、SpyEye)は、支払い金額の変更、振込先口座番号の改ざん、ワンタイムパスワードの窃取、ユーザーが入力した後のフォームの密かな変更などを実行できます。変更は、TLSで復号された後、ユーザーにページがレンダリングされる前に行われます。
MitB攻撃の仕組み
MitBマルウェアは、アプリケーション層でブラウザーAPIにフックします。Windowsでは、DLLインジェクションやCOMハイジャックを使ってブラウザーのプロセス(Chrome、Firefox、IE)にコードを注入し、JavaScript関数やDOM操作APIにフックします。ユーザーが銀行のサイトにアクセスすると、マルウェアはページや取引確認を描画するJavaScriptを傍受し、送金先口座を攻撃者の口座に変更します。サーバーから見ると取引は正しく、サーバー側のHTTPSログにも異常は記録されません。ユーザーには、指定した金額を含む正しい確認画面が表示されますが、実際の送金先は攻撃者の口座になっています。
MitBへの防御策
MitBへの防御には、多層的な対策が必要です。ブラウザー分離(Menlo Security、Zscaler Browser Isolation)では、ブラウザーの描画をリモートのクラウドVM上で実行し、ユーザーの画面にはピクセル情報だけをストリーミングします。これにより、マルウェアはリモート環境で実行されているブラウザープロセスに注入できません。取引の検証では、銀行が帯域外のチャネル(取引内容を含むSMS OTPなど)を通じて取引の詳細(金額 + 送金先)を確認するため、ユーザーはサーバーが実際に受信した内容を検証する必要があります。ブラウザープロセスへのDLLインジェクションを検知するエンドポイントEDRによって、MitB感染を特定できます。ブラウザー拡張機能の許可リスト運用は、悪意のある拡張機能を防止します。
悪意のあるブラウザー拡張機能
悪意のあるブラウザー拡張機能は、エンドポイントに対する重大な脅威です。拡張機能には広範な権限があり、ページの内容を読み取ったり、リクエストを変更したり、フォーム送信を傍受したり、Cookieにアクセスしたりできます。便利なツール(広告ブロッカーやダークモードなど)を装った拡張機能が、認証情報を収集したり、広告を挿入したり、トラフィックをリダイレクトしたり、MitBエージェントとして動作したりする可能性があります。エンタープライズ制御として、Group PolicyまたはMDMを使い、拡張機能のインストールを承認済みの許可リストに制限します。Chrome Web StoreまたはFirefox Add-ons以外のソースからの拡張機能のインストールをブロックします。管理対象エンドポイントにインストールされている拡張機能を定期的に監査し、ポリシー違反がないか確認します。
# Chrome enterprise extension control (Group Policy)
# Computer Config > Admin Templates > Google Chrome
# > Extensions > 'Configure the list of force-installed apps'
# Add extensions by ID:
ExtensionInstallAllowlist:
- 'efaidnbmnnnibpcajpcglclefindmkaj' # Adobe Acrobat
- 'cjpalhdlnbpafiamejdnhcphjbkeiagm' # uBlock Origin
ExtensionInstallBlocklist:
- '*' # Block all others
# Force-install approved extensions from URL
ExtensionInstallForcelist:
- 'id;https://internal-extension-server/update.xml'TLSインスペクションポリシーとプライバシーのバランス
SSLインスペクションを導入する組織は、従業員のプライバシーへの影響に対処する必要があります。多くの法域や労働関連法では、暗号化されたトラフィックを監視する前に、明確な通知を行うことが求められます。ベストプラクティスは、HTTPSを含むネットワークトラフィックを検査する場合があることを明記したAcceptable Use Policy (AUP)を公開すること、入社時に従業員からAUPへの同意を得ること、個人のオンラインバンキングサイトや医療サイトにはバイパスカテゴリを設定すること、復号したトラフィックのログを必要な期間(通常は30~90日)だけ保存することです。導入前に法務顧問がインスペクションプログラムを確認する必要があります。特にEU諸国では、GDPRによって従業員の監視により厳しい制限が設けられています。
HTTPS Certificate Transparency (CT)
Certificate Transparencyは、すべての公的に信頼されたTLS証明書について、ブラウザーが信頼する前に、公開監査可能な追記専用のCTログに記録することを求めるフレームワーク(RFC 6962)です。CTにより、ドメイン所有者は誤発行された証明書を監視できます。攻撃者が何らかの方法でCAをだまして自分のドメイン用の証明書を発行させた場合(2011年のDigiNotarの事例など)でも、CTログによってほぼリアルタイムに検知できます。crt.shなどのツールを使うと、セキュリティチームは自分のドメインに対して発行されたすべての証明書をCTログから検索できます。ブラウザーは、TLSハンドシェイクに埋め込まれたログ包含証明(Signed Certificate Timestamps、SCT)を要求することでCTを適用します。
# Search CT logs for certificates issued for your domain
# Use crt.sh public CT log aggregator
curl 'https://crt.sh/?q=example.com&output=json' | \
python3 -m json.tool | grep '"name_value"'
# Result shows all certs issued for example.com and
# *.example.com including: issuer, validity, SANs
# Monitor for unexpected certs = potential mis-issuance
# Also subscribe to cert monitoring services:
# Facebook Certificate Transparency Monitoring
# sslmate.com/certspotter
# Google cert-manager webhook notificationsクイックチェック
このレッスンで扱ったCompTIA Security+ (SY0-701)の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、SSL/TLSインスペクションが、管理対象エンドポイントで信頼されている企業CA証明書を使い、プロキシでHTTPSトラフィックを復号、検査、再暗号化すること、SSLストリッピングがHTTPSをHTTPにダウングレードする攻撃であり、HSTSによって防止できること、そしてMan-in-the-Browser攻撃がTLS層より上位でブラウザープロセスにコードを注入し、取引を気付かれないまま変更する攻撃であることを学びました。この攻撃には、ブラウザー分離または帯域外の取引検証が防御策として必要です。次は、安全でないプロトコルを安全な代替プロトコルに置き換える方法を学びます。
よくある質問
「SSL/TLSインスペクションとブラウザ内中間者攻撃」レッスンは無料ですか?
はい。「SSL/TLSインスペクションとブラウザ内中間者攻撃」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「SSL/TLSインスペクションとブラウザ内中間者攻撃」で何を学びますか?
セキュリティゲートウェイで暗号化されたHTTPSトラフィックを検査するタイミングと方法を学び、SSLストリッピングや悪意のある拡張機能など、ブラウザベースの攻撃の仕組みを理解します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「SSL/TLSインスペクションとブラウザ内中間者攻撃」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- メール認証:SPF、DKIM、DMARC
- セキュアメールゲートウェイとスパム対策
- WebコンテンツフィルタリングとDNSシンクホール
- SSL/TLSインスペクションとブラウザ内中間者攻撃