パスワード保護された 7z アーカイブのパスワードをクラックする

Kali LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、パスワードで保護された 7z アーカイブをクラックする基本的なプロセスを学びます。7-Zip は高い圧縮率を持つ人気のファイルアーカイバであり、ユーザーはアーカイブをパスワードで暗号化できます。ここでは、パスワードを忘れてしまったシナリオをシミュレートします。

強力で業界標準のツールを組み合わせて使用します。p7zip でアーカイブを作成し、John the Ripper スイートでパスワードハッシュを抽出し、Hashcat で実際のクラッキングを実行します。この実践的な経験を通じて、ターゲットの作成、その暗号ハッシュの抽出、およびマスク攻撃を使用した効率的なパスワードの発見方法を学びます。

パスワードで保護された 7z アーカイブの作成

このステップでは、まずサンプルファイルを作成し、それをパスワードで保護された 7z アーカイブに圧縮します。このアーカイブが、後続のステップでのパスワードクラッキングプロセスのターゲットとなります。

まず、現在のディレクトリ ~/projectsecret.txt という名前のシンプルなテキストファイルを作成しましょう。

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

次に、7z コマンドを使用して、secret.txt から secret.7z という名前のアーカイブを作成します。パスワードは LabEx2024 で保護します。-p フラグはパスワードを直接指定するために使用します。

7z a -pLabEx2024 secret.7z secret.txt

ファイルが正常に作成および圧縮されたことを示す出力が表示されるはずです。

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)

Scanning the drive:
1 file, 25 bytes (1 KiB)

Creating archive: secret.7z

Items to compress: 1


Files read from disk: 1
Archive size: 228 bytes (1 KiB)
Everything is Ok

これで、作業対象となるパスワードで保護されたアーカイブを正常に作成しました。

7z2john.pl を使用してハッシュを抽出する

このステップでは、secret.7z アーカイブからパスワードハッシュを抽出します。Hashcat のようなパスワードクラッキングツールは、アーカイブファイルに直接作用するわけではありません。パスワードの暗号化キーの特定の文字列表現、つまりハッシュが必要です。

ここでは、7z アーカイブからこれらのハッシュを抽出するために特別に設計されたユーティリティである John the Ripper スイートの 7z2john を使用します。

次のコマンドを実行して secret.7z を処理し、そのハッシュを hash.txt という新しいファイルに保存します。> 記号は、コマンドの出力を指定されたファイルにリダイレクトします。

/usr/sbin/7z2john secret.7z > hash.txt

コマンドは、出力がリダイレクトされているため、ターミナルに目に見える出力は生成しません。ハッシュが抽出されたことを確認するには、hash.txt の内容を表示します。

cat hash.txt

出力は長い文字列であり、パスワードを表すハッシュです。ファイル名がプレフィックスとして付加されます。

secret.7z:$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

これで、次の準備段階に進むためのハッシュが用意できました。

Hashcat 用に抽出されたハッシュをクリーンアップする

このステップでは、抽出されたハッシュを Hashcat 用に準備する必要があります。7z2john の出力は John the Ripper 用にフォーマットされており、ファイル名をプレフィックスとして含んでいます(例:secret.7z:)。しかし、Hashcat は正しく動作するために純粋なハッシュ文字列のみを必要とします。

ここでは cut コマンドを使用して、ファイル名のプレフィックスを削除します。cut コマンドは、ファイルの行からセクションを抽出するためのシンプルなユーティリティです。コロン(:)を区切り文字として使用し、2 番目のフィールドを選択するように指示します。

次のコマンドを実行してハッシュをクリーンアップし、新しいファイル hashcat.txt に保存します。

cut -d':' -f2 hash.txt > hashcat.txt
  • -d':' は区切り文字をコロンに設定します。
  • -f2 は分割後の 2 番目のフィールドを選択します。

プレフィックスが削除されたことを確認するために、新しいファイルの内容を確認しましょう。

cat hashcat.txt

出力は、secret.7z: の部分を含まない、ハッシュ文字列のみになっているはずです。

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

これでハッシュは Hashcat 用の正しい形式になりました。

7-Zip のハッシュモードを選択する

このステップでは、Hashcat が 7-Zip ハッシュを理解し処理するために必要な正しい「ハッシュモード」を特定します。Hashcat は数百種類のハッシュタイプをサポートしており、それぞれに固有の数値コードがあります。Hashcat が機能するためには、正しいコードを指定する必要があります。

Hashcat のヘルプメニューを検索することで、7-Zip のモードを見つけることができます。「7-Zip」という用語で出力をフィルタリングするために grep を使用します。

hashcat --help | grep -i "7-Zip"

grep-i フラグは、検索を大文字・小文字を区別しないようにします。出力には、7-Zip アーカイブに関連付けられたモード番号が表示されます。

11600 | 7-Zip                                          | Archives

出力からわかるように、7-Zip のハッシュモードは 11600 です。次のステップでクラッキング攻撃を実行する際に、この番号を使用します。

7z パスワードをクラックするためのマスクアタックを実行する

この最終ステップでは、Hashcat を使用してパスワードをクラックします。ここでは「マスクアタック」を実行します。これは、パスワードの構造についてある程度の知識がある場合に非常に効果的なブルートフォースアタックの一種です。

パスワードは LabEx2024 です。その構造はマスクで次のように記述できます。

  • 大文字のアルファベットで始まる (?u)。
  • その後に小文字のアルファベットが 2 つ続く (?l?l)。
  • その後に大文字のアルファベットと小文字のアルファベットが続く (?u?l)。
  • 4 つの数字で終わる (?d?d?d?d)。

完全なマスクは ?u?l?l?u?l?d?d?d?d です。

それでは、Hashcat コマンドを構築しましょう。

  • -m 11600: 前のステップで見つけた 7-Zip のハッシュモードを指定します。
  • -a 3: アタックモードを「ブルートフォース / マスク」に設定します。
  • hashcat.txt: クリーンなハッシュを含むファイルです。
  • ?u?l?l?u?l?d?d?d?d: パスワードマスクです。

コマンドを実行してアタックを開始します。

hashcat -m 11600 -a 3 hashcat.txt ?u?l?l?u?l?d?d?d?d

Hashcat が起動し、ステータス画面が表示されます。パスワードは単純でマスクも正確なので、非常に迅速にクラックされるはずです。

...
Session..........: hashcat
Status...........: Cracked
...

ステータスが Cracked と表示されたら、パスワードが見つかったことになります。復元されたパスワードを表示するには、同じコマンドで --show フラグを使用できます。

hashcat -m 11600 hashcat.txt --show

これにより、ハッシュとクラックされたパスワードが表示されます。

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301:LabEx2024

おめでとうございます!7z アーカイブのパスワードを正常にクラックしました。

まとめ

この実験では、パスワードで保護された 7z アーカイブのパスワードをクラックする完全なプロセスを正常に実行しました。

以下の方法を学びました。

  • 7z コマンドを使用してパスワードで保護された 7z アーカイブを作成する方法。
  • 7z2john ユーティリティを使用してアーカイブからパスワードハッシュを抽出する方法。
  • 抽出されたハッシュをクリーンアップおよびフォーマットして Hashcat で使用できるようにする方法。
  • 特定のハッシュタイプに対して Hashcat で正しいハッシュモードを特定する方法。
  • Hashcat でターゲットを絞ったマスクアタックを実行して、効率的にパスワードを回復する方法。

このワークフローは、パスワードクラッキングの原則と、John the Ripper や Hashcat のような強力なツールの実践的な応用を理解するための強固な基盤を提供します。