「パスワードクラッキングの現実性」

第7回 「パスワードクラッキングの現実性」

インターネット上のサービスを利用するためには,パスワードは必要不可欠のものだ。ただし,安易に設定されていれば,パスワードはその機能を十分に果たすことができない。クラッカーはあなたのパスワードを常に狙い,悪用することを考えているからだ

 いまやパソコンを利用するうえで,「パスワード」はなくてはならないものとなっている。メールやインターネット上のさまざまなサービスを利用するときに必要だし,またローカルな環境では,他人にコンピュータをいじられないように,パスワードでロックをかけることもあるだろう。しかし,パスワードの設定自体に問題があれば,そのパスワードは「カギ」としての意味をなさないことになる。

 しかし,実際には簡単に想像できるようなパスワードを設定していたり,またすべてのサービスに同一のパスワードを設定している場合も多い。そういったユーザーのパスワードが,悪意のある第三者によってクラックされてしまうと,「なりすまし」などに悪用されることになる。

 パスワードの設定が甘いユーザーは「まさか自分のパスワードが盗まれる(憶測される)わけない」と考えているのだろう。パスワードが不正に利用されてもなかなか気が付かないケースが多い。

 他人のパスワードを使えることができたらと,誰でも一度は考えたことがあるだろう。たとえば,あるユーザーのメールパスワードを知るためには,どういった手順で考えていくだろうか? なんの情報もなければ,たとえば「LOGIN=zdnet」だったら,「PASSWORD=zdnet」のように,

「ユーザー名(ログイン名)」=「パスワード」

を試してみるだろう。次に本名がわかっていれば,その情報を元に

「名前」=「パスワード」

「名字」=「パスワード」

を試すといった具合だ。さらには,これらの前や後ろに数字をあてはめるなど,いろいろなパターンが浮かぶはずだ。

 実は,たったこれだけのことでも,かなりの数のパスワードがクラックできてしまう。プロバイダのアカウントなどは,アカウント申請時に「ユーザーのお好きなパスワードを設定してください」としているところも多いが,こういったプロバイダでユーザーのパスワードをチェックしない場合(甘いパスワードでも設定してしまう場合),覚えやすいからと安易なパスワードを設定しているユーザーは,パスワードが簡単にクラックされてしまうことになる。

 クラッカーはこういったプロバイダのアカウントを利用し,他人になりすますことで,ほかのクラック行為などに使用することができる。

 また,管理の甘いプロバイダなどであれば,単純なコマンドでパスワードファイルを入手できることもある。なんらかの形でパスワードファイルを手に入れれば,あとは暗号化されたパスワードを解析するために「パスワードクラッカー」を使用する。

 別のケースも考えられる。プロバイダなどのアカウントに,分かりにくいパスワードを設定していた場合でも,フリーメールやオンラインサービスのパスワードなどがすべて同一で,かつ甘い設定であった場合,1つのパスワードがクラックされると,ほかのサービスのパスワードも利用されてしまうことになる。たとえば,掲示板の書込み削除用パスワードなどがフリーメールのパスワードと同一という場合,管理の甘い掲示板であれば,その書込みログから,そこに書かれているフリーメールアドレスのパスワードが漏洩することも考えられる。

ブルートフォースアタック(総当たりによる攻撃)+辞書攻撃

 パスワードを破るのにどういった手法が考えられるだろうか? 誰でもいいから一般ユーザーのアカウントパスワードを手に入れたいと考えれば,わざわざ難しいパスワードを設定しているユーザーを狙う必要はない。

 前述したような「ログイン名=パスワード」や人名,地名,などといった単語で簡単にクラックできるアカウント,つまりパスワードの設定が甘いものを手に入れればいいわけだ。

 そこで単純で力任せな方法として,総当たりによる攻撃(ブルートフォースアタック)というものが考えられた。これは,ログインの際に求められるパスワードを「ログイン名=パスワード」,「ログイン名=地名」など,考えられる単語で次々にアタックしていくものだ(写真1)。たとえば銀行のATMなどで盗んだキャッシュカードから現金を引き出すのに,適当な数字を入れてアタックしている状況と考えれば分かりやすいだろう。

画面
写真1■メールサーバに対してブルートフォースアタックを行うツール。ログイン名とアタック時に使用する辞書を設定すれば,あとは自動的にアタックを行い,結果(クラックされたパスワード)をログとして残すものだ

 インターネットへの接続アカウント,つまりプロバイダのアカウントをクラックする場合,大手のプロバイダなどであれば,かなりの数のユーザーを抱えている。そのプロバイダの会員,ユーザー名の一覧さえ(たとえば「会員様のホームページ一覧」といったページから)手に入れば,それを元に「ログイン名=パスワード」でアタックを行い,ログインが可能なユーザーのみ抽出すればよいわけだ。たったこれだけのことでも相当数のアカウントをクラックできることもある。またログイン名に対し,あらかじめ用意したワードリスト(パスワードと考えられそうな単語のファイル)でアタック(辞書攻撃という)を行うこともある。

 もちろん銀行のATMなどと同様,何度もアタックを繰り替えせばカードがATMから出てこなくなってしまうように,アタックしているサーバがアクセスを受け付けなくなり,またそのアタック履歴はログとして残る。

