私は自分のWiFiをブルートフォースで攻撃しようとしています。自分の調査から、ハッキングしようとしているルーターのこの特定のモデルのすべてのデフォルトパスワードは、次のルールに従っていることがわかります。
パスワードの長さ= 8
文字セット[a-zA-Z0-9]
各文字はパスワードで一度だけ使用できます
最低2つの小文字、2つの大文字、2つの数字が存在します。
可能なパスワードの例:r3wN4HTl、5j3Wkl5Daなど...
このブルートフォースをどのように進めることができますか?組み合わせはいくつありますか?パスワードを正常に解読するための推定時間はどれくらいですか?
パスフレーズがランダムに生成された(人間の選択要因の影響を受けていない)と想定した場合、いくつかの基本的な数学といくつかのツールを使用して、ほとんどの方法を実行できます。制限#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
はマスクを(おおよその)複雑さの順序でソートするため、最速のマスクがリストの最初に表示されます。そのため、各マスクは以前のマスクよりも(大体)時間がかかる傾向があります。
ただし、完了するまで待つ必要はないでしょう。 :)
これを計算する別の方法がありますが、残念ながら別の値に達しています。
少なくとも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も。
私は、組合せ論を教えるためのすべての質問が「これらの基準に従うパスワードがいくつ存在するか」である未来を夢見ています。
楽しもう。
まず、62文字あり、そのうちの8文字は約2.18e14の可能性があります。これが上限です。条件4に従ってすべての文字を最大で一度も使用するため、これは62 * 61 * ... * 55の可能性、つまり約1.36e14になります。
次に、少なくとも2つの小文字、2つの大文字、2つの数字が必要です。各カテゴリの発生回数のみを数えると、すべてのパスワードは4 = 6のうち2つのカテゴリに分類されます。
各カテゴリには、binom(26、lower)* binom(26、upper)* binom(10、digits)の文字と8の可能な選択があります。選択の順列。 (文字を繰り返すことが許可されていないという事実は、物事をここでずっと簡単にします。)
これにより、合計で約3.90e13の可能なパスワードが得られます。 (Royceが使用したpolicygenツールでは、すべての文字を1回だけ使用できるように指定できないため、この数値はわずかに低くなっています。)