ハッカーはJohn the Ripperツールでパスワードキャッシュを解析してパスワードをクラックする(Kali Linu)

ホワイトハッカーの知識John,Kali Linuxツール,座学

パスワードキャッシュを解析してパスワードをクラックする方法を理解するためにまとめてみました。
このの動作確認は自分のドメインでテストを行っています。

John the Ripperとは

John the Ripperは、複数のクラッキングモードを1つのプログラムに統合しており、特定のニーズに合わせて完全に設定することができます。また、John the Ripperは複数の異なるプラットフォームに対応しているため、どこでも同じクラッカーを使うことができます (別のプラットフォームで開始したクラッキングセッションを継続することもできます)。

動作確認では、Kali Linuxにテストユーザーを追加して、作成したパスワードハッシュよりパスワードをクラックしました。

機能

・パスワードをクラックします。

ツールの場所

[Applications]→[05-Password Attacks]→[john]

ツールと使用方法

john [OPTIONS] [PASSWORD-FILES]

例 john -users:u-john password.txt

【実行イメージ】少し端折って整形しています。

┌──(root__kali)-[/home/kali]
└─# john -users:u-john password.txt
Using default input encoding: UTF-8
Loaded 1 password hash (HMAC-SHA256 [password is key, SHA256 256/256 AVX2 8x])
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 2 candidates buffered for the current salt, minimum 16 needed for performance.
Warning: Only 10 candidates buffered for the current salt, minimum 16 needed for performance.
Almost done: Processing the remaining buffered candidate passwords, if any.
Warning: Only 1 candidate buffered for the current salt, minimum 16 needed for performance.
Proceeding with wordlist:/usr/share/john/password.lst, rules:Wordlist
Proceeding with incremental:ASCII
:
:
時間がかかっております。
終了次第アップデートします。

オプション

–single[=SECTION[,..]]

“single crack" mode, using default or named rules.
“single crack “モードでは、デフォルトまたは名前付きのルールを使用します。

–single=:rule[,..]

same, using “immediate" rule(s).
同じく、「即時」ルールを使用します。

–wordlist[=FILE] –stdin

wordlist mode, read words from FILE or stdin.
ワードリストモードでは、FILEまたはstdinから単語を読み込みます。

–wordlist[=FILE] –pipe

like –stdin, but bulk reads, and allows rules.
–stdinのように、一括して読み込んで、ルールを許可します。

–loopback[=FILE]

like –wordlist, but extract words from a .pot file.
–wordlist と同様に、.pot ファイルから単語を抽出します。

–dupe-suppression

suppress all dupes in wordlist (and force preload).
ワードリスト内のすべてのダブりを抑制する(プリロードを強制する)。

–prince[=FILE]

PRINCE mode, read words from FILE.
PRINCEモードでは、FILEから単語を読み込みます。

–encoding=NAME

input encoding (eg. UTF-8, ISO-8859-1). See also doc/ENCODINGS and –list=hidden-options.
入力エンコーディング(例:UTF-8、ISO-8859-1)を指定します。doc/ENCODINGS および –list=hidden-options も参照してください。

–rules[=SECTION[,..]]

enable word mangling rules (for wordlist or PRINCE modes), using default or named rules.
デフォルトまたは名前付きのルールを使用して、(wordlistまたはPRINCEモードの)単語のマングリングルールを有効にします。

–rules=:rule[;..]]

same, using “immediate" rule(s).
同じく、「即時」ルールを使用します。

–rules-stack=SECTION[,..]

stacked rules, applied after regular rules or to modes that otherwise don’t support rules.
通常のルールの後や、ルールがサポートされていないモードに適用される、スタックされたルール。

–rules-stack=:rule[;..]

same, using “immediate" rule(s).
同じく、「即時」ルールを使用します。

–incremental[=MODE]

“incremental" mode [using section MODE].
“インクリメンタル “モード[セクションMODEを使用]。

–mask[=MASK]

mask mode using MASK (or default from john.conf).
MASK(またはjohn.confのデフォルト)を使用したマスクモード。

–markov[=OPTIONS]

“Markov" mode (see doc/MARKOV).
“Markov “モード(doc/MARKOV参照)。

–external=MODE

external mode or word filter.
外部モードまたはワードフィルター。

–subsets[=CHARSET]

“subsets" mode (see doc/SUBSETS).
“subsets “モード(doc/SUBSETS参照)。

–stdout[=LENGTH]

just output candidate passwords [cut at LENGTH].
候補となるパスワードを「長さ」で出力するだけです。

–restore[=NAME]

restore an interrupted session [called NAME].
中断されたセッション(NAMEと呼ばれる)を復元します。

–session=NAME

give a new session the NAME.
新しいセッションにNAMEを与えます。

–status[=NAME]

print status of a session [called NAME].
NAMEというセッションのステータスを表示します。

–make-charset=FILE

make a charset file. It will be overwritten.
は、charsetファイルを作る。上書きされます。

–show[=left]

show cracked passwords [if =left, then uncracked].
クラックされたパスワードを表示する[=左の場合は、クラックされていないパスワードを表示]。

–test[=TIME]

run tests and benchmarks for TIME seconds each.
テストとベンチマークをそれぞれTIME秒ずつ実行します。

–users=[-]LOGIN|UID[,..]

[do not] load this (these) user(s) only.
このユーザーだけに負荷をかけないようにしてください。

–groups=[-]GID[,..]

load users [not] of this (these) group(s) only.
この(これらの)グループ(複数可)のみのロードユーザー[ではない]。

–shells=[-]SHELL[,..]

load users with[out] this (these) shell(s) only.
このシェルを使用しているユーザーにのみ負荷をかけることができます。

–salts=[-]COUNT[:MAX]

load salts with[out] COUNT [to MAX] hashes.
COUNT[~MAX]のハッシュで塩をロードします。

–costs=[-]C[:M][,…]

load salts with[out] cost value Cn [to Mn]. For tunable cost parameters, see doc/OPTIONS.
コスト値Cn[からMn]を持つ[外]塩をロードします。調整可能なコストパラメーターについては、doc/OPTIONSを参照してください。

–save-memory=LEVEL

enable memory saving, at LEVEL 1..3.
LEVEL 1..3でメモリーセーブを有効にします。

–node=MIN[-MAX]/TOTAL

this node’s number range out of TOTAL count.
このノードの数の範囲は、TOTALカウントから外れています。

–fork=N

fork N processes.
N個のプロセスをフォークします。

–pot=NAME

pot file to use.
使用するポットファイルです。

–list=WHAT

list capabilities, see –list=help or doc/OPTIONS.
リストの機能については、–list=help または doc/OPTIONS を参照してください。

–format=NAME

force hash of type NAME. The supported formats can be seen with –list=formats and –list=subformats.
NAME型のハッシュを作成します。サポートしているフォーマットは –list=formats と –list=subformats で確認できます。

John the Ripperツールのまとめ

John the Ripperツールでクラックするパスワードを7桁の「john001」に設定した為、すごい時間がかかっています。
もう2時間経ちますがまだ、終了していません。
いつ終わるのでしょうか???

テストでは簡単なパスワードにする必要がありますね。

ブラックハットハッカーは高速なCPUで巨大なメモリのパソコンを使っているのでしょうか?

テストでは、ユーザーidは判明していることを前提にクラッキングしています。
情報さえ用意していれば、時間は掛かりますが以外に簡単にパスワードのクラッキングはできるのですね。

たぶん、サーバーにハッキングした後に、「shadow」「passwd」のデータを元にしています。
よって、正しい「情報」を取得するのが一番の問題ですね。