John the Ripper
![]() |
![]() /etc/shadow のパスワードリストを使用してjohnを実行している様子 | |
開発元 | OpenWall |
---|---|
初版 | 1996年[1] |
最新版 | 1.9.0[2] / 2019年5月14日 |
リポジトリ | |
対応OS | クロスプラットフォーム |
種別 | パスワードクラッキング |
ライセンス |
|
公式サイト | www |
John the Ripperは、パスワードクラッキングのための自由ソフトウェアツールである[3]。元々はUNIX向けに開発され、15の異なるプラットフォームで実行することができる[注釈 1]。これは多数のパスワードクラッカーを1つのパッケージに統合し、パスワードハッシュの種類を自動的に検出することができ、カスタマイズできるパスワードクラッカーを含むので、最も頻繁に使用されるパスワードのテスト及び解読のためのプログラムの1つである[4]。様々なUNIXのバージョンで最も一般的に見られるcryptのパスワードハッシュ[注釈 2]、Kerberos AFS及びWindows NT/2000/XP/2003のLMハッシュを含む様々な暗号化されたパスワード形式に対して実行することができる。追加のモジュールによってにMD4に基づくパスワードハッシュとLDAPやMySQLなどに保存されているパスワードを含める機能が拡張された[5]。
出力例
[編集]![]() | この節の加筆が望まれています。 |
以下はDebian環境での出力例である。
$ cat pass.txt user:AZl.zWwxIh15Q $ john -w:password.lst pass.txt Loaded 1 password hash (Traditional DES [24/32 4K]) example (user) guesses: 1 time: 0:00:00:00 100% c/s: 752 trying: 12345 - pookie
最初の行は「pass.txt
」の内容を表示するコマンドである。次の行はファイルの内容、つまりユーザー(AZl
)とそれに関連付けられたハッシュ(zWwxIh15Q
)である。3行目は「-w
」フラグを使用してJohn the Ripperを実行している。「password.lst
」はプログラムがハッシュの解読に利用する単語の一覧が入ったテキストファイルのファイル名である。pass.txt
はJohnに処理させたいファイルである。
実行されたJohnの出力を見てみると、1つのパスワードハッシュ(「cat」コマンドで見たハッシュ値)とJohnが推測したハッシュの種類(従来のDES)がロードされている。また、この試行は0秒で1つの推測が行われ、推測率は100%であることが分かる。
攻撃の種類
[編集]Johnが使用できる攻撃の種類の1つは辞書攻撃である。これは、テキスト文字列のサンプル[注釈 3]を取得し、検査対象のパスワードと同じ形式で暗号化して[注釈 4]、その出力を検査対象のパスワードと比較する。また、辞書の単語に様々な変更を加えて、これを試すこともできる。これらの変更の多くは、関連するプレーンテキスト[注釈 5]を変更し、ハッシュ値に対して変化を確認するJohnのシングルアタックモードでも使用される。
Johnは総当たり攻撃も提供している。この攻撃では、プログラムは全てのプレーンテキストに対して暗号学的ハッシュ関数を適用して、入力されたハッシュ値と比較する。Johnは文字の出現頻度を格納したテーブルを使用して、より頻繁に使用される文字を含むプレーンテキストを最初に試す。この攻撃は、辞書の単語リストにないパスワードを解読する場合に役に立つが、実行には長い時間が必要になる。
脚注
[編集]注釈
[編集]出典
[編集]- ^ “john-users - Re: When was John created?”. 2022年7月8日閲覧。
- ^ “Announce - [openwall-announce] John the Ripper 1.9.0-jumbo-1”. 2022年7月8日閲覧。
- ^ Anonymous (2001). Maximum Linux Security (2 ed.). Sams Publishing. p. 154. ISBN 0-672-32134-3
- ^ “Password Crackers”. Concise Cybersecurity. 2017年4月4日時点のオリジナルよりアーカイブ。2016年12月3日閲覧。
- ^ “John the Ripper”. sectools.org. 2022年7月8日閲覧。