概要
パスワードクラックツールとして有名なJohn the Ripperの使い方に関するメモ。単純なパスワードで保護されたzipファイルなどを対象に、実際にクラックを行ってみる。
zipファイルのクラック
パスワード付きzipファイルのクラックを試してみる。まずは適当なファイル(test.txt)を作成し、パスワード「password123」を用いてzipファイル化する。
$ touch test.txt $ echo "testtesttest" > test.txt $ zip -e --password="password123" crack.zip test.txt
生成されたzipファイルを解凍してみる。パスワードが求められ、正しくないものを入力すると、解凍に失敗することが分かる。
$ unzip crack.zip
パスワードをクラックしてみる。まずは、「zip2john」にてzipファイルから(Johnが解析できる形式の)ハッシュ値を生成し、適当なファイル(hash.txt)にリダイレクトする。
$ zip2john crack.zip > hash.txt
生成されたファイルを確認する。
$ cat hash.txt
Johnにhash.txtを食わせる。辞書ファイルには「rockyou.txt」を用いる。
$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
解析は一瞬で終了した。パスワードがクラックできたことが分かる。なお、他の圧縮ファイル形式であるrarファイルに対しても、ほぼ同様のクラックが行える。
$ rar2john crack.rar > hash.txt $ john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
sshの秘密鍵ファイルのクラック
ssh接続時に用いる秘密鍵ファイルのクラックを試してみる。以下のコマンドで、適当な秘密鍵ファイル(id_rsa)を作業ディレクトリ内に作成する。パスフレーズは「password123」とした。
$ ssh-keygen
上記コマンドを実行すると、秘密鍵ファイルの保存場所とパスフレーズの入力が促される。入力を終えると、秘密鍵ファイルと公開鍵ファイルが生成される。
パスフレーズをクラックしてみる。 まずは、ssh2johnコマンドを使い、秘密鍵ファイルから(Johnが解析できる形式の)ハッシュ値を生成し、適当なファイル(hash.txt)にリダイレクトする。
$ /usr/share/john/ssh2john.py ./id_rsa > hash.txt
生成されたファイルを確認する。
$ cat hash.txt
Johnにhash.txtを食わせる。辞書ファイルには「rockyou.txt」を用いる。
$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
少し待つと、解析が終了した。パスワードがクラックできたことが分かる。
PDFファイルのクラック
パスワード付きPDFファイルのクラックを試してみる。まずは適当なパスワード付きPDFファイル(test.pdf)を作成する。パスワードはこれまでと同様に「password123」である。クラックには、「pdf2john」を用いる。
$ /usr/share/john/pdf2john.pl test.pdf > hash.txt
生成されたファイルを確認する。
$ cat hash.txt
Johnにhash.txtを食わせる。辞書ファイルには「rockyou.txt」を用いる。
$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
解析は一瞬で終了した。パスワードがクラックできたことが分かる。
「No password hashes left to crack」と表示される場合
上の画像ように表示されることがある。これは、解析対象のファイルが、Johnで解析できない形式(中身が壊れていたり空だったりする)となっていることなどに起因する。また、対象のファイルが既に解析済みの場合も同様の内容が表示される。解析済みかどうかを確認するには、--showオプションを使えばよい。
$ john --show <解析対象のファイル>
感想
zipファイルやPDFファイル以外にも、Johnでクラック可能なファイル形式はたくさんある。また、辞書ファイルを用いたクラックだけでなく、パターン(数字4桁の総当たりなど)を定義したクラックもできるので、それらについても勉強していきたい。