パスワードクラックツール JOHN THE RIPPER 使い方まとめ
パスワードクラッキングツールである「JOHN THE RIPPER」の使い方を備忘録としてまとめておくのです。。。
【公式サイト】http://www.openwall.com/john/
なお、今回環境はKALI LINUX 64bitを利用する。(KALI LINUXにはデフォルトでインストールされています。)
事前知識
LINUXでのアカウント情報は、「/etc/passwd」,「/etc/shadow」の2ファイルで通常管理されています。(windowsもこの2ファイルから管理されてるはず)。これら2ファイルの仕様は以下のとおり。
passwd | ユーザの属性が記載されたファイル。 ユーザ名やグループID, ホームディレクトリパス, シェルなどが記載されている。 |
shadow | ユーザ名と、それに対応するパスワードハッシュなどが記載されている。 通常ルート権限でないと閲覧不可。 |
上の表からわかるように、「shadow」の閲覧にはroot権限が必要なため、利用シーンとしては「既にroot権限は取得したが、他のユーザのパスワードを解析したい」というケースになると思われます。。。
っていうのは悪い人目線での用途で、イイ人目線だとパスワードの脆弱性を検証するのに使えるわけです。イイ人でありましょう。
事前準備
まず、クラッキング用のユーザを作成しておきます。
//ユーザ名:test password:test $ sudo useradd test $ sudo passwd test 新しいUNIXパスワードを入力してください: test 新しいUNIX パスワードを再入力してください: test //ユーザ名:test2 password: password $ sudo useradd test2 $ sudo passwd password 新しいUNIXパスワードを入力してください: password 新しいUNIX パスワードを再入力してください: password //ユーザ名:test3 password: abc $ sudo useradd test3 $ sudo passwd abc 新しいUNIXパスワードを入力してください: abc 新しいUNIX パスワードを再入力してください: abc
オプションによる効果を見るため、2ユーザ「test」「test2」「test3」を作成してみます。
それではこれら3ユーザのパスワードをクラッキングしてみます。
検証
まず、「passwd」,「shadow」2ファイルから、JOHNで解析可能な形式に変換したファイル(passwd_shadow)を生成します。
生成には「unshadow」コマンドを利用します。
$ sudo unshadow /etc/passwd /etc/shadow > passwd_shadow
それでは、生成された「passwd_shadow」ファイルから、「john」コマンドで解析を始めてみます。
が、その前に、通常johnではオプションを指定して、解析のアルゴリズムを決めてやる必要があります。
(オプション無指定だと、全アルゴリズムで全ユーザについて解析され、果てしなく時間かかります)
主なオプションは以下のとおりになりますの。
--single | シングルモード。 何も手持ちがない場合の唯一の手がかりとなる「ユーザ名」からパスワードを解析する。 |
--wordlist='dictionary_list' | 辞書解析モード。手持ちの辞書ファイル「discionary_list」を指定してそいつを照らしあわせていく。 |
--incremental | ブルートフォールス方式。 ひたすらシコシコシラミ潰しモード。 いつかは解析完了するでしょうが果てしなく時間がかかるかも。 |
それでは、上記のオプションを用いて、順に試してみる。。
シングルモード
ユーザ「test」のパスワード(test)を解析してみる。
$ sudo john --users=test --single pass_shadow Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt" Use the "--format=crypt" option to force loading these as that type instead Loaded 1 password hash (sha512crypt [64/64]) test (test) guesses: 1 time: 0:00:00:00 DONE (Sat Jun 14 17:26:59 2014)
ユーザ名からパスワードを類推するモードなだけあって、速攻で解析完了です。。。
ユーザ名とパスワードが類似してる場合などに効果的なモードですねん。
辞書解析モード
辞書解析モードでは、オプションで辞書ファイルを指定します。辞書ファイルは、Linuxにも標準で入っているはずです(/usr/share/dict/words)。
ファイルの中には、約10万語くらいの単語が列挙されています。大体のメジャーな英単語は書かれていると思います。
このファイル中にパスワードと一致するワードがあれば、解析可能となります。今回はこれを使ってみます。
この他公開されているものでは、「OPENWALL」が有名どころみたい。有料版もあるみたいですね。
それではユーザ「test2」のパスワード(password)を解析してみます。
$ sudo john --users=test --wordlist=/usr/share/dict/words ps Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt" Use the "--format=crypt" option to force loading these as that type instead Loaded 1 password hash (sha512crypt [64/64]) password (test2) guesses: 1 time: 0:00:08:33 DONE
8分ちょっとかかりました。思ったより遅かったけどちゃんと解析されましたねん。
パスワードが単語とかの場合にはこの方法は有効かもしれません。また、自分で独自の辞書ファイルを生成したりして、それによってはすぐ解析できるかもしれません。
3つの方法の中で一番現実的かもしれません。。。
ブルートフォールスモード
最後にブルートフォールスモードで、ユーザ「test3」のパスワード(abc)を解析してみる。
$ sudo john --users=test3 --incremental pass_shadow Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt" Use the "--format=crypt" option to force loading these as that type instead Loaded 1 password hash (sha512crypt [64/64]) abc (test3) guesses: 1 time: 0:00:00:54 DONE
シラミ潰し方式なので、文字数が少ない場合にはありかもしれません。(abcでおおよそ1分要した)
ただし、文字数が多くなると莫大に時間を要するため、あまり現実的ではないかもしらんね。。。
これまでの解析結果は、「show」コマンドで確認することが出来ます。
$ sudo john --show pass_shadow
test:test:1001:1003::/home/test:/bin/sh test2:password:1001:1004::/home/test2:/bin/sh test3:abc:1001:1005::/home/test3:/bin/sh 3 password hash cracked, 2 left
まとめ
今回、JOHNTHERIPPERを試してみました。色々と解析アルゴリズムはありますが、要は時間との戦いなのかも分からんですね。
使う人ができることは、マシンスペック、辞書ファイルを凝ることくらいかなと。。。
まあオプションをうまいこと指定してあげて効率よくクラッキングしてあげましょう、ということで。
GoogleAdsense
関連記事
-
-
MySQLでの条件付きSUM,COUNT
以前つっかかったMySQLでの条件付きSUM,条件付きCOUNTについて備忘録。。。 通常、条
-
-
【Android】APKのデコンパイルまとめ
AndroidのプロジェクトをパッケージングしたAPKファイルをデコンパイル(Javaのソースコード
-
-
SSH CA認証まとめ
SSHでの接続を、CA認証でやってみる。 備忘録として残しておくの。。。 概要 Open-SSH
-
-
bash設定ファイルについてまとめてみた
仮想環境を組んだ時に、環境変数が所どころ未設定なことがあった。 環境変数の設定にはbashの設定フ
-
-
SSH CA認証 (ホスト認証編)
ホスト認証 以前の投稿でSSH CA認証まとめとしてSSH CA認証のユーザ認証についてみて
-
-
【Node.js】 Cookieの取り扱いまとめ
最近流行りのNode.jsですが、Cookieに関して、いくつかお決まりの取り扱い方があり、
-
-
Win7, 64bit環境でのcocos2d-x環境構築まとめ
さて、いままでJavaオンリーでゴリゴリとアプリリリースしてきたわけですが、ゲームを作るとなると、ど
-
-
クラックツールHydraでベーシック認証を突破してみる
kali linuxにデフォルトでインストールされているツール「Hydra」を利用して、ベーシック認
-
-
Android4.4(API19)KitKatでのGraphicalLayout,AdMob問題
Androidの新バージョンKitKatがリリースされてもう結構経つが、いまさら我が開発環境でも導入
-
-
PHPのextensionが読み込まれない問題…
大したあれではないが、ちょっと詰まったのでメモ。。。 事のぼったんは久々にWordPressを