HTTPSに対する中間者攻撃の現状とその対策

神奈川大学理学部情報科学科 2014 年度学士論文要旨
指導教員:松尾和人
HTTPS に対する中間者攻撃の現状とその対策
瀬戸崎 喬
1
はじめに
近年、インターネット上での商品の売買や、電子決済
などの電子商取引の取引数は年々増加している。このよ
うな取引を行う場合、個人情報や取引情報などの重要な
情報のやり取りを行うことになる。また、ウェブサイト
にログインする際など、ユーザ認証のために ID やパス
ワードをやりとりすることは日常的に行われている。こ
のような状況では、HTTPS というプロトコルを利用す
る。HTTPS とは、HTTP データを SSL/TLS 通信路を
通すことによって暗号化し、秘匿通信を行うプロトコル
のことである。これにより、前述のような重要な情報を
第三者に盗聴・改ざんされないようにしている。しかし、
HTTPS による秘匿通信を破る、中間者攻撃という攻撃
方法が存在する。この攻撃には、攻撃者が自身の証明書
を利用する方法 [1] や、sslstrip [2] など様々な種類が存在
する。
そこで本研究では、このような中間者攻撃に対してブ
ラウザが行っている対策と、今後行っていくべき対策に
ついて調査する。そのため、まず中間者攻撃を行うため
の環境を構築する。そして、HTTPS に対する中間者攻
撃が行われる場合、ブラウザがどのように動作するか調
査する。この調査結果から今後行っていくべき対策につ
いて考察する。
2
2.2
Sslstrip [2]
Sslstrip は、前述のような偽の証明書を利用しない中間
者攻撃である。この攻撃は、HTTP 接続をしている web
ページ内にある HTTPS リンクを HTTP リンクに変更
する方法である。攻撃方法を図 2 に示す。
中間者攻撃
中間者攻撃とは盗聴・改ざん方法の 1 つである。攻撃
者が通信を行う二者間に割り込み、送信者と受信者の両
方になりすますことで、気づかれることなく通信内容の
中身を盗聴したりすり替えたりする手法である。この攻
撃が成功すると、二者間を往き来するデータを全て入手
することが可能となり、攻撃者は通信を完全に支配する
ことになる。HTTPS に対する中間者攻撃は様々な種類
のものが存在するが、本研究では攻撃者自身の公開鍵証
明書を利用する方法と、証明書を利用しない sslstrip の 2
つに焦点を当てる。
2.1
者は自身の公開鍵証明書を作成しておく。次に、攻撃者
はユーザとサーバのやり取りを監視する。そして、サー
バが HTTPS 接続をするためのサーバ証明書をユーザに
送信しようとした際に、そのサーバ証明書を自身の証明
書とすり替えてユーザに送信する。これにより、ユーザ
と攻撃者の間、攻撃者とサーバの間の 2 つの HTTPS 接
続が構築される。ここで、攻撃者は 2 つの HTTPS 接続
に使用する鍵を所持しているため、どちらの暗号化され
た通信も復号する事が可能である。したがって、攻撃者
はその通信内容を盗聴することが可能となる。
攻撃者が自身の証明書を利用する攻撃 [1]
攻撃者が自身の証明書を利用する中間者攻撃の大まか
な流れを図 1 に示す。
図 1: 攻撃者が自身の証明書を利用する中間者攻撃の流れ
この攻撃方法では、攻撃者が中間者としてユーザとサー
バの間にいることを前提条件とする。まず、事前に攻撃
図 2: Sslstrip による HTTPS リンク変更攻撃の流れ
この攻撃でも、攻撃者が中間者としてユーザとサーバ
の間にいることを前提条件とする。ログイン機能などを
実装している web サイトは、ユーザが HTTP 通信によっ
て取得するページ内に HTTPS リンクを用意している。
ユーザはこのリンクを利用して HTTPS 接続で別ページ
へアクセスする。Sslstrip はこのリンクを書き換え、ユー
ザに HTTP 接続によって別ページへアクセスさせる。こ
れにより通信が暗号化されず、攻撃者はユーザの ID と
パスワードのような重要な情報を盗むことができる。
3
実験環境の整備
本研究では始めに、HTTPS に対する中間者攻撃の実
験のために実験環境を構築した。今日のネットワークの
構成は、ユーザのコンピュータとインターネットの間に
ルータがあり、それを介して通信することが一般的であ
る。そこで実験環境はルータを中間者として中間者攻撃
を行う環境とした。
実験環境では、VMware Player 6.0.3 を使用して仮想
マシンを 3 台用意した。OS は CentOS 6.6 を使用する。
3 台の仮想マシンは、ユーザ用 (端末 A)、攻撃用 (端末
B)、Web サーバ用 (端末 C) とした。端末 A には、firefox
(456 種類)、Internet Explorer (6 種類)、Chromium (78
種類)、SeaMonkey (204 種類)、w3m (18 種類)、lynx (58
種類) の 6 種類のブラウザを入手できる最古バージョンか
ら最新バージョンまで全てを用意した。端末 B は、ユー
神奈川大学理学部情報科学科 2014 年度学士論文要旨
ザとサーバの通信を中継するルータとして動作するよう
に設定した。また、squid 3.4.5 を導入しプロキシサーバ
を構築することで、攻撃者が自身の証明書を利用する中
間者攻撃を再現した。Sslstrip を使用する場合は、squid
の代わりに sslstrip を起動することで擬似環境を構築し
た。端末 C には、Apache 2.2.15 を導入しサーバを構築
し、サーバは HTTPS 接続できるように設定した。
4
ブラウザによる対策の調査
HTTPS に対する中間者攻撃への対策を考察するため
に、それぞれのブラウザの攻撃に対する対策状況を調査
した。
調査方法
4.1
あらかじめ端末 B 内の中間者攻撃に必要なものを作
動させておく。まず、ユーザが web サーバのあるペー
ジ (http://192.168.0.2/welcome.html) にアクセスす
る。そして、そのページ内のリンク (https://192.168.
0.2/test.html) をクリックし、HTTPS 接続を確立を試
みる。すると端末 B による中間者攻撃が行われる。この
時ブラウザがどのような動作をするか調査する。
調査結果
4.2
それぞれの攻撃方法ごとにブラウザの動作についての
調査結果をまとめていく。
4.2.1
攻撃者が自身の証明書を利用する中間者攻撃
この中間者攻撃をされている時のブラウザの動作ごと
に、A∼D の 4 つのグループに分けた。
A グループは、攻撃をされているにもかかわらずブラ
ウザが特別な動作を行わないグループである。B グルー
プは、攻撃を受けているとブラウザが検知しポップアッ
プで警告を出すグループである。この警告を無視して接
続をする簡単な方法も用意されている。C グループは、
ブラウザのウィンドウ全体で警告を出すグループである。
詳細の中に警告を無視して接続する方法が用意されてい
る。D グループも、ブラウザのウィンドウ全体で警告を
出すグループである。C グループと違い、このグループ
では警告を無視して接続する方法は用意されていない。
それぞれのブラウザの動作の変化とその時期をまとめ
たものが表 1 である。
表 1: ブラウザの動作の変化と時期 (2015 年 1 月現在)
指導教員:松尾和人
5.1
ユーザ単独の対策
ユーザの単独の対策は、ブラウザがサーバからのレス
ポンスであるページ内容をチェックし、HTTPS で接続す
るべきサイトが HTTP で接続されていることを検知する
ことや、何か設定をすることで特定のページには HTTPS
で接続するようにするなどが考えられる。この対策とし
て考えられるものは、(1) 取得したページのアドレスを
チェック、(2) 取得したページのソースコード内をチェック、
(3) HTTPS Finder [3] の利用、(4) HTTPS Everywhere
[4] の利用、(5) HTTPS サイトをブックマーク、以上 5 つ
である。
5.2
サーバ単独の対策
サーバ単独の対策は、特定のページを HTTPS でしか
接続できないようにしたり、ページに細工をするなどが考
えられる。この対策として考えられるものは、(1) HSTS
(HTTP Strict Transport Security) [5] の利用、(2) HSTS
と HSTS Preload の利用、(3) .htaccess による https リ
ダイレクトの利用、(4) Javascript をページに組み込み、
ブラウザがプロトコルを調査、(5) HTTPS 接続のための
リンク URL を分解し送信、以上 5 つである。
5.3
ユーザとサーバの連携による対策
ユーザとサーバの連携では、特定のデータをやり取り
することで対策を取ることになる。この対策方法として
考えられるものは、(1) 全てのページを HTTPS で接続、
(2) ハッシュ値による改ざん検知、(3) クライアント証明
書の利用、以上 3 つである。
5.4
対策の有効性
ここまで挙げてきた対策を将来も考慮した上で検討す
ると、サーバ単独の対策である HSTS と HSTS Preload
の利用、ユーザとサーバの連携による対策である全ての
ページを HTTPS 接続とクライアント証明書の利用、以上
3 つが今後も対策として利用できるという結論となった。
6
まとめ
HTTPS に対する中間者攻撃を行うための実験環境を
構築し、2 種類の中間者攻撃に対するブラウザの対策を
調査した。調査結果から、sslstrip はどのブラウザにおい
ても対策が講じらていないことが判明した。そこで、本
研究では sslstrip に対する対策についても考察を行い、3
つの対策方法を提案した。しかし、ユーザのブラウザ側
でどのような状況でも利用できる対策を発見できなかっ
た。この方法を検討し実装することが今後の課題である。
参考文献
[1] F. Callegati, W. Cerroni, M. Ramilli, Man-in-the-Middle
Attack to the HTTPS Protocol, IEEE Security and Privacy Magazine 03/2009
4.2.2
Sslstrip
この攻撃は全てのブラウザで警告を出すなどの特別な
動作をすることがなかった。
5
Sslstrip への対策の考察
前節から sslstrip に対する考察をする必要があること
が分かった。そこで、この攻撃に対する対策を、ユーザ
単独、サーバ単独、ユーザとサーバの連携の 3 つの視点
から考察する。
[2] M.
Marlinspike,
New
Tricks
For
Defeating SSL In Practice,
https://www.blackhat.
com/presentations/bh-dc-09/Marlinspike/
BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf,
Black Hat DC 2009
[3] Kevin Jacobs, HTTPS Finder, https://code.google.
com/p/https-finder/
[4] Electronic Frontier Foundation, HTTPS Everywhere,
https://www.eff.org/https-everywhere
[5] RFC 6797, HTTP Strict Transport Security, http://
tools.ietf.org/html/rfc6797
[6] Google Inc., HSTS Preload, https://hstspreload.
appspot.com/