John the Ripper で ZIP パスワードをクラックする

HydraHydraBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、ペネトレーションテストに欠かせないサイバーセキュリティツールである John the Ripper を使用して、パスワードで保護された ZIP ファイルをクラックする方法を学びます。ZIP ファイルからハッシュを抽出し、辞書攻撃と総当たり攻撃の両方を行ってパスワードを回復する練習を行います。

この実験では、John the Ripper のインストール、脆弱なパスワードを持つテストファイルの作成、クラックした資格情報の検証などの実践的な経験を積むことができます。この演習を通じて、脆弱なパスワードの脆弱性と、ファイルセキュリティにおける強力な暗号化の重要性を理解することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/installation("Installation and Setup") subgraph Lab Skills nmap/installation -.-> lab-549930{{"John the Ripper で ZIP パスワードをクラックする"}} wireshark/installation -.-> lab-549930{{"John the Ripper で ZIP パスワードをクラックする"}} hydra/installation -.-> lab-549930{{"John the Ripper で ZIP パスワードをクラックする"}} end

John the Ripper のインストール

このステップでは、サイバーセキュリティ分野で広く使用されている強力なパスワードクラッキングツールである John the Ripper をインストールします。始める前に、John the Ripper が何をするかを理解しましょう。このツールは、セキュリティ専門家が異なる組み合わせを試す(総当たり攻撃)か、ワードリストを使用して(辞書攻撃)パスワードを推測することで、パスワードの強度をテストするのに役立ちます。

LabEx の仮想マシン(VM)環境には、すべての必要な依存関係が事前に構成されているため、インストールは簡単です。ソフトウェアのインストールと更新を管理する Ubuntu のパッケージマネージャー(apt)を使用します。

  1. まず、パッケージリストを更新する必要があります。これにより、システムがすべてのソフトウェアの最新バージョンを認識するようになります。

    sudo apt update

    sudo コマンドは管理者権限を与え、apt update は利用可能なパッケージのリストを更新します。

  2. 次に、このコマンドで John the Ripper をインストールします。

    sudo apt install john -y

    -y フラグはインストールを自動的に承認し、インストール中に 'yes' を入力する手間を省きます。

  3. インストールが完了したら、インストールされたバージョンを確認することで、すべてが正しく動作することを検証しましょう。

    john --version

    次のような出力が表示されるはずです。

    John the Ripper 1.9.0-jumbo-1

このバージョンチェックにより、John the Ripper が使用可能であることが確認されます。次のステップでは、このツールを使用して、パスワードで保護された ZIP ファイルがクラッキング試みに対して脆弱であることを示します。次のステップに進む前にバージョン番号が表示されることを確認してください。これはインストールが成功したことを示します。

パスワードで保護された ZIP ファイルの作成

このステップでは、パスワードで保護された ZIP ファイルを作成します。このファイルは、後続のステップでパスワードクラッキングの練習に使用します。ZIP は、機密ファイルを保護するためのパスワード保護をサポートする一般的なアーカイブ形式です。保護された ZIP ファイルを作成する方法を理解することは、多くの実際のシステムがファイルセキュリティのためにこの方法を使用しているため、基本的なことです。

  1. まず、保護するサンプルのテキストファイルを作成しましょう。デモンストレーションのために、簡単なテキストファイルを使用します。

    echo "This is a secret file" > secret.txt

    このコマンドは、「This is a secret file」というテキストを含む secret.txt という新しいファイルを作成します。> 記号は、echo コマンドの出力をファイルにリダイレクトします。

  2. 次に、zip ユーティリティを使用してパスワードで保護された ZIP ファイルを作成します。-e フラグは暗号化を有効にします。学習目的で、「password123」をパスワードの例として使用します(注意:これは脆弱なパスワードであり、実際のシナリオでは決して使用しないでください)。

    zip -e secret.zip secret.txt

    このコマンドは、パスワードの入力と確認を 2 回求めます。この 2 回の入力は、パスワードの入力ミスを防ぐのに役立ちます。

    Enter password:
    Verify password:
  3. ZIP ファイルが正常に作成されたことを確認しましょう。ls -l コマンドは、現在のディレクトリ内のファイルの詳細情報を表示します。

    ls -l secret.zip

    ファイルが存在し、そのサイズやタイムスタンプが表示される、次のような出力が表示されるはずです。

    -rw-r--r-- 1 labex labex 210 May 10 10:00 secret.zip
  4. 最後に、パスワードを提供せずにファイルを抽出しようとすることで、パスワード保護をテストしましょう。これにより、ZIP ファイルが適切に保護されていることが確認できます。

    unzip secret.zip

    システムはパスワードを求め、誤ったパスワードを入力するか操作をキャンセルするとエラーが表示されます。

