2012年8月11日土曜日

[ハッキング手法との対応]⑧HTTP Session Hijacking




前ハッキング技術で盗聴(sniffing)について検討した。 telnet、ftp、pop3などの非暗号化プロトコルのアプリケーションは、盗聴攻撃により、ユーザーアカウントとパスワードを盗用に対して脆弱であることを知った。同様に、我々は、Webブラウジングに使用するHTTPプロトコルは、これらの盗難に楽しむことができる。

HTTP Session Hijacking(あるいはSession ID Hijacking)と呼ばれる攻撃手法は、Webブラウジング時のセッション管理のために使用されるSession IDを盗聴やランダム推測攻撃(brute-force guessing)を通って盗用する手法である。まず、これらの攻撃についての基礎的な知識とHTTPプロトコルの特性とSession IDを理解していきましょう。


HTTPプロトコルの特性

HTTPは基本的に非決定保持(stateless)プロトコルである。一方、telnetやftpなどのプロトコルは、クライアントとサーバーの間に一つの接続(session)が成立して通信するプロトコルである。したがって、我々が通常のWebブラウザを開いてURLを入力し、ホームページに入ることは、そのホームページに含まれているページ(html)、画像(jpg、gifなど)は、Javaスクリプト(js)などのダウンロードのために、個々のいくつかのの80の要求(request)を送信した後、サーバーからそれぞれの応答(reply)
を受けることを意味する。

これらの一連のリクエストと応答が行われた後、そのサーバーとの通信は停止します。上記のような基本的な知識を知っている場合は、次のような質問をすることができます。 HTTPは、非決定保持プロトコルとしたが、Session Hijackingイラン攻撃はどのように可能なのだろうか?これは、HTTPセッション管理のために使用されるSession IDを通って可能である。


Session IDとは何ですか?

Webサーバーは、複数のWebページ要求者を区別するために、それぞれのユーザーのセッションに対して、任意の長い文字列値Session IDを付与します。ユーザーがホームページにアクセス時、または証明書ログイン時に生成される。これらのSession IDは、ユーザーのアカウント、パスワード、その他のIPアドレス、timestampなどの複数のパラメータを組み合わせて作成することができる。



Session IDは、ユーザーとの一連のWebサーフィンの動作をリンクさせることにより、Webサイトのログイン後のページを訪問するたびに毎回ログインを必要としない利便性を提供してくれる。

我々は、新聞、ホームページやポータルサイトに入るときに広告バナーが自動で切り替わるか、ショッピングモールやインターネットソジョクモルで購入カートのリストが維持されるのは、すべてこのような原理である。つまり、Session IDを使用して認証付(authentication
·authorization)と呼ばれるセッション管理を行うことができます。


Session IDはどこに存在するか?

Session IDは、私たちがよく聞くクッキー(cookie)と呼ばれる場所に格納されているのが一般的である。しかし、場合によっては、WebブラウザのアドレスバーURLやHTMLページのフォームのソース上のhiddenフィールドに含まれて現われたりもする。

1)
クッキー



2)
ウェブブラウザのアドレスバーのURL



3)
Webページのフォームのソース上のhidden field




Session IDの脆弱性は何ですか?

WebサーバーでSession IDの作成手法と管理手法に応じて、次のような脆弱性が存在することができる。

強力していないアルゴリズム(Weak Algorithm)
:session ID文字列値を作成するに当たり、攻撃者がreverseエンジニアリングが可能な簡単なアルゴリズムで生成された場合crackingやbrute-force guessing攻撃の危険性がある。

長さが短いSession ID:強力な暗号化アルゴリズムを使用しても、その長さが十分ではなく、短い場合には、crackingやbrute-force guessing攻撃の危険性がある。

アカウントのロックアウト機能の不備:ログインパスワードの特定の回数失敗については、通常、アカウントのロックアウト機能や、そのIPブロック機能を実装しています。しかし、通常Session IDの整合性の侵害や特性の回収の失敗については、このようなロック機能の実装が不十分である。したがって、brute-force guessing攻撃の危険性がある。

無限の有効期限のSession ID:ユーザーのログアウト後もサーバ側でセッションIDの値を廃棄せずに無制限に利用を認めた場合cookie sniffingやプロキシサーバのログ取得を通じsession IDの攻撃が可能だ。

平文で送信されるSession ID:サーバーからクライアントへのsession IDクッキーの配信方法が非暗号化方式でいる場合は、sniffingを介して、その値がさらされ、攻撃を受けることができる。特にSession IDの値自体は、ユーザー名やパスワードなどのプレーンテキストで構成されている場合は、直接攻撃が可能だ。

上記のような脆弱性のSession IDの攻撃の種類は次のとおりである。


Session IDの攻撃の種類

直接Cookie Sniffingを使用したSession IDの盗難
間接バイパス攻撃を使用したSession IDの盗難
Brute-force guessingを使用したSession IDの盗難

今までSession IDが何なのか、どのような形で存在するのか、なぜ脆弱かどうかについて調べた。次は、実際の攻撃の種類について説明し、対応策についても議論していきましょう。

0 件のコメント:

コメントを投稿