iwork2john: Apple iWorkファイルのパスワードハッシュを抽出する方法 🔑

セキュリティツール

この記事では、有名なパスワードクラッキングツールであるJohn the Ripperスイートに含まれるユーティリティ、iwork2johnの使い方について詳しく解説します。このツールは、AppleのiWorkスイート(Pages, Numbers, Keynote)で作成され、パスワードで保護されたファイルからパスワードハッシュを抽出するために使用されます。

抽出されたハッシュは、John the Ripper本体を使用して解析し、元のパスワードを回復(クラック)するために用いられます。これは、パスワードを忘れてしまったファイルの回復や、セキュリティ監査の文脈でパスワードの強度をテストする際に非常に役立ちます。💪

注意: 他者のファイルに対して許可なくパスワードクラッキングを行うことは、法律や倫理規定に違反する可能性があります。このツールは、自身が所有するファイル、または明確な許可を得たファイルに対してのみ使用してください。

iwork2johnとは? 🤔

iwork2johnは、John the Ripperプロジェクトの一部として開発されたPythonスクリプトです。その主な目的は、以下のApple iWorkファイル形式から、John the Ripperが解析できる形式のパスワードハッシュを抽出することです。

  • Pages ドキュメント (.pages)
  • Numbers スプレッドシート (.numbers)
  • Keynote プレゼンテーション (.key)

iWork ’09、iWork ’13、およびそれ以降のバージョンで作成されたパスワード保護付きファイルに対応しています。ファイル自体は実際には特殊な構造を持つZIPアーカイブであり、iwork2johnはこの構造を解析して、暗号化に必要な情報(ソルト、IV、暗号化されたデータの一部など)を含むハッシュ文字列を生成します。

このツールによって生成されたハッシュは、iworkフォーマットとしてJohn the Ripperに認識されます。John the Ripper Wikiによると、これはPBKDF2-SHA1アルゴリズムとAES-128暗号化に基づいています。

インストール 💻

