はじめに:hashcat-dataとは?
hashcat-data
は、世界最速かつ最も先進的なパスワード回復ユーティリティとして知られる hashcat のためのデータファイルを提供するパッケージです。hashcat は、CPU や GPU のパワーを活用して、様々なアルゴリズムでハッシュ化されたパスワードを解析(クラッキング)するための強力なツールです。
hashcat-data
パッケージには、hashcat が効果的なパスワード解析を行うために利用できる、文字セット (charsets)、ルール (rules)、マスク (masks)、ソルト (salts)、テーブル (tables) などが含まれています。これらのデータは、特に辞書攻撃やマスク攻撃といった hashcat の主要な攻撃モードを強化する上で重要な役割を果たします。
Kali Linux などのペネトレーションテスト用 Linux ディストリビューションでは、hashcat 本体と共によく含まれていますが、個別のパッケージとして提供されていることもあります。このパッケージを理解し活用することで、hashcat を用いたパスワード監査や解析作業の効率と成功率を大幅に向上させることができます。
注意: hashcat および関連ツールの使用は、必ず許可されたシステムに対して、正当な目的(セキュリティ監査やパスワード回復など)のためにのみ行ってください。不正アクセスや許可のないパスワード解析は法律で禁止されており、重大な結果を招く可能性があります。
インストールとファイルの場所
多くの場合、hashcat-data
は hashcat
パッケージの依存関係として自動的にインストールされます。Kali Linux や Debian ベースのシステムでは、以下のコマンドで hashcat をインストールすると、通常 hashcat-data
も一緒にインストールされます。
sudo apt update
sudo apt install hashcat
もし個別にインストールが必要な場合や、存在を確認したい場合は、以下のコマンドを使用できます。
sudo apt install hashcat-data
インストール後、hashcat-data
パッケージに含まれるファイルは、通常以下のディレクトリに配置されます。
/usr/share/hashcat-data/
このディレクトリの中身を確認することで、利用可能なデータファイルを確認できます。
ls -l /usr/share/hashcat-data/
また、dpkg
コマンドを使って、パッケージに含まれるファイルの完全なリストと場所を確認することも可能です。
dpkg -L hashcat-data
hashcat のバージョンやディストリビューションによっては、プロファイルフォルダ(~/.hashcat/
や ~/.local/share/hashcat/
など)に設定ファイルや potfile(解析済みのハッシュとパスワードを記録するファイル)が保存されますが、hashcat-data
が提供する共有データは上記の /usr/share/
配下に置かれるのが一般的です。
hashcat-data パッケージの内容
/usr/share/hashcat-data/
ディレクトリには、hashcat の解析能力を高めるためのサブディレクトリが含まれています。主なディレクトリとその役割は以下の通りです。
ディレクトリ名 | 内容と目的 |
---|---|
charsets/ | カスタム文字セットファイル(.hcchr )が含まれます。ブルートフォース攻撃やマスク攻撃で、特定の文字種(例:特定の言語の文字、特殊記号など)だけを含むパスワードを効率的に試行するために使用されます。 |
masks/ | 事前定義されたマスクパターンファイル(.hcmask )が含まれます。マスク攻撃は、パスワードの構造がある程度予測できる場合に非常に有効です(例:「大文字1文字 + 小文字5文字 + 数字2文字」など)。ここに含まれるファイルは、一般的なパスワードパターンに基づいたマスクを提供します。 |
rules/ | ルールファイル(.rule )が含まれます。これは辞書攻撃を強化するための非常に強力な機能です。ルールは、辞書ファイル(ワードリスト)内の単語に対して様々な変換(例:大文字化、小文字化、数字の追加、記号の置換、単語の組み合わせなど)を適用し、より複雑なパスワード候補を生成します。best64.rule や rockyou-30000.rule など、効果的なルールセットが提供されています。 |
wordlists/ | サンプルや小規模なワードリストが含まれることがあります。ただし、注意点として、ここに含まれるワードリストは非常に限定的であることが多く、本格的なパスワード解析には不十分です。有名な rockyou.txt のような大規模なワードリストは、通常 /usr/share/wordlists/ ディレクトリに別途インストールされるか、オンラインからダウンロードする必要があります。hashcat-data パッケージ自体が巨大なワードリストを含むことは稀です。 |
salts/ / tables/ / etc | 他にも、特定のハッシュタイプで使用されるソルトの例や、その他の補助的なデータ、ツール(Pythonスクリプトなど)が含まれる場合があります。 |
これらのデータファイルを適切に利用することで、hashcat の解析プロセスをよりターゲットに合わせて最適化し、成功の可能性を高めることができます。
hashcat-data を使った hashcat の活用例
hashcat-data
パッケージの真価は、hashcat コマンド実行時にそのデータファイルを指定することで発揮されます。以下に主な活用例を示します。
1. 辞書攻撃とルールの組み合わせ (-a 0
と -r
)
辞書攻撃は、パスワードに使われそうな単語リスト(辞書/ワードリスト)を試す方法です。しかし、単純な単語だけでなく、「Password123」や「P@ssw0rd!」のように、単語を基にした変形パスワードも多く存在します。ここで hashcat-data
の rules
ディレクトリにあるルールファイルが役立ちます。
例えば、MD5 ハッシュ(モード -m 0
)を、有名なワードリスト rockyou.txt
と hashcat-data
に含まれる強力なルールセット best64.rule
を使って解析する場合のコマンド例です。
hashcat -m 0 /path/to/your/hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat-data/rules/best64.rule
このコマンドは、rockyou.txt
の各単語に対して best64.rule
に定義された64個の変換ルール(先頭大文字化、末尾に数字追加など)を適用し、膨大な数のパスワード候補を生成して試行します。
ポイント:
-m <hash_mode>
: 解析対象のハッシュタイプを指定します。hashcat は数百種類のハッシュに対応しており、正しいモード番号を選ぶことが重要です。(例: NTLM は 1000, SHA1 は 100)/path/to/your/hashes.txt
: 解析したいハッシュ値が含まれるファイルへのパス。/usr/share/wordlists/rockyou.txt
: 使用するワードリストへのパス。これは通常hashcat-data
パッケージとは別に取得・配置します。-r /path/to/rule/file.rule
: 適用するルールファイルへのパス。hashcat-data
パッケージ内のものを指定します。-a 0
: 辞書攻撃モード(Straight モード)を指定します。ルールと組み合わせる場合もこのモードを使います。
2. マスク攻撃とマスクファイルの利用 (-a 3
と .hcmask
ファイル)
マスク攻撃は、パスワードのパターン(文字種と長さ)が分かっている場合に非常に効果的です。例えば、「英小文字8文字」なら ?l?l?l?l?l?l?l?l
のように指定します。hashcat-data
の masks
ディレクトリには、一般的なパスワードパターンに基づいたマスクファイル(.hcmask
)が用意されています。
例えば、rockyou
コーパスによく見られるパターン(1文字から60文字まで)を定義したマスクファイル rockyou-1-60.hcmask
を使って NTLM ハッシュ(モード -m 1000
)を解析する場合:
hashcat -m 1000 /path/to/your/hashes.txt -a 3 /usr/share/hashcat-data/masks/rockyou-1-60.hcmask
このコマンドは、指定されたマスクファイル内の各パターンに従ってパスワード候補を生成し、試行します。
ポイント:
-a 3
: マスク攻撃モード(Brute-force モード)を指定します。マスクパターンやマスクファイルを引数に取ります。- マスクの基本要素:
?l
: 英小文字 (a-z)?u
: 英大文字 (A-Z)?d
: 数字 (0-9)?s
: 記号 (!”#$%&'()*+,-./:;<=>?@[\]^_`{|}~)?a
: 上記すべて (?l?u?d?s)?b
: 全バイト (0x00 – 0xff)
- カスタム文字セットも定義可能 (
-1
,-2
,-3
,-4
オプション)。
3. カスタム文字セットの利用 (charsets
ディレクトリと --custom-charsetX
)
特定の言語の文字や、特殊な記号のみを含むパスワードをターゲットにする場合、カスタム文字セットが有効です。hashcat-data
の charsets
ディレクトリには、様々な言語や用途向けの文字セットファイル(.hcchr
)が含まれていることがあります。
これらをマスク攻撃内で利用するには、--custom-charsetX
オプションでファイルパスを指定し、マスク内で ?X
(Xは1から4) として参照します。
# 例:ロシア語キリル文字セットファイル Russian.hcchr をカスタム文字セット1として定義し、
# キリル文字8文字のパスワードを試すマスク攻撃
hashcat -m <hash_mode> /path/to/hashes.txt -a 3 --custom-charset1 /usr/share/hashcat-data/charsets/standard/Russian/Russian.hcchr ?1?1?1?1?1?1?1?1
実践的な考慮事項とベストプラクティス
- 適切な攻撃モードとハッシュタイプの選択: 解析対象のハッシュの種類(MD5, SHA1, NTLM, WPA2 など)を正確に特定し、対応する
-m
オプションを指定することが不可欠です。また、状況に応じて最適な攻撃モード(-a
オプション:辞書攻撃、マスク攻撃、ブルートフォース攻撃、ハイブリッド攻撃など)を選択します。 - ワードリストの重要性:
hashcat-data
はルールやマスクを提供しますが、効果的な辞書攻撃には大規模で質の高いワードリストが別途必要です。rockyou.txt
は有名ですが、ターゲットに関連するカスタムワードリスト(例:特定の組織名、関連用語などを含むリスト)を作成することも有効です。SecLists ( https://github.com/danielmiessler/SecLists ) のようなリポジトリから多様なリストを入手できます。 - ルールの組み合わせと最適化:
hashcat-data
には多くのルールファイルがありますが、複数のルールを組み合わせたり (-r rule1.rule -r rule2.rule
)、特定の目的に合わせてルールを自作したりすることも可能です。ただし、ルールを増やしすぎると計算量が爆発的に増加するため、バランスが重要です。 - パフォーマンス: hashcat は GPU を利用することで飛躍的に高速化します。強力な GPU を搭載したシステムを使用し、適切なドライバ(NVIDIA なら CUDA、AMD なら ROCm/OpenCL)がインストールされていることを確認してください。ワークロードプロファイル (
-w
オプション) を調整することで、速度と安定性のバランスを取ることもできます。 - セッション管理: 長時間かかる解析作業では、セッション機能 (
--session <session_name>
) を利用して進捗を保存し、中断・再開 (--restore
) できるようにすることが推奨されます。解析結果は potfile (hashcat.potfile
) に自動的に記録されます。 - 倫理と法律の遵守: 繰り返しになりますが、パスワード解析は許可された範囲でのみ実施してください。教育目的や自身の管理下にあるシステムのセキュリティ評価以外での使用は絶対に避けてください。
まとめ
hashcat-data
パッケージは、hashcat の強力なパスワード解析機能を補完し、強化するための重要なデータセットを提供します。特に、ルールファイルとマスクファイルは、辞書攻撃やマスク攻撃の効率と効果を大幅に向上させます。
このパッケージの内容を理解し、hashcat のオプションと組み合わせて適切に活用することで、より洗練されたパスワード解析戦略を実行できるようになります。ただし、大規模なワードリストの準備や、倫理的な使用に関する注意も忘れてはなりません。
さらに詳細な情報や最新の機能については、hashcat の公式ドキュメントや Wiki を参照することをお勧めします。
Happy (ethical) cracking!
参考情報
- hashcat 公式サイト: https://hashcat.net/hashcat/
- Kali Linux Tools – hashcat: https://www.kali.org/tools/hashcat/