Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/sensepost/assless-chaps
パスワードクラッキングWi-Fi監査ハッシュ分析暗号化ペネトレーションテスト
GitHubsensepost/assless-chaps

assless-chaps

NTハッシュのデータベースを使用してMSCHAPv2のチャレンジ/レスポンスを迅速にクラックする

リポジトリを見る
1411927日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

assless-chaps

MSCHAPv2/NTLMv1 のチャレンジ/レスポンスを NT ハッシュのデータベースを使って迅速にクラックします

はじめに

Assless CHAPs は、MSCHAPv2/NTLMv1 交換においてチャレンジとレスポンス(例:WiFi EAP WPE 攻撃から得られるもの)がある場合に、使用された NT ハッシュを効率的に復元する方法です。

このツールには NT ハッシュのデータベースが必要です。既存のリストや hashcat を使ったワードリストとルールからこれらのデータベースを作成する方法については、以下に説明があります。サンプルデータベースとして SecLists からのものを含めています。bunzip で展開する必要があります。

手法

MSCHAPv2 交換では、平文のパスワードを「クラック」する必要はなく、使用された NThash がわかれば十分です。

MSCHAPv2 は NThash を 3 つの部分に分割し、それぞれの部分を異なる鍵として使用して、同じチャレンジ(ピアと認証者のチャレンジから導出)を DES 暗号化します。NThash は 2 つの 7 バイト鍵と 1 つの 2 バイト鍵に分割されます。つまり、最後の鍵は必要な長さにするために NULL でパディングされます。DES 操作の効率性と鍵空間が 65,535 であるため、この部分は迅速にブルートフォースできます。その 2 バイトが得られれば、データベース内の末尾がその 2 バイトであるすべての NThash を検索できます。これにより、チェックするハッシュの候補が大幅に絞り込まれます。

これはレインボーテーブルと同様の、空間と時間のトレードオフの一種です。また、ハッシュ・シャッキングの一形態でもあります。

発表

これは Defcon 29 の RF Hacking Village で初めて発表されました。スライドはこのリポジトリに含まれています。

速度

以下は、3 つのサンプルチャレンジ/レスポンスと、3 つの異なるワードリスト(小規模なプライベートリスト、rockyou、Have I Been Pwned リスト)での比較です。これらのテストは Macbook Pro 2016 で行いました。Hashcat はこのハッシュ・シャッキングカーネルと、内蔵の 2 つの GPU を使用し、純粋なカーネル(最適化版はまだ存在しないため)を使用しています。Hash3 はリストに含まれておらず、最悪のパフォーマンスを想定しています。hashcat が初回実行時にディクショナリキャッシュを構築する時間は含めていません。

Hash1

小規模ハッシュリスト:

root@kitploit:~
hashcat 0.50s user 0.27s system 55% cpu 1.405 total (8597.8 kH/s)
assless 0.05s user 0.00s system 294% cpu 0.018 total

Rockyou ハッシュリスト:

root@kitploit:~
hashcat 2.67s user 0.51s system 93% cpu 3.413 total
assless 0.05s user 0.01s system 281% cpu 0.021 total

HIBP ハッシュリスト:

root@kitploit:~
hashcat 59.97s user 11.72s system 136% cpu 52.603 total (5620.6 kH/s)
assless 0.05s user 0.00s system 292% cpu 0.018 total

Hash 2

小規模ハッシュリスト:

root@kitploit:~
hashcat 0.51s user 0.27s system 55% cpu 1.409 total (8704.7 kH/s)
assless 0.03s user 0.00s system 248% cpu 0.012 total

Rockyou ハッシュリスト:

root@kitploit:~
hashcat 2.20s user 0.46s system 110% cpu 2.409 total (5798.4 kH/s)
assless 0.03s user 0.00s system 231% cpu 0.015 total

HIBP ハッシュリスト:

root@kitploit:~
hashcat 65.37s user 12.74s system 135% cpu 57.712 total (5768.7 kH/s)
assless 0.03s user 0.00s system 249% cpu 0.013 total

Hash 3

Hash 3 はいずれのハッシュリストにも存在せず、最悪のルックアップパフォーマンスを想定しています。

小規模ハッシュリスト:

root@kitploit:~
hashcat 0.67s user 0.34s system 66% cpu 1.526 total (7550.1 kH/s)
assless 0.02s user 0.00s system 211% cpu 0.012 total

Rockyou ハッシュリスト:

root@kitploit:~
hashcat 2.71s user 0.52s system 94% cpu 3.415 total (5685.4 kH/s)
assless 0.02s user 0.01s system 181% cpu 0.014 total

HIBP ハッシュリスト:

root@kitploit:~
hashcat 125.19s user 27.62s system 139% cpu 1:49.75 total (5634.9 kH/s)
assless 0.06s user 0.03s system 115% cpu 0.075 total

インストール

Rust 版には SQLite 3.6.8 以降が必要です。

Python 版には python3、sqlite3、pycryptodome が必要です。

データベース作成ユーティリティには python3 と sqlite3 CLI が必要です。

コンパイル

これは Rust 版にのみ適用されます。cargo が必要です。

cargo がインストールされていれば、assless-chaps-rs ディレクトリに移動し、次のコマンドでビルドします: cargo build --release

結果のバイナリは target/release/ ディレクトリに格納されます。

使い方

Assless にはチャレンジ、レスポンス、NThash のデータベースが必要です。オプションで、Python 版ではバンドルされている最適化済みの 2 バイトルックアップファイルを使用できます。最も簡単な使い方は次のとおりです:

