ハッシュのクラック
特定と攻撃
「ハッシュのクラック」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
なぜハッシュをクラックするのか
セキュリティ評価では、データベース、設定ファイル、メモリダンプからパスワードハッシュを回収することがよくあります。ハッシュをクラックできれば、脆弱なパスワードを確認し、顧客に実際の影響を示せます。
ハッシュ化は一方向であることを思い出してください。ハッシュを直接元に戻すことはできません。代わりに入力を推測し、それぞれをハッシュ化して対象と比較します。
手順1:ハッシュを識別する
クラックする前に、どのアルゴリズムでハッシュが生成されたかを把握する必要があります。手がかりは長さと形式にあります。
- 16進数32文字なら、MD5の可能性が高いです。
- 16進数40文字なら、SHA-1の可能性が高いです。
- 16進数64文字なら、SHA-256の可能性が高いです。
$2b$で始まる場合はbcrypt、$argon2で始まる場合はArgon2です。
識別ツール
ツールを使うとハッシュの識別を自動化でき、推測する必要がなくなります。hashidとhash-identifierは形式を分析し、可能性の高いアルゴリズムを提示します。
出力結果を参考に、クラックツールへ渡すmode番号を決めます。
hashid '5f4dcc3b5aa765d61d8327deb882cf99'
# Suggests: MD5, MD4, NTLM ...辞書攻撃
辞書攻撃(ワードリスト攻撃)では、リスト内の各単語をハッシュ化して対象と比較します。高速で、よくあるパスワードを選ぶ多数のユーザーに有効です。
有名なrockyou.txtワードリストには、実際に漏えいしたパスワードが数百万件含まれており、多くの場合、クラックの出発点として使われます。
総当たり攻撃
総当たり攻撃では、可能な文字の組み合わせをすべて試します。最終的には必ず成功しますが、コストは指数関数的に増加します。
マスクを使うと試行範囲を制限できます。たとえば、小文字と数字を含む8文字ちょうどに限定する方法です。パスワードポリシーが分かっている場合、マスクによって対象を絞った総当たり攻撃が現実的になります。
?l = lowercase ?u = uppercase ?d = digit ?s = symbol
# Mask ?u?l?l?l?l?d?d = Capital + 4 lower + 2 digitsルールベース攻撃
人はベースとなる単語を予測可能な方法で変更します。「password」が「Password1!」になるような例です。ルールベース攻撃では、ワードリストの各項目に変換(大文字化、年の追加、文字の数字への置換など)を適用します。
これにより、完全な総当たり攻撃ほどのコストをかけずに、現実的な人間のパスワードを見つけられます。best64ルールセットは、効率的な出発点としてよく使われます。
Hashcat
hashcatは、GPUアクセラレーションに対応した代表的なクラックツールです。アルゴリズムごとの数値モードコードと、攻撃モードフラグ(-a 0は辞書攻撃、-a 3は総当たり攻撃)を使用します。
GPUにより、MD5やSHAのような高速なハッシュでは、hashcatはCPUによるクラックよりはるかに高速になります。
hashcat -m 0 -a 0 hashes.txt rockyou.txt
# -m 0 = MD5, -a 0 = dictionary attackJohn the Ripper
John the Ripperも代表的なクラックツールで、CPU上での性能と幅広い形式への対応に優れています。ハッシュの種類を自動検出できる場合もあります。
Johnには、Linuxの/etc/passwdと/etc/shadowをクラック可能なファイルに結合するunshadowなど、便利な補助ツールがあります。
unshadow /etc/passwd /etc/shadow > combined.txt
john --wordlist=rockyou.txt combined.txt
john --show combined.txtソルトと低速ハッシュが有効な理由
クラック速度はアルゴリズムに大きく左右されます。
- GPUなら、1秒あたり数十億回のMD5の推測を試行できます。
- bcryptやArgon2では、設計上、1秒あたり数千回程度しか試行できない場合があります。
ソルトによって各ハッシュを個別にクラックする必要も生じ、レインボーテーブルによる近道が使えなくなります。これが、防御側がソルト付きの低速ハッシュを使う理由です。
オンライン検索と倫理
ソルトなしの高速なハッシュの場合、CrackStationのようなオンラインデータベースに事前計算された検索結果が登録されており、よくあるハッシュなら瞬時にクラックできることがあります。
倫理:クラックしてよいのは、テストする権限があるハッシュだけです。許可なく実際の認証情報をクラックすることは違法です。セキュリティ評価では、クラックしたパスワードを脆弱なポリシーの証拠として報告し、悪用のために再利用してはいけません。
必要な計算量の見積もり
クラックに何時間もかける前に、実行可能性を見積もってください。
- アルゴリズムの速度:MD5は高速にクラックできますが、bcryptは設計上低速です。
- パスワードの複雑さ:長さと文字種が増えるほど、キー空間は急激に広がります。
- ハードウェア:高性能なGPU環境は、ノートパソコンのCPUを大きく上回ります。
長くランダムなパスワードを使ったソルト付きbcryptの解析に何世紀もかかるなら、総当たり攻撃を続けるのではなく、別の攻撃経路に切り替えてください。
クイックチェック
データベースダンプを取得しました。最初に取るべき最も賢明な行動を判断してください。
振り返り
ハッシュクラックのワークフローを学びました。
- 識別:hashidを使い、長さや形式からアルゴリズムを特定します。
- 攻撃のコストを上げながら、まず辞書攻撃、次にルール攻撃、その後にマスク付き総当たり攻撃を行います。
- hashcat(GPU)とJohn the Ripper(CPU、自動検出)を使います。
- ソルトや低速ハッシュ(bcrypt、Argon2)によって、クラック速度は大幅に低下します。
- 必ず許可された範囲内で行います。
これで「ハッカーのための暗号技術」は完了です。次のモジュールは「匿名性とOPSEC」です。
よくある質問
「ハッシュのクラック」レッスンは無料ですか?
はい。「ハッシュのクラック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「ハッシュのクラック」で何を学びますか?
特定と攻撃 ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ハッシュのクラック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エンコーディングと暗号化の違い
- ハッシュ化
- 対称暗号と非対称暗号
- ハッシュのクラック