パスワードクラックツール JOHN THE RIPPER 使い方まとめ

公開日: : Hack, SECURITY, 備忘録 ,

パスワードクラッキングツールである「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

関連記事

bash設定ファイルについてまとめてみた

仮想環境を組んだ時に、環境変数が所どころ未設定なことがあった。 環境変数の設定にはbashの設定フ

記事を読む

MySQLでの条件付きSUM,COUNT

以前つっかかったMySQLでの条件付きSUM,条件付きCOUNTについて備忘録。。。 通常、条

記事を読む

openssh

SSH CA認証まとめ

SSHでの接続を、CA認証でやってみる。 備忘録として残しておくの。。。 概要 Ope

記事を読む

node_cookie

【Node.js】 Cookieの取り扱いまとめ

最近流行りのNode.jsですが、Cookieに関して、いくつかお決まりの取り扱い方があり、

記事を読む

android_secure

【Android】代表的な脆弱性まとめ ~ファイルアクセス権について~

近年、スマートフォンの普及に伴い、Android, iPhone, WindowsPhone? ユー

記事を読む

genymotion_logo

genymotionのすすめ

Android開発においてしばしば挙がる不満として、エミュレータのもっさり感があります。 この

記事を読む

hydra

クラックツールHydraでベーシック認証を突破してみる

kali linuxにデフォルトでインストールされているツール「Hydra」を利用して、ベーシック認

記事を読む

dordoidくん

【Android】難読化ツールProguard設定まとめ

Android開発環境の1つであるEclipseでは、標準でAndroidプロジェクトの難読化ツール

記事を読む

【Android】APKのデコンパイルまとめ

AndroidのプロジェクトをパッケージングしたAPKファイルをデコンパイル(Javaのソースコード

記事を読む

PHPのextensionが読み込まれない問題…

大したあれではないが、ちょっと詰まったのでメモ。。。 事のぼったんは久々にWordPressを

記事を読む

GoogleAdsense

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

GoogleAdsense

openssh
SSH CA認証まとめ

SSHでの接続を、CA認証でやってみる。 備忘録として残しておく

node_cookie
【Node.js】 Cookieの取り扱いまとめ

最近流行りのNode.jsですが、Cookieに関して、いくつ

hydra
クラックツールHydraでベーシック認証を突破してみる

kali linuxにデフォルトでインストールされているツール「Hyd

john the ripper
パスワードクラックツール JOHN THE RIPPER 使い方まとめ

パスワードクラッキングツールである「JOHN THE RIPPER」の

宇部空港
久々の帰省・・・

宇部空港にて[/caption] たまには普通の日記を。。。

→もっと見る

PAGE TOP ↑