lion2john の使い方:macOS パスワードハッシュ抽出ガイド 💻

セキュリティツール

この記事では、パスワードクラッキングツール John the Ripper (JtR) スイートに含まれるユーティリティの一つである lion2john について、その目的、使い方、注意点などを詳しく解説します。特に、macOS のセキュリティ評価やパスワード監査に関わる方にとって、有用な情報となるでしょう。

John the Ripper と *2john ツール群の概要

John the Ripper (JtR) は、非常に有名で強力なオープンソースのパスワードクラッキングツールです。主にシステムのパスワード強度をテストしたり、忘れてしまったパスワードを回復したり(適切な権限がある場合)する目的で使用されます。JtR は多様なパスワードハッシュ形式に対応していますが、直接暗号化されたファイルや特定のアプリケーションのデータ形式を扱えるわけではありません。

そこで重要になるのが、*2john という名前のユーティリティ群です。これらは、様々なファイル形式(ZIP、RAR、PDF、Office ドキュメント、ディスクイメージ、OS のパスワードデータベースなど)から、JtR が解析できる形式のハッシュ値を抽出するために特別に設計されたスクリプトやプログラムです。

例えば、以下のようなツールがあります(これは一部です):

  • zip2john: ZIP アーカイブからハッシュを抽出
  • rar2john: RAR アーカイブからハッシュを抽出
  • pdf2john: PDF ファイルからハッシュを抽出
  • office2john: Microsoft Office ドキュメントからハッシュを抽出
  • dmg2john: macOS の DMG ディスクイメージからハッシュを抽出
  • keepass2john: KeePass パスワードデータベースからハッシュを抽出
  • keychain2john: macOS のキーチェーンファイルからハッシュを抽出
  • そして、この記事の主役である lion2john

これらのツールは、John the Ripper の run ディレクトリ (古いバージョン) や /usr/share/john/ (Debian/Kali 系) などに含まれていることが一般的です。

lion2john とは何か? 🤔

lion2john (多くの場合 lion2john.pl という Perl スクリプト) は、Mac OS X 10.7 Lion のログインパスワードハッシュを抽出するために特別に作られた *2john ツールです。

なぜ特定の OS バージョン向けのツールが必要なのでしょうか? それは、macOS (旧 Mac OS X) がバージョンアップするにつれて、パスワードの保存方法やハッシュ化のアルゴリズムを変更してきたためです。Lion (10.7) では、それ以前のバージョン (例: 10.4-10.6 の Salted SHA-1) とは異なる形式 (Salted SHA-512) でパスワードハッシュが保存されるようになりました。

具体的には、ユーザーのパスワード情報は /var/db/dslocal/nodes/Default/users/ ディレクトリ内にあるユーザー名に対応した .plist (Property List) ファイルに格納されています。この .plist ファイル内の ShadowHashData キーに含まれるデータは、単純なハッシュ文字列ではなく、さらにエンコードされたバイナリ形式の plist データです。この複雑な形式から JtR が直接扱える Salted SHA-512 形式のハッシュ文字列(ソルト情報を含む)を抽出するのが lion2john の役割です。

注意点として、lion2john は主に Mac OS X 10.7 Lion 向けに設計されました。その後の macOS バージョン (10.8 Mountain Lion 以降) では、パスワードハッシュの保存形式 (SALTED-SHA512-PBKDF2 など) がさらに変更されたり、FileVault 2 によるフルディスク暗号化が一般的になったりしたため、lion2john がそのまま有効とは限りません。より新しいバージョンの macOS に対しては、mac2john.py や他の手法が必要になる場合があります。John the Ripper の “-jumbo” バージョンは、10.7 の Salted SHA-512 ハッシュ形式 (dynamic_1722 または sha512crypt として認識される場合がある) をサポートしています。

⚠️ 重要: lion2john.pl を実行するには、Perl の Data::Plist モジュールがシステムにインストールされている必要があります。もしインストールされていない場合は、CPAN などを使用してインストールしてください。

# CPAN を使ったインストール例 (システムによっては sudo が必要)
cpan install Data::Plist

lion2john の使い方 🛠️

lion2john の基本的な使い方は非常にシンプルです。コマンドラインで lion2john.pl スクリプトを実行し、引数としてターゲットとなるユーザーの .plist ファイルへのパスを指定します。

