dorapon2000’s diary

忘備録的な。CTFやってます。

パス付きRARファイルをJohn The Ripperで解析

JTRの真の力を全然わかっていなかったので記録に残しておきます。
MACでのzipのパス解析はいくらでも検索がヒットする一方で、rarのパス解析はなかなか難儀しました。LinuxであればRarCrackというツールがあるそうですが、ソースから引っ張ってMACコンパイルしても動きませんでした。*1
四苦八苦してるうちにJTRでもrarのパス解析ができることがわかりました。JTRは指定された形式になっているパスファイルならば解析可能ということで、rarもファイルからパスを抽出してその形式でファイルに出力すればJTRでも読み込めます。そのパスファイルを作成してくれるツールサードパーティが作っており、JTRのcommunity-enhanced versionに含まれています。

まずダウンロードしてから解凍。

$ mkdir tmp
$ cd tmp
$ wget http://www.openwall.com/john/j/john-1.8.0-jumbo-1.tar.xz
$ tar xfz john-1.8.0-jumbo-1.tar.gz

srcフォルダにサードパーティが作った様々なツールソースコードがあるのでmakeします。そのうちの1つが目的のrar2johnです。

$ cd john-1.8.0-jumbo-1/src/
$ ./configure
$ make

実行ファイルはrunフォルダにあります。

$ cd ../run

パス解析のやり方はパスファイル作成で途中下車して、それをJTRに任せるという流れです。

$ ./rar2john ../test.rar > ../rar.hashes
$ ./john ../rar.hashes

デフォルトですと
1. ファイルの名前によるパス予想
2. 辞書攻撃
3. 総当り攻撃
のようです。 オプションを付ければ細かい設定ができます。

# singleモード(1.)
$ ./john --single ../rar.hashes

# 辞書攻撃
$ ./john --wordlist=password.lst ../rar.hashes

# 総当り攻撃
$ ./john --incremental  ../rar.hashes

実際の実行の様子です。パスワードはdog。

$ ./john ../testrar.hashes
Warning: detected hash type "rar", but the string is also recognized as "rar-opencl"
Use the "--format=rar-opencl" option to force loading these as that type instead
Loaded 1 password hash (rar, RAR3 [SHA1 AES 32/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:02 0.92% 1/3 (ETA: 06:46:10) 0g/s 32.70p/s 32.70c/s 32.70C/s Rar.tsetr
0g 0:00:01:41 17.47% 1/3 (ETA: 06:52:12) 0g/s 35.20p/s 35.20c/s 35.20C/s Ttxt<
0g 0:00:08:49 81.79% 1/3 (ETA: 06:53:20) 0g/s 32.80p/s 32.80c/s 32.80C/s Testtxt1234
dog              (test.rar)
1g 0:00:12:56 DONE 2/3 (2016-02-28 06:55) 0.001288g/s 31.77p/s 31.77c/s 31.77C/s dog
Use the "--show" option to display all of the cracked passwords reliably
Session completed

1ステージ目のファイル名からは類推できず、2ステージ目の辞書攻撃でdogと判明したようです。 ちなみに実行中に適当なキーを打つことで途中経過を見れます。

今回はrar2johnを使用しましたが、zip2johnを使用すれば全く同じようにzipファイルでパス解析できます。

参考にしたリンク