web-dev-qa-db-ja.com

攻撃WPA hashcatを使用したパスワード-「ドイツ語」パスワードの設定とリソース?

私の友人に彼のwifiが安全でないことを証明し、途中でパスワードクラッキングについて何かを学びたいと思います。私が話している人は、強力なパスワードではなく、SSIDの隠蔽とMACアドレスのフィルタリングを信じています。ご存知のように、これは悪いことです。

私がすでにできることは、SSIDを検出して有効なMACアドレスをスプーフィングした後で、既知のパスワードでログインすることです。しかし、彼に本当に良いパスワードを表示するには、未知のパスワードを解読したいのです。

だからここに私の実際の質問があります:重いリフトを行うために(初めて)ハッシュキャットを使用したいと思います。ドイツ語によって作成されたパスワードのクラックを最適化する設定またはルールセットはありますか?もちろん、ドイツ語(パス)の単語リストと辞書を使用する必要があることはわかっています。しかし、それとは別に?

私はググってハッシュキャットフォーラムをチェックしました。私が見つけた結果はドイツのウムラウトに関するものでした。 PSKはルーターによって保存されるため、これは問題にならないと思います。あれは正しいですか?特別なルールセットなど、他に検討する必要があるものはありますか?

ご協力いただきありがとうございます!任意のヒントをいただければ幸いです。ダーク

5
wedi

(このスレッドはhashcatフォーラムにクロスポストされています here 。私の答えは単純すぎたので、ここでより良い仕事をしようと思います。)

基本

単語リストとルールについては、すでに基本を理解しているようです。ワードリストがUTF-8であり、パスワードの設定に使用される入力メソッドもUTF-8である限り、それらはうまく機能するはずです。原始的なブルートフォースは基本的な攻撃よりも時間がかかり、WPA/WPA2は「遅い」(クラックしにくい)ハッシュなので、私は間違いなく最初にワードリストとルールを追求します。

パスワードクラッキングの基本はすでに他の場所で十分にカバーされています。ここにいくつかの有用なハウツーがあります(ただし、ターゲットパスワードに少なくとも1つのドイツ語の文字が含まれている場合は、ワードリストとルールベースの手法のみが状況に適用されます)。

これらの概要は、基本的なテクニックのギャップを埋めるのに役立ちます。

UTF-8のブルートフォース(シングルバイトとマルチバイトの混合)、パート1-概念実証

ブルートフォースを追求したい場合は、hashcatが内部でどのように機能するかにより、もう少し作業が必要になります。クラッキングの目的で、hashcatはすべてを一連のバイトとして扱います。ドイツ固有のUTF-8文字はmultibyteです-複数バイトのUTF-8で表されます。

マルチバイトをブルートフォースにするには、--hex-charsetパラメータを使用して文字セットを指定し、マスクを使用してマルチバイト文字のブルートフォースをシミュレートする hashcatフォーラムからの関連記事 で説明されている手法を使用できます。

ただし、その投稿の手法では、文字セットが全体的にマルチバイトであると想定しています。ドイツ語は、文字の一部のみがマルチバイトであるという点で異なります。ドイツ語固有の文字を使用するドイツ語の単語は、実際には1バイト幅の文字と2バイト幅の文字の混合であり、hashcatは2つを区別しません。

そのため、その手法はいくぶん適合させる必要があります。ここでその方法を簡単に説明します。私は簡単にするためにMD5を使用しています。 WPA/WPA2はまったく同じように動作するはずです(非常に遅くなります)。

最初に、パスワードマスクで使用される16進値を決定する必要があります。これを行う簡単な方法は、パスワードに表示される可能性のあるすべての非ASCII文字のUTF-8形式をリストしたファイルを作成し、それに相当する16進数を表示することです。

$ for item in `cat german.list`; do echo -e "$item: "; echo -n "$item" | xxd -p; done
Ä: c384
ä: c3a4
É: c389
é: c3a9
Ö: c396
ö: c3b6
Ü: c39c
ü: c3bc
ß: c39f

私はドイツ語には詳しくありませんが、これらの文字の最初のバイトは明らかに「c3」です。 (これは、それらがすべて同じUnicodeブロック内にあるためです-具体的には Latin-1 Supplementブロック )。したがって、予想されるすべてのマルチバイト文字はこのバイトを「プレフィックス」として持つので、それから始めて、ハッシュキャットのカスタムマスクパラメータを使用してすべての「2番目のバイト」を追加します。