ステップ 1: 対象ファイルの特定とコピー

まず、ハッシュを抽出したいユーザーの .plist ファイルを見つける必要があります。これらのファイルは通常、管理者権限がないとアクセスできないディレクトリにあります。

  1. 対象の macOS システム上でターミナルを開きます。
  2. 以下のコマンドを実行して、ユーザーアカウントの plist ファイルが格納されているディレクトリに移動します(管理者権限が必要です)。
    cd /private/var/db/dslocal/nodes/Default/users/
    または単に
    cd /var/db/dslocal/nodes/Default/users/
  3. ls コマンドでファイルリストを表示し、ターゲットユーザー名の .plist ファイル(例: username.plist)を確認します。
  4. lion2john を実行するシステム(通常は JtR がインストールされている Linux システムなど)に、この .plist ファイルをコピーします。直接アクセスできない場合は、USB メモリやネットワーク経由で転送します。安全のため、作業用ディレクトリ(例: /tmp/)にコピーしてから転送すると良いでしょう。
    sudo cp username.plist /tmp/username.plist
    # その後、/tmp/username.plist を解析用マシンに転送

    🚨 注意: このディレクトリへのアクセスやファイルのコピーは、システムのセキュリティ監視(EDR など)によって検知される可能性があります。許可なく行うことは絶対に避けてください。

ステップ 2: lion2john の実行

John the Ripper がインストールされているシステム(例: Kali Linux)で、lion2john.pl スクリプトを実行します。スクリプトの場所は環境によって異なりますが、多くの場合 /usr/share/john/ や JtR ソースディレクトリ内の run にあります。

# スクリプトのパスが通っていない場合
/path/to/john/run/lion2john.pl /path/to/copied/username.plist

または、パスが通っている場合や /usr/share/john にある場合:

lion2john.pl /path/to/copied/username.plist

成功すると、標準出力に John the Ripper が認識できる形式のハッシュ文字列が出力されます。

出力例(架空のものです):

username:$ml$40000$7e1ab2c3d4e5f6a7b8c9d0e1f2a3b4c5$c1b2a3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2

この出力形式は ユーザー名:ハッシュ文字列 となっており、$ml$ プレフィックスやそれに続く数字(イテレーション回数など)、ソルト(16進数)、ハッシュ本体(16進数)で構成されていることが多いです。JtR はこの形式を自動的に認識します (macOS 10.7 の場合は sha512cryptdynamic_1722 として)。

ステップ 3: ハッシュをファイルに保存

出力されたハッシュ文字列を、後のクラッキング作業のためにファイルに保存します。リダイレクトを使用するのが簡単です。

lion2john.pl /path/to/copied/username.plist > mac_hashes.txt

複数の .plist ファイルがある場合は、まとめて処理できます。

lion2john.pl user1.plist user2.plist > mac_hashes.txt

ステップ 4: John the Ripper でクラック実行

保存したハッシュファイル (mac_hashes.txt) を使って、John the Ripper でパスワードクラッキングを実行します。

最も基本的な実行方法(デフォルトのモードを使用):

john mac_hashes.txt

特定のワードリスト (wordlist.txt) を使用する場合:

john --wordlist=wordlist.txt mac_hashes.txt

ルールベースのアタックを併用する場合:

john --wordlist=wordlist.txt --rules mac_hashes.txt

John the Ripper はクラッキング試行を開始し、成功したパスワードが見つかると画面に表示し、$JOHN/john.pot ファイルに記録します。

クラック済みのパスワードを確認するには:

john --show mac_hashes.txt

これにより、ユーザー名:クラックされたパスワード:その他の情報... の形式で結果が表示されます。

互換性と代替ツール 🔄

前述の通り、lion2john は主に Mac OS X 10.7 Lion をターゲットとしています。

  • Mac OS X 10.4 ~ 10.6 (Tiger, Leopard, Snow Leopard): これらのバージョンでは Salted SHA-1 形式が使われていました。JtR の “-jumbo” バージョンはこれをサポートしていますが、抽出には lion2john ではなく、別の方法や古いツールが必要になるかもしれません (JtR が直接シャドウファイルを扱える場合もあります)。
  • macOS 10.8 (Mountain Lion) 以降: パスワードハッシュ形式は SALTED-SHA512-PBKDF2 に変更されました。この形式のハッシュを .plist ファイルから抽出するには、lion2john ではなく mac2john.py (Python スクリプト) を使用するのが一般的です。mac2john.py は、より新しい macOS バージョンや FileVault 2 のパスワードハッシュ抽出にも対応している場合があります。

