Windowsに限らず、基本的にパソコンへ搭載するOSには「ログイン パスワード」によるアクセス制限をかける機能があります。パスワードを設定した場合、OSにログインするためにパスワードを要求されます。間違えるとログインができなくなります。
勝手にパソコンを弄られないためにパスワードを設定することは有効な手段の1つです。
ですが、ここで考えてみてください。そのパスワードは本当に安全な文字列になっているでしょうか。「どんなパスワードでも知っている人がいなければ問題ないでしょ?」という方、実はこの考え方は危険です。Windowsのログインパスワードは、ある有名なツールを使うと結構簡単に解析できてしまうものなのです。
この方法は、特に知識がなくても手順さえ知っていれば誰でもできるものです。今回の記事は、簡単なパスワードはパスワードとしての役割を軽減させてしまっていることを認識していただくため、Windowsのログインパスワードを解析してみる実験をしてみたいと思います。
解析の仕組み
実際に今私が使っているホストOS(Windows8)で実験してもいいのですが、使用するツールをOS外から起動するための起動用DVD、または起動用USBフラッシュメモリを作る必要があるため、面倒くさい(すみません)ので仮想マシンにて実験します。
ただ、結果には相違ないのでご勘弁願います。
『Ophcrack』 – Windowsログインパスワード解析ツール
今回使用するツールは「Ophcrack」です。この手のツールではとても有名な解析ソフトウェアです。
ダウンロードは下記のリンクから可能です。
Ophcrack
http://ophcrack.sourceforge.net/
簡単な仕組み解説
このツールの解析方法ですが、主に2種類で「レインボー攻撃」と「ブルートフォース攻撃」です。
Windowsのログインパスワードは標準状態で” ハッシュ化 “という元のパスワードを推測されないような処理を施した後に保存しています。パスワードをそのまま保存していては、保存している場所までいってそのデータを抜き取るだけで解析終了となってしまうので、ハッシュ化によりパスワードの安全性を確保しているのです。簡単に言うと「パスワードの暗号化」になります。
このハッシュ化されたものですが幾つか種類があって、Windowsでは大まかに分けると2種類のハッシュ値が存在します。XP以前のOS(正確にはWindows 2000 / XP / Server 2003)は「LMハッシュ(LAN Manager ハッシュ)」と「NTLMハッシュ(Windows NT ハッシュ)」の2種類が、Vista以降ならば「NTLMハッシュ」のみが保存されるよう設定されています。(※標準状態)
解析ツール「Ophcrack」は、このハッシュ化されたパスワードである「LMハッシュ」「NTLMハッシュ」を取得して解析を試みるツールです。
ハッシュ化したパスワードをどう解析するの?
ハッシュ化の値は例として「MD5ハッシュ」と呼ばれるものを使ってみます。
計算のために下記のWebツールを使用しました。(※MD5は計算しやすいため例として使いますが、MD5ハッシュはパスワードというよりも「ファイルの改ざんチェック」などに使われるので「LMハッシュ」「NTLMハッシュ」とは少し用途が違うことを覚えておいてください。)
PHPのSHA1でハッシュ計算する暗号化ツール – WebCre(長野市でWeb制作中)
http://web-hon.com/contens/script/sha1.php
例えば「123abc」という値をハッシュ化させると「4be30d9814c6d4e9800e0d2ea9ec9fb00efa887b」という結果が出ました。この計算結果をデータベース(Rainbow Table)へ登録しておきます。そして、解析させたいハッシュ化されたパスワードからこのデータベースに合致するものがないかどうか調べます。
この時、ハッシュ化されたパスワードが「4be30d9814c6d4e9800e0d2ea9ec9fb00efa887b」であった場合、データベース内でそのハッシュ値が登録されているので逆算して「123abc」が推測できるようになります。実際のデータベース「Rainbow Table(レインボー テーブル)」では「123abc」だけでなく、考えうるパスワードの候補をありったけハッシュ化さ、そられの結果をすべて登録させています。
つまり、この解析方法のミソは「事前にパスワード候補をハッシュ化させデータベースへ登録」していることです。こうすれば、データベースに登録されているパスワードならば瞬時に解析可能になります。
このように、データベース「Rainbow Table」を利用したパスワード解析方法を「レインボー攻撃」といいます。Ophcrackはメインの解析方法としてこの「レインボー攻撃」を利用します。よく使われるパスワード、パスワードとして考えられる組み合わせを事前にハッシュ値計算させて登録、所得してきた「LMハッシュ」「NTLMハッシュ」をデータベースと照らしあわせて解析させます。
この解析方法のメリットは、データベースにさえ登録されていればどんなパスワードでも瞬時に解析できる点です。世のセキュリティ会社が「予測されやすいパスワードは控えるように」としつこく警告しているのは、単に解析者が思いつきでちょっとずつ試行するからではなく、このレインボー攻撃で一瞬に解析されてしまうからです。西暦を含めた誕生日くらいならば確実に登録されているでしょう。
ただ、デメリットももちろんあり、データベースにないパスワードはどんなに頑張っても解析できない点です。そこを埋めるためOphcrackは「ブルートフォース攻撃」も一部利用します。
総当り攻撃 – ブルートフォース攻撃
先のレインボー攻撃では、データベースにないパスワードは解析不可能であることがデメリットとしてあります。それを補うため、Ophcrackは「総当り攻撃 – ブルートフォース攻撃」機能も搭載しています。
この攻撃方法は非常に単純で、一から考えられるパターンすべてを試行します。例えば、4桁の数字のみという制限の中で設定されたパスワード「1234」があった場合、「0」~「9999」の1万パターンをすべて試行します。メリットとして時間さえかければどんなパスワードであろうと解析可能であること、デメリットとして「数字」「大文字」「小文字」「記号」など考えうるパターンが多くなり過ぎると解析時間も現実的なものでなくなってしまうことです。
長い複雑なパスワードになるほどこのブルートフォース攻撃は非効率な解析方法になってくるので、Ophcrackは4文字まで「ブルートフォース攻撃」にて総当りさせているようです。5文字以上が確定した時点でレインボー攻撃に移行する動作になっているようです。
解析実験 – 下準備編
さて、簡単にとかいいながら随分長く解説してしまいましたが、実際にどこまで解析可能なのか実験することにしましょう。まずは下準備です。この記事はOphcrackの使い方の解説ではなくWindowsのログインパスワードの堅牢性を確認する記事ですので、ここは軽くいきます。
VMware Workstation Playerを使い仮想OSのパスワードを解析
用意するツールは下記の通りです。
- VMware Workstation Player – 仮想マシンツール(非商用に限り無償)。※この記事は当時最新のバージョン6を使用。
- Windows 7 Pro 64bit版 – 余っているライセンスを使用。有料。
- Ophcrack – バージョン3.6.0を使用。無償。
ダウンロード VMware Workstation Player
https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0
Ophcrack
http://ophcrack.sourceforge.net/
冒頭でも書きましたが、実際のパソコンへインストールしたOSでやると起動メディア作成や再起動が面倒な手間としてあるので、仮想マシンにOSをインストールしたもので実験します。
仮想マシン内でBIOSを開き、CD-ROMからブート試行をするよう設定します。これで仮想マシンが起動すると、最初にOphcrackのisoイメージが開かれWindowsのOS外から起動させることができます。この操作はWindowsが起動する前の状態なのでパスワードもなく誰でも設定可能です。(BIOSパスワードというものもありますが、標準はOFFですし知っている人も少ないので大体はアクセス可能です)
実験を成功させるために、仮想マシンのHDDは「SCSIインターフェイス」から「IDEインターフェイス」へと変更させます。
仮想マシンを作ること自体は無償で可能ですが、中に入れるOSはWindowsだとライセンスの購入が必要で有料となります。また、母艦となる本体のパソコンの性能が高く無いと満足して動かないか、そもそも構築自体が不可能となっていることもあるので、ご自分で実験したい場合はご注意ください。
その場合は、仮想マシン内ではなく本体のパソコンにてお試しください。
解析実験
仮想マシンが起動すると、BIOSのブート順番を変更させたことによってCD-ROMからOphcrackが起動します。
このツールはLinuxにインストールされているので、まずはLinux OSが起動しようとします。
いかがでしたか。簡単なパスワードは割りとあっさり解析できましたね。
管理者という意味の「Administrators」という長いパスワードでも、レインボー攻撃ですぐに解析できました。「20130907」という誕生日を意識したパスワードもあっさり解析できました。最初のアカウントで設定していた複雑なパスワード以外は大体解析できてしまいましたね。Windowsのパスワードシステムは意外に脆弱なものであることが判明しました。
因みに数字のみや英字のみのパスワードをいくつか試しましたが、10文字くらいなら問題なく解析されてしまいました。
レインボー攻撃を利用しているのでデータベースにないパスワードならば解析不可になります。
今回は無料の範囲内で利用できるテーブルを使用しましたが、Ophcrackには有料のレインボーテーブルが用意されており、さらに多くの試行パターンを記録したもので解析をさせることが可能です。中には容量2TBという膨大なテーブルもあります。ここまで本気ならば、いくら複雑でも中途半端な複雑さならば結構多くのパスワードを解析できそうです。
Ophcrack – tables
http://ophcrack.sourceforge.net/tables.php
Ophcrackに解析されないようにするために
Ophcrackは「LMハッシュ」「NTLMハッシュ」を使い解析します。
特にXPなどで利用されている「LMハッシュ」は「NTLMハッシュ」と比べ脆弱な仕組みとなっていて、パスワードを前半7文字、後半7文字で区切ってハッシュ化してしまうため攻撃に対して弱くなっています。パスワードが8文字以上あっても7文字までのハッシュ値をデータベースへ記録すればいいからです。
さらに、「LMハッシュ」は小文字がすべて大文字に変換されてからハッシュ化されてしまうため、さらに試行パターンが少なくなり総当り攻撃にすら弱くなっています。
対して「NTLMハッシュ」は大文字も小文字も区別しますし、そもそも7文字で区切るようなこともしないので「LMハッシュ」より堅牢です。よって、できることなら「NTLMハッシュ」のみ利用させるようにすることが対策となります。
※Vista以降のOSは標準で「NTLMハッシュ」でしか通常は保存しないので対策は変わらず推測されにくい複雑なパスワードを設定することになります。
パスワードを15文字以上にする
「LMハッシュ」はパスワードを前半7文字、後半7文字で区切ってハッシュ化します。つまり、最大14文字までのパスワードしか受け付けません。それ以上のパスワードが設定されると「LMハッシュ」は作成されなくなり、「NTLMハッシュ」のみ利用されます。
グループ ポリシーを使用して 「LMハッシュ」の作成機能を切る
グループ ポリシーを使用して「LMハッシュ」をそもそも作成させないように設定します。
手順はMicrosoftのサポートページに書かれているますので下記のリンクを参考にどうぞ。
Windows でパスワードの LAN Manager ハッシュが Active Directory とローカル SAM データベースに保存されないようにする方法
http://support.microsoft.com/default.aspx?scid=kb;ja;299656
それでも油断していると解析される
以上のように「NTLMハッシュ」のみ生成されるような仕組みしても、解析が不可能になったわけではありません。解析方法はまだまだいっぱいあります。
例えば、リモートデスクトップなどで外からアクセスをかけてる場合、ログオン情報を保存して何度もパスワード等を入力しないよう設定することができますが、この時に保存される暗号化さたパスワードからも解析可能です。
また、「LMハッシュ」の作成機能を切っていても、ユーザのログオン時には「LMハッシュ」がメモリ上に作成されていることがあるようで、うまくLM応答を送信させることができれば脆弱な「LMハッシュ」による解析ができるようです。(ちょっと高度なので私は試してないです)
このように、やろうと思えば様々な側面から解析を試みることが可能です。今回のOphcrackによる解析は誰でもできて有名であるという点を考慮して記事にしましたが、もっと詳しい人が側にいるようならば別の方法で解析されることもあるという点を覚えておいてください。もちろん、インターネットから無差別にきた攻撃にやられることもありますので、大事なデータが保存されているパソコンを扱うときは最新の注意が必要です。
この記事を見て「LMハッシュ」「NTLMハッシュ」だけが問題であると誤認しないよう注意してください。
まとめ
さて、これでこの記事は終了となりますが、どんな感想をお持ちになりましたか。
特に「パスワードなんて思い当たるものがあったとしても数が多いのだから大丈夫でしょ?」と思っていた方はどうでしたか。確かに人間の手で1個ずつ入力するようなアナログな手法でしたら大丈夫かもしれませんが、Ophcrackのような自動化できるツールを使えば簡単に解析できてしまうのです。
使い方も難しくなく、ちょっとDVDへの焼き方やBIOSの知識があれば簡単に使えますし、手順さえ分かればそもそも知識がなくても利用できるツールです。やり方の解説はネット上にいくらでも公開されています。
このように、パスワード保護というのはパスワードそのもの自体が堅牢でないとシステム全体で脆弱なものとなってしまう意外に脆いものなのです。この記事を読んで少しでも意識が高まれば幸いです。
ついでな知識
完全に余談ですが、パスワード保護だけでは突破されることがあるのでパスワード以外に本人と確認できるものも一緒に利用する手法があります。例えば自分の電話番号へ電話をかけさせてみて、そこで別のパスワードを聞いてもらうという方法があります。最初のパスワードが破られても、本人の電話機を持っていなければ2つ目のパスワードが分からないというものです。
「二段階認証」と呼ばれる方法で、今はWeb上での認証で使われています。興味があれば利用してみるとよいでしょう。
Google 2 段階認証プロセス
http://www.google.co.jp/intl/ja/landing/2step/
コメント
コメント欄を開く