この保護された ZIP ファイルは、次のステップでハッシュを抽出し、John the Ripper を使用してパスワードをクラックしようとする際のテストケースとして使用されます。このテストファイルを自分で作成することで、保護がどのように適用され、どのようにテストできるかというセキュリティプロセスの両面を理解することができます。

ZIP ファイルのハッシュを抽出する

このステップでは、先ほど作成したパスワードで保護された ZIP ファイルから暗号化ハッシュを抽出します。このプロセスでは、ZIP ファイルのセキュリティ情報を、John the Ripper がパスワードクラッキングのために理解して処理できる形式に変換します。

  1. まず、作業ディレクトリに移動し、ZIP ファイルが存在することを確認しましょう。これにより、正しい場所にある正しいファイルを操作していることが保証されます。

    cd ~/project
    ls secret.zip
  2. 次に、John the Ripper の専用ツール zip2john を使用します。このユーティリティは、ZIP ファイルからパスワードハッシュを抽出し、John がクラックできる形式にします。> 記号は出力を新しいファイルにリダイレクトします。

    zip2john secret.zip > zip_hash.txt
  3. 抽出されたハッシュを表示し、どのような情報が取得されたかを確認しましょう。cat コマンドは、ターミナルにファイルの内容を表示します。

    cat zip_hash.txt

    次の例と似た出力が表示されるはずです(実際のハッシュは異なります)。

    secret.zip:$pkzip$1*2*2*0*1c*1a*5e9b8f7d*0*42*0*1c*5e9b*55dc*secret.txt*$/pkzip$
  4. このハッシュにはいくつかの重要な要素が含まれています。

    • secret.zip:元の ZIP ファイル名
    • $pkzip$:これが PKZIP 形式のハッシュであることを識別する
    • 長い数字と文字の文字列:実際の暗号化されたパスワードデータ
    • secret.txt:ZIP アーカイブ内のファイル名

この抽出されたハッシュファイルには、ZIP ファイルのパスワード保護に関するすべての必要な情報が含まれており、John the Ripper が処理できるように特別にフォーマットされています。次のステップでは、このハッシュファイルを使用して、さまざまなクラッキング手法でパスワードの回復を試みます。

John the Ripper を使ってパスワードをクラックする

