web-dev-qa-db-ja.com

次の条件でWPA2パスワードをブルートフォースにするにはどうすればよいですか?

私は自分のWiFiをブルートフォースで攻撃しようとしています。自分の調査から、ハッキングしようとしているルーターのこの特定のモデルのすべてのデフォルトパスワードは、次のルールに従っていることがわかります。

  1. パスワードの長さ= 8

  2. 文字セット[a-zA-Z0-9]

  3. 各文字はパスワードで一度だけ使用できます

  4. 最低2つの小文字、2つの大文字、2つの数字が存在します。

可能なパスワードの例:r3wN4HTl、5j3Wkl5Daなど...

このブルートフォースをどのように進めることができますか?組み合わせはいくつありますか?パスワードを正常に解読するための推定時間はどれくらいですか?

6
Masky

パスフレーズがランダムに生成された(人間の選択要因の影響を受けていない)と想定した場合、いくつかの基本的な数学といくつかのツールを使用して、ほとんどの方法を実行できます。制限#3(各文字は1度しか使用できません)はより難しいものですが、組み合わせの合計スペースをそれほど減らすことはおそらくないので、とりあえず脇に置いておくことをお勧めします。

複雑さのキャプチャ

まず、 the policygen tool from The PACK toolkit を見てください。長さと最小値に一致するマスクのセットを生成できます。

policygen--ppsパラメータを使用して時間の見積もりを通知することもできます。これは、ターゲットプラットフォームが1秒間に試行できるパスワードの数をpolicygenに通知します。

たとえば、私のGTX 970 SC(hashcatを使用してWPA/WPA2に対して185 kH/sを実行できる)に類似したGPUがある場合、次のようになります。以下:

