人の造りしもの――“パスワード”の破られ方と守り方セキュリティ対策の「ある視点」(9)(1/4 ページ)

パスワードを破るのも人ならば、それを守るのも人。今回はあなたのパスワードを守るために、「今すぐできること」を解説します。

» 2008年05月08日 00時00分 公開

※ご注意

本記事に掲載した行為を自身の管理下にないネットワーク・コンピュータに行った場合は、攻撃行為と判断される場合があり、最悪の場合、法的措置を取られる可能性もあります。また、今回紹介するツールの中には、攻撃行為に利用されるという観点から、アンチウイルスソフトにウイルスとして検出されるものも存在します。このような調査を行う場合は、くれぐれも許可を取ったうえで、自身の管理下にあるネットワークやサーバに対してのみ行ってください。

また、本記事を利用した行為による問題に関しましては、筆者およびアイティメディア株式会社は一切責任を負いかねます。ご了承ください。


 第8回「魂、奪われた後――弱いパスワードの罪と罰」では、攻撃者がシステムへ侵入した後、どのようなことを行うのかをペネトレーションテストの現場を例に挙げ解説した。

 今回も引き続きパスワードをテーマにするが、本題に入る前に前回のコラムで出題した、ハッシュ化されたパスワードの復元の問題の解答をお送りしよう。順を追って解説していくので、解けなかった方も内容を確認しつつ、再チャレンジしていただければ幸いである。

 それでは、早速、前回出題した問題を見てみよう。

【前回コラムの問題】

「辻伸弘株式会社」という組織の「Administrator」の
ハッシュ化されたパスワードを復元せよ

 問題のハッシュ化されたパスワードを以下に掲載しておく。

Administrator:500:5FE055EE93CA7DB048D7645CD4E30C86:

4FEBC2EC1E27A3168F24289B5850F48D:::

(編注:都合上改行を入れていますが、実際には1行となります)



パスワード復元、その考え方を追う

【編注】

本項では解答となる文字列を、クリックするまで見えないようにしております。実際にツールを使いながら、パスワード復元の思考を追いかけてみてください。


 まずは、このハッシュを「question.dump」という名前で保存し、デフォルトモードで「John The Ripper」を実行する。その結果は以下のとおりである。

[root@localhost run]# ./john question.dump 
Loaded 2 password hashes with no different salts (NT LM DES [32/32 BS])
MIN(Administrator:2)
guesses: 1  time: 0:00:00:00 (3)  c/s: 158726  trying: LMS - 1995
Session aborted
リスト1 John The Ripperの実行結果

 上記のように、瞬時に後半の3文字が「MIN」(大文字か小文字かはこの時点では判明しない)であることが判明する。ここで前回説明した、Windowsのパスワードハッシュが7文字区切りで格納されているということを思い出してほしい。つまり、判明していない前半の7文字+判明している後半の3文字「MIN」で10文字の文字で構成されているパスワードであるということである。

判明文字列からの単語推測

 それでは、次に前半の7文字がどのような文字列であるかを考えてみよう。現在、唯一判明している後半の3文字がヒントとなる。「MIN」という文字列に対して、前に何を付けるかを考えてみてほしい。ここでは7文字でなくても構わない。よく使用されそうで安易なものを想像してほしい。ヒントは、

  1. 2001年9月にインターネット上で猛威を振るったワームの名前を逆に読むものである
  2. 付け足す文字は2文字である

の2つである。

 わたしなら、この文字列から「ADMIN」、つまりAdministratorの略称を想像する。「MIN」で構成されている単語が「ADMIN」であると仮定すると、残りの文字数は、「全体(7+3=10)−後半の「MIN」(3文字)−推測した「AD」(2文字)=5文字」となる。

文字数からの文字列推測

 ここで思い出してほしいのは、出題した問題の文章である。ここに5文字となる単語はないだろうか。ヒントはいうまでもないかもしれないが、社名である。

 正解は、辻(TSUJI)である。

 先ほど、予測した文字列と連結すると「TSUJIAD」となる。ここまではあくまで予測でしかないので、次にこの文字列で正しいかということを、John The Ripperの辞書モードを用いて確認してみよう。

 「question.dict」というファイルの前半に、今回パスワードに設定されていると思われる文字列「TSUJIADMIN」を記述し実行してみよう。結果は以下のとおりである。

[root@localhost run]# ./john  --wordlist=question.dict  question.dump 
Loaded 1 password hash (NT LM DES [32/32  BS])
TSUJIAD            (Administrator:1)
guesses: 1   time: 0:00:00:00 100%  c/s: 33.33  trying: TSUJIAD
リスト2 推測した文字列を用いて辞書モードを実行する

 上記のように前半7文字が予想どおりの「TSUJIAD」であることが判明した。これと、デフォルトモードで実行した結果の後半3文字「MIN」とを連結すると「TSUJIADMIN」となる。

 ただし、この段階で「TSUJIADMIN」がパスワードであるとはいい切れない。前回も解説したが、John The Ripperは、デフォルトではLMハッシュに対してのパスワード復元を行うため、結果はすべて大文字で出力してしまう。よって、辞書ファイル(question.dic)に小文字のパターン「tsujiadmin」をさらに加え、オプションには「--format=NT」を付け加えて再度実行してみよう。

[root@localhost run]# ./john  --wordlist=question.dict --format:NT question.dump
Loaded 1 password hash (NT MD4 [TridgeMD4])
guesses: 0  time: 0:00:00:00 100% c/s:  100 trying: tsujiadmin
リスト3 辞書ファイルに「すべて小文字のパターン」を加えて再度実行する

 大文字と小文字のパターンでは復元することはできなかったことが上記結果で分かるだろう。この結果からは、パスワードに設定されている文字列は大文字と小文字が混在しているということが判明したといえる。

 次に、辞書ファイル内の単語を変化させ、復元を試みるためのオプション「--rules」を付け加えて実行してみよう。

[root@localhost run]# ./john --wordlist=question.dict --format:NT --rules question.dump
Loaded 1 password hash (NT MD4 [TridgeMD4])
tsujiadmiN(Administrator)
guesses: 1  time: 0:00:00:00 100%  c/s: 833  trying: tsujiadmiN
リスト4 --rulesを用いて実行する

 上記の結果、最後の文字だけ大文字にした「tsujiadmiN」がパスワードであることが判明した。この文字列が前回出題した問題の正解である。

 ここまでの実行結果を下図のとおりまとめた。

図1 パスワード復元の思考フロー 図1 パスワード復元の思考フロー

 正解にはたどりつけただろうか? 解答と前回の記事を比べていただければ分かるのだが、前回の記事で紹介した内容と、ほんの少しの推測を加えることで、正解にたどりつけるようになっている【注1】

【注1】

今回は解答編ということで可能な限り細かく解説させていただいたのだが、ペネトレーションテストの現場では、このようなことを瞬時に行い、トライ&エラーを繰り返し、検査を行っている。


 正解にたどりつけなかった方も、今回の解説を参考にし、ご自身の環境で再現してもらえると幸いである。

 この問題の解答である管理者パスワードのような組織名やシステム名、管理者名に関係する文字列+管理者IDと同じ文字列といった文字列をパスワードにしている方は、この記事を読まれてドキっとしたのではないだろうか。例えば、「●●+admin」や「▲▲+root」などである。ここでドキっとされた方は、この記事を読み進めたあと、すぐにパスワードを変更することを強くお勧めする。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。