アロワナ飼いたい

いつかアロワナを飼いたい人のブログです

John the Ripperを使う


概要

パスワードクラックツールとして有名な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桁の総当たりなど)を定義したクラックもできるので、それらについても勉強していきたい。


参考

www.openwall.com