macOS ユーザーにとって、DMG (Apple Disk Image) ファイルはアプリケーションの配布やデータのアーカイブに広く使われる形式です。重要なデータを保護するために、DMG ファイルをパスワードで暗号化することは一般的ですが、もしそのパスワードを忘れてしまったらどうなるでしょうか?あるいは、セキュリティ監査の一環として、組織内で使用されている暗号化された DMG ファイルのパスワード強度をテストする必要があるかもしれません。🤔
このような状況で強力な味方となるのが dmg2john
ツールです。これは、著名なパスワードクラッキングツール John the Ripper (JtR) スイートの一部であり、暗号化された DMG ファイルからパスワードハッシュ情報を抽出するために特別に設計されています。この記事では、dmg2john
の基本的な使い方から、抽出したハッシュを John the Ripper で解析する具体的な手順までを、初心者にも分かりやすく解説します。💪
⚠️ 注意: パスワードクラッキングツールの使用は、自身が所有するファイルや、明示的な許可を得ているシステムに対してのみ行うべきです。不正アクセスや許可のないデータ復旧は、法的な問題を引き起こす可能性があります。倫理的なガイドラインと法律を遵守してください。
John the Ripper と dmg2john の準備
dmg2john
は単独のツールではなく、John the Ripper スイートに含まれるユーティリティの一つです。したがって、まず John the Ripper をシステムにインストールする必要があります。John the Ripper には、オリジナルのコアバージョンと、コミュニティによって拡張された「Jumbo」バージョンがあります。dmg2john
を含む多くの追加ツールや対応フォーマットは Jumbo バージョンに含まれているため、通常は Jumbo バージョンをインストールすることが推奨されます。
インストール方法
インストール方法は OS によって異なります。
-
macOS:
Homebrew を使用するのが最も簡単です。ターミナルで以下のコマンドを実行します。
Homebrew でインストールした場合、brew install john-jumbo
dmg2john
などのツールは/opt/homebrew/share/john/
(Apple Silicon Mac) や/usr/local/share/john/
(Intel Mac) のような特定のディレクトリ内に配置されることがあります。実行ファイル本体 (john
) は通常 PATH に含まれますが、補助ツールは直接パスを指定する必要があるかもしれません。 -
Linux (Debian/Ubuntu系):
(ディストリビューションによっては `john-jumbo` パッケージが存在する場合もあります)sudo apt update sudo apt install john
-
Linux (Fedora/CentOS/RHEL系):
またはsudo dnf install john
sudo yum install john
-
Windows:
Openwall の John the Ripper 公式サイトから Windows 用のビルド (通常は Jumbo バージョン) をダウンロードし、任意のディレクトリに展開します。コマンドプロンプトや PowerShell から、展開したディレクトリ内の
run
フォルダに移動して実行します。 -
ソースからコンパイル:
GitHub リポジトリからソースコードをクローンし、ドキュメントに従ってコンパイルすることも可能です。最新機能を利用したい場合や、特定の環境に最適化したい場合に選択します。
(コンパイルに必要な開発ツールやライブラリが別途必要になる場合があります)git clone https://github.com/openwall/john.git cd john/src ./configure && make -s clean && make -sj4
インストール後、ターミナル (またはコマンドプロンプト) で john
と入力して Enter キーを押し、バージョン情報や使い方が表示されれば、John the Ripper 本体は正しくインストールされています。dmg2john
については、上記の Homebrew の例のように、実行ファイル本体とは別の場所にある可能性があるため、場所を確認しておくことが重要です。
例えば、Homebrew でインストールした場合、次のようにして場所を探せます。
# Apple Silicon Mac の場合
find /opt/homebrew -name dmg2john
# Intel Mac の場合
find /usr/local -name dmg2john
または、John the Ripper のインストールディレクトリ内の run
ディレクトリを探します。Windows では、ダウンロードして展開したフォルダ内の run
ディレクトリに dmg2john.exe
(または dmg2john.py
) が含まれているはずです。
dmg2john の基本的な使い方:ハッシュの抽出
dmg2john
の主な役割は、暗号化された DMG ファイルから、John the Ripper が解析できる形式の「ハッシュ」文字列を抽出することです。このハッシュ文字列には、パスワードそのものではなく、パスワードの検証に必要な情報 (暗号化アルゴリズム、ソルト、鍵導出関数のパラメータなど) が含まれています。
基本的なコマンド構文は非常にシンプルです。
/path/to/dmg2john <暗号化されたDMGファイル名>
ここで /path/to/dmg2john
は、dmg2john
実行ファイルへの実際のパスに置き換えてください (例: /opt/homebrew/share/john/dmg2john
や C:\john-the-ripper\run\dmg2john.exe
)。もし dmg2john
が PATH 環境変数に含まれるディレクトリにあれば、パスを指定せずに dmg2john
だけで実行できます。
成功すると、dmg2john
は標準出力にハッシュ文字列を出力します。この出力は通常、ファイルにリダイレクトして保存します。
/path/to/dmg2john encrypted_data.dmg > dmg_hash.txt
上記のコマンドは、encrypted_data.dmg
という名前の暗号化された DMG ファイルからハッシュを抽出し、その結果を dmg_hash.txt
という名前のテキストファイルに保存します。
ハッシュ文字列の形式
出力されるハッシュ文字列は、以下のような形式になります(これは一例であり、DMG の種類や暗号化方式によって異なります)。
encrypted_data.dmg:$dmg2$*1*...*...*...*...
重要なのは $dmg2$
で始まる部分です。これは John the Ripper が DMG ファイルのハッシュであることを認識するための識別子です。その後に続くアスタリスク (*
) で区切られた各フィールドには、ソルト、イテレーションカウント、暗号化されたデータの一部などが含まれています。ファイル名 (encrypted_data.dmg:
) も含まれることがありますが、John the Ripper は主に $dmg2$
以降の部分を使用します。
💡 ヒント: dmg2john
は、通常の DMG ファイルだけでなく、.sparsebundle
や .backupbundle
といった他の形式のディスクイメージからもハッシュを抽出できる場合があります。これらの形式は、Time Machine のバックアップなどで使用されています。
🚫 注意点: DMG ファイルへのパスに空白や特殊文字が含まれている場合、パス全体を引用符 ('
または "
) で囲む必要があります。例: '/path/to/My Encrypted Data.dmg'
。また、非常に古いバージョンの John the Ripper では、ハッシュに含まれるファイルパス中のコロン (:
) が原因で問題が発生することがありました。最新の Jumbo バージョンを使用していれば、この問題は解消されている可能性が高いです。
John the Ripper でハッシュを解析 (クラッキング)
dmg2john
でハッシュを抽出したら、いよいよ John the Ripper を使って実際のパスワード解析 (クラッキング) を試みます。John the Ripper は、抽出されたハッシュ情報と様々なパスワード候補を比較し、一致するものを探します。
最も基本的な使い方は、John the Ripper にハッシュファイル名を渡すだけです。
john dmg_hash.txt
このコマンドを実行すると、John the Ripper はまず「シングルクラック (Single Crack)」モードで動作を試みます。これは、ハッシュファイル名自体や、ユーザー情報 (もしあれば) に関連する単語を変形させたものをパスワード候補として試すモードです。比較的単純なパスワードであれば、このモードで見つかる可能性があります。
辞書攻撃 (Wordlist Mode)
より効果的な方法の一つが「辞書攻撃」です。これは、一般的な単語、既知の漏洩パスワード、想定されるパスワードパターンなどを集めた「辞書ファイル (ワードリスト)」を用意し、そのリストに含まれる単語をパスワード候補として試す方法です。
john --wordlist=/path/to/password.lst dmg_hash.txt
--wordlist
オプションに続けて、使用する辞書ファイルのパスを指定します。John the Ripper にはデフォルトで簡単な辞書 (password.lst
) が付属していることが多いですが、より大規模で効果的な辞書はインターネット上で見つけることができます (例: RockYou リストなど)。
さらに、John the Ripper は辞書の単語にルール (--rules
オプション) を適用して、より多くのパスワード候補を生成できます。例えば、単語の先頭を大文字にする、数字や記号を付加するなど、よくあるパスワードのパターンを試すことができます。
john --wordlist=/path/to/password.lst --rules dmg_hash.txt
インクリメンタルモード (Incremental Mode)
辞書攻撃でもパスワードが見つからない場合、「インクリメンタルモード」を試すことができます。これは、指定された文字セット (例: すべての小文字アルファベット、数字、記号など) を使って、考えられるすべての組み合わせを順番に試していくモードです。ブルートフォース (総当たり攻撃) に近いですが、John the Ripper は文字の出現頻度などを考慮して、より効率的に候補を生成します。
john --incremental dmg_hash.txt
特定の文字種を指定することも可能です。例えば、数字のみを試す場合は --incremental=Digits
のように指定します。利用可能なモードは john --list=incremental-modes
で確認できます。
💡 解析の進行状況と結果:
- John the Ripper は解析中に現在の状況 (試行速度、経過時間、現在の候補など) を表示します。Ctrl+C で中断しても、進捗は自動的に
john.rec
ファイルに保存され、後で同じコマンドを実行すれば中断したところから再開できます。 - パスワードが見つかると、ターミナルに表示され、
john.pot
(Potfile) というファイルにも記録されます。 - 解析済みのハッシュに対して、見つかったパスワードを表示するには
john --show dmg_hash.txt
コマンドを使用します。
GPU を利用した高速化 (オプション)
John the Ripper は、対応するグラフィックカード (GPU) を利用してパスワード解析を大幅に高速化できます。OpenCL (多くの GPU で利用可能) や CUDA (NVIDIA GPU) をサポートしています。
GPU を利用するには、John the Ripper が OpenCL や CUDA をサポートするようにコンパイルされている必要があり、かつ適切な GPU ドライバがインストールされている必要があります。
OpenCL を使用して DMG ハッシュ (フォーマット名は dmg-opencl
) を解析する場合のコマンド例は以下のようになります。
john --format=dmg-opencl --wordlist=/path/to/password.lst dmg_hash.txt
利用可能なフォーマットは john --list=formats
で確認できます。GPU を利用できるフォーマットには通常 -opencl
や -cuda
といった接尾辞が付いています。
GPU を使うことで、特に複雑なパスワードや多数のイテレーションが設定されているハッシュの解析時間を劇的に短縮できる可能性があります。🚀
注意点と倫理的な考慮事項
dmg2john
と John the Ripper は非常に強力なツールですが、その使用には責任が伴います。
- 正当な目的での利用: これらのツールは、パスワードを忘れてしまった自分のファイルへのアクセスを回復するため、あるいはシステム管理者がセキュリティポリシーのテストや監査を行うために設計されています。
- 不正アクセスの禁止: 他人のファイルやシステムに対して、許可なくこれらのツールを使用することは、多くの国や地域で違法行為となります。絶対に避けてください。🔒
- パスワード強度の重要性: これらのツールを使ってみることで、弱いパスワードがいかに簡単に破られてしまうかを実感できます。自身のパスワードを長く、複雑で、推測困難なものにすることの重要性を再認識しましょう。
- DMG の暗号化強度: DMG ファイルの暗号化 (特に AES-256) は強力ですが、設定されたパスワードが弱い場合、その保護は容易に突破される可能性があります。パスワードの選択がセキュリティの鍵となります。
- 解析時間: パスワードの複雑さや長さ、そして使用しているコンピュータの性能によっては、パスワード解析に非常に長い時間 (数日、数週間、あるいはそれ以上) がかかることがあります。特に GPU を利用できない場合や、パスワードが非常に強固な場合は、現実的な時間内に解析が完了しない可能性も考慮する必要があります。🕰️
ツールの機能と限界を理解し、常に倫理的かつ法的な範囲内で使用することが極めて重要です。
まとめ
dmg2john
は、暗号化された DMG ファイルからパスワードハッシュを抽出し、John the Ripper による解析を可能にするための重要なユーティリティです。この記事では、John the Ripper のインストールから dmg2john
を使ったハッシュの抽出、そして John the Ripper の各種モード (シングルクラック、辞書攻撃、インクリメンタルモード) を用いたパスワード解析の基本的な手順を解説しました。
パスワードを忘れてしまった DMG ファイルへのアクセスを取り戻す必要がある場合や、セキュリティ監査の一環としてパスワード強度を評価したい場合に、これらのツールは非常に役立ちます。しかし、その強力さゆえに、常に倫理的な配慮と法的遵守を念頭に置いて使用する必要があります。
適切な知識と注意を持って利用すれば、dmg2john
と John the Ripper は macOS 環境におけるデータセキュリティの理解を深める一助となるでしょう。✨
参考情報
- John the Ripper official website: https://www.openwall.com/john/ (John the Ripper の公式サイト。ダウンロードやドキュメントが含まれます。)
- John the Ripper community wiki: https://openwall.info/wiki/john/ (コミュニティによる Wiki。より詳細な情報や Tips があります。)
- John the Ripper GitHub repository: https://github.com/openwall/john (Jumbo バージョンのソースコードリポジトリ。
dmg2john
のソースコードも含まれます。)
コメント