GPUパスワードクラッキングツール「Hashcat」
2025年7月4日
セキュリティエンジニアの曽我です。今回のtoolsシリーズ第10回は、世界最速のパスワードリカバリツール「Hashcat」について詳しく解説します。以前紹介したJohn the Ripperと同様にパスワードクラッキングに特化していますが、GPUを最大限に活用した高速処理が特徴のツールです。
本記事では、Hashcatの基本的な使い方から高度な活用法まで、具体的なコマンド例と出力結果を交えながら解説します。パスワードセキュリティの評価や、強固なパスワードポリシーの検証に携わるセキュリティエンジニアの方々に役立つ内容となっています。
目次
- Hashcatとは
- インストール方法
- 基本的な使い方 3.1. ハッシュの識別 3.2. 辞書攻撃 3.3. ブルートフォース攻撃
- 高度な使用方法 4.1. マスク攻撃 4.2. ルールベース攻撃 4.3. 組み合わせ攻撃 4.4. ハイブリッド攻撃
- パフォーマンス最適化 5.1. GPUの選択と設定 5.2. ベンチマークの実行 5.3. アタックモードの選択
- 実践的な活用例 6.1. パスワードポリシーの検証 6.2. 回復したハッシュの分析
- まとめ
- 参考資料
1. Hashcatとは
Hashcatは、atom氏(Jens Steube)によって開発された、世界最速のパスワードリカバリツールです。CPUだけでなくGPUの処理能力を最大限に活用することで、従来のツールと比較して桁違いの高速処理を実現しています。Kali Linuxには標準搭載されており、300以上のハッシュタイプに対応しています。
Hashcatの主な特徴:
- GPUアクセラレーションによる高速処理
- 300以上のハッシュアルゴリズムに対応
- 多彩な攻撃モード(辞書、ブルートフォース、マスク、ルールベース、組み合わせ、ハイブリッド)
- 複数のGPUの並列処理に対応
- セッション管理機能(中断と再開)
- 独自のルール言語
- ベンチマーク機能
- オープンソースで活発なコミュニティ
Hashcatは、パスワードセキュリティの評価やフォレンジック調査、パスワードポリシーの検証など、様々な目的で活用されています。
2. インストール方法
Kali Linuxには標準でインストールされていますが、他のディストリビューションへのインストール方法も記載します。
Debian/Ubuntuベースのシステム:
sudo apt update
sudo apt install hashcat
Arch Linux:
sudo pacman -S hashcat
macOS(Homebrew):
brew install hashcat
GitHubからのビルド:
git clone https://github.com/hashcat/hashcat.git
cd hashcat
make
sudo make install
インストールが完了したら、以下のコマンドでバージョンを確認できます:
hashcat --version
出力例:
hashcat v6.2.5
また、システムがHashcatをサポートしているかを確認するには:
hashcat -I
これにより、利用可能なOpenCLプラットフォームとデバイスの一覧が表示されます。
3. 基本的な使い方
3.1. ハッシュの識別
ハッシュを解析する前に、そのタイプを特定することが重要です。Hashcatはハッシュの例からタイプを推測する機能を提供しています:
hashcat --example-hashes | grep -i "NTLM"
これにより、NTLMハッシュのサンプルとモード番号が表示されます。
出力例:
Hash mode #1000
Name................: NTLM
Category............: Windows
Example.Type........: hash
Example.Hash........: b4b9b02e6f09a9bd760f388b67351e2b
サポートされているハッシュタイプの完全なリストを表示するには:
hashcat --help
3.2. 辞書攻撃
辞書攻撃は、既知の単語リストを使用してパスワードを解析する方法です:
hashcat -m 1000 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt
このコマンドは、モード1000(NTLM)で、hashes.txtファイル内のハッシュに対して、rockyou.txtの単語リストを使用した辞書攻撃を実行します。
出力例:
hashcat (v6.2.5) starting...
OpenCL API (OpenCL 2.0 CUDA 11.4.300) - Platform #1 [NVIDIA Corporation]
* Device #1: NVIDIA GeForce RTX 3080, 9614/10240 MB, 68MCU
Hash-mode: 1000 (NTLM)
Dictionary cache built:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344391
* Bytes.....: 139922023
* Keyspace..: 14344384
b4b9b02e6f09a9bd760f388b67351e2b:Password123
Session..........: hashcat
Status...........: Cracked
Hash.Name........: NTLM
Hash.Target......: b4b9b02e6f09a9bd760f388b67351e2b
Time.Started.....: Tue Sep 01 15:30:12 2025 (6 secs)
Time.Estimated...: Tue Sep 01 15:30:18 2025 (0 secs)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 1254.9 MH/s (8.26ms) @ Accel:128 Loops:1 Thr:1024 Vec:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 7340032/14344384 (51.17%)
Rejected.........: 0/7340032 (0.00%)
Restore.Point....: 7339008/14344384 (51.16%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: Passw0rd88 -> Password123
Started: Tue Sep 01 15:30:10 2025
Stopped: Tue Sep 01 15:30:19 2025
3.3. ブルートフォース攻撃
ブルートフォース攻撃は、可能なすべての文字の組み合わせを試行する方法です:
hashcat -m 1000 -a 3 hashes.txt ?a?a?a?a?a?a
このコマンドは、NTLMハッシュに対して、全ての可能な文字(?a)を使用した6文字のブルートフォース攻撃を実行します。
?aは以下の文字セットを表します:
- ?l = 小文字アルファベット(a-z)
- ?u = 大文字アルファベット(A-Z)
- ?d = 数字(0-9)
- ?s = 特殊文字(!"#$%&'()*+,-./:;<=>?@[]^_`{|}~)
- ?a = 上記すべて
注意:ブルートフォース攻撃は、文字数が増えるほど試行回数が指数関数的に増加します。実際的な時間制約を考慮して、適切な文字長を選択することが重要です。
4. 高度な使用方法
4.1. マスク攻撃
マスク攻撃は、パスワードの一部のパターンが既知の場合に効果的です:
hashcat -m 1000 -a 3 hashes.txt Pass?d?d?d?d
このコマンドは、"Pass"で始まり、その後に4桁の数字が続くパターンのパスワードを試行します。
より複雑な例:
hashcat -m 1000 -a 3 hashes.txt ?u?l?l?l?l?l?d?d
これは、1つの大文字、5つの小文字、2つの数字からなるパスワードを試行します(例:Abcdef12)。
4.2. ルールベース攻撃
ルールベース攻撃は、辞書の単語に特定の変換を適用する方法です:
hashcat -m 1000 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
このコマンドは、rockyou.txtの各単語に対して、best64.ruleファイルに定義された変換ルールを適用します。
Hashcatには、以下のような標準ルールファイルが用意されています:
- best64.rule:基本的な変換ルールの集合
- d3ad0ne.rule:より複雑なルールセット
- rockyou-30000.rule:rockyou.txtから抽出された一般的なパターン
- specific.rule:特定の変換に特化したルール
- T0XlC.rule:高度な変換ルールの大規模なセット
独自のルールを作成することも可能です。例えば:
echo -e "sa@\$se3\$o0" > my_rules.rule
hashcat -m 1000 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt -r my_rules.rule
このルールは、'a'を'@'に、's'を'$'に、'e'を'3'に、'o'を'0'に置換します。
4.3. 組み合わせ攻撃
組み合わせ攻撃は、2つの辞書の単語を結合して新しいパスワード候補を生成する方法です:
hashcat -m 1000 -a 1 hashes.txt words1.txt words2.txt
このコマンドは、words1.txtの各単語とwords2.txtの各単語を結合した組み合わせを試行します。
例えば、words1.txtに「red」「blue」「green」、words2.txtに「apple」「banana」「cherry」が含まれている場合、「redapple」「redbanana」「redcherry」「blueapple」などの組み合わせが生成されます。
4.4. ハイブリッド攻撃
ハイブリッド攻撃は、辞書の単語とマスクを組み合わせる方法です:
# 辞書 + マスク
hashcat -m 1000 -a 6 hashes.txt /usr/share/wordlists/rockyou.txt ?d?d?d?d
# マスク + 辞書
hashcat -m 1000 -a 7 hashes.txt ?d?d?d?d /usr/share/wordlists/rockyou.txt
1つ目のコマンドは、rockyou.txtの各単語に4桁の数字を追加します(例:password1234)。 2つ目のコマンドは、4桁の数字の後にrockyou.txtの単語を追加します(例:1234password)。
5. パフォーマンス最適化
5.1. GPUの選択と設定
Hashcatのパフォーマンスは、使用するGPUに大きく依存します。一般的に、以下の要素が重要です:
- コア数:多いほど並列処理能力が高い
- メモリ容量:大きいほど複雑なハッシュを処理できる
- メモリ帯域幅:高いほどデータ転送が速い
- ドライバの最適化:最新のドライバを使用する
GPUの選択とインストールの例:
# NVIDIAドライバのインストール(Debian/Ubuntu)
sudo apt update
sudo apt install nvidia-driver
# AMDドライバのインストール
sudo apt install mesa-opencl-icd
5.2. ベンチマークの実行
システムのパフォーマンスを測定するには、ベンチマークを実行します:
# 全ハッシュタイプのベンチマーク
hashcat -b
# 特定のハッシュタイプのベンチマーク
hashcat -b -m 1000
出力例:
hashcat (v6.2.5) starting in benchmark mode...
Benchmarking uses hand-optimized kernel code by default.
You can use it in your cracking session by setting the -O option.
Note: Using optimized kernel code limits the maximum supported password length.
To disable the optimized kernel code in benchmark mode, use the -w option.
OpenCL API (OpenCL 2.0 CUDA 11.4.300) - Platform #1 [NVIDIA Corporation]
* Device #1: NVIDIA GeForce RTX 3080, 9614/10240 MB, 68MCU
Benchmark relevant options:
* --optimized-kernel-enable
Hashmode: 1000 - NTLM
Speed.#1.........: 41258.3 MH/s (46.03ms) @ Accel:128 Loops:1024 Thr:1024 Vec:1
Started: Tue Sep 01 16:00:10 2025
Stopped: Tue Sep 01 16:01:25 2025
5.3. アタックモードの選択
効率的な解析には、適切なアタックモードの選択が重要です:
- 辞書攻撃(-a 0):既知のパスワードが多い場合
- マスク攻撃(-a 3):パターンが既知の場合
- ルールベース攻撃(-a 0 -r):パスワードポリシーが既知の場合
- 組み合わせ攻撃(-a 1):複合単語のパスワードが予想される場合
アタックモードの比較:
# 辞書攻撃
hashcat -m 1000 -a 0 -w 3 hashes.txt /usr/share/wordlists/rockyou.txt
# 同等のマスク攻撃(非効率)
hashcat -m 1000 -a 3 -w 3 hashes.txt ?a?a?a?a?a?a?a?a
辞書攻撃は既知のパスワードに対して効率的ですが、マスク攻撃はキーペースが非常に大きくなる可能性があります。
最適化フラグの使用:
hashcat -m 1000 -a 0 -w 3 -O hashes.txt /usr/share/wordlists/rockyou.txt
-w 3はワークロードプロファイルを「高性能」に設定し、-Oは最適化されたカーネルを使用します。
6. 実践的な活用例
6.1. パスワードポリシーの検証
組織のパスワードポリシーを検証するシナリオ:
# パスワードポリシーに基づくマスク攻撃
# 8文字以上、大文字・小文字・数字を含む
hashcat -m 1000 -a 3 policy_test.txt -1 ?u -2 ?l -3 ?d ?1?2?2?2?2?3?3?3 -i --increment-min=8
このコマンドは、「1つの大文字、4つの小文字、3つの数字」という最小構成から始まるパスワードを試行し、長さを増やしていきます。
典型的なパスワードパターンのテスト:
# 単語 + 年 + 特殊文字(例:Password2025!)
hashcat -m 1000 -a 6 policy_test.txt /usr/share/wordlists/english.txt ?d?d?d?d?s
6.2. 回復したハッシュの分析
解析したパスワードのパターンを分析することで、組織のパスワード傾向を把握できます:
# クラックしたハッシュの表示
hashcat -m 1000 hashes.txt --show
# 統計の取得
hashcat -m 1000 hashes.txt --show | cut -d: -f2 | sort | uniq -c | sort -nr > password_stats.txt
特定のパターンの検出:
# 数字で終わるパスワードの割合
grep -E '[0-9]$' password_stats.txt | wc -l
# 基本単語+数字のパターン
grep -E '^[a-zA-Z]+[0-9]+$' password_stats.txt | wc -l
これらの分析結果に基づいて、パスワードポリシーや教育プログラムを改善することができます。
7. まとめ
Hashcatは、GPUの処理能力を最大限に活用した世界最速のパスワード解析ツールです。多様なハッシュタイプに対応し、辞書攻撃からブルートフォース、マスク攻撃、ルールベース攻撃まで、様々な攻撃手法をサポートしています。
特筆すべき点は、その驚異的な処理速度です。最新のGPUを使用することで、従来のCPUベースのツールと比較して数百倍から数千倍の速度でパスワードを解析できます。例えば、最新のNVIDIA RTX 3090を使用した場合、MD5ハッシュでは秒間1000億回以上のパスワード試行が可能です。
このような高速な解析能力は、パスワードセキュリティの重要性を改めて認識させるものです。Hashcatで簡単に解析できるパスワードは、実際の攻撃者にとっても容易なターゲットとなります。そのため、組織は強力なパスワードポリシーの実装、多要素認証の導入、定期的なパスワード監査などの対策を講じる必要があります。
セキュリティエンジニアを目指す方は、Hashcatの使い方を習得することで、現実的なパスワードセキュリティのリスク評価能力を向上させることができるでしょう。ただし、このツールの使用は必ず適切な許可を得た上で、教育目的または許可されたセキュリティテストの範囲内でのみ行うことが重要です。
8. 参考資料
- Hashcat 公式サイト
- Hashcat 公式GitHub リポジトリ
- Hashcat Wiki
- Kali Linux Tools: Hashcat
- OWASP: Password Storage Cheat Sheet
- NIST: Digital Identity Guidelines - Authentication
- Hashcat Forum
- Hashcat Example Hashes
※本記事の内容は、教育目的および正当なセキュリティテストのためのものです。Hashcatの使用は、自分が所有または正当な許可を得たシステムに限定してください。許可なく他者のシステムに対して使用することは、法律違反となる可能性があります。必ず適切な許可を得た上で実行してください。