このステップでは、John the Ripper を使用して、先ほどパスワードで保護した ZIP ファイルのパスワードをクラックしようと試みます。John the Ripper は強力なパスワードクラッキングツールで、抽出したハッシュに対してさまざまなパスワードの組み合わせを試すことで動作します。ハッシュはパスワードのデジタル指紋のようなもので、John は元の ZIP ファイルを必要とせずに分析することができます。

  1. まず、ハッシュファイルがある正しいディレクトリにいることを確認しましょう。前のステップで作成したハッシュファイルにアクセスする必要があるため、これは重要です。

    cd ~/project
    ls zip_hash.txt

    ls コマンドは、zip_hash.txt が現在のディレクトリに存在することを確認するためにファイルを一覧表示します。

  2. 次に、ZIP ファイルを扱っているため、PKZIP 形式を指定して John the Ripper を実行します。--format=PKZIP フラグは、John にどのような暗号化形式を期待するかを伝えます。

    john --format=PKZIP zip_hash.txt
  3. John は、さまざまなパスワードの組み合わせを試す際にリアルタイムで進捗状況を表示します。今回は脆弱なパスワード ("password123") を使用しているため、クラッキングはほぼ瞬時に完了するはずです。成功した場合の出力は次のようになります。

    Loaded 1 password hash (PKZIP [32/64])
    Will run 2 OpenMP threads
    Press 'q' or Ctrl-C to abort, almost any other key for status
    password123      (secret.zip)
    1g 0:00:00:00 DONE (2023-05-10 10:00) 50.00g/s 50.00p/s 50.00c/s 50.00C/s password123
    Use the "--show" option to display all of the cracked passwords reliably
    Session completed

    "1g" は John が 1 つの推測を試したことを示し、"password123" はクラックされたパスワードです。

  4. クラックされたパスワードを見やすい形式で表示するには、--show オプションを使用します。このコマンドは、ハッシュファイルからすべての成功したクラックされたパスワードを表示します。

    john --show zip_hash.txt

    次のような出力が表示されます。

    secret.zip:password123:secret.txt:secret.zip

    この出力は、コロンで区切られた 4 つの情報を示しています。ZIP ファイル名、クラックされたパスワード、アーカイブ内に含まれるファイル名、そして再びアーカイブ名です。

パスワードが取得できたので、次のステップで元の ZIP ファイルで実際に動作することを確認することができます。この確認は、クラッキングプロセスが成功したことを確認するために重要です。

パスワードを確認する

この最後のステップでは、John the Ripper でクラックしたパスワードが、実際に保護された ZIP ファイルを解凍するのに機能することを検証します。この確認ステップは、実際のセキュリティ評価においてクラッキング結果を検証するために重要です。見つけた鍵をテストするように、実際に鍵を使って鍵穴を開けて機能することを確認する必要があると考えてください。

  1. まず、前のステップでクラックしたパスワードを確認しましょう。次のコマンドは、John が正常にクラックしたパスワードを表示します。

    john --show zip_hash.txt

    ファイル名、クラックされたパスワード、および内容を示す、次のような出力が表示されるはずです。

    secret.zip:password123:secret.txt:secret.zip
  2. 次に、このパスワードが実際に機能するかどうかを、ZIP ファイルを解凍してテストします。unzip コマンドは、Linux で ZIP アーカイブを解凍するための標準ツールです。

    unzip secret.zip

    システムはパスワードを求めるメッセージを表示します。「password123」(先ほどクラックしたパスワード)を入力します。

    Archive:  secret.zip
    [secret.zip] secret.txt password:
  3. 正しいパスワードを入力した後、2 つのことを確認する必要があります。ファイルが解凍されたこと、およびその内容が期待通りであることです。これらのコマンドは、ディレクトリ内のファイルを一覧表示し、秘密ファイルの内容を表示します。

    ls
    cat secret.txt

    次のような出力が表示され、解凍が成功したことが確認できます。

    This is a secret file
  4. 最後に、テストが終了したら、解凍したファイルを削除するのが良い習慣です。これにより、作業スペースが整理され、将来の演習でテストファイルが誤って再利用されるのを防ぎます。

    rm secret.txt

この成功した解凍により、John the Ripper が ZIP パスワードを正しくクラックしたことが確認されます。実際のセキュリティ評価では、調査結果を報告する前にこの検証ステップが不可欠です。これにより、クラックされたパスワードが単なる理論上の一致ではなく、実際に保護されたコンテンツにアクセスできることが証明されます。

まとめ

この実験では、apt パッケージマネージャを通じて John the Ripper をインストールし、そのセットアップが成功したことを確認する方法を学びました。また、サンプルのテキストドキュメントを含むパスワード保護付きの ZIP ファイルを作成し、実際のパスワードクラッキングシナリオをシミュレートする練習を行いました。

この演習では、パスワードクラッキングの対象ファイルの準備を実演することで、基本的なサイバーセキュリティ評価手法を紹介しました。ツールのインストールやセキュリティの検証などのこれらの最初のステップは、高度なパスワード回復操作のための重要な基礎を提供します。