
Home > セキュリティ対策 > John the Ripper
| John the Ripperでパスワードの安全性を確認する |
John the Ripperは、パスワードの解析を行なうソフトウェアです。辞書攻撃やブルートフォース攻撃を
行なうことができます。ここでは、このJohn the Ripperを用いて、ユーザのパスワードを解析してみます。
その後で、パスワードポリシーについて考えてみます。
| John the Ripperの準備 |
John the Ripperはエクストラパッケージで提供されているので、yumの設定をエクストラパッケージが
利用できる設定にする必要があります。Fedora Core 3の場合は以下を参照してみてください。
→ Fedora Core 3のyumの設定(エクストラパッケージ)
それでは、John the Ripperのインストールを行います。以下のようにします。
# yum -y install john |
パスワードの解析を行なう前に、実験用のユーザを作成してみます。
以下のように3つのユーザを作成しました。
| ユーザ名 | パスワード |
| test1 | test1 |
| test2 | clock |
| test3 | 5tgn |
最近のディストリビューションでは、ユーザのパスワードは、/etc/shadowに保存されます。
従来は、/etc/passwdに保存されていたのですが、/etc/passwdだと全てのユーザが閲覧することが
可能であり、いくらパスワードが暗号化されて保存されているからと言っても、
安全とは言えなかったからです。
そこで、シャドウ化されている場合の/etc/passwdを見てみると以下のようになってます。
# cat /etc/passwd test1:x:514:515::/home/test1:/bin/false test2:x:515:516::/home/test2:/bin/false test3:x:516:517::/home/test3:/bin/false |
2番目のフィールドがパスワードの部分なんですが、xとなっています。xとなっていると
シャドウパスワードを採用しています。これで各ユーザのパスワードは/etc/shadowに保存されています。
/etc/shadowのパーミッションは以下のようになっています。
# ls -l /etc/shadow -r-------- 1 root root 2119 5月 31 18:56 /etc/shadow |
rootにしか読み込み権限が無いので、一般ユーザが閲覧することはできないのです。
John the Ripperはシャドウパスワードに対応していません。なので、解析を始める前に
/etc/shadowと/etc/passwdを結合して、非シャドウ形式のパスワードファイルを作成する必要があります。
これにはunshadowというコマンドを使用します。以下のようにします。
# unshadow /etc/passwd /etc/shadow > password |
これでpasswordというファイルが出来上がります。このファイルは以下のようになっています。
# cat password test1:$1$HeV3jRIi$t5QUvbt/7n5koDL5T47/p.:514:515::/home/test1:/bin/false test2:$1$.iOIEs.b$5wE0U3WD5yKcZWxa9ZUjb1:515:516::/home/test2:/bin/false test3:$1$9lk8Nob7$R8PD6.NTdADp2qJpq2PT3.:516:517::/home/test3:/bin/false |
unshadowで結合させているので、第2フィールドに暗号化されたパスワードが表示されています。
このpasswordファイルを使って、John the Ripperで解析を試みます。
| John the Ripperでパスワード解析 |
John the Ripperにはいくつかのモードがあります。最初は、シングル・クラック・モードを
試すのがいいでしょう。これは、ユーザ名とパスワードが同一だったりする場合は、すぐに
判明してしまいます。
また、実際にJohn the Ripperを実行する場合は、先ほど作成したpasswordファイルを指定するのですが、
このままだと、passwordに記述されている全ユーザに対して解析を試みることになります。
今回は、実験用として3つのユーザを作成しました。この3つのユーザだけを試みるようにします。
シングル・クラック・モードで、ユーザを指定して解析するには以下のようにします。
# john -single -users:test1,test2,test3 password Loaded 3 passwords with 3 different salts (FreeBSD MD5 [32/32]) test1 (test1) guesses: 1 time: 0:00:00:00 100% c/s: 1483 trying: test21969 |
test1のパスワードが判明しています。先頭がパスワードで、()の中がユーザ名です。
また、解析の結果は以下のようにして後で確認することもできます。
# john -show password test1:test1:514:515::/home/test1:/bin/false 1 password cracked, 15 left |
あと、test2とtest3が残っています。これらは、総当たり攻撃で解析してみることにします。
# john -incremental -users:test2,test3 password Loaded 2 passwords with 2 different salts (FreeBSD MD5 [32/32]) clock (test2) 5tgn (test3) guesses: 2 time: 0:00:09:15 c/s: 6459 trying: 5tgn |
test2のような辞書にある単語はすぐに解析が終わります。開始と同時に終わりました。
test3は4文字で英数字混じりですが、これもすぐに終わりました。
これも-showのオプションをつければ、結果を後で確認することが可能です。
# john -show password test1:test1:514:515::/home/test1:/bin/false test2:clock:515:516::/home/test2:/bin/false test3:5tgn:516:517::/home/test3:/bin/false 3 passwords cracked, 13 left |
先ほどと合わせて、今回用意したユーザ3つの解析がこれで終わりました。
以上が終わりましたら、後片付けで今回作成したpasswordとjohn.potを削除しておきます。
# rm -f john.pot password |
| パスワードポリシー |
今回のような簡単なパスワードの場合は、すぐに解析できることが判明しました。
ユーザを作成する際は、ユーザ名とパスワードを同一にしてはいけません。
また、辞書にあるような単語や、人名、キャラクターの名前なども厳禁です。
また短いパスワードも厳禁です。
良いパスワードの例としては、上の条件に当てはまらないもので以下のようなものにします。
なぜ8文字以上なのかは、解析の推定時間として8文字の英大小文字+数字の組み合わせは1年です。
1年後には判明してしまう計算になりますので、何ヶ月に1回かはパスワードを変更するようにします。
これによって、解析が終わった頃には、パスワードも変わっています。
ただ、複雑にすればするほどいいのかと言うと、そうでもありません。
複雑になるとどうしても記憶の問題が付きまといます。覚えられないパスワードだと
紙に書いたりしてしまいます。酷いとパソコンの横にその紙を貼り付けたりしてしまいます。
これは非常に危険です。できることなら、覚えられる範囲でパスワードを作成するようにします。
どんなにセキュリティを強化しても、ユーザのパスワードが脆弱ならそこが穴になります。
ただ1人の杜撰なユーザが居るだけで、そのシステムはやられてしまうかもしれないのです。
また、不正侵入の統計では、ソフトウェアのバグによる侵入よりも、パスワードやアクセス管理の
杜撰さのせいで侵入される件数のほうが多いと報告されているので、今一度パスワードについて
考えてみてください。
■参考文献
『実践 ネットワークセキュリティ監査』 (O'REILLY)
『ネットワークセキュリティ超実践』 (IDG)
『リナックスワールド 2004年8月号』 (IDG)
最終更新 : 06/23/2005