これは簡単なウォークスルーです。

まず、プレーンテキストをキャプチャします( '-n'を使用して、文字列の最後に改行がないことを確認します)。

$ echo -n 'schön5' >german.plain

次に、期待される場所に、期待される2バイトのシーケンス「c3b6」が文字列に実際に含まれていることを示します。

$ cat german.plain | xxd -p
736368c3b66e35

次に、そのプレーンのMD5ハッシュを取得します。

$ cat german.plain | md5sum | awk '{print $1}' | tee german.hash
bbf9ee923fe21c044838865c7acf530d

最後に、hashcatを実行します。

$ ./hashcat -m 0 -a 3 --hex-charset -1 c3 -2 8489969c9fa4a9b6bc german.hash ?a?a?a?1?2?a?a

...フラグは次のように説明されています:

  • -m 0(ハッシュモード0-MD5)

  • -a 3(攻撃モード3-ブルートフォース)

  • --hex-charset、16進文字セットを指定できるようにする

  • -1、最初のカスタム文字セット(「c3」接頭辞)

  • -2、2番目のカスタム文字セット(ドイツ語文字のすべての2番目のバイト、 "8489969c9fa4a9b6bc")

  • german.hash(ターゲットハッシュ)

  • a?a?a?1?2?a?a(ほとんどの位置にすべての印刷可能な7ビットASCII(?a)を含み、 「4番目」の位置)

コマンドは次の出力を生成し、ターゲットハッシュを正常にクラックしたことを示します。

hashcat (v3.40-73-g99fbaa8) starting...

[informational hashcat output snipped]

INFO: approaching final keyspace, workload adjusted

bbf9ee923fe21c044838865c7acf530d:schön5

Session..........: hashtest
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: bbf9ee923fe21c044838865c7acf530d
Time.Started.....: Sun Mar 26 08:46:08 2017 (0 secs)
Time.Estimated...: Sun Mar 26 08:46:08 2017 (0 secs)
Guess.Mask.......: ?a?a?a?1?2?a?a [7]
Guess.Charset....: -1 c3, -2 8489969c9fa4a9b6bc, -3 Undefined, -4 Undefined
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#1.....:  9411.3 MH/s (0.18ms)
Speed.Dev.#2.....:  9896.7 MH/s (0.18ms)
Speed.Dev.#3.....:  4829.7 MH/s (0.27ms)
Speed.Dev.#4.....:  5154.5 MH/s (0.27ms)
Speed.Dev.#5.....:  4555.7 MH/s (0.27ms)
Speed.Dev.#6.....:  4747.7 MH/s (0.27ms)
Speed.Dev.#*.....: 38595.5 MH/s
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 902162052/69640284375 (1.30%)
Rejected.........: 0/902162052 (0.00%)
Restore.Point....: 0/81225 (0.00%)
Candidates.#1....: "yaÄ 1 -> }baü]a
Candidates.#2....: w!cÜ'p -> JWAÖe&
Candidates.#3....: {kaÄ^) -> psaÖ'p
Candidates.#4....: FUSÜe& -> Q!cä.+
Candidates.#5....: @loé.+ -> &11üV<
Candidates.#6....: /11ÄW~ -> :enü~}
HWMon.Dev.#1.....: Temp: 51c Fan: 34% Util: 63% Core:1898MHz Mem:4513MHz Bus:8
HWMon.Dev.#2.....: Temp: 49c Fan: 32% Util: 50% Core:1860MHz Mem:4513MHz Bus:4
HWMon.Dev.#3.....: Temp: 63c Fan:  3% Util: 96% Core:1354MHz Mem:3004MHz Bus:16
HWMon.Dev.#4.....: Temp: 62c Fan:  1% Util:100% Core:1366MHz Mem:3004MHz Bus:4
HWMon.Dev.#5.....: Temp: 65c Fan:  2% Util:100% Core:1379MHz Mem:3004MHz Bus:1
HWMon.Dev.#6.....: Temp: 66c Fan:  3% Util: 97% Core:1366MHz Mem:3004MHz Bus:1

Started: Sun Mar 26 08:45:52 2017
Stopped: Sun Mar 26 08:46:10 2017

UTF-8のブルートフォース、パート2-マスクカバレッジあり

