Ver 1.0
(last update 28/7/99)

0. 前書き

ユーザー認証に付き物なのが、この「パスワード」。しかし、一口に言っても様々なものが存在する。今回は、UNIXにおけるパスワードとは何か、また John The Ripper を使ったクラックの仕方、さらには管理者側における対処法を考えてみよう。

 

1. UNIXのパスワードファイル

/etc/passwdをとりあえず、ゲットしてみよう。パスはOSによって違うので注意。
その中身を覗いてみると、次のようになっている。

attacker:ixM6Z4XK9jx5w:100:0:Attacker,,,:/home/attacker:/bin/bash

まず、データは ; によって分類され、以下の構文からなっている。データを最初から覗いてみると・・・

 

attacker
( UserName )
これは、ログインするときの名前 (FTP, TELNET, POP3など)
ixM6Z4XK9jx5w
( Encrypted Pass )
暗号化されたパスワード
100
( UserID )
ユーザーID。各々に振り当てられる
0
( GroupID )
グループID。どこのグループに所属しているかが分かる。ちなみに 0 というのは・・・
Attacker
( RealName )
本名。そして、この後に、電話番号など個人情報が入る
/home/attacker
( Home Dir )
最初にログイン時のホームディレクトリ。その場所では、読み書き、属性設定などができる
/bin/bash
( Shell )
ログインしたとき実行されるシェルへのパス

 

今回注目したい個所は上から二番目の Encrypted Pass という部分である。この部分に暗号化されているパスワードが入っている。ここで使われている暗号方式は、DES( Data Encryption Standard )という方式。これは、1977年にアメリカ商務省標準局(NBS)が定めたデータ暗号標準である。

この暗号方式は、逆解読を行うことができない。つまり、ixM6Z4XK9jx5w という文字列からパスワードを解読することはできないわけだ。そのため、どういった方法で解読するのか。次の John The Ripper の使い方から考えてみよう。

 

2. John The Ripper

John The Ripper. 世界最高速といわれるまでのパスワードクラックソフトである。その魅力は、スピードだけではなく、パスワード推測アルゴリズムもまたすばらしい。(ここでいう推測というのは、passwdファイルから得られる個人情報をもとにして、様々な文字列を吐き出すこと。)

John は、与えられた条件にしたがって、8桁までの文字列を吐き出し、DES暗号を行う。そして、吐き出された暗号化済みの文字列と、対象となっているパスワード文字列を比較するわけである。
(あなたがログインする時に、UNIXは裏でこれと同様のことを行い、入力されたパスワードが正しいのか確かめるわけである。)

普通のサーバーであれば、ユーザーは非常に簡単な(覚えやすい)パスワードを持っている。ISPから与えられるパスワードは意味不可解な文字列(つまり強力)だが、セカンド的なアカウント(会社、学校、団体組織など)で持つパスワードは覚えやすいものを使用する。こういった場合、Johnの持つ Rules を使用することによって、ばりばりパスワードを解読してしまう。

さて、使い方に入ろう。まず、ここで必要なものは以下の通り。

* John The Ripper = パスワード解析ソフト
* passwd = パスワードファイル
* Dictionary = 辞書ファイル。ネット上には非常にたくさんの辞書が存在する。そのpasswdファイルに最適な辞書を準備しよう。

とりあえずは、自分のプラットフォームのものを用意しよう。

 

John The Ripper Official Site
http://www.false.com/security/john/

 

さて、一通り必要な解凍、そしてコンパイルを終えた後、さっそく使い始めてみよう。主な機能を下に挙げてみよう。詳しくは、添付のREADMEを見てほしい。それでは・・・

コマンドオプション(よく使用するもの)

-wordfile:<file>

辞書を使う場合のオプション。<file>の部分に使用したい辞書を入力する。

-rules

John特有のルールを適用する場合のオプション。上の辞書のオプションと兼用ができる。(これでほとんどが引っかかると思うが・・・)

-incremental:<mode>

一番使用したくないオプション。(笑)これをやるには根気、時間、そしてある程度のマシンの台数が必要。このモードに関する非常に参考になるドキュメントがあるので、ぜひ読まれるようお勧めする。(一番下を参照)
このモードは、考えられるすべての文字列を吐き出し、比較していく。たかが8文字でもパターンは並外れたものではない。 最悪の場合は、数千年を覚悟しよう。まあ、これからCPUが桁外れに進歩していけば、少しは望みがあるかもしれないが・・・(暗号化も同様に進歩するだろうな・・・苦笑)

さて、こういった感じのオプションをJohnは備えているわけだが、実際passwdファイルを手に入れることのできない人もいると思う。それで、今回は特別に、練習と題して私が作成したpasswdファイルをダウンロードしてくれればと思う。

ここで、こつがあるのだが、このパスワードというのは「国独特」である。(当たり前だが・・・)それで、ここで気をつけてほしいのは、その国に対応した辞書ファイルを準備することが必要である。探し方はいろいろあるだろうが、がんばってほしい。では、スタート!

それぞれのファイルへのリンク
(作成中・・・)

ソノ@
( 日本 )
ソノA
( アメリカ )
ソノB
(?)

特にこのパスワードを解いたからといって、賞金が出るわけでもないのであしからず。 (笑)

 

3. Shadow Passwd

attacker:x:100:0:Attacker,,,:/home/attacker:/bin/bash

これは、2で出てきたユーザーのシャドウバージョン。何が違うか。そう、あの文字列が x になっている。
ls -al /etc を入力してみよう。そこには、

-rw------- 1 root root 509 Jul 28 14:01 /etc/shadow

というファイルが存在しているはず。(Linuxの場合)ここに、あの文字列が格納されているのだが、パーミッションをよく見ると・・・
そう、rootしか読めないのだ。(まあ、そのためにこういった方法が生まれたわけだが・・・)

ということで、そのサーバーはあきらめよう。(苦笑)

 

4. From Admin side

あなたが、管理者(学校、あるいは会社関係の)であるなら、自分のサイトにJohnをかけてみよう。ずらずらと joeなるものがでてきたり、ユーザー名に数字を付け足した「軟弱」なパスワードが見つかるだろう。そういう場合、すぐにその人とコンタクトをとり、パスワードを変更してもらおう。

もし言うことを聞かないのであれば、そのユーザーは削除しよう。(苦笑)そういったユーザーから多くの場合は進入されるためだ・・・(かならずしも100%そうとはいえないが・・・)

Johnは1ヶ月に一度ぐらい定期的にチェックし、危ないユーザー(こちらの要求に頑として反対する輩)などは、不必要なサービスをすべて閉じ、さらには、IPアドレスなどでフィルターをすることができるだろう。

 

以上

- carcino -