言うまでもなくパスワードは重要である。高価なセキュリティ装置をいくら導入しても,パスワードを破られれば意味はない。パスワードを破って侵入を試みる攻撃は後を絶たず,この3カ月ではFTPサーバーを対象とした攻撃(認証失敗)やSSHサーバーを対象とした攻撃(パスワード推測行為:SSH_Brute_Force)が多数報告されている。FTPサーバーへの攻撃が多いのは,「MPack」「IcePack」といったツールを使った攻撃が増えているため。これらの攻撃ツールは,FTPが稼働している複数のサーバーの一覧を登録すると,それぞれに自動的に攻撃を仕掛けるようになっている。IBM ISSのSOC(Security Operation Center)でも,同様の攻撃を多数検出している。しかも攻撃の件数は目立って増えている。この記事を最初に公開した1年半ほど前に比べ,ピーク時の攻撃件数は20倍以上である(図1)。


図1 イベントの検出推移[注1] [画像のクリックで拡大表示]

注1 監視デバイス数の変化による影響を排除するために,監視デバイス100台あたりの検出イベント数に補正している。

 システムの脆弱性については管理者がコントロール可能であるが,パスワードはそれぞれのユーザーが管理する必要がある。このため,パスワードの重要性はもっと周知されるべきだと筆者は考えるが,システムの脆弱性に関する報道と比較すると,パスワードの問題がメディアで取り上げられる機会は少ない。

 そこで本稿では,セキュリティ対策の基本であるパスワードの取り扱いについて改めて解説したい。

パスワード破りの方法

 パスワードを破る方法には,さまざまなものが存在する。前述の「SSH_Brute_Force」もそのひとつである。ここでは,基本的なパスワード破りの方法を紹介する。パスワードがどのような方法で破られるのかを理解することは,対策を講じる上で必ず役に立つ。

(1)盗聴

 TELNETやFTP,POP,HTTPなどのプロトコルは,アカウントとパスワードを暗号化しない状態(平文)でやり取りする。このため,ネットワーク上で通信を盗聴すれば,パスワードを容易に盗むことができる。

 SSHやHTTPSなどでは通信を暗号化するのでネットワーク上での盗聴は難しいが,これらのプロトコルを使っていても万全とはいえない。というのも,暗号化する前に盗聴される恐れがあるからだ。例えばスパイウエア(キーロガー)は,ユーザーのキー入力を盗聴するので,通信が暗号化されていても,パスワードを盗まれる可能性がある。

(2)パスワード・ファイルの解析

 システム(コンピュータなど)に格納されているパスワード・ファイルを解析する方法もある。通常,パスワードは一方向ハッシュと呼ばれる形式で暗号化され,パスワード・ファイルに保存されている。

 ユーザーがパスワードを入力すると,システムはパスワード・ファイルに保存したときと同じアルゴリズムで一方向ハッシュを作成し,保存されている一方向ハッシュと比較する。これらが一致すると,システムは入力されたパスワードが正しいと判断する。

 パスワード・ファイルにはハッシュしか保存されていないので,そのままではパスワードは分からない。しかし,パスワード・ファイルを盗み出して試行錯誤を繰り返せば,パスワードを推測することは可能である。それが,パスワード・ファイルの解析である。

 パスワードにはどのような文字列が使われているのか分からない。パスワードを突き止めるには,ハッシュが一致するまで文字列を次々に変えて試行する必要がある。このため,この方法は現実的ではないと思われる方もいるだろう。しかし,実はきわめて“強力”な手法である。

 筆者の1人がかかわったセキュリティに関する案件では,この方法を使って特定システムで使われているパスワードの強度をチェックした。すると,たった5分でおよそ8割のアカウントのパスワードを突き止めることができた。

 この方法を使うにはパスワード・ファイルを入手する必要がある。このため,ネットワーク経由でパスワード・ファイルを盗む攻撃が多数出現している。例えば,メール・サーバーやニュース・サーバーの脆弱性を悪用する攻撃や,Webサーバー・ソフトやWebアプリケーションの脆弱性を突いてパスワード・ファイルを取得する攻撃などが確認されている。

 パスワード・ファイルの解析では,どういった文字列をパスワードの“候補”にするかによって,その“効率”が変わってくる。パスワードを推測する方法としては,「辞書攻撃」とよばれる方法と「総当り攻撃」と呼ばれる方法がある。

 辞書攻撃では,パスワードとして使われることが多い単語を収めた“辞書”を利用する。その辞書中の単語をパスワードの候補として使用するのである。パスワード破り用の特別な辞書ファイルが存在するが,一般的な辞書ファイル(辞典など)が使用される場合もある。

 総当り攻撃では辞書を使わない。文字通り,文字列を次々と生成してパスワードの候補として使用する。この方法では,辞書に載っていない複雑なパスワードを使っている場合でも推測可能であるが“ハズレ”も多いので,解析には非常に時間がかかる。

 実際に出回っているパスワード推測ツールでは,辞書攻撃と総当り攻撃を組み合わせて使っている。よく使われているのは,以下のような推測方法である。

(a)辞書に登録されている単語で試す
(b)単語を大文字または小文字に変えて試す
(c)単語の特定の部分(先頭など)を大文字にして試す
(d)単語を逆順にしてから(a)(b)(c)を実施する
(e)複数の単語をつなげた文字列に対して,(a)(b)(c)(d)を実施する
(f)すべての文字列の組み合わせに対して実施する

 この記事は,2006年5月15日に公開した「今週のSecurity Check」の改訂版です。攻撃件数などを最新の情報にアップデートしてあります。