パスワードクラッカーによる解析

 次に,なんらかの形でサーバにあるパスワードファイル(暗号化されたパスワードが記載されているもの:※1)を入手できた場合,前述したようにパスワードクラックツールを用いて,自分のマシンでパスワード解析を行うことができる。もちろんパスワードファイルそのものを見てもパスワードは暗号化されているため,そのままのパスワードが分かるわけではない。

 パスワードの暗号化は,UNIX標準では「DES」(Data Encryption Standard)という暗号化アルゴリズムが用いられる。パスワードは最長8文字までしか使用できないが,「MD5」という暗号化アルゴリズムが用いられていれば,8文字以上(最大256文字まで)のパスワードが設定できる。ただしどちらもパスワードクラッカーによるクラッキングは可能だ。

※1:パスワードファイルについて
サーバ側でshadowパスワードが使用されている場合,暗号化されたパスワードが記載されているパスワードファイルが,簡単に閲覧されることはない。またWeb認証や一部の掲示板などに使用されているパスワードファイルも閲覧されてしまえば,パスワードクラッカーによるクラッキングが可能である

 たとえば,あるパスワードファイルに以下のような情報が記載されているとしよう。

暗号化されたパスワード部分(YA1J4n0K1ZOwc)
         ↓

yamada:YA1J4n0K1ZOwc:16855:10001:
tamada taro :/home/yamada:/bin/bash
   
GECOSフィールド(yamada taro)

 ユーザー名がかかれている部分を「GECOSフィールド」というが,「ログイン名」=「パスワード」という方法や,パスワードファイルにあるGECOSフィールドを参照して,パスワードクラッカーは,パスワードとして使われていそうな単語を辞書として作成する。そして,辞書を元に攻撃するといった方法で単語を照らし合わせることでクラックを行うわけだ。また,それぞれの単語に対してのいろいろな組みあわせも(たとえばログイン名が「yuji」であれば「YUJI」や「YUJ1」,「yuji7」など),パスワードクラッカーが自動的に試してくれる。パスワードクラッカーツールは,UNIXやWindowsでは「John the Ripper」,Macintoshでは「MacCrac」,「Meltino」などがある。

画面
写真2■John the Ripperは有名なパスワードクラックツールだ。コマンドプロンプトで利用する

 クラッカーはパスワードファイルを入手したら,たいていの場合まず初めにシングルモード(パスワードとしてログイン名やGECOS情報を使用し,いくつかの組みあわせパターンも試す方法)でパスワードクラックを試みる。この段階で,パスワード設定の甘いユーザーはクラックされてしまう。

 そして次に辞書を用いたクラックへと移行していく。当然ながら辞書の中身(単語の量)に比例して,パスワード解析にも時間がかかる。そこでクラッカーはあらかじめパスワードとして使用されている可能性の高い単語を選び,効率よくクラックできる辞書を作成するわけだ。

 たとえば,「女性名」(「mihomiho」,「yumiko」など)や,「車の車種名」(「silvia」,「180sx」),アニメ系の単語(「doraemon」,「nobitakun」)など,それぞれの分野の中から,パスワードとして使用されそうなものを選ぶわけだ。実際に女性名(彼女や奥さんの名前?)をパスワードにしている例は多いようで,女性名でのヒット率は高い。

 これ以外にも,パスワードクラッカーによっては,いくつかのモード(パスワードを生成してアタックするなど)を選んでクラックすることもある。つまり,甘いパスワードを設定していれば,比較的短時間でクラックされてしまうのだ。

画面
写真3■MacCracを使用してパスワードファイルを解析している画面。赤色の部分がクラックに成功している


甘いパスワードを設定しない

 パスワードクラックの手法から,どういったパスワードを設定するべきか考えてみよう。「ログイン名=パスワード」という設定が論外なのは当然として,単なる数字やアルファベットの羅列「11111111」,「aaaaaaaa」や「姓名」,単純な単語「女性名」,「車種名」などのパスワードを設定するのも,もちろん好ましくない。また,ユーザー名などに数字を加えたもの(たとえば「zdnet7」)や,大文字小文字を混ぜたもの(たとえば「zDnEt」)なども同様である。つまり辞書に登録されているような単語は避ける必要がある。

 また,パスワードを設定する際,相手側が安易なパスワードは設定できないようチェックを行ってくれる場合もあるが,文字数のみなどのチェックであれば,安易なものを選んでしまうかもしれない。

 もちろん,オンラインサービスのパスワードを,すべて同一のもので統一するといったことも避けるべきだ。たとえ強固なパスワードを設定していたとしても,ひとつのパスワードがなんらかの形で見破られた際には,すべてのサービスに被害が及ぶ可能性がある。前述したように,自分が安全なパスワードを設定していても,サービスを管理する側のセキュリティが甘い場合,そこからパスワードが漏れる可能性があるからだ。

 安全なパスワードは,「u7#dJ5xU」や「hUi)R5iH」などのように,数字,記号,文字の組みあわせで,単語などから憶測されないものを設定したほうがよい。6文字以上8文字以下というように文字数の範囲が指定されていれば,最長の8文字で設定する。また,サービスごとにパスワードを変え,同じパスワードを設定しないようにしよう。複雑になると記憶するのが難しくなるが,「QuickPass PRO」のような,パスワード管理ソフトなどを使用すればそれほど面倒ではないし,またパスワードを忘れた際にも安心できる(写真4)。もちろん、パスワードをコマメに変更することも重要だ。最低でも3か月に1回くらいは変更を行っておこう。

 いずれにしても,パスワードは自分を証明する「カギ」となるため,設定や管理には慎重になるべきだろう。会社で使っているパソコンのディスプレイに,パスワードの付箋を貼り付けているなどということのないようにしたい。

画面
写真4■パスワードを簡単に作成・管理できるQuickPass PRO