./assless-chaps <Challenge> <Response> <hashes.db>

例:

./assless-chaps 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db

出力は次のようになります:

root@kitploit:~
[-] Two byte lookup file not provided, will brute force instead.
[+] Found in 22636 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

最終的な完全なハッシュ 8846f7eaee8fb117ad06bdd830b7586c は、パスワード password の NT ハッシュです。

2 バイトルックアップ - Python のみ

私は、大規模なパスワードコーパス全体で最も頻出する 65,535 個の 2 バイト値をソートしたリストを作成するのに時間を費やしました。このファイルは twobytes として含まれています。assless の 4 番目の引数として渡すだけです。

これにより、通常は DES のラウンド数が数回節約されますが、速度に大きな差は生じません。多くのハッシュを処理する場合には効果があるかもしれません。

python3 assless-chaps.py 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db twobytes

root@kitploit:~
[+] Found in 65533 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

独自のハッシュ辞書の作成

mksqlitedb.py ファイルは、CSV ハッシュファイルをデータベースに変換するのに役立ちます。

python3 mksqlitedb.py <database name> <csv file>

CSV ファイルには次の 3 つの列が必要です:

  • ハッシュの最後の 2 バイト(最後の 4 文字の ASCII)
  • 最初の 7 バイト(最初の 14 文字の ASCII)
  • 2 番目の 7 バイト(15~29 文字目の ASCII)

例えば、ハッシュ 8846f7eaee8fb117ad06bdd830b7586c は次のようになります:

586c,8846f7eaee8fb1,17ad06bdd830b7

これに対する正規表現変換の例:

echo 8846f7eaee8fb117ad06bdd830b7586c | sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\)$/\3,\1,\2/"

既存のハッシュリスト(Have I Been Pwned リストなど)を使用するか、hashcat とお好みのワードリスト/ルールの組み合わせを使って独自に生成することができます。

Have I Been Pwned の使用

HIBP パスワードリストは既に NT ハッシュとしてダウンロード可能で、ファイルからカウントを削除し、データベースにインポートするために CSV 形式に変換するだけです。

これは、標準的な Unix ユーティリティ sed を使って次のように行えます:

sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\):.*/\3,\1,\2/" pwned-passwords-ntlm-ordered-by-hash.txt > hibp.csv

その後、mksqlitedb.py hibp.db hibp.csv を使ってインポートできます。

ワードリストからハッシュリストへの変換

プレーンなワードリストを nthash のハッシュリストに変換するには、nthasher を使用できます。これは大規模なワードリストを高速に処理できます。得られたハッシュは、前述の必要な CSV 形式に変換する必要があります。

このリポジトリには、ハッシュを直接必要な CSV 形式で出力する、はるかに遅い nthasher が含まれており、次のように簡単に実行できます:

python3 nthash-from-clear.py <wordlist> > hashlist.csv

ワードリストをルールで拡張したい場合は、次の hashcat を使用するセクションを参照してください。

hashcat を使用したワードリストとルールからのハッシュ CSV ファイルの作成

mode 1000 の OpenCL モジュールに小さなコード変更を加えて、クラック候補に一致するものだけでなく、すべてのハッシュを出力させる必要があります。デフォルトでは、必要な CSV 形式でハッシュを生成します。

  • hashcat の OpenCL ディレクトリに移動: cd hashcat/OpenCL
  • パッチを適用: patch < m01000_a0-pure.cl.patch
  • クラック不能な NT ハッシュを含むファイルを用意: echo 11111111111111111111111111111111 > impossible_hash
  • 通常通りクラックを実行しますが、potfile を無効にして出力をファイルにリダイレクト: hashcat -m1000 impossible_hash rockyou.txt -r best64.rule --potfile-disable --quiet > rockyou.csv
  • ハッシュデータベースを作成: python3 mksqlitedb.py rockyou.db rockyou.csv

ディスク容量とファイルサイズに関する注意

SQLite データベースは、通常、作成元の CSV ファイルよりも 61% 大きくなります。データベースの作成にはファイルサイズによって時間がかかる場合もあります。それに応じてファイルシステムの要件を準備してください。

以下は rockyou 辞書を使用した例です:

  • ベースの rockyou 辞書 129M
  • hashcat で生成された rockyou.csv 462M
  • 結果の SQLite データベース rockyou.db 746M
  • BZip2 最大圧縮 rockyou.db.bz2 339M

各ハッシュを動的に変換して挿入し、中間の CSV ファイルを不要にすることで容量を節約できます。

NTLMv1 SSP

NTLMv1 は、SSP を使用している場合を除き、まったく同じように動作します。SSP が使用されているかどうかは、LM レスポンスがゼロの連続で終わっているかどうかで判断できます。付属の ntlm-ssp.py を使用して、assless が必要とするサーバーチャレンジを生成できます。

次のように実行します: python3 ntlm-ssp.py <lm response> <challenge>

例えば、hashcat のサンプルハッシュからの NTLMv1-SSP チャレンジレスポンスの例を使用する場合: u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c

LM とチャレンジを次のように渡します:

python3 ntlm-ssp.py 338d08f8e26de93300000000000000000000000000000000 cb8086049ec4736c

そして次のレスポンスが得られます:

The server challenge is: 724edf24aea0d68b

これは通常通り assless-chaps でクラックできます:

./assless-chaps 724edf24aea0d68b 9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41 hashes.db

ツールをダウンロード