John the Ripperとは
John the Ripperとは、正式名称をJohn the Ripper password crackerといって、代表的なパスワードクラックツールの一つです。UNIXやLinuxのユーザーパスワードの暗号化に使われるDES、MD5、Windowsログオンに使われるNTMLなど、幅広い暗号化アルゴリズムに対応しています。UNIX、Linux、Mac、Windowsのプラットフォームにインストール可能です。
パスワードクラックツールではありますが、自分の設定したパスワードがどれくらい脆弱かを検証するツールにもなります。ここでは、Linuxシステムを対象にjohnの使い方を解説します。(注意:このツールはあくまで自分の管理内のパソコンやサーバーの脆弱性検証にお使いください。自分の管理外のマシンに対して使用すると不正アクセス禁止法に抵触する可能性があります。悪用厳禁です!)
John the Ripperのインストール
CentOS6へのインストール
John the Ripperの公式サイトからソースをダウンロードしてきてコンパイルしてインストールも出来ますが、RPMforgeでパッケージが公開されていますので、RPMforgeのレポジトリを追加すればYUMインストールできます。下記コマンドでjohnが入ります
sudo rpm -import http://ftp.riken.jp/Linux/dag/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
sudo rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
sudo yum install john
openSUSEの場合
openSUSEの場合は、標準レポジトリにjohnが入っていますので、普通にZypperまたはYaSTでインストールできます。
sudo zypper install john
Macの場合
Homebrewでインストールできます。
brew install john
Johnの使い方
Linuxをメインに解説します。Linuxのユーザー情報は/etc/passwdと/etc/shadowに記載されていますが、/etc/shadowに記載されているパスワードは不可逆の暗号化されているため、通常は復号化できません。しかし、johnを使えば、極めて高速にこのパスワードをクラックすることが可能です。以下、ユーザーsaitoがパスワードtest9で作成されていた場合のクラック方法を解説します。
sudo unshadow /etc/passwd /etc/shadow < passwdfile
john --users=saito passwdfile
Loaded 1 password hash (generic crypt(3) [?/64])
test9 (saito)
guesses: 1 time: 0:00:03:23 DONE (Thu Mar 28 09:59:46 2013) c/s: 201 trying: scooter9 - blazer9
Use the "--show" option to display all of the cracked passwords reliably
何と、3分23秒でtest9というパスワードを見破られてしまいました。johnは各国語の英単語に対応した辞書ファイルも使うことができるので、辞書に登録されている単語だともっと速く見つけることもできます。
セキュリティ強化策
johnのようなパスワードクラックツールでは、極めて高速にパスワードを解析することができます。まず、辞書にあるような英単語をパスワードに設定するのは絶対にやめましょう。短い英数字だけのパスワードも比較的速く見破られてしまいます。でも、こういうパスワードを設定する人は世の中に沢山いることも事実です。
フィッシングによってMySpace のパスワードを調査したところ、それらの 3.8% は辞書に載っている一単語であり、他の 12% は一単語の末尾に数字を一個加えたものだった。その数字の 2/3 は “1” だった(Wikipedia パスワードクラック)
長めのランダムな英数文字の組み合わせで、できれば特殊記号も使ったパスワードがより破られにくい(解析に時間がかかる)でしょう。また、クラックツールによってはSSH接続やVPN接続への辞書を使ったクラックやブルートフォースアタックも可能なので、SSH接続はパスワード認証ではなく公開鍵認証を使うようにし、VPN接続はできればPPTPではなくIPsecにしましょう。BASIC認証なども同様に単純な単語や英数字のパスワードでは破られる可能性があります。