特徴
Hashcat(ハッシュキャット)は、高速かつ柔軟なパスワードクラッキングツールです。パスワードのハッシュを復元する(クラックする)ために使われ、セキュリティテストやパスワード強度の評価に利用されます。(from chat gpt)
特徴 | 詳細 |
---|---|
GPU対応 | NVIDIAやAMDのGPUを使うことで、大量のハッシュを高速に処理可能 |
多彩なアルゴリズムに対応 | MD5,SHA1,SHA256,bcrypt,NTLM,WPA2などの多くのハッシュ形式に対応 |
複数の攻撃モード | 辞書攻撃,マスク攻撃,ルールベース攻撃.... |
対応アルゴリズムについては多すぎる(ざっと370種以上)ので、公式サイトを参照
https://hashcat.net/hashcat/
基本的な使い方
hashcat -m 0 -a 0 hash.txt wordlist.txt
オプション
オプション | 説明 |
---|---|
-a | 攻撃モード(下記参照) |
-m | ハッシュモード(下記参照) |
-I | 使用可能なデバイスやドライバの情報 |
--status | 実行中のステータス表示 |
--show | クラック済みの結果を表示 |
--workload-profile= | GPU不可調整(1~4) |
--increment | マスク攻撃で文字数を増やしながら攻撃 |
その他のオプション(いつも通り大量です)
・基本
オプション | 説明 |
---|---|
-o | クラック済みのハッシュを出力するファイルを指定 |
--username | ハッシュファイル内のユーザ名を無視 |
--remove | クラックされたハッシュをファイルから削除 |
--left | クラックされてないハッシュを表示 |
--potfile-disable | クラックされたハッシュの記録を無効 |
--session | セッション名を指定 |
--restore | 中断されたセッションを再開 |
--restore-disable | セッション復元ファイルの作成を無効 |
・出力とステータス
オプション | 説明 |
---|---|
--status-timer | ステータス画面の更新を秒単位で指定 |
--machine-readable | ステータス出力を機械可読形式で表示 |
-outfile-format | 出力ファイルの形式指定 |
--outfile-autohex-disable | 出力での$HEX[] 表記を無効にします |
--outfile-check-timer | 出力ファイルのチェック間隔を秒単位で指定します |
-p | ハッシュリストと出力ファイルの区切り文字を指定します |
・高度なオプション
オプション | 説明 |
---|---|
--force | 警告を無視して実行 |
--quiet | 出力を抑制 |
--hex-charset | 文字セットが16進数であると仮定 |
--hex-salt | ソルトが16進数であると仮定 |
--hex-wordlist | リスト内の単語が16進数であると仮定 |
--increment-min | インクリメント攻撃の最小パスワード |
--increment-max | インクリメント攻撃の最大パスワード |
-w | ワークロードプロファイルの指定 |
・マルコフチェーンとカスタム設定
オプション | 説明 |
---|---|
--markov-hcstat | 使用するhcstatファイルの指定 |
--markov-disable | マルコフチェーン無効 |
--markov-classic | 古典的なマルコフチェーンを有効 |
-t | 新しいマルコフチェーンを受け入れる閾値を指定 |
-1~-4 | カスタム文字セット |
・便利なオプション
オプション | 説明 |
---|---|
--stdout | クラックせずに候補パスワードを出力 |
--loopback | 新しいプレーンテキストをinductディレクトリに追加 |
--runtime | 指定した秒数後にセッションを中断 |
--remove-timer | ハッシュの消去を行う感覚を秒単位で指定 |
--logfile-disable | ログファイルを無効 |
攻撃モード
モード | 説明 |
---|---|
0 | 辞書攻撃 |
1 | 単語の組み合わせ |
3 | 文字セットと長さを指定して総当たり |
6 | 0と2の組み合わせ |
7 | プレフィックスと辞書 |
ハッシュモード
多すぎるので一部紹介
全てのハッシュモード(https://hashcat.net/wiki/doku.php?id=example_hashes)
・ハッシュモード
モード | ハッシュ形式 |
---|---|
0 | MD5 |
100 | SHA1 |
1400 | SHA256 |
500 | md5crypt |
1800 | sha512crypt |
3200 | bcrypt |
1000 | NTLM |
2500 | WPA/WPA2 |
16800 | WPA-PMKID |
攻撃例
それぞれの攻撃モードの例を示します
① 辞書攻撃
hashcat -m 1000 -a 0 hash.txt rockyou.txt
② 組み合わせ攻撃
hashcat -m 1000 -a 0 hash.txt rockyou.txt -r rules/best64.rolr
辞書にルールを適用して変化形を自動生成(例:pass → Pass123)
③ マスク攻撃(ブルートフォース)
hashcat -m 1000 -a 3 hashcat.txt ?l?l?l?l?l?d
小文字5文字+数字1桁
・文字セット一覧
文字 意味 ?l 小文字 ?u 大文字 ?d 数字 ?s 記号 ?a 全部 ?h 16進
④ 辞書+マスク
hashcat -m 1000 -a 7 hash.txt rockyou.txt ?d?d
辞書の単語の後ろにマスクを追加します(例:admin → admin12)
単語の前に書くことも可能(?d?d rockyou.txt)
⑤ パスワード候補だけ見る
hashcat -a 3 -m 0 --stdout ?l?l?l?l?l?d
grep
等で目的のパスワードがあるか見たり?
⑥ 特定の文字種セットでのカスタムマスク
hashcat -m 1000 -a 3 hash.txt -1 ?l?d ?1?1?1?1?1
小文字+数字からなる5文字のパスワードを総当たり
⑦ セッション利用
hashcat -m 1000 -a 3 -o found.txt --session=ntlmrun hash.txt ?d?d?d?d
#中断後の再開
hashcat --session=ntlmrun --restore
⑧ WPA2(ハンドシェイク)解析例(mode: -m 22000)
hashcat -m 22000 -a 0 capture.hc22000 rockyou.txt