# 表題 : EP サーバパスワードクラック実行手順 # # 履歴 : 2005/06/15 (北守 太一) 新規作成 # 履歴 : 2005/07/08 (北守 太一) 更新 # 履歴 : 2010/08/27 (小高 正嗣) 更新 # 履歴 : 2012/04/23 (小高 正嗣) 更新 # 履歴 : 2012/11/30 (小高 正嗣) 更新: inex2012 における作業めもを加筆 # 履歴 : 2016/08/24 (渡辺 健介) 更新: inex2016 のパスワードクラックテスト手順書を基に更新 # 履歴 : 2016/10/01 (須藤 康平) 更新: epWWW における作業時間を加筆 # 履歴 : 2017/08/24 (新井 総馬) 更新:「注意」に作業が止まってしまった場合の対策を加筆 # 履歴 : 2018/07/20 (松岡 亮) 更新: 情報実験機を推奨する旨を追記 ■ はじめに - 本文書について この文書では EP サーバにてパスワードクラックを実行する際の手順を解 説する. - 注意 専攻サーバでパスワードクラックを行う際は, 必ず事前に EP ネットワー ク委員会にその旨を伝え許可をとること. たとえそのサーバの管理者であってもサーバを資産として保有・運営して いる組織であるネットワーク委員会に無許可でパスワードクラックを行う ことは法的に許されないので注意されたい. パスワードチェックを行い,パスワードに問題が見つかったユーザに対し ては,速やかにネットワーク委員会を介して連絡を取り,パスワードを変 更してもらうこと. 2017年度のメールサーバのチェックでは,エラーメッセージが出されずに    作業が中断されてしまうトラブルがあった.原因は不明だが,shadowfile の中身を分割して個別にチェックを行う,shadowfileを作り直すといった 対策をとると問題なく作業が終了した。 ■ パスワードクラックの概要 - パスワードクラック対象サーバ - www (orange) - mail (grey) - パスワードクラック実行マシン 専攻サーバ内で直接パスワードクラックを実行すると長時間マシンパワー を持っていかれるため, /etc/shadow, /etc/passwd ファイルを別のマシ ンにコピーしてパスワードクラックを実行する. その際,そのマシンはネットワークから隔離しなければならない. 3N+1/+2機等,情報実験機を用いると良い. ■ 準備 - 必要なパッケージ パスワードクラックを実行するマシンにおいて, 以下のパッケージが必要となる. - John the Ripper deb パッケージをインストールするには # apt-get install john を実行する. john と john-data パッケージがインストールされる. ■ 実行手順 - 辞書ファイルの準備 パスワードクラックに使うための辞書ファイルを用意する. john には デフォルトで /usr/share/john/password.lst という辞書ファイルが 用意されている. ただし, このファイルに記載されている単語だけでは脆弱なパスワードを 発見するには不十分なので, 必要に応じて辞書ファイルを増強する. そこで, 今回はあるサイト(ftp://ftp.ox.ac.uk/pub/wordlists/)にあった 辞書ファイルを結合したファイルを/home/epcore/crack/ 以下に用意するので, それを用いることにする. 辞書ファイルの詳細については, 上記ディレクトリの README を参照されたい. - /etc/shadow, /etc/passwd ファイルの取得 各サーバの /etc/shadow, /etc/passwd ファイルをコピーする. パスワードクラックを実行するマシンにコピーしたファイルを移す. - データファイルの作成 パスワードクラックに使うデータファイルを作成する. このデータファイルは shadow および passwd を結合したものである. データファイルを作成するためには # unshadow passwd shadow > passwdfile を実行する. passwdfile がデータファイル名となる. - パスワードクラック実行 以下のコマンドでパスワードクラックが始まる. # john --wordlist=(辞書ファイルのパス) ./passwdfile パスワードクラックの結果は john.pot というファイルに書き込まれている. - 後始末 パスワードクラックが完了したら速やかにデータファイルを消去する. /etc/passwd, /etc/shadow を結合したものであるこのファイルが 別の場所に半永久的に存在することはクラックの温床となりかねず 好ましいことではない. ■ 作業例 ========================================================= + パスワードチェック対象計算機での作業 - /etc/shadow, /etc/passwd ファイルの取得 各サーバの /etc/shadow, /etc/passwd ファイルをコピーする. パスワードクラックを実行するマシンにコピーしたファイルを移す. この際,ネットワーク経由(scp)で送ることはできるが, 万が一のことを考えてusb などの外部記憶装置を用いることが のぞましい. ========================================================= + パスワードチェック実行計算機での作業 - 作業ディレクトリの作成 $ mkdir /home/hoge/crackwork $ cd /home/hoge/crackwork - ファイルの移動 $ cp ~hoge/shadow ~hoge/passwd /home/hoge/crackwork - john the ripper のインストール # apt-get update # apt-get install john ======================================================= - 辞書ファイルを用いたパスワードクラック(wordlist mode) $ mkdir /home/hoge/crackwork/dic $ cd /home/hoge/crackwork/dic/ - 辞書ファイルの取得 $ scp hoge@www:~epcore/crack/dic2010.bz2 /home/hoge/crackwork/dic - 辞書ファイルの展開 $ bzip2 -dc dic2010.bz2 > dictionaryfile - unshadow化 # unshadow ../passwd ../shadow > ./shadowfile - 実行 - シングルコア実行 # nohup john --wordlist=/home/hoge/crackwork/dic/dictionaryfile ./shadowfile & すごく時間がかかるので 1-2 晩くらい放置? 数アカウント程度なら 1 晩もかからない nohup はバックグラウンドで作業する用のコマンド. よって, まわしたまま logout もできる. 結果は nohup.out に記録される - マルチコア実行 # nohup john --fork=4 --wordlist=/home/hoge/crackwork/dic/dictionaryfile ./shadowfile & 情報実験機の現在のCPU は4 core なので,全てのコアでやる場合は"--fork=4" を指定,実行するコア数を減らす場合は, 4 のところを,1,2,3 のどれかに変更する 数アカウント程度なら 数時間 - 実行時間の検証 2016/05/10(6 users) single core : 0:08:00:00 - 0:09:00:00 multi core(4) : 0:02:17:40 2016/09/09(117 users) single core : 4:09:13:31 - 実行状況の確認 $ john --status - 実行結果の確認 # lv nohup.out Session completed Loaded 7 password hashes with 7 different salts (crypt, generic crypt(3) [?/64]) などと出れば解析は終了している. もしパスワードが判明すれば, アカウント名と一緒に記載される. ======================================================= - ユーザ情報を持ちいたパスワードクラック(single mode) $ mkdir /home/hoge/crackwork/single $ cd /home/hoge/crackwork/single $ sudo -s # unshadow ../passwd ../shadow > ./shadowfile - 実行 - シングルコア実行 # nohup john --single ./shadowfile & - マルチコア実行 # nohup john --fork=4 --single ./shadowfile & - 実行時間の検証 2016/05/10(8 users) single core : 0:00:03:02 multi core(4) : 0:00:00:48 2016/09/09(117 users) single core : 0:00:47:45 - 実行状況の確認 $ john --status - 実行結果の確認 # lv nohup.out - 作業ディレクトリの削除 # rm -r /home/hoge/crackwork ■ 参考文献 * 北浦訓行 2002/1/17, パスワードが安全か調べるには (John the Ripper編), http://www.atmarkit.co.jp/flinux/rensai/linuxtips/244johnripper.html