1. Password Cracking とは
Password Cracking(パスワードクラッキング) とは、
ハッシュ化または暗号化されたパスワードデータから、元の平文パスワードを復元する攻撃手法です。
Password Guessing が「オンラインでログインを試す攻撃」なのに対し、
Password Cracking は次のような特徴を持ちます。
- 攻撃はオフライン(攻撃者の環境) で行われる
- ターゲットシステムと通信しない
- 試行回数に制限がない
- GPU などを使って超高速に試行できる
- サーバ側のログには一切残らない
つまり Password Cracking は、
「金庫を盗んで、家に持ち帰ってからゆっくり開ける」タイプの攻撃です。
気づかれにくく、成功したときの被害は非常に大きくなります。
2. Password Cracking の典型的な流れ
Password Cracking は、次のような手順で行われます。
- 侵入や情報漏えいにより、パスワードハッシュを入手
- 例:
/etc/shadow, データベースの users テーブル, NTLM ハッシュなど
- 例:
- ハッシュの種類を特定
- MD5 / SHA1 / SHA256 / bcrypt / NTLM など
- 攻撃ツールで解析(試行)
- Hashcat, John the Ripper など
- 一致する入力を見つけ、平文パスワードを復元
- そのパスワードを使ってログイン、権限昇格、横展開
重要なのは:
この間、ターゲットのシステムには一切アクセスしない
という点です。
つまり、防御側は 「奪われた時点でほぼ負け」 になりがちです。
3. なぜ Password Cracking は危険なのか?
Password Cracking が特に危険な理由は次の通りです。
- オフラインなので検知できない
- 試行回数制限が存在しない
- GPU により秒間数億〜数十億回の試行が可能
- 一度割れたパスワードは何度でも使われる
特に次の条件が揃うと、被害は深刻になります。
- 弱いハッシュ関数(MD5, SHA1 など)
- ソルトが使われていない
- 短くて単純なパスワード
- 同じパスワードの使い回し
この場合、「時間の問題」 でほぼ確実に解読されます。
4. 主な Password Cracking の手法
4.1 辞書攻撃(Dictionary Attack)
- よく使われるパスワードリストを使ってハッシュ化 → 照合
- 例:
- password
- 123456
- qwerty
- 特徴:
- 非常に高速
- 成功率も意外と高い
- ただし複雑なパスワードには弱い
4.2 総当たり攻撃(Brute-force Attack)
- 可能な文字の組み合わせをすべて生成してハッシュ化 → 照合
- 特徴:
- 理論上は必ず当たる
- ただし文字数が増えると現実的でなくなる
- 短いパスワードには非常に危険
4.3 ルールベース攻撃(Rule-based Attack)
- 辞書の単語に「変形ルール」を適用
- 例:
- password → Password1!
- admin → Admin@123
- 特徴:
- 人間のパスワード作成癖に非常に強い
- 実戦で最も“コスパが良い”手法の一つ
4.4 マスク攻撃(Mask Attack)
- パターンを指定して探索範囲を絞る
- 例:
-
?u?l?l?l?d?d(大文字+小文字3+数字2)
-
- 特徴:
- 「形式が分かっているパスワード」に非常に強い
- 例:社内ルールで決まった形式のパスワードなど
5. 代表的なツール
Hashcat
- GPU対応、世界最速クラス
- 多数のハッシュ形式に対応
- ルール・マスク・辞書攻撃すべて対応
- 実戦・検証のデファクトスタンダード
John the Ripper
- 歴史ある定番ツール
- 多くのフォーマットに対応
- 解析・検証用途に非常に便利
これらは攻撃ツールであると同時に、
「自社システムのパスワード強度を検証する防御ツール」 でもあります。
6. Password Guessing との違い
| 項目 | Password Guessing | Password Cracking |
|---|---|---|
| 実行場所 | オンライン | オフライン |
| 通信 | 必要 | 不要 |
| 検知 | されやすい | ほぼ不可能 |
| 試行回数 | 制限される | 無制限 |
| 速度 | 遅い | 非常に速い |
| 危険度 | 中 | 高 |
簡単に言うと:
- Password Guessing:正面からドアをガチャガチャする
- Password Cracking:鍵そのものを奪って、裏で複製する
後者のほうが、静かで、確実で、被害も大きくなりがちです。
7. 防御策(最重要ポイント)
Password Cracking 対策で本当に重要なのは、次の点です。
強いハッシュ関数を使う
- bcrypt
- Argon2
- scrypt
- PBKDF2
※ MD5 や SHA1 は論外です。
必ずソルトを使う
- 同じパスワードでもハッシュが変わる
- レインボーテーブル攻撃を防げる
ストレッチング(計算コストを上げる)
- 1回のハッシュ計算を重くする
- GPU でも“遅くてしんどい”状態にする
長くてユニークなパスワードを使う
- 長さは正義
- 使い回しは即死フラグ
8. まとめ
- Password Cracking は、ハッシュを奪われた時点で始まるオフライン攻撃
- 検知されず、高速で、大量試行が可能
- 弱いハッシュ・短いパスワードは時間の問題で破られる
- 防御の本質は:
- 強いハッシュアルゴリズム
- ソルト
- ストレッチング
- 長くユニークなパスワード
正直に言うと、
「侵入されるかどうか」より「侵入された後に耐えられるか」 が、ここで決まります。
Password Cracking 対策は、まさに最後の防衛線です。