UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS7 John The Ripperの実施




何千人という組織の中でメールサーバ等を運用していると、それだけのアカウントの数が必要となってきます。セキュリティ意識やレベルの高い組織であればパスワードは必ず8文字以上で英数字記号を必ず混ぜるといったセキュリティポリシーの元、ユーザ全員がそのように容易に解読不能なパスワードを設定しているところもあると思います。

ただ、組織によってはそこまで意識が高くなく、人によっては容易にパスワードを見破られるようなものを設定していることもよくあります。こういった組織においては定期的にパスワードが簡単なものに設定されていないか、管理者の人がチェックする必要があります。

そういった場合にパスワードをチェックしてくれるものがJoh The Ripperというツールです。これは/etc/passwdやshadowのファイルを元にチェックを行うのですが、shadowファイルのパスワード部分はハッシュ化されたものが格納されています。ハッシュ化されたものは複合化は不可なわけで、調べたい値と同一なのかを調べるには同様にハッシュ化して一致するかどうかを調べます。

まずはyumでJohn The Ripperをインストールします。


# yum install john
# rpm -qa | grep john
john-1.7.9-1.el7.rf.x86_64

設定ファイルが/etc/john.confにインストールされますが、このままの状態だとjohnコマンドを実施した際に以下のようなエラーが発生してしまいます。

# john --single passwdfile
Created directory: /root/.john
fopen: $JOHN/dynamic.conf: No such file or directory

このため/etc/john.confを以下のように編集し、下準備を整えておきます。

# vi /etc/john.conf

<最後尾をコメントアウト>
#.include <dynamic.conf>

使用方法については/etc/passwdと/etc/shadowファイルをマージしたものを新規に作成します。これにはunshadowコマンドを使用します。下記はマージしたファイルをpasswdfileとして保存している例です。

# unshadow /etc/passwd /etc/shadow > passwdfile

上記で作成したpasswdfileを元にパスワードクラックを行います。johnコマンドでそのままファイルを指定してやれば良いのですが、これだと全て解析アルゴリズムでクラックを行うためかなりの時間がかかります。解析アルゴリズムには以下の手法があります。

オプション 説明 
--single  ユーザ名からパスワードを推測する。 
--wordlist=FILE FILE名を指定してそのファイルの中に書かれてあるパスワードを辞書として照らし合わせていく
--incremental 色んなパターンをしらみ潰しに試していくモードでかなりの時間がかかるため、現時的に使うことはあまりない。

以下、上記のオプションを指定した実行例です。

# john --single passwdfile
# john --wordlist=/usr/share/john/password.lst passwdfile
# john --incremental passwdfile

上記いずれのオプションを指定しても全ユーザのチェックを行ってしまいます。上のオプションと併用して特定ユーザのみチェックを行いたい場合は以下のように--usersオプションでユーザ名を指定します。この場合、ハッシュ方式はdesのみとなりますのでmd5も合わせて実施するようmd5オプションも指定します。


# john --single --users=test --format=md5 passwdfile

以下は全ユーザを対象にsingleモードで実行した際の実行結果の表示例です。testというユーザがtest1234で設定されているということで警告が表示されています。

# john --single passwdfile
Loaded 3 password hashes with 3 different salts (generic crypt(3) [?/64])
test1234         (test)
guesses: 1  time: 0:00:00:11 DONE (Tue Dec  9 12:49:52 2014)  c/s: 208  trying: root1956 - root1900
Use the "--show" option to display all of the cracked passwords reliably

1回実行すると上記のような結果は表示されなくなり、再度表示したい場合は--showオプションをつけると表示されます。

# john passwdfile --show
test:test1234:1001:1001::/home/test:/bin/bash

1 password hash cracked, 2 left

3つのアルゴリズムがあり、まとめて同時実行はできませんが、それぞれを実行した後に上記の--showオプションを実行すれば3つまとめての結果が表示されるので、そういう意味では便利です。

ユーザ自身でパスワードが変更できるような環境においては簡単なパスワードをユーザが設定しないよう管理者の方が定期的にこういったチェックを行うのもまた必要になるかもしれません。



 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.