$ policygen --pps=185000 --minlength=8 --maxlength=8 \
  --mindigit=2 --minlower=2 --minupper=2 --maxspecial=0 -o test.masks
                       _
     PolicyGen 0.0.2  | |
      _ __   __ _  ___| | _
     | '_ \ / _` |/ __| |/ /
     | |_) | (_| | (__|   <
     | .__/ \__,_|\___|_|\_\
     | |
     |_| [email protected]


[*] Saving generated masks to [test.masks]
[*] Using 185,000 keys/sec for calculations.
[*] Password policy:
    Pass Lengths: min:8 max:8
    Min strength: l:2 u:2 d:2 s:None
    Max strength: l:None u:None d:None s:0
[*] Generating [compliant] masks.
[*] Generating 8 character password masks.
[*] Total Masks:  65536 Time: >1 year
[*] Policy Masks: 2940 Time: >1 year

$ wc -l test.masks
2940 test.masks

結果の2940マスクのセットは、制約に一致するすべての可能性のセットをカバーします。

時間の見積もり

policygenは1年以上かかると推定していることに注意してください。より正確に推定するには、特定のパスフレーズがいつ解読されるかを予測できない場合がありますが、上限と平均(その上限の半分)を設定できます。

hashcatの-​​ マスクプロセッサツール を使用すると、特定のマスクの組み合わせの総数を取得できます。それを各マスクに対して実行し、結果を合計します。

for mask in `cat test.mask`; do \
    mp64 --combinations $mask; done \
    | awk '{s+=$1} END {print s}'

...は次の数を生成します。

5.84746e+13

またはおおよそ58474600000000の組み合わせ。 1秒あたり185,000ハッシュとすると、(5.84746e + 13/1985000)/ 60/60/24 = 340,95日、または約1年全体キースペースを使い果たします。 averageパスフレーズは、半年(キースペース全体をトラバースするのに必要な時間の半分)以内に解読されます)。

もちろん、この時間の見積もりは、利用可能な計算能力に直接結びついています。ミックスにGPUを追加すると、パフォーマンスはそれらのパフォーマンスに直線的に比例します。

攻撃を開始する

クラックを試みるには、WPA2ハンドシェイクとマスクのリストをhashcatに入力するだけです。このリグには複数のGPUがあることに注意してください。

$ ./hashcat -w 4 -a 3 -m 2500 [your-wpa2-hccapx-filename] test.masks

hashcat (v3.5.0) starting...

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080, 2028/8113 MB allocatable, 20MCU
* Device #2: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #3: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #4: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #5: GeForce GTX 970, 1009/4037 MB allocatable, 13MCU
* Device #6: GeForce GTX 970, 1009/4037 MB allocatable, 13MCU

OpenCL Platform #2: Advanced Micro Devices, Inc.
================================================
* Device #7: AMD FX(tm)-8350 Eight-Core Processor, skipped.

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates

Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
* Slow-Hash-SIMD

Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger disabled.

[s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit =>


Session..........: hashcat
Status...........: Running
Hash.Type........: WPA/WPA2
Hash.Target......: 8381533406003807685881523 (AP:ae:f5:0f:22:80:1c STA:98:7b:dc:f9:f9:50)
Time.Started.....: Sun Apr  9 07:30:31 2017 (1 sec)
Time.Estimated...: Sun Apr  9 08:08:54 2017 (38 mins, 22 secs)
Guess.Mask.......: ?d?d?d?d?l?l?u?u [8]
Guess.Queue......: 1/2940 (0.03%)
Speed.Dev.#1.....:   401.7 kH/s (403.50ms)
Speed.Dev.#2.....:   402.4 kH/s (405.15ms)
Speed.Dev.#3.....:   405.4 kH/s (402.24ms)
Speed.Dev.#4.....:   403.3 kH/s (400.39ms)
Speed.Dev.#5.....:   187.0 kH/s (283.22ms)
Speed.Dev.#6.....:   185.3 kH/s (285.72ms)
Speed.Dev.#*.....:  1985.0 kH/s
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 0/4569760000 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/456976000 (0.00%)
Candidates.#1....: 1234maMA -> 1618pqAN
Candidates.#2....: 1218pqAN -> 1667yzMA
Candidates.#3....: 1242yzMA -> 1631tgBA
Candidates.#4....: 1771seGO -> 1558paAN
Candidates.#5....: 1784jaAN -> 1816blON
Candidates.#6....: 1261tgBA -> 1523reGO
HWMon.Dev.#1.....: Temp: 63c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:8
HWMon.Dev.#2.....: Temp: 55c Fan: 90% Util:100% Core:1809MHz Mem:4513MHz Bus:4
HWMon.Dev.#3.....: Temp: 56c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:16
HWMon.Dev.#4.....: Temp: 50c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:4
HWMon.Dev.#5.....: Temp: 54c Fan: 60% Util:100% Core:1379MHz Mem:3004MHz Bus:1
HWMon.Dev.#6.....: Temp: 58c Fan: 60% Util:100% Core:1366MHz Mem:3004MHz Bus:1

hashcatは、マスクのリストを1つずつ処理し始めます。 policygenはマスクを(おおよその)複雑さの順序でソートするため、最速のマスクがリストの最初に表示されます。そのため、各マスクは以前のマスクよりも(大体)時間がかかる傾向があります。

ただし、完了するまで待つ必要はないでしょう。 :)

6
Royce Williams

これを計算する別の方法がありますが、残念ながら別の値に達しています。

少なくとも2桁を使用する必要があるため、最初の1桁には10通りの可能性があり、次の9桁には90通りのペアが可能です。

大文字と小文字の26 * 25の組み合わせのアナログ。

この方法で6文字を選択すると、最後の2つは(26 + 26 + 10-6)=(62-6)= 56で、最後の2つは55になります。

組み合わせでは、これは((10 * 9 * 26 * 25 * 26 * 25 * 56 * 55))の組み合わせです。文字の場合、正しい順序を知らなくても、パスワードが構成される可能性があります。

これは、117 117 000 000(1170億、1.2e12)です。

可能な組み合わせごとに8!=(40320)シャッフルを掛けたので、

4 722 157 440 000 000 (4.7e16)

違いがどこから来ているのか、特にbinom(26、lower)の意味がわかりません。

両方の結果を因数分解すると、次のようになります。

factor $((10*9*26*25*26*25*56*55*40320)) 
4722157440000000: 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 5 5 5 5 5 5 5 7 7 11 13 13

factor 58474600000000
58474600000000: 2 2 2 2 2 2 2 2 2 5 5 5 5 5 5 5 5 61 4793

私は4793がどこから来ているのかを理解できません-同様に、61も。

1
user unknown

私は、組合せ論を教えるためのすべての質問が「これらの基準に従うパスワードがいくつ存在するか」である未来を夢見ています。

楽しもう。

まず、62文字あり、そのうちの8文字は約2.18e14の可能性があります。これが上限です。条件4に従ってすべての文字を最大で一度も使用するため、これは62 * 61 * ... * 55の可能性、つまり約1.36e14になります。

次に、少なくとも2つの小文字、2つの大文字、2つの数字が必要です。各カテゴリの発生回数のみを数えると、すべてのパスワードは4 = 6のうち2つのカテゴリに分類されます。

  1. 4L + 2U + 2Dまたは2L + 4U + 2D
  2. 2L + 2U + 4D
  3. 3L + 3U + 2D
  4. 3L + 2U + 3Dまたは2L + 3U + 3D

各カテゴリには、binom(26、lower)* binom(26、upper)* binom(10、digits)の文字と8の可能な選択があります。選択の順列。 (文字を繰り返すことが許可されていないという事実は、物事をここでずっと簡単にします。)

これにより、合計で約3.90e13の可能なパスワードが得られます。 (Royceが使用したpolicygenツールでは、すべての文字を1回だけ使用できるように指定できないため、この数値はわずかに低くなっています。)

0
Elias