iwork2johnは通常、John the Ripperの「Jumbo」バージョンに含まれています。John the Ripperをインストールすると、多くの場合、runディレクトリ、またはシステムの実行パス(例: /usr/bin//usr/lib/john/)内に配置されます。

John the Ripperをインストールする一般的な方法をいくつか紹介します。

パッケージマネージャーを使用する場合 (Linux)

Debian/Ubuntuベースのシステム(Kali Linuxなど)では、以下のコマンドでJohn the Ripper (Jumboバージョンを含むことが多い) をインストールできます。

sudo apt update
sudo apt install john

Arch Linuxでは:

sudo pacman -S john

Fedoraでは:

sudo dnf install john

インストール後、iwork2johnがパスに含まれているか確認してください。含まれていない場合は、John the Ripperのインストールディレクトリ(例: /usr/share/john//usr/lib/john/ など)を探してみてください。

ソースからコンパイルする場合

最新版や特定の機能が必要な場合は、GitHubのOpenwallリポジトリからソースコードをクローンしてコンパイルすることもできます。

git clone https://github.com/openwall/john -b bleeding-jumbo john
cd john/src/
./configure && make -s clean && make -sj4

コンパイル後、iwork2john.py (または単に iwork2john) は通常 run ディレクトリ内にあります。

cd ../run
ls iwork2john*

macOS / Windows

macOSでは、Homebrewを使ってインストールできます。

brew install john-jumbo

Windowsの場合は、公式ウェブサイトからコンパイル済みのバイナリをダウンロードするのが一般的です。ダウンロードしたZIPファイルを展開し、runフォルダ内にiwork2john.pyがあることを確認します。Pythonがインストールされている必要があります。

使い方 🚀

iwork2johnの基本的な使い方は非常にシンプルです。ターミナルまたはコマンドプロンプトで以下のコマンドを実行します。

iwork2john [対象のiWorkファイル]

または、スクリプトが直接実行可能でない場合やパスが通っていない場合は、Pythonインタープリタを指定して実行します。

python /path/to/john/run/iwork2john.py [対象のiWorkファイル]

成功すると、以下のような形式のハッシュ文字列が標準出力に表示されます。

[ファイル名]:$iwork$*[バージョン]*[salt]*[iv]*[encrypted_data]

各フィールドの意味は以下の通りです。

  • [ファイル名]: 処理された元のファイル名。John the Ripperが出力時にどのハッシュがどのファイルに対応するかを示すのに役立ちます。
  • $iwork$: ハッシュの種類を示す識別子。
  • [バージョン]: iWorkファイルの内部バージョンやフォーマットを示す情報(例: 09, 13)。
  • [salt]: パスワードハッシュ生成時に使用されるソルト(16バイトの16進数文字列)。
  • [iv]: 暗号化に使用される初期化ベクトル(16バイトの16進数文字列)。
  • [encrypted_data]: 暗号化されたデータの一部(64バイトの16進数文字列)。John the Ripperがパスワードの正しさを検証するために使用します。

出力をファイルに保存する

抽出したハッシュを後でJohn the Ripperで処理するために、ファイルに保存しておくと便利です。リダイレクト演算子(>)を使います。

iwork2john document.pages > iwork_hashes.txt

複数のファイルからハッシュを抽出して、同じファイルに追加することもできます(>>を使用)。

iwork2john presentation.key >> iwork_hashes.txt
iwork2john spreadsheet.numbers >> iwork_hashes.txt

実践例 ✨

例1: Pagesファイルのハッシュを抽出する

my_secret_document.pages という名前のパスワード保護されたPagesファイルがあるとします。

iwork2john my_secret_document.pages

出力例:

my_secret_document.pages:$iwork$*13*a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6*11223344556677889900aabbccddeeff*fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210

(注意: 上記のハッシュ値はダミーです。)

例2: 抽出したハッシュをJohn the Ripperで解析する

前の例で抽出したハッシュを hashes.txt というファイルに保存したとします。John the Ripperを使ってパスワードクラックを試みます。

john hashes.txt

John the Ripperは、デフォルトの辞書やルールを使ってクラックを試みます。特定の辞書ファイルを使う場合は、--wordlistオプションを指定します。

john --wordlist=/path/to/password.lst hashes.txt

クラックが成功すると、John the Ripperは発見したパスワードを表示します。

Loaded 1 password hash (iwork, Apple iWork '09 / '13 / '14 [PBKDF2-SHA1 AES 128/128 AVX 4x])
Cost 1 (iteration count) is 1000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (my_secret_document.pages)
1g 0:00:00:05 DONE (2025-03-31 08:25) 0.1851g/s 123.4p/s 123.4c/s 123.4C/s secret..monkey
Session completed

後でクラック済みのパスワードを確認するには、--showオプションを使用します。

john --show hashes.txt

出力例:

my_secret_document.pages:password123

1 password hash cracked, 0 left

例3: パイプを使って直接John the Ripperに渡す

ハッシュを一時ファイルに保存せず、iwork2johnの出力を直接パイプ (|) でJohn the Ripperに渡すこともできます。これは、単一のファイルを素早く処理したい場合に便利です。

iwork2john important_presentation.key | john --stdin --format=iwork

--stdinオプションはJohn the Ripperに標準入力からハッシュを読み込むように指示し、--format=iworkはハッシュの種類を明示的に指定します(多くの場合自動検出されますが、指定すると確実です)。

  • ファイルがパスワード保護されていない場合: iwork2johnはエラーメッセージを表示するか、何も出力しないことがあります。処理する前にファイルが実際にパスワードで保護されていることを確認してください。
  • ファイル形式が古い/サポートされていない場合: 非常に古いバージョンのiWorkファイル(iWork ’09より前)や、破損しているファイルの場合、iwork2johnは正しくハッシュを抽出できない可能性があります。
  • Pythonのエラー: iwork2johnはPythonスクリプトであるため、実行にはPython環境が必要です。システムにPythonがインストールされているか確認してください。依存ライブラリが不足している場合もエラーが発生する可能性がありますが、通常は標準ライブラリのみを使用します。
  • John the Ripperでのフォーマット認識: John the Ripperがiworkフォーマットを認識しない場合、John the Ripperのバージョンが古いか、Jumbo版ではない可能性があります。最新のJumbo版を使用しているか確認してください。

まとめ 🏁

iwork2johnは、パスワードで保護されたApple iWorkファイルからパスワードハッシュを抽出するためのシンプルかつ効果的なツールです。抽出されたハッシュは、John the Ripperを用いてパスワード回復やセキュリティ強度テストに利用できます。

John the Ripperスイートの一部として提供されており、適切な手順でJohn the Ripperをインストールすれば、すぐに利用を開始できます。基本的なコマンドライン操作で、Pages, Numbers, Keynoteファイルのパスワード解析プロセスを開始するための重要な第一歩を踏み出すことができます。

繰り返しになりますが、このツールは倫理的な目的、つまり自身が所有するファイルや許可を得たファイルに対してのみ使用するようにしてください。Happy Hacking! (ただし、合法的に 😉)

参考情報 📚

コメント

タイトルとURLをコピーしました