上記の簡単なデモンストレーションは、「?1?2」テクニックが機能することを示していますが、どの文字がドイツ語であるかが正確であることも前提としています。現実の世界では、通常これを知りません。

代わりに、単一のマスクを使用するのではなく、試行するパスワードの長さをカバーするマスクのallのリストを含むファイルを提供する必要があります。これは、少なくとも1つの7ビットASCII同等の文字(?a)と、マルチバイトマスクペア(? 1?2)、すべてのポジション:

$ cat utf8.hcmask.6char
?a?a?a?a?a?1?2
?a?a?a?a?1?2?a
?a?a?a?a?1?2?1?2
?a?a?a?1?2?a?a
?a?a?a?1?2?a?1?2
?a?a?a?1?2?1?2?a
?a?a?a?1?2?1?2?1?2
?a?a?1?2?a?a?a
?a?a?1?2?a?a?1?2
?a?a?1?2?a?1?2?a
?a?a?1?2?a?1?2?1?2
?a?a?1?2?1?2?a?a
?a?a?1?2?1?2?a?1?2
?a?a?1?2?1?2?1?2?a
?a?a?1?2?1?2?1?2?1?2
?a?1?2?a?a?a?a
?a?1?2?a?a?a?1?2
?a?1?2?a?a?1?2?a
?a?1?2?a?a?1?2?1?2
?a?1?2?a?1?2?a?a
?a?1?2?a?1?2?a?1?2
?a?1?2?a?1?2?1?2?a
?a?1?2?a?1?2?1?2?1?2
?a?1?2?1?2?a?a?a
?a?1?2?1?2?a?a?1?2
?a?1?2?1?2?a?1?2?a
?a?1?2?1?2?a?1?2?1?2
?a?1?2?1?2?1?2?a?a
?a?1?2?1?2?1?2?a?1?2
?a?1?2?1?2?1?2?1?2?a
?a?1?2?1?2?1?2?1?2?1?2
?1?2?a?a?a?a?a
?1?2?a?a?a?a?1?2
?1?2?a?a?a?1?2?a
?1?2?a?a?a?1?2?1?2
?1?2?a?a?1?2?a?a
?1?2?a?a?1?2?a?1?2
?1?2?a?a?1?2?1?2?a
?1?2?a?a?1?2?1?2?1?2
?1?2?a?1?2?a?a?a
?1?2?a?1?2?a?a?1?2
?1?2?a?1?2?a?1?2?a
?1?2?a?1?2?a?1?2?1?2
?1?2?a?1?2?1?2?a?a
?1?2?a?1?2?1?2?a?1?2
?1?2?a?1?2?1?2?1?2?a
?1?2?a?1?2?1?2?1?2?1?2
?1?2?1?2?a?a?a?a
?1?2?1?2?a?a?a?1?2
?1?2?1?2?a?a?1?2?a
?1?2?1?2?a?a?1?2?1?2
?1?2?1?2?a?1?2?a?a
?1?2?1?2?a?1?2?a?1?2
?1?2?1?2?a?1?2?1?2?a
?1?2?1?2?a?1?2?1?2?1?2
?1?2?1?2?1?2?a?a?a
?1?2?1?2?1?2?a?a?1?2
?1?2?1?2?1?2?a?1?2?a
?1?2?1?2?1?2?a?1?2?1?2
?1?2?1?2?1?2?1?2?a?a
?1?2?1?2?1?2?1?2?a?1?2
?1?2?1?2?1?2?1?2?1?2?a
?1?2?1?2?1?2?1?2?1?2?1?2

必要な残りのマスクを生成するには、 PACKツールキットのpolicygen (Python)が役立ちます。 「?1?2」のすべての順列を作成する方法を認識しませんが、異なる文字セット(?uなど)を使用するマスクを作成し、すべての「?u」を「?1?2」に置き換えることができます。 。

上で述べたように、それは心臓の弱い人のためではありません!しかし、コツをつかめば、それは難しくありません。

UTF-8以外の文字セット(WPA/WPA2では珍しい)

文字がUTF-8ではない場合、 hashcatに付属する文字セット を直接使用できます。それらはhashcatディストリビューションの./charsets/ディレクトリにあり、 それらの使用は簡単です および 非ラテン文字セットに共通 です。

とはいえ、UTF-8以外の文字セットはWPA/WPA2パスフレーズではまれであることを期待しています。

5
Royce Williams