mac2john.py の基本的な使い方も lion2john と似ています。

python /path/to/mac2john.py /path/to/copied/username.plist > mac_pbkdf2_hashes.txt
john mac_pbkdf2_hashes.txt

最新の macOS では、セキュリティ強化のため、.plist ファイルからのハッシュ抽出がさらに困難になっている可能性があります。また、dscl . -read /Users/username dsAttrTypeNative:ShadowHashData コマンドも EDR などで監視されていることが多いです。

常に最新の John the Ripper “-jumbo” バージョンを使用し、同梱されているドキュメントやコミュニティの情報を確認することが重要です。

macOS バージョン (目安) 主なハッシュ形式 推奨される *2john ツール JtR フォーマット (例)
10.4 – 10.6 Salted SHA-1 (古いツール or JtR 直接) / mac2john? dynamic_1711, xsha
10.7 (Lion) Salted SHA-512 lion2john.pl dynamic_1722, sha512crypt
10.8 以降 SALTED-SHA512-PBKDF2 mac2john.py pbkdf2-hmac-sha512, dynamic_1731
FileVault 2 (様々、PBKDF2 ベースが多い) mac2john.py / fvde2john.py (バージョンによる)
キーチェーン (様々) keychain2john.py (バージョンによる)

※ 上記は一般的な目安であり、具体的な JtR フォーマット名はバージョンや環境によって異なる場合があります。

倫理的な考慮事項と注意点 ⚖️

lion2john や John the Ripper のようなツールは、システムのセキュリティを評価し強化するために非常に役立ちますが、その強力さゆえに悪用される危険性も伴います。

  • 許可なきアクセスは違法です: 自分自身のアカウントや、明確な許可を得たシステムに対してのみ、これらのツールを使用してください。他人のアカウントや組織のシステムに対して許可なくパスワードクラッキングを試みることは、重大な法的問題を引き起こす可能性があります。
  • セキュリティ監査目的での利用: 組織内でセキュリティ監査の一環としてパスワード強度をテストする場合でも、必ず事前に書面による承認を得て、関係部署と連携して実施してください。
  • データの取り扱い: 抽出したハッシュデータや、クラックによって明らかになったパスワードは機密情報です。安全な場所に保管し、不要になったら確実に削除するなど、慎重に取り扱う必要があります。特に、ハッシュデータをオンラインで共有したり、安全でない場所に保存したりしないでください。
  • パスワードポリシーの強化: パスワードクラッキングテストの結果、弱いパスワードが発見された場合は、パスワードポリシーの見直し(複雑さの要件、最低文字数、定期的な変更の強制など)や、多要素認証 (MFA) の導入を検討することが重要です。

これらのツールは、防御側の視点(自分のシステムのパスワードがどれだけ強いかを確認する)で使用することが、本来の目的であり推奨される使い方です。

まとめ ✨

lion2john は、John the Ripper スイートの一部として、特定の macOS バージョン (主に 10.7 Lion) のパスワードハッシュを .plist ファイルから抽出し、JtR で解析可能な形式に変換するための重要なユーティリティです。

  • macOS のバージョンによってパスワードハッシュの保存形式が異なるため、lion2johnmac2john のような専用ツールが必要になります。
  • 使用するには、対象の .plist ファイルへのアクセス権限と、Perl (Data::Plist モジュール含む) または Python 環境が必要です。
  • 抽出したハッシュはファイルに保存し、John the Ripper を使ってパスワードクラッキング(強度テスト)を実行できます。
  • これらのツールを使用する際は、法的な側面と倫理的な側面を十分に考慮し、必ず適切な許可を得て責任ある方法で使用してください。

この記事が、lion2john と macOS のパスワード監査について理解を深める一助となれば幸いです。セキュリティ評価やペネトレーションテストにおいて、適切なツールを正しく理解し使用することは非常に重要です。 💪

参考情報

コメント

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